前言¶
在 DeepSeek Harness(DSH)里,根会话与子 agent(subagent)会话的输入区(Composer)外观一致。多开会话或从父任务切到子任务时,很容易搞不清当前光标是在跟根 Composer 说话,还是在跟某个 subagent 的 Composer 说话。下面介绍社区客户端插件 dsh-subagent-marker(维护者 wingoflan),它只在 subagent 会话的工具栏左侧增加一个 subagent 标记,根会话不改动布局。
DSH 生态按「一切皆插件」扩展能力;插件目录站 skillhub.cn 为社区独立站点,与 DeepSeek / 幻方无官方从属关系。
这是什么¶
dsh-subagent-marker 是分类为客户端的 DSH 插件(版本 0.1.0,MIT)。作用一句话:在 DeepSeek Harness 里标记 subagent 会话的 Composer,便于一眼分辨当前输入框属于 subagent 还是根会话。
源码与说明见 GitHub:wingoflan/dsh-subagent-marker。
核心功能¶
根据仓库 README,插件行为如下:
- 仅在当前打开的会话是 subagent 时渲染标记;根会话不显示,工具栏保持原有间距与布局。
- 标记出现在 Composer 工具行最左侧:在权限选择器、计划控件之后,通过
conversation.input.left槽位挂载。 - 客户端组件从会话快照读取
subagent;根会话返回null,不向 DOM 追加元素。
下列情况不会出现该标记(也不影响只读 Composer 的既有行为):
- 一次性 subagent,或父会话已离线的 subagent:DSH 会给出只读 Composer并替换整行工具栏,这些会话本身无法接受输入,插件不在此显示标记。
安装与启用¶
官方推荐从插件名安装:
dsh plugin add dsh-subagent-marker
若使用本地目录开发或调试,可用 link 形式(路径改为本机绝对路径):
dsh plugin add link:/absolute/path/to/dsh-subagent-marker
安装时会应用插件自带的 cordis.patch.yml。首次安装后,若 Host 尚未加载新包,可能需要重启 DSH Host(开发说明中提及:无构建步骤,改 client.js 即改浏览器侧代码,但首次安装需 Host 重启才能加载包)。
关闭、重新打开与卸载¶
在 profile 的 cordis.patch.yml 中增加一行 override 即可关闭标记(勿在 profile 层重复插件 bundle 里的 insert 块,否则同 id 会挂载两次):
- id: subagent-marker
disabled: true
profile 层在 bundle 层之后生效;无 insert 的 patch 会覆盖同 id 条目。删除上述行即可重新启用。
卸载前建议先删掉 profile 中的 override 行,再执行:
dsh plugin remove dsh-subagent-marker
典型用法¶
安装完成后无需额外配置即可使用:打开任意 subagent 会话,在 Composer 工具行左侧应看到 subagent 标记;切回根会话则标记消失。README 提供截图:assets/screenshot.png。
实现要点(便于排查)¶
包分为 Host 与客户端两半:index.js 导出空的 apply();可见逻辑在 client.js,由 package.json 的 dsh.client 声明,Host 将其提供给页面。无独立构建步骤,exports["./client"] 直接指向 client.js。
适用场景与注意¶
- 适合:经常在 DSH 中并行或切换 subagent 与根会话的开发者,希望用视觉 cues 减少误发消息。
- 权限与安全:插件以当前 dsh 进程权限运行;安装前请自行查看 源码与 LICENSE,确认符合你的环境策略。
- 分类:客户端插件,依赖
@deepseek-ai/dsh-client-ui-conversation注入(见package.json中dsh.client.inject)。
结尾¶
dsh-subagent-marker 用最小 UI 改动解决「Composer 长得一样」的识别问题:subagent 有标记,根会话保持原样。需要时可按 profile patch 关闭或卸载。