dsh-chat-locator

DSH PLUGINUI 与外观

仓库 hawkongz/dsh-chat-locator · npm dsh-chat-locator

UI 与外观 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

为 DSH Web 的对话定位条提供可调设置:横线粗细、轨道左右位置、悬停预览行数、字号与宽度,并带曲线长度渐变,让长会话中快速定位某一轮对话。

一句话选型结论

按资料字段整理

dsh-chat-locator 是UI 与外观类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,列出 5 项功能,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类UI 与外观 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 1 复刻 0 · 未关闭 issue 0
最近更新 2026-10-09 创建于 2026-09-20
README 15.7 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add dsh-chat-locator@1.4.3
  1. 1
    确认版本与运行环境

    兼容的 DSH 版本为 0.2.0-rc.2 等 5 个,Node.js 要求 >=20;版本不匹配时安装会报错。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本0.2.0-rc.2 等 5 个版本版本不匹配时安装会报错
Node.js 要求>=20来自仓库 package.json 的 engines 字段
前置依赖@deepseek-ai/cordis@*、react@^18.2.0需要同时安装的同级依赖
npm 包名dsh-chat-locator可用 npm view 查看包信息

能做什么

5 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-chat-locator:为 DeepSeek Harness 定制对话回合定位条

  • 横线粗细 1–8px 可调
  • 轨道可置左或置右
  • 悬停纯文本预览该轮内容
  • 预览行数、字号、宽度可调
  • 一键恢复全部默认值

适用场景

皮肤主题联网搜索

上游标签

conversation-navigationcordiscordis-plugincss-injectiondeepseek-harnessdshdsh-pluginweb-ui

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-10-08): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
L5 · 运行已测 ✓ 通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 方式:Web 启动
  • L5.3_HTTP_SERVED HTTP 服务响应 方式:HTTP 请求
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询

风险详情

  • 审查结论 通过
  • 结论说明 vet 静态分析未发现可疑行为,判定为干净(clean)。
  • 风险计数 严重 0 / 高 0 / 中 0
  • 风险详情 未发现严重或警告级问题。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。
  • 标注了兼容的 DSH 版本(0.2.0-rc.2 等 5 个),按版本装不容易报错。
  • 列出了 5 项功能,能直接看出它解决什么问题。

先想清楚的地方

  • 需要同时装好同级依赖,漏装会启动失败。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在UI 与外观场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-chat-locator当前 L5 · 运行验证通过 低风险 1 0.2.0-rc.2 等 5 个 有
nuwa-skill 未做沙盒验证 未标注 3.8 万 未标注 有
awesome-dsh-plugin L4 · 沙盒安装通过 低风险 1.8 万 0.1.1-rc.2 有
deepseek-balance-whale-widget L4 · 沙盒安装通过 低风险 4,492 0.1.7-rc.2 等 2 个 有
dsh-better-sidebar L4 · 沙盒安装通过 低风险 4,112 0.1.7-rc.2 等 10 个 有
dsh-deep-whale L4 · 沙盒安装通过 低风险 2,470 未标注 有

仓库档案

UI 与外观
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方hawkongz仓库 dsh-chat-locator · 默认分支 main
分类UI 与外观skin
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言JavaScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue1 / 0 / 0收录时的数值,非实时
创建 / 更新2026-09-20 · 2026-10-09最后推送 2026-10-09
本站收录2026-09-21首次进入本站目录的时间

README 全文

15.7 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-chat-locator
Turn-rail settings for DSH Web: tick thickness, rail side, and a curved length gradient anchored on the hovered tick — plus a plain-text hover preview whose line count, font size, and width you control.




Language: English | 简体中文


📋 Table of Contents

  • Features
  • Quick Start
  • Installation
  • Usage
  • How It Works
  • Topics
  • Contributing
  • License

DSH Web draws a turn rail down the edge of every conversation: one tick per turn, so you can see where you are in a long session and jump between turns. It is a good rail with three opinions baked into it. Ticks are always 2px. The rail always sits on the right. And pointing at a tick tells you nothing about what that turn contains, so finding a specific turn in a long conversation means hovering ticks one at a time.

None of that is configurable. The rail is rendered directly by ChatView inside @deepseek-ai/dsh-client-ui-chat; the Slot system gives it no seat, and no setting for thickness or side is exposed anywhere.

