@fabric-harness/sdk (英语)
核心 SDK 用于 技术配置 ——用于建设耐用可部署自主代理的无头型Script框架.
安装
npm install @fabric-harness/sdk
# or
pnpm add @fabric-harness/sdk
快开始
最小 — 赤色导入, 无头默认( 8行)
import { defineAgent } from '@fabric-harness/sdk';
export default defineAgent<{ message: string }>({
name: 'echo',
triggers: { webhook: true },
run: async ({ init, input }) => {
const session = await (await init({ model: 'openai/gpt-5.5' })).session();
return { reply: await session.prompt<string>(input.message) };
},
});
完成 – 相同的导入, 更多字段
采用I/O+能力政策+技能(同样导入)
import { defineAgent, schema } from '@fabric-harness/sdk';
export default defineAgent({
name: 'triage',
input: schema.object({ issueNumber: schema.number(), title: schema.string() }),
output: schema.object({ severity: schema.enum(['low','medium','high']), summary: schema.string() }),
model: process.env.FABRIC_MODEL,
run: async ({ init, input }) => {
const session = await (await init()).session();
return await session.prompt('Triage and return the typed result.');
},
});
两个表都一样 init(), (中文(简体) ), session.prompt() 编号 : skill() 编号 : task() 编号 : shell() APIs (英语). 运行时间( E)stateless, (中文(简体) ), inline,或 temporal)是配置于 init()。 。 。 .
不断演化的活性剂
createAgent() 使每次互动。 Hooks允许持久状态改变目前的模式,工具,
技能、子剂、 MCP 连接和沙盒, 不引入另一个构建器 :
import { createAgent, useModel, usePersistentState, useTool } from '@fabric-harness/sdk';
export default createAgent(() => {
const [level, setLevel] = usePersistentState('level', 0);
useModel(level < 2 ? 'anthropic/claude-haiku-4-5' : 'anthropic/claude-sonnet-4-6');
useTool({ name: 'advance', durable: true, run: async ({ step }) => {
const receipt = await step.do('advance', async () => ({ advanced: true }));
setLevel((value) => value + 1);
return receipt;
}});
if (level >= 1) useTool(advancedAnalysis);
return `Current capability level: ${level}.`;
});
一个SDK,一个导入
@fabric-harness/sdk 是每个人使用的单一导入. defineAgent({...}) 从光导导入自动注入的无头默认值( e)runtime: 'stateless', (中文(简体) ), sandbox: 'virtual', (中文(简体) ), loopRuntime: pi-agent-core, (中文(简体) ), compaction: { enabled: true }每张 init() 电话 通过将数值传递到 init()添加类型 input编号 :output 计谋, policy工艺品 定制商店 遥测技术 这些都是相同的选择 defineAgent({...})编号 :init() 形状.
在不要求采取隐含行为的情况下,使用临时支持的耐用剂或履约工作量 @fabric-harness/sdk/strict ——相同的调用形状,没有注射默认.
运行时间( E)stateless, (中文(简体) ), inline,或 temporal控制持久性和持久性,并配置于 init()部署目标node, (中文(简体) ), temporal-worker, (中文(简体) ), docker, (中文(简体) ), cloudflare,...)通过 fh build --target。 。 。 .
盒子里的东西
init({ model, sandbox, policy, runtime, sessionRuntime, ... })初始化代理运行时间 .session.prompt / skill / task / shell——四个代理业务.session.mount(mountAt, source, { mode })- 挂载FilesystemSource在运行时间进入沙盒。 默认情况下只读;在挂载下写入在政策层被屏蔽 .session.approval.request({ reason, risk?, timeoutMs? })——定制审批闸口. 回返true批准; 投掷APPROVAL_DENIED编号 :APPROVAL_REQUIRED拒绝/暂停.ApprovalResponse.grant——经核准的持久反应带有呼叫/投入/主要约束 赠款;被拒绝的答复从来不是.defineAgent({...})——单人建设者. 赤裸裸的呼唤形状@fabric-harness/sdk导入和从@fabric-harness/sdk/strict; 您选择的导入是否在运行时注入无头默认值.createAgent()钩子 构成持续状态、交付和初步数据、动态资源, 生命周期守护,响应元数据/数据部件,耐用工具步骤,MCP,和子剂.defineCommand- 约束特权性国家优惠措施(gh, (中文(简体) ),npm,.)在指挥层有秘密,从不在模型上下文.withFilesystemSources编号 :session.mount()——将只读内容挂入沙盒的两种方式;代理内置grep编号 :glob编号 :read工具将其视为普通文件.runtime: 'inline' | 'stateless' | 'temporal'+ 键sessionRuntime——根据坚持不懈的需要选择. 对runtime: 'temporal'与temporalSessionRuntime({...})从@fabric-harness/temporal来通过持久工作流程引导每次会话呼叫.CapabilityPolicy——文件系统读取/写出词汇,命令/工具允许-拒绝-认可,以及network: { mode, hosts }允许列表/拒绝列表.policiedFetch(fetch, policy)将任何类似抓取的内容与政策执行相包裹.- 示马斯 (单位:千美元)
schema.object, (中文(简体) ),schema.enum——验证输入/输出不设外道. - MCP 磁共振 —— 说
connectMcpServer用于远程工具服务器. - 遥测 —— 说
openTelemetryExporter, (中文(简体) ),langfuseExporter, (中文(简体) ),consoleTelemetryExporter调整TelemetrySpan形状为 OTel / Langfuse / stdout.
命名的 OpenAI 兼容预设为 deepseek/<model> (单位:千美元)DEEPSEEK_API_KEY, (中文(简体) ),
moonshot/<model> 或者说 kimi/<model> (单位:千美元)MOONSHOT_API_KEY),以及 xai/<model> (单位:千美元)XAI_API_KEY) (中文(简体) ). 他们
使用直接的提供者端点,从不默默地倒回网关或模拟模型.
文档
- 最小切入点的无头特工
- SDK 切入点、运行时间和目标
- 运行时间模式 - 包括直接
temporalSessionRuntimeAPI (英语). - 活性剂和钩子
- 文件系统源 —— 说
session.mount()和源连接器. - 政策和核准 ——能力政策,网络政策,挂载权限,自定义审批.
- 遥测 ——事件,运输,计量.
- 路线图
- 全文参考
许可证
阿帕奇 - 2.0