mcpField
I
iii-agentic-backend

iii-agentic-backend

github.com/iii-hqAgent 工作流219 次安装
代码仓库

关于 iii-agentic-backend

用于在 iii 引擎上构建多 Agent 工作流的技能,介绍如何通过队列和共享状态协调已注册的 Agent 函数,并加入审批检查与完成广播。

主要功能

  1. 01将 Agent 定义为已注册函数
  2. 02基于队列的异步交接
  3. 03Agent 间共享状态
  4. 04审批关卡
  5. 05完成事件广播

适用场景

  1. 01协调多 Agent 研究流程
  2. 02在下一个 Agent 执行前审查结果
  3. 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