dsh-convo-mode:在 DSH 里按会话切换「对话模式」

前言

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 中可用。

典型用法

  1. 点击 composer 工具行左侧的 Chat 芯片,或输入 /conversation 进入对话模式。
  2. /conversation <message> 可在一步内进入模式并发送该条消息。
  3. /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。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