@agnt5/sdk

中文文档
0.11.2发布于 2026/11/06Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 4574

AGNT5 TypeScript SDK - 持久的AI工作流程和代理

中文使用文档
文档目录19 节
  1. 所需资源
  2. 安装
  3. 网关配置
  4. 快开始
  5. 长期工作流程
  6. 宣布的持久步骤
  7. 事件触发
  8. 代理限制和取消
  9. 软件包入口
  10. 第三方抓获
  11. 实例和文件
  12. 管理下的评价
  13. 回复等待
  14. 结构化主张
  15. 无服务器签名
  16. 发展
  17. 释放核查
  18. 捐款
  19. 许可证

AGNT5: the reliable platform for AI agents and workflows

AGNT5 类型脚本 SDK

npm License

以 TypeScript 构建可靠的AI代理和可持久的工作流程. 第5条 检查每一个工作流程步骤, 所以一个故障的运行 从它的复通 而不是重新开始。 SDK 提供了打入函数 和工作流程,复写,流线,工具呼叫,多代理交接, 人入LOOP(HITL)批准,MCP,evals,以及运行时间可观察性.

文档 • 妇女 启动模板 • 妇女 网站

所需资源

  • 节点.js 18或更新
  • 部署执行的 AGNT5 运行时间

安装

npm install @agnt5/sdk

网关配置

Client 用途 https://gw.agnt5.com 当未提供网关 URL 或 AGNT5_GATEWAY_URL 为空。 设定 AGNT5_API_KEY 用于认证。 一个 明确 gatewayUrl 选项优先于 AGNT5_GATEWAY_URL。 。 。 . 工人会话-历史请求使用相同的环境设置和默认.

例如,对于本地运行时间,请明确规定其终点 AGNT5_GATEWAY_URL=http://localhost:34183。单独的应用程序需求 环境设置: 由 agnt5 dev 到达工人手中 进程,而不是兄弟应用程序进程.

快开始

定义输入函数并启动工人 :

import { fn, Worker } from '@agnt5/sdk';

const greet = fn('greet').run(async (ctx, name: string) => {
  ctx.logger.info(`Greeting ${name}`);
  return { message: `Hello, ${name}!` };
});

const worker = new Worker('hello-typescript');
await worker.run();

进口的功能,工作流程,工具和计分员向工人登记. 启用 autoRegister 包括特工,或呼叫 worker.registerAgents(...)。见 examples/simple-worker.ts (单位:千美元) 完全进入点.

长期工作流程

对应当安全检查和重放的行动使用命名步骤:

import { workflow } from '@agnt5/sdk';

export const prepareReport = workflow(
  'prepare-report',
  async (ctx, reportId: string) => {
    const source = await ctx.step('load-source', () => loadSource(reportId));
    const report = await ctx.step('build-report', () => buildReport(source));
    return { reportId, report };
  },
);

将其投入与 input 和身体接受它。 在一个管理 工人,重放比较 与输入的第一步运行。 如果是 变了,步子提高了 NON_DETERMINISTIC_REPLAY 而不是还原 旧结果。 无服务器和本地运行将输入传递给正文,而不包含 检查一下:

const receipt = await ctx.step(
  'charge',
  ({ orderId, amount }) => charge(orderId, amount),
  { input: { orderId, amount } },
);

一步没有 input 不选中此选项: 值它的关闭抓取可以 变化和记录的结果仍然会回来。 获取来自 工作流程输入或更早的步骤结果,从未来自 Date.now() 或随机身份证明, 或者每次重播都失败。 步骤是复制一个输入 当它叫, 与 undefined 属性下降, 尸体运行在复制。 通过普通 数据:作为字符串的日期(toISOString()),以及 value ?? null 的数值 也许 undefined,从 undefined 财务报告和审定财务报表 null 大麻一样。 A 类 Date, (中文(简体) ), Map, (中文(简体) ), Set,函数, 其他类实例或 undefined 数组项目被拒绝。 输入也是 在台阶的日记记录上显示, 所以通过一个秘密的名字而不是它 数值.

保留步骤名称,在复试中稳定订购,这样完成的工作就可以 复用过. 直接调用创建的函数 fn(...).run(...) 并创建一个 从管理下的工作流程调用检查站时。 明确 ctx.step 保留 包含函数调用时其边界。 嵌入式函数 重试和倒置设置; ctx.attempt 以零为基础。 产生外部效果 一能,因为中断的尝试可以在结果之前再次执行 被记录.

嵌入式流线功能将检查点打开直至其执行器 完成或关闭。 说吧 for await,或打电话 return() 在此之前 工作流程等待或返回。 已完成的流重放其记录的播放器 操作并验证他们的参数,而不再给处理器打电话. 提出改变的论据 NON_DETERMINISTIC_REPLAY。溪流在 它的传动器已经暴露在呼叫者面前。 重放延时器也必须消耗 在工作流程等待或完成之前记录的终端操作.

