前言¶
DeepSeek Harness(DSH)默认把每个会话当作独立进程,多会话之间没有天然的消息与任务流转机制。开发者在多工作区、多 agent 场景下,需要手动复制粘贴消息、记忆任务状态,容易遗漏或错配。
dsh-crosssession 为 DSH 提供一套跨会话协作能力:持久会话团队、任务派发与排序队列、审批门、会话级任务板,以及输入框 @ 提及。让多个持久会话像团队成员一样互相派活、汇报进度,人和 agent 都能在右侧栏看到任务状态。
插件定位¶
dsh-crosssession 是一个 DSH 工作流插件,由维护者 TobiichiOrigamii 开发,版本 0.1.0,MIT 许可证。它不依赖 npm 包,通过直接从 Git 仓库安装。
核心价值是解决「跨会话消息与任务流转」问题:把多个会话组织成团队,支持任务派发、状态跟踪、审批门和任务板,让 agent 与人类在同一上下文中协作。
核心功能¶
跨会话 / 跨工作区消息¶
session_send 把消息或任务投递给任意会话。目标空闲会自动唤醒,运行中则排队到下一轮。后台 state.deliveries 记录每个接收方最近的 messageId / taskId / kind / from,因此 session_report({status, summary}) 自动对应「最近派给该会话的任务」,无需显式传 taskId。
持久会话团队¶
session_create 在指定工作区创建持久会话,支持别名、花名册与团队状态查询。会话创建后会自动注册工作区,继承调用方 preset/模型。
任务板与状态流转¶
每个任务有 queued / running / blocked / done / failed / cancelled / awaiting-approval 状态。完成结果自动结算。同一成员同时只跑一个任务,其余排队,当前任务结束后自动派发下一个。
审批门¶
命中 policy.json 的敏感工作区,任务/消息先挂起为「待批准」,由用户批准后才投递。审批策略匹配目标会话 cwd(不区分大小写包含;/.../ 为正则),空数组表示不启用审批。
会话级看板¶
在 DSH 原生右侧栏打开「任务板」标签,只显示当前会话参与过的任务、消息与对端成员。2 秒刷新、只读。
@ 提及成员¶
输入框里 @ 会呼出成员候选,选中后插入 @别名,渲染为可编辑的 tag 样式。触发边界遵循 DSH 输入语法:@ 需要位于行首、空格或标点之后。
安静模式与持久化¶
报告/通知压成单行,可改为只写看板(deliverReports: board),用 session_inbox 后台读取。别名、成员、任务、消息、投递台账全部落盘,DSH 重启后恢复。
安装与启用¶
DSH 插件管理器支持直接从 Git 地址安装。打开 插件市场 → 添加插件,填入:
https://github.com/TobiichiOrigamii/dsh-crosssession
或在命令行:
dsh plugin add https://github.com/TobiichiOrigamii/dsh-crosssession
安装后暂不支持自动更新:升级时先卸载再安装新版。插件以你的本机权限运行,请只安装可信来源。
配置¶
在 profiles/web/cordis.patch.yml 里加入:
- insert:
- id: dsh-crosssession
name: 'file:///absolute/path/to/dsh-crosssession/index.js'
config:
quietMode: true
approvalTimeoutSeconds: 300
保存后 DSH 会热加载;修改 index.js 后需改 id 与 ?build=N 触发重新加载(或重启 DSH)。
完整配置项:
- id: dsh-crosssession
config:
completionNotify: true # 任务结束时发送完成通知
deliverReports: chat # chat=进对话;board=只写任务板/收件箱
quietMode: true # 紧凑格式(会话名:正文 / 单行报告)
noticeTextLimit: 160 # 通知/报告截断长度
maxHops: 8 # 回复链上限
maxMessagesPerMinute: 20 # 每目标限流
approvalWorkspaces: [] # 需审批的 workspace 路径模式
approvalTimeoutSeconds: 300
审批策略¶
数据目录 harness\dsh-crosssession\policy.json(热读取,改完立即生效):
{
"approvalWorkspaces": ["production", "正式", "/prod/i"],
"approvalTimeoutSeconds": 300
}
典型用法¶
创建持久会话并派任务(目标空闲会自动唤醒):
session_create({ workspace: "D:\\Code\\my-project", alias: "backend", title: "后端任务机" })
session_send({ target: "backend", message: "实现登录接口并跑通测试", kind: "task", taskTitle: "登录接口" })
worker 完成后(无需传 id,插件按投递台账自动对应任务):
session_report({ status: "done", summary: "登录接口已实现,测试通过" })
查看团队与任务板:
session_team_status()
session_board()
其他常用工具:
| 工具 | 说明 |
|---|---|
session_list |
列出工作区/会话(只读,不唤醒) |
session_reply |
回复收到的跨会话消息(messageId 可省略) |
session_task_status |
查看任务(单个或全部) |
session_broadcast |
群发消息/任务(同样受审批策略约束) |
session_inbox |
后台读取发给本会话的跨会话消息(不写入对话) |
session_export_log |
导出任务板/时间线 Markdown(限 harness\dsh-crosssession\) |
session_purge_log |
清理消息账本/已结束任务 |
session_task_approve |
批准/拒绝「待批准」任务(仅调度方) |
session_task_cancel |
取消任务(调度方或执行方) |
session_delete |
删除会话(可选注销空工作区,文件不动) |
session_workspace_delete |
注销工作区登记(文件不动) |
适用场景与注意¶
适合需要多会话协作的场景:多工作区并行开发、多个 agent 分工执行、团队任务派发与进度跟踪。
务必注意:插件以当前 DSH 进程权限运行,安装前应检查源码与许可证。看板服务仅监听 loopback,响应带 CSP(default-src 'none',frame-ancestors 限定 DSH origin)、nosniff、no-referrer。session_export_log 仅允许写入 harness\dsh-crosssession\。
结尾¶
dsh-crosssession 为 DSH 增加了一套完整的跨会话协作能力,包括消息投递、任务队列、审批门和会话级任务板。通过别名、花名册和任务板,可以在多会话场景下实现类似团队协作的工作流。