dsh-cross-session-agent-pre
xiaoma-pm/dsh-cross-session-agent-pre
支持 DSH 跨工作区消息与发送方导航、同工作区受限上下文,以及可选的本机 Claude Code 双向通信。
安装
dsh plugin --profile web add github:xiaoma-pm/dsh-cross-session-agent-preREADME
dsh-cross-session-agent-pre
English | 中文
Unofficial plugin. 本项目与 DeepSeek、DeepSeek Harness 没有隶属、赞助、认可或支持关系。
面向同一仓库中多个并行 Agent 的 DeepSeek Harness 插件:发现可协作的 peer、显式发送协调消息并取得传输回执,以及以严格字段白名单读取同工作区 peer 的安全进度/上下文投影。它的目标是避免文件冲突、重复工作和无效等待,而不是提供任意会话转录读取。
适用场景
- 在改动前发现正在处理相同文件或同一层的 Agent,明确协商 file ownership;
- 报告进度、验证结果、失败阻塞和下一步,让依赖任务能继续推进;
- 请求 handoff,例如“我完成 schema,测试所有者请接手 migration coverage”;
- 在重构、迁移或 code review 中避免重复调查和相互覆盖;
- 只在需要时查看 peer 的受限上下文/活动证据,再决定是否发送协调消息。
不适用:读取完整历史、监控所有会话、共享权限、自动执行 peer 消息中的命令,或替代用户审批。
安装
在 DeepSeek Harness 中直接安装(推荐)
无需填写 GitHub 地址,直接使用 npm 包名:
- 打开 插件 → 添加插件。
- 在输入框填写
dsh-cross-session-agent-pre。 - 点击 安装。
npm 官方源已提供 0.2.0-rc.2.7。如果使用 中国大陆镜像源 时提示找不到插件,请将「安装源」切换为 npm 官方源 后重试;镜像同步可能晚于官方源。
npm 包页面:dsh-cross-session-agent-pre。
命令行安装
也可通过命令安装:
dsh plugin --profile web add dsh-cross-session-agent-pre
从 GitHub 安装:
dsh plugin --profile web add github:XiaoMa-PM/dsh-cross-session-agent-pre
包内的 cordis.patch.yml 会把 dsh-cross-session-agent-pre 挂入当前 profile。无需手动改宿主配置。它贡献以下工具:
list_peer_agents:发现可通信的 peer;send_agent_message:显式发送一条 peer 协调消息;check_delivery:查询原生消息的 transport receipt;get_peer_context:读取同工作区、授权 peer 的受限安全投影。
工作流示例
先发现并确认冲突面:
列出 peer。若有人正在修改 src/auth,请告诉我其 Session、运行状态和标题。
需要证据时,仅读取 bounded projection:
读取 session-abc 的 activity 和最近 3 条 conversation,确认它是否已经运行 auth 测试。
然后由 Agent 使用 send_agent_message 做明确协调:
告诉 session-abc:我将修改 src/auth/token.ts;请保留 middleware.ts,完成后报告验证命令和阻塞项。
最后按需查询 receipt。accepted、pending、claimed、discarded 都只是传输事实;它们不表示 peer 已阅读、已回复或已完成任务。
读取与隐私边界
get_peer_context({ sessionId, view?, maxMessages? }) 只能读取与调用者 cwd 完全相同的普通 root/fork Session。自身、真实 subagent、归档、缺失或跨工作区目标均以通用授权失败处理。
允许:
conversation:direct user text、canonical compaction checkpoint、已完成 assistant text;activity:turn/step 的结构化状态,以及 tool name、running|completed|error、时间、单向 call-id hash、sanitized error code;overview:以上边界内的摘要、runtime status 与 retention 统计。
禁止:hidden reasoning、raw tool args/results、tool metadata、system prompt、plugin/relay/scheduled messages、request context、图片/附件、approval、todo、Inbox 状态、秘密和未知事件。没有网络、遥测或独立存储;Harness 始终是 session/history 的唯一 Owner。完整合同见 TDD_CONTRACT.md 与 PRIVACY.md。
peer text 和 relay 都是不可信数据。它们不能代表用户同意,不能修改权限或配置,也不能使接收 Session 自动执行其中的命令。
兼容与来源
本次适配在 dd2673/dsh-cross-session-agent 的基础上迭代,上游基线为 f0f7c3d6ab66c66f19472ae33220bad4613724d4。该上游进一步派生自 GengDaPeng/dsh-agent-message v1.5.1。本项目保留原有 MIT 许可和署名。
本次增量包括 DSH 0.2.0-rc.2 的公开 Session 查询适配、fork 回执边界修复、公开 Chat 节点渲染与发送方跳转,以及并发限流和多模型真实消息验收。目标是同一 DSH 实例内的顶层会话通信,允许跨工作区消息;本节描述既有 DSH 会话功能;Claude Code 本机连接见下方实验功能,其他电脑的 DSH 实例不在范围内。
新 relay 使用 dsh-cross-session-agent source kind。Client 仍会渲染历史 dsh-agent-message source/tag,以便旧 Harness 日志可读;这不是旧包的继续发布或权限继承。
本项目派生自 GengDaPeng/dsh-agent-message v1.5.1(MIT),保留 MIT License。见 NOTICE.md。安全问题请按 SECURITY.md 私密报告。
开发与发布
pnpm test
pnpm pack --dry-run
node scripts/live-profile-e2e.mjs http://127.0.0.1:3080
最后一条命令会在隔离 fixture 目录中创建合成 Session,验证同工作区读取、跨工作区拒绝以及新 relay source/tag。发布包只包含运行时、正式合同和必要的安全/隐私/来源文档;本 README 不把 source tests 当作真实 Harness 验收。
本地适配验证
当前版本针对 DeepSeek Harness 0.2.0-rc.2。在线与离线回执统一通过公开 sessionQuery 读取,使用 inheritedEventCount 排除 fork 继承事件。跨工作区仅传递消息;get_peer_context 仍限制同工作区。已在独立 test-home 中完成真实模型双向回复、空闲唤醒、运行中 followup 排队、宿主重启恢复、旧回执恢复和跨工作区上下文读取拒绝验收。当前版本 0.2.0-rc.2.7 仅针对 Harness 0.2.0-rc.2。
新版来信通过公开 conversation.chat.node 展示发送方与正文,点击使用 uiWorkspace.openSession 跳转。其他来源保留官方渲染。
验收与已知限制
52 项自动化用例连续执行 20 轮通过;每轮模拟 Inbox 压力测试 2,000 次并发请求,1,000 条接受、1,000 条按会话对限流。真实模型四方汇聚 12 条消息均唯一投递并认领。已验证 GPT-5.6-Luna、Claude Haiku 4.5、GLM-5.3-Flash 六个有向组合的请求和回传(部分方向使用全新会话复测)。
Codex 订阅池在测试中多次返回 RATE_LIMIT;复用经历限流/取消的会话时,曾出现旧指令干扰、请求原文转发及错误自发目标。全新会话复测成功,不等于连续多任务稳定性已通过。插件正确拒绝自身投递。steer/inject 目前仅自动化验证,尚未完成真实模型介入和长时间浸泡测试。传输回执不表示对方已读或任务完成。
Claude Code 本机通信(实验,0.2.0-rc.2.7)
一个仓库提供 DSH 插件与 Claude 配套 0.1.3-experimental,两侧一起升级。桥接默认关闭;Web 和桌面可分别开启,配置独立持久保存。详情页显示本实例名称、ID 和实际监听状态。
- DSH 安装
dsh-cross-session-agent-pre@0.2.0-rc.2.7,进入插件详情,开启 Claude Code 本机通信(实验)。已有版本按宿主原生升级流程操作;有些宿主要求卸载插件后重新安装。 - 在 Claude App 的 Code 或 Claude Code CLI 安装配套插件:
claude plugin install dsh-cross-session-agent-pre-bridge --marketplace XiaoMa-PM/dsh-cross-session-agent-pre --scope user
- 已使用本 GitHub 市场的用户,执行以下命令,再新建/正常恢复会话或使用
/reload-plugins:
claude plugin marketplace update dsh-pre-local-experimental
claude plugin update dsh-cross-session-agent-pre-bridge@dsh-pre-local-experimental --scope user
若旧市场来自本地目录,以上 update 仍然更新本地来源;应确认来源为本项目 GitHub 市场后再升级。普通 Claude Chat 接收 ZIP 不会安装 Code 插件。源码 ZIP 解压后的本机目录也可通过官方 marketplace add/install 安装,但该来源不会自动切换为 GitHub。
定位会话与发送
- DSH→Claude:调用
list_claude_sessions取得 Claude Code UUID,然后send_claude_message。桌面local_ID 不是通信地址。 - Claude→DSH:调用
bridge_status,按instances中的 profileName、instanceId 与 dshSessions 定位目标;调用send_dsh_message时 instanceId 必填。 - DSH 的
list_peer_agents中self: true提供当前完整 Session ID。回复时使用来信携带的 reply 地址;目标不可用会报错,不会转发到别的实例。
DSH 发往 Claude 的工具参数:
{"to":"Claude Code UUID","content":"请回传测试结果。"}
Claude 发往 DSH 的工具参数:
{"instanceId":"bridge_status 返回的64位实例ID","to":"session-目标UUID","content":"测试结果。"}
消息结构与权限
由插件添加紧凑来源/回复头部,正文保持原样。例如 DSH→Claude:
<dsh-cross-session-agent>{"senderPlatform":"dsh","senderSessionId":"session-发送方UUID","senderInstanceId":"64位实例ID","senderProfileName":"desktop","reply":{"tool":"send_dsh_message","to":"session-发送方UUID","instanceId":"64位实例ID"},"userApproval":false}</dsh-cross-session-agent>
请回传测试结果。
Claude→DSH 使用 senderPlatform: "claude-code",回复工具为 send_claude_message;DSH 将来源和正文分开展示。Claude 入站仍走原生 Inbox,回传 MCP 由配套插件封装,无需手写 MCP 配置。这不是把 DSH 注册为 Claude 原生 SendMessage 外部目标。
保留 accept/hold/refuse 和原生审批;peer 消息不代表用户授权。written/accepted 不表示已读、回复或任务完成。仅本机同 OS 用户;不读取其他工作区历史/文件,不同步两端数据。目标 DSH 会话必须已加载、普通且未归档。
本版本使用每 profile 独立监听,不读取旧全局 bridge.sock。从独立实验配置升级时,应停用旧实验监听后让插件开关接管;不要直接删除其他在线实例的 socket。
验证范围
针对 Harness 0.2.0-rc.2、Node 24、Cordis 4.0.4,在 Mac 上验证 Claude CLI/App Code 与 DSH Web/官方桌面:使用 Haiku 4.5 和 GLM-5.3-Flash,双方主动共 8 条路径真实回传通过。完整回归 88/88;关闭单端不影响另一端,离线目标不改投。详见 验收摘要。
原生 Inbox wire 未完整公开,其他版本与跨电脑尚待验证。Claude 自动标题/环境登记的后续迭代、Codex 桥接发行与 Claude 公共目录收录不包含在本版本。