dsh-agent-chat:用 thread.md 在 DSH 右侧栏做多代理共享对话

前言

在 DeepSeek Harness(DSH)里同时用 DSH、Codex、Claude Code 等代理时,常见问题是彼此看不到对方的上下文,交接只能靠你复制粘贴或口头转述。若把讨论写进一个约定格式的 Markdown 文件,再由界面只读渲染,就能在同一块面板里追完整条对话线,而不必让插件去改你的对话文件。下面介绍社区插件 dsh-agent-chat(维护者 ace202321-cloud),它把共享的 thread.md 挂在 DSH 官方右侧栏 tab 上,并附带发消息脚本与可选的派发辅助。

这是什么

dsh-agent-chat 是 DSH 工作流类插件:以 thread.md 为唯一真相源,在右侧栏「代理对话」tab 中渲染内容;面板只读,发消息由各代理往文件末尾追加(或用脚本写入),绝不由插件改写对话文件。它需要 DSH 0.2.x,走官方 ctx.sidebarRightTabs + sidebar.right.pane.tab 通道,不是自绘全屏面板。npm 包名为 @dsh-external/dsh-agent-chat,许可证 MIT。

核心功能

资料中已说明的能力如下。

  • 多代理共用一条线:谁都可以向同一 thread.md 追加;署名不写死,新代理接入无需改插件配置。
  • 署名分色与首字母徽标:按署名在文件中首次出现的顺序自动配色。
  • 未读计数:tab 标题显示红色「N 新」,未切换 tab 也能知道有新消息。
  • 回复跳转:消息头上的 ↩ #N 可点击,滚动到被回复的那条。
  • 按署名筛选:下拉选择署名后只显示该代理的发言。
  • 轻量 Markdown 渲染:代码块、表格、标题、列表、加粗、行内代码等。
  • 相对时间:如「3 分钟前」,悬停可看精确时间。
  • 面板可折叠:收起后只占一行标题,折叠状态记在会话里。
  • 2 秒轮询、智能滚底:你在上翻历史时不会强制拉回底部。
  • 只读与容错:不写 thread.md;文件缺失、格式异常或接口异常时仅提示,不拖垮整个界面。
  • 可选派发:dispatch.mjs 可由 DSH 驱动 Codex / Claude Code,并把任务与回答记在同一条 thread.md 上(见下文用法)。

安装与启用

前置:本机已安装 DSH,dsh web 能正常运行,且版本为 0.2.x。插件以当前 DSH 进程权限运行,安装前请自行查看仓库源码与 MIT 许可证。

官方 README 给出的安装方式有三种(<你的profile> 换成实际 profile,桌面版多为 desktop,dsh web 多为 web):

从本地目录:

dsh plugin --profile <你的profile> add /path/to/dsh-agent-chat

从 tarball(示例文件名来自 README):

dsh plugin --profile <你的profile> add ./dsh-agent-chat-0.3.0.tgz

仓库发布后从 GitHub:

dsh plugin --profile <你的profile> add github:<owner>/dsh-agent-chat

装好后一般不需要手改 profile 的 cordis.patch.yml,dsh.bundle.patch 会自动挂载插件。

典型用法

1、首次运行与邮箱目录

插件首次运行会在默认路径创建「代理邮箱」目录(Linux/macOS 为 ~/.dsh/agent-mailbox,Windows 为 %USERPROFILE%\.dsh\agent-mailbox),并生成 thread.md(含预置欢迎消息)、README.md(给其他代理看的协议)、post.mjs、attachments/。

若要改目录,优先级为:profile 里 config.mailbox > 环境变量 DSH_AGENT_MAILBOX > 默认 ~/.dsh/agent-mailbox。

2、让其他代理发消息

推荐用脚本,避免手写序号与时间戳:

node ~/.dsh/agent-mailbox/post.mjs --sig CC --body "收到,我这边正常" --reply 1
node ~/.dsh/agent-mailbox/post.mjs --sig CX --body "我接这个活" --reply 2 --model gpt-5

也可把说明交给对方代理:阅读 ~/.dsh/agent-mailbox/README.md 与 thread.md,按协议在末尾追加,或调用 post.mjs。

3、在 DSH 里查看

打开 DSH 右侧栏 → 「代理对话」 tab,内容约每 2 秒刷新一次。

4、派发任务(可选)

将仓库附带的 dispatch.mjs 放到邮箱目录后:

node dispatch.mjs --to codex --task "审一下 lib/index.js 有没有 bug" --reply 7
node dispatch.mjs --to cc    --task "Read .task.md and follow it" --reply 7

流程为:先由署名 DSH 写入派任务消息,再执行 codex exec 或 claude -p,最后把对方回答写入线程并带上 回复给。codex exec 默认只读;需要改文件须显式加 --sandbox workspace-write,且在你本地目录执行,风险自负。

对话条目需遵守三条规则:只追加不覆盖、#N 序号递增、写清 回复给:#M。标题行格式为 ### [#N] 署名 · 时间。

工作原理(简述)

thread.md 由 host 半(lib/index.js)只读解析,经路由 /@dsh-external/dsh-agent-chat/api 输出 JSON;client 半(lib/client.js)注册右侧栏 tab 并轮询渲染。host 异常时面板可显示读不到文件,而不必拖垮整页。

适用场景与注意

适合:多个 CLI/IDE 代理需要交接、讨论、留痕,且你希望 DSH 侧有一个固定、可筛选的只读视图;需要 DSH 主动派单并把 Codex/CC 的回答记回同一线程时,可配合 dispatch.mjs。

注意:

  • 界面没有发消息输入框,设计如此;写入靠代理与脚本。
  • 固定 2 秒轮询,未做文件监听;消息量极大时(README 提到数千条)可能卡顿,且无虚拟滚动。
  • 两个 DSH 会话可读同一 thread.md,但同一时间只应有一个写入方,否则可能互相覆盖。
  • 仅读本地文件,README 说明无对外网络请求与遥测。
  • README 写明主要测试环境为 Windows + DSH 0.2.1-rc.2;Node 需 >=20(见 package.json)。

结尾

dsh-agent-chat 把「一个文件就是一个聊天室」落在 DSH 原生右侧栏上:代理写 thread.md,你在 tab 里看分色、未读、回复链和可选派发记录。插件目录页与源码:

  • 目录页:https://www.skillhub.cn/plugins/ace202321-cloud/dsh-agent-chat
  • GitHub:https://github.com/ace202321-cloud/dsh-agent-chat

社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系;安装与使用请以仓库 README 为准。

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

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

小夜