分支:feat/bot-agent-teams。配套 iOS 使用同名分支;该功能没有修改基础 Hermes Profile。
在 Bot 模式创建或编辑 Agent,打开「允许组建团队」并保存。例如给它发送:
帮我完成项目调研,需要哪些成员就先查看已有 Agent,缺少时再创建。组建团队、启动任务,并告诉我到哪个团队查看结果。
Agent 可以查看可用基础 Agent、复用已有成员、创建持久成员和团队、启动独立团队任务、读取进展和结果。新团队自动加入发起者并将其设为管理员,随后使用已有的 @分派和管理员复核机制。成员、团队和任务写入当前账号的 workspace.sqlite3,发布既有变更事件供 Web/iOS 同步。
启动任务返回「已启动,尚未完成」。工作在新团队的任务内继续,结果在那里显示;发起者可使用查询工具读取结果。并未新增回到原单聊的自动回传机制,也不会把队列完成当成用户目标已经达成。
yaoyao-bot-bridge 工具桥,能力响应必须包含 version: 1、ready: true、in_process: true、native_tools: true。插件由 Hermes Bot 提供;按其安装流程部署并重新加载,Named Profile 需要各自安装、启用。canManageTeam 时按关闭处理;新建成员默认关闭。| 工具 | 作用 |
|---|---|
workspace_list_sources |
当前账号获准的基础 Profile |
workspace_list_agents |
当前账号可使用的已有成员 |
workspace_list_teams |
发起者担任管理员的团队 |
workspace_create_agent |
创建成员,禁止授予组队权限 |
workspace_create_team |
创建管理员协作模式的团队 |
workspace_start_team_task |
在发起者管理的团队启动任务 |
workspace_get_team_task |
读取状态、最近 20 条消息和待处理问题 |
所有变更工具要求 requestId(UUID);重试同一操作必须复用它。服务端持久保存回执;相同编号用于不同参数返回冲突,重复请求不会重复创建。原生工具调用 ID 也在本轮去重。
账号和调用 Agent 从正在运行的服务端轮次取得,模型参数不能指定 owner、token 或调用身份。创建成员只能引用当前账号获准的基础 Profile;子账号的分配规则保持有效。只有团队管理员可以启动或读取该团队的任务,禁止从当前团队任务递归启动自身任务。
每轮使用独立随机凭据、独立原生工具 ID 和回环监听端口,凭据仅传给经过认证的工具桥绑定接口。权限、账号、Profile、成员归属、归档和停止状态在每次调用时校验,异步操作在写入前再次校验。绑定保留 Agent 的配置版本;关闭后重新开启权限也不能使旧轮次重新生效。完成、取消、连接结束或服务关闭时销毁监听器并解绑;最长 30 分钟,运行时每 5 分钟续租。断线恢复只核对原执行,不重新提交已有工具副作用;下一轮重新授权。
自动组队的范围:每队 2–8 人,最多管理 20 个有效团队,账号最多保留 100 个有效 Agent,默认协作 6 轮、可设置 1–12 轮,每轮最多 128 次团队工具调用。运行并发沿用现有调度器。手工编辑团队仍走原有界面和接口。
npm run typecheck
npm test
npm run test:e2e:team-tools
tests/server/workspaceTeamTools.test.ts 验证创建、持久去重、账号隔离、Profile 撤销、配置版本失效、停止、回环认证、不同轮次的工具 ID/凭据隔离、过期和取消绑定竞态。
真实 Hermes 协议验收使用隔离测试实例(不调用付费模型、不访问用户会话):
integrations/hermes-bots-bridge/tests/hermes_wire_fixture.py /path/to/hermes-agent。HERMES_TEAM_WIRE_URL,运行 npm test -- tests/live/workspaceTeamTools.live.test.ts。此测试必须校验实例的专用 fixture 标记,实际经过 HTTP 登录、WebSocket 会话、插件原生工具注册、回环工具调用、持久成员/团队/任务和权限撤销。未设置 URL 时跳过该项;模型决策使用确定脚本,因此不代表真实模型在任意任务下的自主组队质量。
所有结果来自分支代码和隔离数据。没有部署正式 Web、调用付费模型、安装实体手机或合并主分支。