dsh-chat-locator is a persistent DSH plugin that turns those fixed opinions into settings. It does not replace the rail — it claims the rail's styles at runtime, so the built-in jump-to-turn, unloaded-turn paging, and active-turn following all keep working exactly as before.

✨ Features

  • Tick thickness (横线粗细): 1–8px instead of a fixed 2px. Only the line width changes; the 10px tick spacing stays put.
  • Rail side (轨道位置): Left or right. The hover preview automatically opens on the opposite side, so it never covers the text you are reading.
  • Hover preview: The built-in plain-text card showing that turn's prompt and response. The plugin does not build it — it only styles how many lines it shows, its font size, and its width, and the built-in plain-text rendering (which never includes thinking content) is left alone.
  • Preview line count (预览正文行数): 1–6 lines. The card really grows — only the overflow is clipped.
  • Preview font size and width (预览字号 / 预览框宽度): 10–18px and 200–420px. Font size and line height scale as a pair, so enlarging the text never crowds or clips it.
  • A curved length gradient: The tick under the pointer grows to 32px and its neighbours taper back along a curve — 21 / 14 / 12 — so the rail reads as a hook pointing at where you are, not as a straight diagonal. It has its own on/off switch; with it off every tick keeps its built-in width and nothing else changes.
  • Restore defaults (恢复默认): All seven settings back to factory values in one click, via per-field unset rather than rewriting the defaults.
  • A dedicated settings page: Settings → 对话定位条, with a live sample rail and sample preview card that redraw as you change each value.
  • Zero dependencies, no build step. Both halves are plain ESM loaded directly by Node and the browser.

🚀 Quick Start

> What you need: a working DSH installation (the dsh command) with a profile, plus Node.js 20 or newer. The plugin itself has no dependencies to install.

Step 1 — Open a terminal

  • macOS / Linux: open Terminal.
  • Windows: press Win + R, type powershell, and press Enter.

Step 2 — Install the bundle into your profile

dsh plugin forwards its arguments to pnpm inside the profile directory, so this installs the package from npm and DSH picks up its patch automatically. Replace web with your own profile name if it differs.

dsh plugin --profile web add dsh-chat-locator

To pin an exact version instead of tracking new releases, append it: dsh plugin --profile web add dsh-chat-locator@1.4.1

That is the whole install. The bundle itself is the four files a DSH plugin bundle needs — package.json (which declares the bundle and the browser half), index.js (the host half — a no-op stub since 1.4.0), client.js (the browser half), and cordis.patch.yml (the patch that adds the plugin row) — and there is nothing to compile and no dependency to install. Alongside those, the published package also ships this README and its zh-CN/ translation, docs/design-notes.md, CONTRIBUTING.md, SECURITY.md, and test/.

Step 3 — Restart the host

dsh web

The host process caches imported modules, so a newly added bundle is not mounted until the host restarts once.

Step 4 — Done. With DSH Web open at http://127.0.0.1:3080, you are finished if:

  • Settings → 对话定位条 appears in the settings sidebar, and
  • in the browser console, this returns railFound: true on a conversation with at least two turns:
__dshChatLocator.state()

Open a conversation and slide the pointer up and down the rail: the tick under the pointer grows and its neighbours taper.

> To update: run dsh plugin --profile web update dsh-chat-locator, then restart the host. To uninstall: dsh plugin --profile web remove dsh-chat-locator, then restart the host.
>
> Want the newest unreleased commit, a local copy you can edit, or an offline install? See Install methods.

📦 Installation

Requirements

Requirement Version Notes
DSH 0.1.7 or newer Provides the dsh command and the profile you install into. The browser half persists settings through @deepseek-ai/dsh-client-store, which earlier versions do not ship.
Node.js 20 or newer Used by the host half and the test suite.
A browser with :has() support Chromium 105+ Without it the length gradient does not apply; everything else still works.

Install methods

Method Best for
dsh plugin --profile web add dsh-chat-locator Most users. Installs the released version from npm; append @1.4.1 to pin an exact one.
dsh plugin --profile web add github:hawkongz/dsh-chat-locator The newest commit on main, without cloning by hand. Locks a commit rather than a version.
From a git clone Working on the plugin itself.
From four downloaded files No network access to npm or GitHub, or an offline machine.

