前言¶
DeepSeek Harness(DSH)默认把智能体当成编码助手:改文件、跑命令、委派子任务都在工具面板上。日常答疑、方案讨论、读文档时,同一套能力容易把对话拉成「先改再说」的节奏。若只靠临时改 system prompt,很难在「本会话关工具、其他会话照旧」之间切换,也不利于 resume、fork 后状态一致。
dsh-convo-mode 是 stansz 维护的 DSH bundle:在同一 agent 上增加按会话启用的 conversation mode,用 composer 上的芯片或 /conversation 切换,并在激活时叠加对话策略 prompt、把工具收成只读白名单。
这是什么¶
dsh-convo-mode 面向 DeepSeek Harness,提供 per-session conversation mode——仍是同一个 agent,但被引导为对话型助手,编码类工具在模式内不可调用。实现形态是 DSH bundle:cordis.patch.yml 一行配置、Host 插件与 Web 客户端插件一并装入 profile,对该 profile 下所有 workspace 的会话生效。
- 维护者:stansz
- 分类:客户端(Web client 注入 composer 区域)
- 许可证:MIT(见仓库 LICENSE)
- 包版本(package.json):1.0.0
社区目录页:skillhub.cn/plugins/stansz/dsh-convo-mode(独立站点,与 DeepSeek / 幻方无从属关系)。源码:github.com/stansz/dsh-convo-mode。
核心功能¶
对话策略(Prompt)¶
模式激活时,向 system prompt 追加一节,约束助手:自然 prose、篇幅贴合问题、不主动产出 artifacts、不确定时先问一句澄清而非猜测;代码仅作聊天中的说明性示例。
只读工具策略(Tools)¶
模式内 agent 的工具范围限制在只读 allow list,例如 read、glob、grep、read_image、web search/fetch、ask_user_question、skill 以及会话历史读取类工具。写文件、编辑、shell、作业、终端、委派与工作流类工具不会呈现给模型,也无法调用。策略绑定在当前 agent,退出模式后释放。
若配置为 tools: unrestricted,则不受上述只读限制(见下文配置)。
客户端入口¶
Web 端在 composer 工具行左侧注册 Chat 芯片(挂载点 conversation.input.left),读取 Host 侧投影状态,与 slash 命令共用同一切换逻辑;样式使用 --dsw-alias-* 主题 token,不依赖 Harness Client 包导入。
状态持久化¶
模式状态通过 session 上的 conversation 投影折叠 /conversation 的 command/run / command/done 记录实现,不追加私有 session 事件类型,因此 resume、fork、重启后仍可恢复;且 按会话隔离——其他会话、子 agent、协作者仍保持原有编码配置。
安装与启用¶
bundle 以 profile 插件方式安装,与 dsh-frontend-review、dsh-git 等 GitHub bundle 相同。安装后挂载一行 id: dsh-convo-mode,名称为 dsh-convo-mode。
方式一(推荐):从 GitHub URL 安装
在 Web UI 打开 Plugins → install a bundle,指向:
https://github.com/stansz/dsh-convo-mode
插件管理器会解析包、加入 profile 并激活,无需重启。仓库为 private,机器需已登录 GitHub 账号 stansz(例如 gh auth status 显示该账号)。
方式二:本地目录安装
在已具备仓库访问权限的机器上,将 clone 后的目录通过 Plugin Manager 的 local bundle / 与其他本地 bundle 相同的 package-directory 方式安装。
profile 被该 profile 下所有 session 共享,因此模式在该 profile 的全部 workspace 中可用。
典型用法¶
- 点击 composer 工具行左侧的 Chat 芯片,或输入
/conversation进入对话模式。 /conversation <message>可在一步内进入模式并发送该条消息。/conversation off退出;芯片也可再次点击切换。
模式写入 session log,跨 resume、fork 与重启保持;仅影响当前会话。
配置¶
两处等价:
- Web UI:Settings → Plugins → Conversation Mode → Configure(含引导文案、只读/ unrestricted、allow list、「新会话默认进入模式」等 schema 字段)。
- Profile patch:
$DSH_HOME/profiles/<profile>/cordis.patch.yml中按id: dsh-convo-mode覆盖config(整段替换该行 config)。
示例(来自 README):
- id: dsh-convo-mode
config:
section: | # model-facing guidance while active
Be a warm, concise conversational partner...
tools: readonly # or "unrestricted"
allow: [read, web_search] # override the read-only allow list
defaultActive: false # true starts every session in the mode
加载时会校验:未知键或类型错误会导致插件加载失败,而不是静默忽略。
自测(维护者)¶
Host 半部提供无外部依赖测试:
node test/host-half.test.mjs # prints ALL HOST HALF TESTS PASSED
适用场景与注意¶
适合:在同一 DSH profile 里,部分会话只想聊天、查资料、只读浏览代码,又不想全局关掉编码工具;需要 UI 一键切换且状态可随会话日志恢复的场景。
注意:
- 插件以当前 DSH 进程权限运行;安装前请阅读源码与 MIT 许可证,并确认 private 仓库的访问与信任边界。
tools: unrestricted会取消只读限制,与「对话模式隔离写操作」的初衷相悖时需自行权衡。- 子 agent、其他会话不受本会话模式影响,勿误以为全 profile 已进入纯对话环境。
结尾¶
dsh-convo-mode 把「对话助手」做成可切换、可持久、按会话隔离的 DSH bundle:composer 芯片与 /conversation 负责入口,prompt 与 agent 级工具策略负责行为边界。进一步了解可访问目录页 skillhub.cn/plugins/stansz/dsh-convo-mode 与 GitHub 仓库 github.com/stansz/dsh-convo-mode。