Worker CLI 能力
Ankole 的一部分能力是 Agent Computer 里的 shell 命令,而不是模型可见的工具。Agent 像使用 gh 或 kubectl 一样经 shell 调用它们。Webhook 凭据命令与 automation job 命令都采用这种形态。
本页说明什么时候用这种形态交付能力,以及让它无需工具注册、无需技能索引条目、无需 system prompt 段落也能被发现并正确使用的披露架构。
什么时候 CLI 是正确形态
同时满足下列条件时,能力适合 CLI 形态:
- Agent 在更大的 shell 工作流里、与其他命令并肩使用它,脚本或 background agent job 也可能需要调用它。
- 它只在一条决策路径上有意义。从不创建 webhook 的 Agent 不需要知道
create-webhook-cli存在。 - 它不需要让模型填写 JSON schema,几个 flag 就能承载输入。
模型可见工具在每个 turn 都消耗上下文;CLI 在 Agent 走到相关路径之前零成本。
披露架构
三条规则取代工具注册与技能索引:
**--help 就是契约文档。**CLI 的 --help 输出承载 Agent 正确使用该能力所需的知识:它是什么、信任模型、保证、以及一次完整使用长什么样。它随二进制发布,与其描述的行为同版本,不会像独立文档那样漂移。为零上下文的读者书写,陈述目标与约束而非程序步骤。create-webhook-cli --help 是参考样例。
**指针放在决策面上。**发现性来自一句话指针,放在 Agent 恰好在做相邻决策的位置:某个工具描述、某个集成特定外部系统的 Skill、或另一个 CLI 的 --help。每条指针陈述能力何时相关、去哪里读全文,不引导选择。这种形态的每个能力必须在相关路径的必经面上至少有一条指针——让能力有意义的那条路径,同时给出披露它的位置。
**通用知识住 --help,领域知识住插件 Skill。**对该能力的一切使用都成立的契约归 --help;集成某个外部系统的 Skill 只保留该系统的增量。例如 GitHub webhook Skill 开篇即指引 Agent 阅读 create-webhook-cli --help 获取通用 webhook 契约,自身只覆盖 hook 注册、ping 验证、delivery 对账与 GitHub hook 配额。第二个集成免费复用整个通用层。
Automation job
Automation job 是确定性脚本消费者。Checkback、cron schedule 或 webhook endpoint 可以设置 automation_job_id,让脚本消费触发,而不是每次都直接唤醒 Agent 会话。未设置该字段的触发器保持原有直接唤醒行为。
Agent 在自己的 Agent Home 内创建独立目录,写入 main.ts,手工验证运行环境与不调用 SDK 的分支,再用 create-automation-job-cli 注册。Worker 在注册时和每次运行时都解析 realpath,确认目录和入口仍位于 Agent Home 内。运行时直接执行磁盘上的当前文件,所以修改脚本无需重新注册。
运行 SDK 提供 context() 与 emitEvent(payload)。context().event 是该触发器直接投递时会写入 ActorEvent 的同一 CloudEvents 信封。脚本不调用 emitEvent 即静默成功;调用一次或多次则向归属会话持久写入 automation_job.emitted。
context() 与 emitEvent 只存在于平台 run 内。直接执行 bun main.ts 只能验证运行环境和不调用这两个函数的分支。注册后,必须为每个 SDK 分支使用一次测试触发器,再检查对应的持久 run。emitEvent 不会降级为 stdout;只有 ActorEvent 已持久化后,它返回的 Promise 才会 resolve。
每次触发消费都会在同一个 PostgreSQL 事务里创建持久运行记录:checkback claim、cron advance 或 webhook accept 与 run 行同时提交。脚本异常、非零退出和超时是终态,不重试。Worker 丢失属于基础设施故障,现有 Oban wake edge 会用新的 fenced attempt 重派。重派可能重复脚本副作用,因此脚本必须让重复执行无害。
这些命令只在活跃 Agent turn 内可用:
create-automation-job-cli --dir <path> --label <text> [--wake-on-failure]list-automation-jobs-cli [--limit <1-500>]show-automation-job-cli --id <automation-job-id> [--runs <1-100>]cancel-automation-job-cli --id <automation-job-id>
Console 的“自动化任务”页展示 job 及其最近运行状态、attempt 次数、错误、exit code 与有界 stdout/stderr 尾部。模型侧规范说明仍由 create-automation-job-cli --help 单点拥有。
新增 CLI 能力的要求
- 实现放在
app/agent_computer/src/cli/下,每个命令族一个目录。 --help与-h输出完整契约,stdout、exit 0,不依赖 turn 或网络。命令包装器会前置子命令,所以在参数列表任意位置检测 help flag。- 保留简短 usage 字符串用于参数错误;它不是契约文档。
- 在 Agent 需要该能力的每个决策面加一句指针,指针不带倾向:陈述条件,指出
--help。 - 插件 Skill 集成该能力与外部系统时,开篇放
--help指针,Skill 只写领域增量。