DECLARATIVE AGENT FRAMEWORK

把 Agent 跑成
流水线服务

不写循环,不拼提示词管道。装饰器声明四类单元,主 agent 自主编排执行, 一次 run 交付结构化结果与完整调用树——你交付的是服务,不是对话脚本。

$ npm i -g @migor/cli && agentia create my-app
4 类单元 50 例单测 3 类触发 0 反射

01 — UNITS

四类单元,一种抽象

单元即流水线的阶段。四类单元对主 agent 都是菜单里的可调用项——声明一次,调度交给模型。

@Tool

函数调用

类方法即工具。入参按 JSON Schema 解析,先校验再执行;失败回 is_error,run 不中断。

@Skill

代码控制的流程

确定性脚本里按需调模型:调几次、何时停、结果怎么加工,全由代码决定。

@SubAgent

隔离的子代理

独立循环 + 裁剪上下文。中间过程不外泄,只有最终报告回流主上下文。

@Prompt

纯文本资产

模板与 playbook 资产。模型判定需要时拉取进上下文,支持 volatile 与静态常量。

02 — HOW IT WORKS

一次 run 的全貌

触发进来,结果出去。中间每一步都记在调用树上。

触发同步 RPC
异步任务
定时调度
主 agent作为路由器
自主编排
单元顺序
单元@Tool / @Skill
@SubAgent
@Prompt
产出结构化结果
trace 调用树
token / 成本

03 — FEATURES

为生产而生

CLI 与目录约定

create 脚手架、g 生成单元。一单元一文件夹,长文本放 .md;目录扫描与显式注册表双装配。

Trace 一等公民

runId == traceId。每次模型往返与单元调用都记账:token、成本、耗时、错误分类,子 agent 递归成树。

装配期静态校验

菜单查重、引用存在性、DI 循环依赖——在启动时失败,而不是在线上。

长上下文三策略

先丢旧工具对,再摘要压缩,预算护栏带滞回防抖;CJK 感知 token 估算。

三类触发

同步 RPC、异步任务、定时调度,共用一份输入契约;幂等去重,落盘续跑。

单元中间件

UnitMiddleware 洋葱模型包裹每次单元调用:鉴权 / 限流 / 缓存 / 审计皆切面,trace 同级记账,业务单元零侵入。

零反射装饰器

标准 Stage 3 装饰器 + 显式 DI,不押 reflect-metadata;tsx / esbuild / tsgo 全兼容。

04 — QUICKSTART

三分钟跑起来

1

脚手架

npm i -g @migor/cli
agentia create my-app
cd my-app && npm install
2

生成单元

agentia g subagent doc-reviewer   # 独立子代理
agentia g skill note-writer      # 代码控制流程
agentia g prompt style-guide     # 文本资产
3

运行

export ANTHROPIC_API_KEY=sk-ant-...
npm run dev
units/weather/index.ts
import { Tool } from '@migor/agentia';

export default class Weather {
  @Tool({
    description: '查询城市天气',
    schema: {
      type: 'object',
      properties: { city: { type: 'string' } },
      required: ['city'],
      additionalProperties: false,
    },
    strict: true,
  })
  get_weather(input: { city: string }) {
    return `上海 72°F sunny(${input.city})`;
  }
}