关于 iii-agentic-backend
用于在 iii 引擎上构建多 Agent 工作流的技能,介绍如何通过队列和共享状态协调已注册的 Agent 函数,并加入审批检查与完成广播。
主要功能
- 01将 Agent 定义为已注册函数
- 02基于队列的异步交接
- 03Agent 间共享状态
- 04审批关卡
- 05完成事件广播
适用场景
- 01协调多 Agent 研究流程
- 02在下一个 Agent 执行前审查结果
- 03在排队的 Agent 任务间共享上下文
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ iii-hq/ skills --skill iii-agentic-backend安装后在 Claude Code 中输入/iii-agentic-backend确认已加载。
详细介绍
Agentic Backend
可与以下项目相媲美:LangGraph、CrewAI、AutoGen、Letta
核心概念
任务适用时,请使用以下概念。并非每个 Agent 工作流都需要用到所有概念。
- 每个 Agent 都是一个已注册的函数,且只负责一项职责
- Agent 通过命名队列(按序交接)和共享状态(累积上下文)进行通信
- 审批关卡是在生成内容的 Agent 中明确执行的检查,检查通过后才将任务加入队列,进入下一步
- HTTP 触发器提供入口;Agent 从此开始串联执行
- Pubsub 会广播完成事件,供下游侦听器接收
架构
HTTP request
→ Enqueue(agent-tasks) → Agent 1 (researcher) → writes state
→ Enqueue(agent-tasks) → Agent 2 (critic) → reads/updates state
→ explicit approval check (is-approved?)
→ Enqueue(agent-tasks) → Agent 3 (synthesizer) → final state update
→ publish(research.complete)
使用的 iii 原语
| 原语 | 用途 |
|---|---|
registerWorker | 初始化工作进程并连接到 iii |
registerFunction | 定义每个 Agent |
trigger({ function_id: 'state::set/get/update', payload }) | 在 Agent 之间共享上下文 |
trigger({ ..., action: TriggerAction.Enqueue({ queue }) }) | 通过命名队列在 Agent 之间异步交接 |
trigger({ function_id, payload }) | 入队前进行明确的条件检查 |
trigger({ function_id: 'publish', payload, action: TriggerAction.Void() }) | 向所有侦听器广播完成事件 |
registerTrigger({ type: 'http' }) | 入口 |
参考实现
完整可运行的示例见 ../references/agentic-backend.js:这是一个多 Agent 研究流水线,研究员收集发现,评论员审查内容,综合者生成最终报告。
常见模式
采用此模式的代码通常会在适用时包含:
registerWorker(url, { workerName })— 初始化工作进程trigger({ function_id, payload, action: TriggerAction.Enqueue({ queue }) })— 在 Agent 之间异步交接trigger({ function_id: 'state::set/get/update', payload: { scope, key } })— 在 Agent 之间共享上下文- 入队下一个 Agent 前,通过
await iii.trigger({ function_id: 'condition-fn', payload })执行明确的条件检查 trigger({ function_id: 'publish', payload: { topic, data }, action: TriggerAction.Void() })— 广播完成事件- 每个 Agent 都通过独立的
registerFunction注册,ID 使用agents::前缀 const logger = new Logger()— 为每个 Agent 进行结构化日志记录
调整此模式
适用时,请使用以下调整方式。
- 将每个 Agent 中的模拟逻辑替换为实际工作(API 调用、大模型推理等)
- 通过注册函数并使用
TriggerAction.Enqueue({ queue })将任务加入队列,来添加更多 Agent - 对于审批关卡,在将任务加入队列以交给下一个 Agent 前,明确调用条件函数
- 在 iii-config.yaml 的
queue_configs下定义队列配置(重试次数、并发数) - 状态范围应使用符合领域的名称(例如
research-tasks、support-tickets) functionId的各个部分应体现 Agent 层级(例如agents::researcher、agents::critic)
引擎配置
用于 Agent 交接的命名队列在 iii-config.yaml 的 queue_configs 下声明。完整的带注释配置参考见 ../references/iii-config.yaml。
模式边界
- 如果请求是将现有 HTTP 端点改编为
registerFunction(包括要求使用{ path, id }端点映射和循环的提示),优先使用iii-http-invoked-functions。 - 当主要问题涉及多 Agent 编排、队列交接、审批关卡和共享上下文时,使用
iii-agentic-backend。
适用场景
- 当任务主要涉及 iii 引擎中的
iii-agentic-backend时,使用此技能。 - 当请求直接要求采用此模式或实现等效方案时,此技能适用。
边界
- 切勿将此技能用作无关任务的通用兜底方案。
- 如果有更具体的 iii 技能更适合,则不得使用此技能。
- 应用此技能中的示例前,务必核实环境和安全限制。
评论
支持 Markdown