Skip to content

多 Agent 协作与场所(Agent Harness & Venues) ​

Zhin.js 采用 Agent Harness(ADR 0048)作为多 Agent 协作微内核:框架负责权限收窄、守恒预算账本、确定性护栏(Guard Kernel)、串行信箱(Mailbox)、共享黑板(Blackboard)与事件账本(engagement_events),由 Agent 自主决定如何协作。

1. 在 agents/<name>/agent.json 中声明 collaboration ​

每个 Agent 通过 agent.json 的 collaboration 字段声明允许联系的同伴(contacts)、允许接收协作请求的来源(accepts_from)以及单次协作预算上限(budget):

json
{
  "name": "planner",
  "version": "1.0.0",
  "description": "群内协作入口 Agent:拆解需求并协调 builder 与 reviewer",
  "role": "orchestrator",
  "entry_points": ["system.md", "boundaries.md", "conventions.md"],
  "trigger_rules": {
    "file_patterns": [],
    "keywords": ["规划", "方案"]
  },
  "collaboration": {
    "contacts": ["builder", "reviewer"],
    "accepts_from": ["human", "builder", "reviewer"],
    "budget": {
      "modelCalls": 16,
      "tokens": 64000,
      "wallMs": 120000,
      "sideEffects": 8
    }
  }
}

2. 协作工具与共享黑板 ​

工具作用
agents列出当前可联系的 Agent 及其职责说明
ask同步向 contacts 中的同伴提问,在当前回合内等待回复
delegate异步委派任务,目标完成后将 result 投回委派方信箱唤醒新回合
tell单向通知同伴,不等待回复
follow_up对已发出的 ask / delegate(按 mailId)追加上下文或继续追问
board_read读取当前 Engagement 的共享黑板条目(支持按 key 或 kind: note | todo | artifact 过滤)
board_write向共享黑板写入或更新 note、todo(pending | in_progress | done)或 artifact
cancel_delegation撤回自己委派出去的工作(传 delegate 返回的 mailId)
escalate冻结当前 Engagement 并向发起的人类请求裁决

3. 配置多 Bot 群聊场所(ai.venues) ​

在 zhin.config.yml 中配置 ai.venues,将群场景绑定到多个 Bot Endpoint:

yaml
ai:
  venues:
    - id: product-room
      conversation:
        platform: sandbox
        sceneType: group
        sceneId: product-room
      visibility: visible
      entry: planner
      members:
        - agent: planner
          botEndpoint: planner-bot
        - agent: builder
          botEndpoint: builder-bot
        - agent: reviewer
          botEndpoint: reviewer-bot
字段说明
id场所唯一标识
conversation绑定的会话:platform(适配器平台名)、sceneId 必填;sceneType(private / group / channel)与 threadId 可选。同一会话只能绑定一个 Venue
members成员列表,每项是 agent(Agent 名)与 botEndpoint(该 Agent 发言用的 Endpoint 名),可选 aliases(群里点名用的别名)。同一 Venue 内 Agent 与 Endpoint 都不能重复
entry没有点名特定成员时接管人类消息的入口 Agent,必须是成员之一
visibility投影模式,不写时私聊为 backstage,其余为 visible
  • visible:每个参与 Agent 通过各自绑定的 Bot 账号在群聊中发言。
  • summary:协作在后台进行,仅由 entry Agent 发送汇总结果。
  • backstage:纯后台协作,不向群聊投射中间消息。

完整字段见配置字段(自动生成)。跨进程的远程 Agent 通过 a2a.mailbox 接入。

4. 使用 zhin trace 检视协作 ​

bash
# 列出最近的 Engagement
zhin trace --engagements --list

# 查看最近一次 Engagement 的协作图
zhin trace --engagements

# 查看指定 Engagement 的完整因果链、黑板快照、护栏阻断与预算消耗(id 可只写前缀)
zhin trace <engagementId>

协作事件保存在数据库的 engagement_events 表中,需要 SQLite、MySQL 或 PostgreSQL。Console 的协作图谱页面展示同一份数据。

更多说明见 Agent 与工具调用。