dsh-crosssession:为 DSH 增加跨会话协作能力

前言

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 增加了一套完整的跨会话协作能力,包括消息投递、任务队列、审批门和会话级任务板。通过别名、花名册和任务板,可以在多会话场景下实现类似团队协作的工作流。

更多细节与源码:GitHub | 插件目录页

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

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

小夜