从管理下的工作流程调用已登记的工作流程,或使用 executeChildWorkflow中,提交单独的孩子运行并加入结果. 呈文使用稳定的一能键. 儿童工作流程需要一个网关 URL和父母项目的证明,以及他们自己的工人能力. 独立儿童电话使用单独的本地上下文并继承取消 包括由 withTimeout。 。 。 .

打电话 ctx.waitForUser, (中文(简体) ), ctx.waitForSignal,并持久 ctx.sleep 介于 步骤。 未完成步骤或活动工具/功能激活中的等待 筹集 ConfigurationError信号 反应和完成的步骤在随后的停顿中存活下来。 用于管理和 无工人用户/信号等待, { timeoutMs } 规定一个持久的等待期限; 过期运行失败 WAIT_TIMEOUT。这需要运行时间版本 支持等待最后期限。 和客户的反应不同 说明如下.

从您的申请中恢复运行等待 ctx.waitForSignal 与 client.signal(runId, name, payload)。收据的 resumed 说明是否 跑在等那个信号 为了显示跑步的进展 跟着跑步 与 client.followEvents(runId),包括它发送的 ctx.emit。 生成历史,然后是新事件,然后结束于 运行的最后活动。 如果连接下降, 它会从上次的抵消恢复 已生成 :

await client.signal(runId, 'page_read', { url });
for await (const event of client.followEvents(runId)) {
  if (event.eventType === 'crm.progress') render(event.data);
}

saga(ctx, steps, { name: 'order' }) 检查站前行和倒行逆施 补偿。 保持名称稳定 跨调度。 暂停无风 开始补偿。 赔偿失败不能阻止剩余回滚; SagaCompensationError 维护原因和所有补偿 错误。 赔偿也必须是专有的. 失败的动作结果在回滚开始前被记录. 后来发送 恢复回滚,并保持失败,即使这一行动现在取得成功. 启动新的 saga 引用, 在补偿后重试交易 .

在拉动工作流程中, await ctx.set(key, value) 财务报告和审定财务报表 await ctx.delete(key) 等待持久的国家变革承认. ctx.get(key) 读取本地工作流程状态。 在成功完成之前, 工人坚持最后 WorkflowEntity 与现行租约的快照 并进行版本检查,匹配 Python 的工作流程状态持久性。 状态 在每个工作流程内命令写; 独立工作流程可以继续 同时 独立的进程内背景保留其本地状态行为.

宣布的持久步骤

宣布工作流程-当地业务 step。让他们通过 ctx.step· ; 只登记工作流程供单独引用.

import { step, workflow } from '@agnt5/sdk';

const prepareSearch = step('prepare-search', async (ctx, input: { topic: string }) => {
  return { query: input.topic.trim() };
}, { retries: { maxAttempts: 3 }, timeoutMs: 5000 });

const research = workflow('research', async ctx => {
  return ctx.step(prepareSearch, { input: { topic: 'durable agents' }, key: 'query' });
});

处理器在持久录取后开始,结果在 确认已完成。 这两个激活呼叫记录了生命周期; 没有额外功能检查站。 每次重试都收到一份新副本 输入和基于零的 ctx.attempt完成的步骤重现承诺 结果。 外部效应仍然需要一能; 被认可的处理器可以使用 ctx.activation.idempotencyKey。 。 。 .

返回 JSON 可序列化结果; 使用 null 为空结果. 对同时或重复的工作使用明确的密钥. 宣布的步骤要求 运行时激活支持, 没有它就明显失败 。 现有 fn(...) 函数和字符串/召回 ctx.step(...) 电话保持他们的行为.

事件触发

使用 event(...) 或者说 webhook(...) 在工作流程中 triggers 声明. 过滤、输入映射、分批和延迟尚未支持。 离开 filterExpression, (中文(简体) ), inputMapping, (中文(简体) ), batchWindowMs,以及 delayExpression 未设置; 工作流程注册拒绝非空表达式和非零批次 窗口中,命名选项出错.

代理限制和取消

代理筹取 MaxIterationsExceededError 当它耗尽的时候 maxIterations。 。 。 . maxHandoffDepth 默认为10并适用于整个交接链; 超过它升起 HandoffDepthExceededError。 。 。 .

传递中止信号为 agent.run(input, ctx, history, { signal }) 或在一个 LM生成请求. SDK将其与跑道的取消信号结合. 原生和边缘 LM 供应商取消 HTTP 生成和流出. 自定义模式 执行者接受信号,必须尊重信号,以阻止他们自己的I/O. 代理工具通过 ctx.signal; 也取消 停止代理等待飞行工具。 工具执行必须尊重 停止他们自己的I/O的信号.

