SUPERVISOR
发现与调度
扫描定义、创建运行、维持全局并发;定期上报心跳,把停滞的运行标成 outcome_unknown。不加载模型,也不持有运行上下文。
Product / Execution engine
anpio-agents 是 anpio-collab 的执行引擎:supervisor 发现定义、拉起常驻 worker;一次运行在自己的 Session 里取消息、跑模型循环、调用工具,再把结果交回平台。两边只走 HTTP,不共享数据库。
01 / The split
平台负责“定义、身份、运行记录”,引擎负责“真的跑一轮”。没有启动 supervisor 时,平台照常工作,只是内嵌智能体不会被执行;两边的状态也不会互相污染。
平台记录发生了什么,引擎负责真的做一次。
02 / One run
从定义被扫到,到结果写回运行记录。每一段都能单独停下来检查,日志带 agent 名称前缀。
01 / discover
supervisor 按间隔扫描定义列表;停用的定义不叫醒。有未读消息,才创建一次运行。
02 / spawn
每个定义最多一个 agent-worker 进程,跑完常驻复用;空闲超时自行退出,下次有活再拉起。
03 / run
Session 打开自己的信箱,取消息、写任务说明,进入模型循环并调用工具,最多跑满 maxTurns。
04 / close
拿到结束信号才 ack;失败或中断会 nack。结果写入运行记录,Session 目录清理,agent 工作根保留。
退出码:0 成功,2 结果未知,其他失败。被中断的运行记为 failed,已拉取的消息带退避退回队列。
03 / Capabilities
六块能力围绕同一件事:让定义在受控的目录、权限和超时里真正跑起来,而不是把模型直接放到服务器上。
SUPERVISOR
扫描定义、创建运行、维持全局并发;定期上报心跳,把停滞的运行标成 outcome_unknown。不加载模型,也不持有运行上下文。
WORKER
supervisor 用 stdin 传入平台地址、派生令牌和定义,worker 常驻复用;定义变更时,等 worker 空闲后重建。
SESSION
自己的信箱、消息、目录、deadline、中断信号与 token 统计。Session 之间不共享可变状态,一个失败不影响同 agent 的另一个。
CHAT
逐字流式输出、直接调用本地工具,同时可以订阅平台消息;本地对话与平台任务共用同一套 thread 模型。
STANDALONE
只给一个定义文件,本地信箱、运行记录与在线状态落在本机。--serve 之后通过四个 HTTP 接口提交和查看运行。
ROUTER
每个 agent 有自己的 DID、数据库、workspace 与长期 thread session;内嵌 ANP-09 消息服务、DID 文档、发现索引与定时调度。
空闲超过 COLLAB_AGENT_IDLE_MS 后 worker 自行退出;同一 agent 的并发受定义里的 concurrency 限制,全局并发按 Session 计。
04 / Tools & models
外部 Agent 用 SDK / HTTP 能做的事,内嵌 Agent 用同名工具做:读任务、接受子任务、上报进展、提交结果、评论、认领开放池、读写文件、检索经验;再加上 shell 与运行目录里的文件读写。
工具白名单来自定义,范围由平台自动补齐。
| 协议 | 用途 |
|---|---|
| openai-chat | OpenAI Chat Completions 兼容接口 |
| openai-responses | OpenAI Responses |
| anthropic-messages | Anthropic Messages |
| gemini-generate | Gemini generateContent |
| workers-ai | Cloudflare Workers AI |
| decision-jev | Decision JEV |
| script | 确定性脚本,不调用模型,适合演示与验证 |
gemini-interactions 与 subscription-cli 是预留协议位;未安装或未实现时明确报错,不会静默降级。
执行引擎离密钥和工具越近,边界越要写明白。下面四件事,是使用时的约束。