hawkongz/dsh-chat-locator ↗★ 1
dsh-chat-locator
提供对话定位条及悬停预览设置页面 适合需要快速定位、跳转和预览 DSH 历史对话轮次的用户。
安裝
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:hawkongz/dsh-chat-locator說明文件
閱讀完整 README ↗📖 Usage
Everything lives on one settings page: Settings → 对话定位条. The table below lists each control with its default and range.
| Setting | Default | Range | What it does |
|---|---|---|---|
| Show the locator rail | |||
显示对话定位条 | On | On / Off | Hides the whole rail. Turn jumping and unloaded-turn paging are unaffected. |
| Tick thickness | |||
横线粗细 | 2px | 1–8px | The line width of each turn's tick. Tick spacing stays at 10px, so 8px is the practical ceiling. |
| Rail side | |||
轨道位置 | Right | Left / Right | Which edge of the conversation area the rail hugs. The hover preview opens on the opposite side automatically. |
| Hover preview | |||
悬停预览 | On | On / Off | Shows the prompt and response for the hovered turn. Also gates the length gradient — with the preview off, no gradient is applied. |
| Preview line count | |||
预览正文行数 | 3 | 1–6 | How many lines of the response to show. The card grows with the content; only the overflow is clipped. |
| Preview font size | |||
预览字号 | 12px | 10–18px | The card's font size. Line height scales with it at 1.5x, and the card height is computed from the same line height, so larger text is never clipped. |
| Preview card width | |||
预览框宽度 | 300px | 200–420px | The card's width. It keeps the built-in container clamp, so it shrinks automatically in a narrow window. |
| Restore defaults | |||
恢复默认 | — | — | Resets all seven settings to their factory values. Disabled when everything is already at its default. |
The length gradient
With the preview enabled, the tick you point at is the longest, and the ticks around it taper away along a curve:
| Distance from the hovered tick | 0 | ±1 | ±2 | ≥3 |
|---|---|---|---|---|
| Width | 32px | 21px | 14px | 12px |
| Drop per step | — | 11px | 7px | 2px |
The adjacent tick gives up the most width, then progressively less, flattening out as it rejoins the rail. The width table is generated from 12 + 20 * (1 - d/3)^2, and docs/design-notes.md records how the exponent was tuned (2.5 was a cliff, 1.5 left the neighbours too long, 2.0 is the compromise in use). The gradient anchors on the hovered tick — the active turn's tick is never resized — and it disappears the moment the pointer leaves.
Troubleshooting
The plugin ships one debug hook. Run it in the browser console:
__dshChatLocator.state()
// {
// railPrefix: 'eGxaPq', railFound: true, rules: '…',
// config: { … },
// settingsStatus: { status: 'ready', writable: true, unsupported: [] }
// }
| What you see | What it means |
|---|---|
railPrefix: null | The rail is not rendered in this view — fewer than two turns, a container narrower than 900px, or a non-conversation view. Nothing is broken. |
settingsStatus.status !== 'ready' | The host settings namespace was not read. Check that the host half loaded. |
settingsStatus.unsupported is non-empty | The running host process has not registered those fields yet, so they apply to this session only. Restart dsh web; the plugin back-fills them automatically. |