设定 autoRegister: true 发现注册的制剂,或使用 worker.registerAgents(...) 明确代理人名单。 自动发现代理商 选项被删除时已禁用。 工人拥有 解约 拒绝和定时器例外, 失败的原运行, 并保留错误分类和堆栈 result.error.type 财务报告和审定财务报表 result.error.stack。 。 。 . containProcessErrors: false 禁用 处理程序错误的应用程序. 活动运行以外的错误保留默认的致命处理或应用程序的 已有的处理器,包括运行后解开的错误.

软件包入口

导入目的
@agnt5/sdk部件、客户、工人、代理人、工具和工作流程
@agnt5/sdk/integrations第三方OpenAI,代理SDK,Vercel AI SDK,和Google ADK捕获
@agnt5/sdk/serverless共享无服务器适配器
@agnt5/sdk/serverless/nodeNode.js 无服务器适配器
@agnt5/sdk/serverless/cloudflareCloudflare 无服务器适配器
@agnt5/sdk/workerless/node节点.js 无工人 HTTP 适配器
@agnt5/sdk/workerless/cloudflareCloudflare 无工人 HTTP 适配器

默认工人对其支持的节点使用已公布的本地装订 平台。 无服务器和无工人入境点有单独的运行时间 ;在部署到边缘运行时间之前审查相关实例.

第三方抓获

长期工自动观察支持的第三方图书馆 它们由应用程序安装。 集成是软载 SDK 不安装或捆绑这些库作为运行时间依赖性 。 设定 AGNT5_CAPTURE=off 以禁用所有抓取或使用 AGNT5_CAPTURE_OPENAI, (中文(简体) ), AGNT5_CAPTURE_OPENAI_AGENTS, (中文(简体) ), AGNT5_CAPTURE_VERCEL_AI,以及 AGNT5_CAPTURE_GOOGLE_ADK 作为图书馆 开关( e)off, (中文(简体) ), 0, (中文(简体) ), false,以及 no 禁用开关).

捕获的生命周期事件带有字符串出处元数据: source 识别整合( e)openai, (中文(简体) ), openai_agents, (中文(简体) ), vercel_ai,或 google_adk和 capture_mode=observed 区分最佳第三方 从明确标记的本地 SDK 事件观测(capture_mode=native) (中文(简体) ). Google ADK 抓取支持 @google/adk 1.0.0和较新;遗存0.x发行 故意没有支持.

Vercel AI SDK 7+通过它公开的全球遥测登记册被捕获. 在早期的 AI SDK 版本上的应用程序可以启用库的 experimental_telemetry 带有已存在的 OpenTeleometry 提供者的选项,或 使用清晰的包装:

import * as ai from 'ai';
import { wrapAISDK } from '@agnt5/sdk/integrations';

const { generateText, streamText } = wrapAISDK(ai);

JournalSpanProcessor 用于构建其 拥有 OpenTeleometry 追踪器提供者。 处理器和包装器只在 调用在一个 AGNT5 组件上下文中运行,抓取失败永远不会改变 提供商呼叫的结果.

无工/无役入站点为 API 使用相同的自动可操作钩 等价,但它今天没有建立 Async LocalStorage 执行上下文 . 因此,在没有工人之前,第三方抓捕仍然是一条不能走的道路 实施环境传播.

实例和文件

  • examples/ 包括功能,工作流程,代理,流出, HITL、MCP、聊天和无工人的HTTP例子.
  • docs/ 包含 TypeScript SDK 指南.
  • AGNT5文件 涵盖平台概念和 部署.

共同的罗斯德基金会生活在 agnt5dev/sdk-core. 供应商沙盒 适配器居住于 agnt5dev/sdk-integrations。 。 。 .

管理下的评价

使用 client.eval() 运行已注册组件,并通过 POST /v1/eval这需要能够达到的AGNT5运行时间和为残疾人服务的工人 组件;不是离线实验跑道.

const result = await client.eval('greet', { name: 'Alice' }, {
  expected: 'Hello, Alice!', // Defaults to the built-in exact_match scorer.
});
console.log(result.isSuccess, result.passed, result.scores);

isSuccess 报告成功执行组成部分的情况; passed 报告评分 结果。 因此,一个分数不匹配 isSuccess === true 财务报告和审定财务报表 passed === false. 内建计分员不需要申请登记.

用于多种输入 client.batchEval(component, items, { maxConcurrency: 5 })。 。 。 . 每个项目都通过管理的终点进行评价. maxConcurrency 一定是个 正整数。 本地自定义计分器呼叫仍可通过 runScorer· ; 它们不创建管理下的实验运行,也不提供离线数据集运行器.

回复等待

运行和流调用等待 5分钟 默认。 设定每次呼叫等待 从零到24小时的任何值。 0 立即返回待收 验收后。 此控制响应等待, 不是工作流程执行 截止日期:当等待到期或客户端断开时,接受的工作继续进行.