Install from a git clone

Use this if you would rather update with git pull than by re-downloading files.

git clone https://github.com/hawkongz/dsh-chat-locator.git
cd dsh-chat-locator
dsh plugin --profile web add "$(pwd)"
dsh web

Install without git

A bundle is four files. Download them into a folder, install the folder, and restart the host — nothing else is needed.

macOS / Linux:

mkdir -p ~/.dsh/plugin-src/dsh-chat-locator
cd ~/.dsh/plugin-src/dsh-chat-locator
curl -fsSLO https://raw.githubusercontent.com/hawkongz/dsh-chat-locator/main/package.json
curl -fsSLO https://raw.githubusercontent.com/hawkongz/dsh-chat-locator/main/index.js
curl -fsSLO https://raw.githubusercontent.com/hawkongz/dsh-chat-locator/main/client.js
curl -fsSLO https://raw.githubusercontent.com/hawkongz/dsh-chat-locator/main/cordis.patch.yml
dsh plugin --profile web add ~/.dsh/plugin-src/dsh-chat-locator

Windows (PowerShell):

$dir  = "$env:USERPROFILE\.dsh\plugin-src\dsh-chat-locator"
$base = "https://raw.githubusercontent.com/hawkongz/dsh-chat-locator/main"
New-Item -ItemType Directory -Force -Path $dir | Out-Null
foreach ($file in "package.json", "index.js", "client.js", "cordis.patch.yml") {
Invoke-WebRequest -Uri "$base/$file" -OutFile "$dir\$file"
}
dsh plugin --profile web add "$dir"

Then restart the host:

dsh web

Notes on installation

  • DSH registers the bundle for you. A package that declares dsh.bundle.patch is added to your profile's dsh.profile.bundles list automatically, so dsh plugin add is the only step.
  • There is no build step. pnpm may print a note about blocked build scripts for git-hosted packages; this plugin has no prepare script and no dependencies, so there is nothing to allow.
  • Restart the host after installing or removing. See How It Works for why.
  • Installation is per profile. --profile web is the profile this plugin was developed against; substitute your own.

📖 Usage

Everything lives on one settings page: Settings → 对话定位条. The table below lists each control with its default and range.

Where settings live

Settings are stored in this browser's local storage (key dsh.chat-locator.settings), written the moment you change a value:

  • They survive closing and restarting the browser, and refreshing DSH Web.
  • They do not sync across browsers, profiles, or machines — each browser keeps its own copy.
  • Clearing the site's data (or using a private window, or another browser) starts from factory values again.
  • Since 1.4.0 the plugin no longer reads the DSH settings document, so any chat-locator: section left there by 1.3.0 or older is ignored. After upgrading, the first run shows factory values.
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.
Length gradient长度渐变 On On / Off The curved taper that lengthens the hovered tick and its neighbours. Off returns every tick to its built-in width — the rail, jumping, paging, and the preview are untouched.
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.
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

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, and the neighbour rules carry :not(.P_markActive) so the active turn's tick keeps its built-in width even when it sits one or two ticks from the pointer; the whole taper disappears the moment the pointer leaves. Unlike the hover preview (which has no switch, because a rail you cannot preview is not a rail), the gradient is decorative and has its own settings row; switching it off also drops the frame widening, since there is no 32px peak to make room for.

Troubleshooting

The plugin ships one debug hook. Run it in the browser console:

__dshChatLocator.state()
// {
//   railPrefix: 'eGxaPq', railFound: true, rules: '…',
//   config: { … }
// }
What you see What it means
railPrefix: null The rail is not rendered in this view — fewer than two turns, or a non-conversation view. Nothing is broken.
Settings do not survive a browser restart They are kept in this browser's local storage. Another browser, a private window, or cleared site data starts from factory values — there is no cross-device sync.
Values you set in 1.3.0 or older are gone Since 1.4.0 settings live in the browser only; the chat-locator: section of the DSH settings document is no longer read. Set them once more on the settings page.

🧠 How It Works

