给一家公司/组织/团队,30 分钟在自己的网络里跑起一个 P2P agent 子网。
你想让公司里的 N 个 agent / 服务在一个域内 mesh 里互相找到、互相调用、互相协作,但是:
- 不想把它们都暴露到公网;
- 不想让员工自己满网找彼此的 DID;
- 想有一个「内部目录 + 内部任务板 + 内部协作」的中心,但又不想退回到「单点 RPC server」那种脆架构。
Concord (anet v1.1.13+) 提供了 org-central 这个角色 — 你部署一个轻量 daemon 当 anchor, 就能给整个域内的 member 提供:
| 能力 | RPC 路径 | 解决什么 |
|---|---|---|
| 邀请 / 撤销 / 列成员 | /anet/org-central/<did>/1.0.0 membership.* |
谁能在这个域里说话 |
| 域内服务目录 (ANS) | ans.register / resolve / list |
谁提供 agent://acme/llm |
| 域内任务板 (legacy) | tasks.publish / board |
内部赏金活儿不跑公网 |
| K151 看板卡片 (K163) | cards.create / move / submit / review / spawn_batch / list / show |
看板事件不走 gossip — 避开 F-23 |
| 域内 IM (K163) | im.send |
DM 走中心、带审计、有 anti-spoof |
| 域内协作脑 | brain.open |
一组 agent 共用一块白板 |
| 加密用群密钥 | keychain.group-key / rotate |
HPKE-X25519 wrap, 一次拿走 |
| 心跳与审计 | heartbeat, audit |
operator 知道发生了什么 |
| 事件通知 | org-events/<did>/1.0.0 |
member 端 "去 fetch" 推送 |
凡是这些 RPC,member 端 CLI 不需要改任何命令 — anet svc register --org=acme、
anet task publish --scope=org:<did>、anet org brain open … 都自动走 central。
本 kit 把 operator + member 两边的「人手敲过几遍的常规步骤」打包成脚本。
# 在一台对内可达的 VPS / 公司内网机器上
curl -fsSL https://agentnetwork.org.cn/install.sh | sh
anet --version # 至少 1.1.13
# 一行起 org-central
bash operator/01-bootstrap.sh acme "Acme Inc internal agent net"
# 产出 invite 链接、root.key 备份位置、systemd unit、RECOVERY.md# 拿到 operator 给你的 invite blob (一串 anet-invite://...)
bash member/01-join.sh "anet-invite://acme/..."
# 然后开始干活儿
bash member/02-register-service.sh my-llm --skill=llm --endpoint=http://127.0.0.1:8001
bash member/03-publish-task.sh "fix the build" 0 "tags=devops"
anet org board acme # 看到自己的任务在板上operator/ — 给 operator 的工具
01-bootstrap.sh init org-central + 打印 invite + 写 RECOVERY.md
02-issue-invite.sh 生成新 invite (给新员工)
03-rotate-key.sh 滚一次 group key (季度操作)
04-monitor-central.sh 日常运维快照:成员/事件/审计/IM 流量/看板列表
docker-compose.yml docker 部署模板
systemd/anet-org-central.service systemd 单元
member/ — 给 member 的工具
01-join.sh 一行 join + 验证 + 列出 org 状态
02-register-service.sh 注册一个域内服务
03-publish-task.sh 发一个域内任务(K131 兼容路径)
04-publish-card.sh 发一个 K151 看板卡片(K163 中心化)
05-send-im.sh 通过 org-central 发一条 DM(K163 中心化)
examples/
03-org-card-flow/ K163 — 看板卡片走 org-central 路由(解 F-23)
04-org-im-flow/ K163 — DM 走 org-central(anti-spoof + audit)
tests/
run-all.sh 一键跑全部测试
lib/common.sh 共享 fixture(daemon-start/free-port/cleanup)
unit/ 按脚本一一对应的单元测试
test-bootstrap.sh operator/01-bootstrap.sh
test-invite.sh operator/02-issue-invite.sh
test-rotate-key.sh operator/03-rotate-key.sh
test-monitor-central.sh operator/04-monitor-central.sh
test-join.sh member/01-join.sh
test-register-service.sh member/02-register-service.sh
test-publish-task.sh member/03-publish-task.sh
test-publish-card.sh member/04-publish-card.sh
test-send-im.sh member/05-send-im.sh
lan-2node.sh 端到端:op + mem 跑完整 join + 发任务流程
lan-d2-short.sh Concord D.2 短链邀请验证
| 你想做 | 推荐脚本 | 走的协议 |
|---|---|---|
| 把任务发到 org 的(老式)任务面板 | member/03-publish-task.sh |
K131 gossipsub /anet/tasks,老 daemon 兼容 |
| 把卡片发到 K151 看板上、靠中心化解决 F-23 | member/04-publish-card.sh |
K163 cards.create RPC,再 K160 fan-out |
| 给同 org 的另一位成员发 DM、走中心审计 | member/05-send-im.sh |
K163 im.send RPC(POST /api/org/{did}/im/send) |
| 看 org 流量谁在干啥 | operator/04-monitor-central.sh |
本地 store + REST API |
新部署优先 04/05;03 仍保留以兼容尚未升级到 K151 的旧 daemon。
# Build the daemon with fts5 (some sqlite virtual tables need it):
cd /data/projs/anet/anet-cli && CGO_ENABLED=1 go build -tags=fts5 -o /tmp/anet-k163 ./cmd/anet
# Run the whole suite (13 tests, ~70s):
ANET=/tmp/anet-k163 bash tests/run-all.sh
# Keep fixture dirs after success (for inspection):
FIXTURE_VERBOSE=1 ANET=/tmp/anet-k163 bash tests/run-all.shanet-p2p-starter-kit教你怎么写一个 P2P service(个人 agent / SDK 路径)。- 本 kit 教你怎么部署一个域(组织 anchor 路径),让那些 service 在域内合法可见、可计费、可审计。
两个 kit 解耦:member 端在你的域里完全可以用 starter-kit 写出的 service,加 --org=<name> 就自动域内化。
MIT