const options = { componentType: 'workflow' as const, waitTimeoutMs: 60000 };
const result = await client.run('process_order', order, options);
for await (const event of client.events('process_order', order, options)) {
  console.log(event.eventType, event.runId);
}

waitTimeoutMs 使用整个毫秒。 运行调用返回 202 待收款项 直接,没有额外的投票。 事件流喷出 stream.wait_expired 当等待到期时,或 stream.detached (单位:千美元) 202 收讫. 使用运行的ID 改为读取状态/结果。 只弹簧 stream 筹集 RunError 用运行的ID 当等待结束.

默认的 HTTP 超时允许至少等待加10秒, 或者客户端 超时。 过 timeoutMs: 75000 来明确它.

结构化主张

structured_assertions 是一个内置计分器,配备自动工人 发送。 在节点中,本地的帮助者通过本地绑定来称呼 SDK-core:

import { structuredAssertions } from '@agnt5/sdk';

const result = structuredAssertions({
  output: [1, 2, 3],
  expected: { expected_length: 3 },
  config: { assertions: [
    { name: 'unique_ids', expr: 'unique(output_json)' },
    { name: 'count', expr: 'size(output_json) == expected.expected_length' },
  ] },
});

得分是通过断言的分数; score_threshold 默认为

  1. 配置和输入错误总是失败 。 见 SDK核心合同 用于支持的表达式和执行限制。 边缘客户端可能提交食谱 用于运行时执行; 本地评价需要节点和匹配的本地绑定.

无服务器签名

过 signingSecret 改为 serve() 从 @agnt5/sdk/serverless 或去节点或 云花调适器. 使用读取您的提供者的字符串或解析器 环境约束。 未解密密还原的提示 HTTP 503 (单位:千美元)WORKERLESS_SIGNING_SECRET_REQUIRED)在运行用户代码之前. 失踪或 配置了密报的无效签名 401. 名单还在 可供发现.

只为了地方发展, serve({ allowUnsigned: true }) 未签名的许可 当启动时没有解密并记录警告时引用 。 还在验证 当密钥配置时请求。 启动时缺少静态机密; 空请求- 时间解析器在其第一次失败的引用时警告 。 AGNT5 启动 无论SDK选项如何 发送仍然需要签名保密.

发展

npm ci
npm run build:ts
npm test

本土约束性开发还需要稳定的Rust工具链和兄弟关系 离职 sdk-core。 。 。 .

释放核查

Npm 成功上传并不能保证立即提供软件包 。 无 扫描新版本,并可能对其进行审查。 发布工作流程等待 至20分钟(加请求时间)用于公共本地包装元数据和沥青球 在发布主SDK之前,然后验证主包也.

如果一个版本仍然无法使用,请使用 npm 检查其扫描/阶段状态 维护者账户。 通过 npm 完成任何必要的复审或上诉。 别 继续重试一个返回“以前已预设的版本”的不可改变版本; 仅靠新版本并不能解决扫描或批准问题.

见 npm 发布时间扫描 财务报告和审定财务报表 分阶段出版。 。 。 .

捐款

见 捐款额报告安全问题 警卫。 。 。 .

许可证

凭 Apache 许可证 2.0。 。 。 .

宣布步骤超时中止处理器的信号 。 处理器应该通过该信号可以取消 I/O. 失败、取消和重试等处理器解决, 所以忽略了信号延迟和解; 延迟结果会被丢弃 .

版本与发布记录

@agnt5/sdk 共发布 66 个版本,首次发布于 2026/04/21;过去 12 个月发布了 66 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.11.2latest2026/11/061 天前
0.11.12026/11/052 天前
0.10.202026/11/043 天前
0.10.192026/11/034 天前
0.10.182026/10/308 天前
0.10.172026/10/308 天前

其他发布通道:next → 0.8.0-beta.6。

关于 @agnt5/sdk 的常见问题

@agnt5/sdk 是什么?

AGNT5 TypeScript SDK - 持久的AI工作流程和代理

如何安装 @agnt5/sdk?

在项目目录运行 npm install @agnt5/sdk,或使用 pnpm add / yarn add / bun add。

@agnt5/sdk 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@agnt5/sdk 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@agnt5/sdk 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@agnt5/sdk 可以商用吗?

@agnt5/sdk 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@agnt5/sdk 的下载量有多少?

根据 npm 官方下载统计,@agnt5/sdk 在 2026/10/05 – 2026/11/03 这 30 天内被下载 4,574 次,日均约 152 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@agnt5/sdk 还在维护吗?

最新版本 0.11.2 发布于 2026/11/06(1 天前);至今共发布 66 个版本,其中过去 12 个月发布了 66 个;首次发布于 2026/04/21。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。