Three constraints shaped the implementation, and each one is documented in full — with the experiments behind it — in docs/design-notes.md.

  1. The rail is claimed, not redrawn. It sits in no Slot, so a replacement would have to re-implement turn jumping, unloaded-turn paging, and active-turn following. Instead the plugin discovers the CSS Module prefix at runtime (looking for a _frame that contains a _mark) and injects one owned stylesheet of !important overrides. If upstream renames those classes, the plugin goes quiet rather than breaking the rail.
  2. Settings live in the browser, not in a host half. Up to 1.3.0 the host half registered a chat-locator namespace in the DSH settings document and the browser half bound to it. dsh 0.1.7 removed the client settingsScope service, so since 1.4.0 the browser half builds its own scope on createSnapshotStore from @deepseek-ai/dsh-client-store, persisted to local storage under dsh.chat-locator.settings. The trade-off is deliberate: settings survive browser restarts but no longer sync across browsers or machines, and anything stored in the DSH settings document by older versions is ignored. index.js remains as a no-op stub because the patch row resolves to it — see docs/design-notes.md.
  3. The preview stays plain text. The card is the built-in one, built from the built-in turn outline and only from text blocks, so thinking content cannot reach it and whitespace runs are collapsed. The plugin does not read or rewrite that text; its CSS only decides how many lines are shown, the font size, the width, and which side the card opens to.

Known boundaries — the upstream class-name contract, the 900px container cutoff, the 8px interaction strip the widened clip box adds — are listed in the same document.

📌 Topics

dsh dsh-plugin deepseek-harness cordis cordis-plugin web-ui conversation-navigation css-injection

🤝 Contributing

See CONTRIBUTING.md. There is nothing to install: clone the repository and run node test/verify-client.mjs to get all 127 assertions.

Bug reports and feature requests are welcome — the templates ask for the __dshChatLocator.state() output, which answers most triage questions in one paste.

📄 License

MIT

常见问题

9 问
答案由本站依据条目字段整理,不引用上游原文
dsh-chat-locator 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add dsh-chat-locator@1.4.3` 即可。对应的 npm 包名是 `dsh-chat-locator`。

dsh-chat-locator 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-chat-locator 安全吗?

低风险。vet 静态分析未发现可疑行为,判定为干净(clean)。

dsh-chat-locator 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-chat-locator 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.0-rc.2、0.2.0-rc.1、0.1.7-rc.2、0.1.7-rc.1、0.1.6-alpha.2。

dsh-chat-locator 需要什么运行环境?

Node.js >=20;需要同时安装 @deepseek-ai/cordis@*、react@^18.2.0。环境不满足时安装会失败,建议先确认本机版本。

dsh-chat-locator 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-chat-locator 有哪些功能?

横线粗细 1–8px 可调、轨道可置左或置右、悬停纯文本预览该轮内容、预览行数、字号、宽度可调、一键恢复全部默认值。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

UI 与外观
按星标排序,可作替代方案

nuwa-skill

nuwa-skill

女娲 DSH plugin 只需输入一个名字,就自动调研、提炼并验证任何人的心智模型、决策启发式与表达 DNA,生成可直接调用的思维视角 S

未标注验证等级 3.8 万 星

awesome-dsh-plugin

awesome-dsh-plugin

A curated list of plugins for DeepSeek Harness (dsh) · DeepSeek Harnes

L4 · 沙盒安装通过 1.8 万 星

deepseek-balance-whale-widget

DeepSeek-Balance-Whale-Widget

DSH 界面右下角的常驻小鲸鱼余额挂件,实时显示 DeepSeek 账户余额、今日已用与每轮对话消耗,支持拖拽吸附、Q 弹动画与音效,开箱即

L4 · 沙盒安装通过 4,492 星

dsh-better-sidebar

DSH-better-sidebar

面向 DeepSeek Harness 的服务化侧边栏工作台插件,把文件编辑、终端、Git 变更、子代理任务与侧边对话整合进右侧栏与底部面板

L4 · 沙盒安装通过 4,112 星

dsh-deep-whale

dsh-deep-whale

DSH Web 鲸鱼娘皮肤系列(深海女仆工坊 maid-atelier)。

L4 · 沙盒安装通过 2,470 星

deepseek-design

deepseek-design

可视化设计工作室,支持网站、App 原型、海报、信息卡、报告和杂志的模板创建、元素编辑、选区级 AI 草稿衔接与导出。

L4 · 沙盒安装通过 1,438 星

hawkongz 的其它插件

2 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-10-08。