dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Cross-session messaging, persistent session team, approval gates and a per-session task board for DeepSeek Harness (DSH).
给 DeepSeek Harness (DSH) 的跨会话协作插件:持久会话团队、任务派发与排序队列、审批门、会话级任务板,以及输入框 @ 提及。
让多个持久会话像团队成员一样互相派活、汇报进度,人和 agent 都能在右侧栏看到任务状态。
dsh-crosssession · 版本:0.1.0 · License:MITindex.js)+ Web Client 插件(client.js)+ 独立看板页面(board.html)session_send 把消息或任务投递给任意会话;目标空闲会自动唤醒,运行中则排队到下一轮session_create 在指定工作区创建持久会话,支持别名、花名册与团队状态查询queued / running / blocked / done / failed / cancelled / awaiting-approval 状态;完成结果自动结算policy.json 的敏感工作区,任务/消息先挂起为「待批准」,由用户批准后才投递@ 提及成员:输入框里 @ 可呼出成员候选,选中插入可编辑的 tag 样式提到的会话deliverReports: board),用 session_inbox 后台读取>= 0.2.0(DSH Desktop 或 Web profile 均可)@ 提及需要 Web Client 环境(Desktop 默认满足)DSH 插件管理器支持直接从 Git 地址安装。打开 插件市场 → 添加插件,填入:
https://github.com/TobiichiOrigamii/dsh-crosssession
或命令行:
dsh plugin add https://github.com/TobiichiOrigamii/dsh-crosssession
安装后暂不支持自动更新:升级时先卸载再安装新版。插件以你的本机权限运行,请只安装可信来源。
dsh plugin add dsh-crosssession
或在插件市场搜索 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)。
# 创建持久会话并派任务(目标空闲会自动唤醒)
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()
@ 提及输入 @ 会呼出成员候选;选中后插入 @别名,并渲染为可编辑的 tag 样式(本质仍是文本,可继续编辑/删除;未匹配的 @ 保持普通字符)。
触发边界遵循 DSH 输入语法:
@需要位于行首、空格或标点之后。让 @backend 发送1✅;让@backend发送1(中文紧贴)不会触发候选。
任务板(类型 sessionHubBoard)board.html(浅/深色、可折叠区块、tag 筛选、消息正文展示)| 工具 | 说明 |
|---|---|
session_list | 列出工作区/会话(只读,不唤醒) |
session_create | 创建持久会话(自动注册工作区,继承调用方 preset/模型) |
session_send | 发消息/派任务;空闲唤醒、运行中排队、urgent 插步 |
session_reply | 回复收到的跨会话消息(messageId 可省略) |
session_report | 上报任务结果 done/blocked/failed(taskId 可省略) |
session_task_status | 查看任务(单个或全部) |
session_team_status | 成员花名册 + 任务板概览 |
session_alias | 绑定/清除会话别名 |
session_bridge_log | 最近跨会话消息时间线 |
session_board | 返回看板地址与统计 |
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 | 注销工作区登记(文件不动) |
- id: dsh-crosssession
config:
completionNotify: true # 任务结束时发送完成通知
deliverReports: chat # chat=进对话;board=只写任务板/收件箱
quietMode: true # 紧凑格式(会话名:正文 / 单行报告)
noticeTextLimit: 160 # 通知/报告截断长度
maxHops: 8 # 回复链上限
maxMessagesPerMinute: 20 # 每目标限流
approvalWorkspaces: [] # 需审批的 workspace 路径模式
approvalTimeoutSeconds: 300
policy.json数据目录 harness\dsh-crosssession\policy.json(热读取,改完立即生效):
{
"approvalWorkspaces": ["production", "正式", "/prod/i"],
"approvalTimeoutSeconds": 300
}
cwd(不区分大小写包含;/.../ 为正则)cancelled对话里只显示 会话名:正文,不显示任何 id。后台 state.deliveries 记录每个接收方最近的 messageId / taskId / kind / from,因此:
session_report({status, summary}) 自动对应「最近派给该会话的任务」session_reply({message}) 自动对应「最近发给该会话、未回复的消息」taskId / messageIdindex.js Host 插件:工具、队列、审批、持久化、投递、看板服务
client.js Client 插件:右侧栏「任务板」标签 + @ 提及来源
board.html 看板页面(独立样式文件,随 Host 路由提供)
policy.example.json 审批策略示例
LICENSE MIT
运行时数据位于 $DSH_HOME/dsh-crosssession/(state.json / policy.json),不随包发布。
default-src 'none',frame-ancestors 限定 DSH origin)、nosniff、no-referrersession_export_log 仅允许写入 harness\dsh-crosssession\state.json 损坏时先备份为 state.json.corrupt-*node --check index.js
node --check client.js
修改 Host 插件后在 patch 中改 id 和 ?build=N 以绕过 ESM 缓存;client.js 由 DSH client-modules 自动扫描。
MIT