dsh-peer
???? AI ????????(??? DSH ??)
- Stars
- 0
- Language
- JavaScript
- Created
- Oct 4, 2026
- Updated
- Oct 4, 2026
Introduction
DSH Peer — 两个对等 AI 实例的协作工具包
让两个独立安装的 AI 编码助手互相认识、互相派活、互相复验, 并且人类可以从一个窗口同时看到它们、跟它们说话。
它和别的多 agent 工具有什么不同
| 常见的多 agent 方案 | 本项目 | |
|---|---|---|
| 形态 | 一个主实例,内部开多个分身 | 两个对等的实例,各自独立 |
| 谁启动谁 | 主实例生出子实例 | 两个都是独立安装的,谁也不是谁生的 |
| 界面 | 子实例没有界面,后台跑 | 两个都有自己的完整界面 |
| 身份 | 子实例没有独立履历 | 各自独立的会话历史、设置、插件 |
| 隔离 | 共享配置 | 独立配置,甚至可以用不同的账号 / API key |
| 单点故障 | 主实例挂了全挂 | 一个挂了另一个照常跑 |
| 关系 | 主从 | 对等 —— 任何一方都能主动发起 |
核心差异:常见方案解决的是"一个大脑指挥多只手";本项目解决的是"两个平等的个体怎么协作"。
后者更难,因为没有主从关系可以依赖 —— 所以这里有一整套"外交礼节":
- 身份牌(新会话如何快速认出对方)
- 署名信封(
[甲方→乙方] 意图:交付 | 编号:003) - 文件归属表与认领制(避免互相踩文件)
- 实现者 / 复验者分离(不许自己顺手改对方的实现)
目录结构
peer-plugin/ 给对方实例装的插件:暴露一个本地 JSON-RPC 端点
peer/ 命令行客户端(状态 / 读时间线 / 发消息 / 等待)
app/ 双栏对话程序(后端 + 前端 + 测试)
desktop/ Electron 打包壳(把 app 做成独立 exe)
IDENTITY.md 新会话开局读这一份就能接上协作
RULES.md 协作规矩
看板 共享看板模板(文件归属 + 认领 + 变更记录)
ROADMAP.md 路线
工作原理
实例 A(工作区 X) 实例 B(工作区 Y)
DSH 进程 DSH 进程
└─ 桥插件 ←──── 本机回环 ────→ 桥插件
↑ ↑
└──────── app / peer ──────────┘
(人类界面)
每个实例的插件会在自己的 DSH_HOME 下写一个端点文件:
<DSH_HOME>/agents-anywhere/bridge/endpoint.peer.json
{ "version":1, "host":"127.0.0.1", "port": <随机>, "token": <随机>, "pid": <进程号> }
端口与 token 每次重启都变,所以客户端永远从文件读,不要写死。
配置(重要)
本仓库已做隐私清理,源码里的个人路径被替换成占位符:
| 占位符 | 含义 | 你要改成 |
|---|---|---|
%DSH_HOME% | 该实例的 DSH_HOME | 你的实际路径 |
%REPO% | 本仓库所在目录 | 你的实际路径 |
%WORKSPACE_A% / %WORKSPACE_B% | 两个实例的工作区 | 你的实际路径 |
session-<id> | 会话 id | 运行时从接口取 |
推荐用环境变量而不是改源码:代码里优先读 DSH_HOME,其次才是默认值。
已知限制
- 延迟:一条消息要经过 HTTP → 后端 → 桥 → 注入目标会话 → 对方模型启动,比同进程内派活慢
- 受制于官方桥的能力:官方桥只提供"对已有会话发消息"和"中断",不支持新建会话;本项目自带插件补齐了这块
- 两边都要装插件:只装一边则那一侧功能不完整
- 端点会变:重启后端口和 token 都换,必须重读端点文件
状态
早期版本,能跑通端到端,但不保证稳定。欢迎 issue / PR。
许可
待定(见仓库说明)
文件说明
| 文件 | 内容 |
|---|---|
README.md | 本文件 —— 它和别的多 agent 方案有什么不同 |
INSTALL.md | 怎么装:两个实例、装插件、跑通链路 |
DEPLOYMENT.md | 一份实际跑通的配置样例 + 6 个实测坑 |
IDENTITY.md | 身份牌 —— 新会话开局读这一份就能认出对方 |
| RULES.md | 协作规矩 |
| ROADMAP.md | 路线 |
| peer-plugin/ | 核心:给对方实例装的桥插件(本地 JSON-RPC 端点) |
| peer/ | 命令行客户端 + 协议规格 + 测试 |
| app/ | 双栏对话界面(后端 + 前端 + 测试) |
| desktop/ | Electron 打包壳(把 app 做成独立 exe) |