zzhzz/dsh-ask-peer
一个为DeepSeek Harness设计的去中心化“询问他人”插件。
Project Overview项目介绍
dsh-ask-peer is a decentralized "ask a colleague" plugin for DeepSeek Harness with no broker or shared database: agents query each other directly over the LAN and return answers grounded in the peer's workspace and session. It ships tools such as ask_peer, ask_peers, recommend_peer, peers_list, and ask_peer_async, supporting signed friend cards, bounded hop-based discovery, and per-friend ask/auto/deny policies. Use it for local multi-agent collaboration, cross-validation, and trusted expertise sharing. Note that the default hop limit is 1 and cross-network use requires opening the listener port manually.
dsh-ask-peer 是一个面向 DeepSeek Harness 的去中心化"问同事"插件,无需中心代理或共享数据库,代理间通过局域网直接点对点互问并依据对方工作区与会话上下文返回结果。提供 ask_peer、ask_peers、recommend_peer、peers_list、ask_peer_async 等工具,支持带签名的名片加好友、跳转上限与扇出可控的发现以及自动或手动审批模式。适用于本地多代理协作互相请教与验证答案;请注意默认 hop 上限为 1,跨网段需自行放通端口。
请帮我了解并安装插件:【dsh-ask-peer】【https://github.com/zzhzz/dsh-ask-peer】
Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。
Or use CLI install (for developers)或使用命令行安装(适合开发者)
CLI Install命令行安装
dsh plugin --profile web add dsh-ask-peer
把 zzhzz/dsh-ask-peer 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-ask-peer
A decentralized "ask a colleague's agent" plugin for DeepSeek Harness (dsh).
The core design is peer-to-peer: no broker, no shared database, no company server. Every agent runs its own endpoint and keeps its own copy of its relationships, so the network has no single point of control — asking happens directly between two agents over the LAN. One agent asks another, and gets a committed answer grounded in the colleague's own workspace and session context. The result is a community of agents that discover each other, vouch for each other, and share expertise — with every relationship owned by the two agents in it.
A conversation between agents
Bob is standing up a docker-compose dev environment and wishes a colleague had already figured this out. He types to his own agent:
Carol, recommend another agent who can help me stand up a docker-compose dev environment.
Carol's agent considers the agents she knows — none of them advertise docker
expertise. So she asks around, the way you'd ask around the office: she
forwards the request to her friend Erin, who checks her own circle and finds
Ada — live in a docker-compose session right now, advertising docker and
env-setup. Ada's signed friend card travels back along the chain, and
lands in Bob's chat as a small bubble: ada recommended via carol → erin,
with Add friend. One click, and Bob's agent can ask Ada's agent directly
— getting an answer grounded in Ada's real workspace and session context.
Three agents, one question, a referral that travelled two hops, and a new working relationship — all peer to peer. The search stays bounded by design: a hop limit and a small per-hop fan-out keep a "who knows X?" from growing into an asking storm, the chain travels with the request so it can never loop, and every card is signed — you always know who vouched, and you verify the agent before you trust it.
Features
- Truly decentralized — no hub, broker, or shared database; agents talk directly over the LAN and each side keeps its own copy of the relationships.
ask_peer/ask_peerstools — ask one colleague, or 2–3 in parallel and cross-validate the answers.recommend_peer— discover new friends: a colleague recommends another agent's signed card, shown to you as a notification/chat bubble with Add/Decline; accepting merges them into your friend list. When the colleague knows nobody matching, she asks her own friends onward — bounded by a hop limit (default 1) and a small fan-out so discovery never becomes an asking storm, with the referral path shown right in the bubble (via carol → erin).- Live roster with tags —
peers_listshows who knows what, so the model picks the right peer deliberately. - Session-level answers — a fresh, read-only agent answers from a copy of the targeted session's context; your live sessions are never touched.
- Approval bubbles in the Web UI — answer or decline, or trust a friend with
automode. - Backlogged asks (
ask_peer_async/ask_result) — no interruption of the answerer's current work. - Signed friend cards — paste one signed blob to add a friend; no manual host/port/key copying.
- Natural invocation — the agent calls
ask_peer/recommend_peeron its own when your request matches a friend's advertised expertise; you don't have to name the tool.
Usage
Install the plugin into a profile and add the bootstrap row:
dsh plugin --profile web add dsh-ask-peer
# or from a checkout: add ./dsh-ask-peer — or a tarball: add ./dsh-ask-peer-0.1.0.tgz
- id: ask-peer
config:
callerName: 'ada'
keyDir: '/home/ada/.dsh-ask-peer/keys'
listen: true
Start the profile (dsh --profile web), open Settings → Ask Peer, copy
your sign or friend card and share it with a colleague, then paste theirs to
add a friend. Each friend has a policy: ask (you approve in the UI),
auto (trusted friends run immediately), or deny.
Then just talk to your agent — it asks peers, cross-validates, and discovers new friends on its own:
Carol, recommend another agent who can help me stand up a docker-compose dev environment.
Model tools: ask_peer, ask_peers, peers_list, recommend_peer,
ask_peer_async / ask_result. The full configuration reference and
protocol live in src/config.ts and docs/ARCHITECTURE.md.
Testing
The standard test path is fully local: it uses temporary dsh profiles and
mock model endpoints, so no DEEPSEEK_API_KEY is required. From a fresh
checkout with Node.js ^22.19.0 || >=24.0.0 and pnpm 10 or newer:
pnpm install
pnpm run typecheck
pnpm run build
pnpm smoke
pnpm web-check
The checks are successful when every command exits with status 0. In particular, the two end-to-end checks finish with:
== smoke test passed ==
== web check passed: browser half discovered and served ==
pnpm smoke exercises real local dsh profiles for Ada, Bob, Carol, and Erin,
including authenticated peer requests, recommendations, bounded transitive
discovery, parallel answers, and the read-only answer sandbox. pnpm web-check verifies that the Web profile discovers the plugin and serves its
browser bundle and same-origin routes.
To keep the tested topology running for manual browser testing, use:
KEEP_RUNNING=1 pnpm smoke
Wait for the following line, then open http://127.0.0.1:3080, create a new
session in the dsh-ask-peer workspace, and submit a request such as:
== interactive environment ready: ada=http://127.0.0.1:3080 peers=3878,3879,3890 mocks=9001-9004 (Ctrl-C stops everything) ==
Find colleagues who can help with this environment, ask them how to start it, and compare their answers.
The expected flow uses peers_list, recommend_peer, and ask_peers, then
returns a comparison of the mock colleagues' answers. The left sidebar lists
session workspaces, not peer identities, so seeing Bob or Carol there is only
shared test-session history. Press Ctrl+C in the terminal to stop the test
environment. If a required port is occupied in an interactive run, the test
shows the listening process and asks whether to stop it; answer y to
continue or anything else to exit. Non-interactive runs exit without stopping
any process, as do CI runs.
Contributing
Contributions are welcome. See CONTRIBUTING.md for the development setup, validation commands, and pull request guidelines.
guhanfei-ai/dsh-grafana
liangmianya/dsh-synapse
alaliqing/claude-paper
omdsh-dev/dsh-annotation
Anionex/dsh-turn-rewind
hanshenmesen/dsh-turn-delete
qkycir-123/dsh-run2skill
Tyan66666/billion-context-dsh