@ agentskit/ 核心
简介 : major-package
每个 AgentsKit 软件包所基于的零依赖性基础——在10 KB gzip 预算下,边缘准备,在 JavaScript 运行的任何地方工作.
标记 : ai • 妇女 agents • 妇女 llm • 妇女 agentskit • 妇女 typescript • 妇女 orchestration • 妇女 streaming • 妇女 chat
已核实的证据
- 软件包元数据和测试在
packages/core/。 。 。 . - 软件包指南 : https://www.agentskit.io/docs/参考资料/packages/core
- 稳定地图: 文件/服务.md
如何适应生态系统
@agentskit/core是合同层:使适配器,工具,技能,内存,检索器和运行时间可以互换的微小而稳定的地基.
- 探员Kit:与本回购中的其他包一起作曲,从可互换的小零件来构建代理.
- 书记官处: 查找已使用此图层的即时代理和模板 登记. agentskit.io。 。 。 .
- 游戏本: 学习本层背后的生产模式 游戏本. agentskit.io。 。 。 .
为什么是核心
- 外部依赖性为零 ——无 npm bloat,无审计出乎意料;安装以毫秒为单位,并在Node,Deno,边缘运行时间,浏览器中工作
- 释放整个生态系统的稳定契约 6个ADR定位接口(
Adapter, (中文(简体) ),Tool, (中文(简体) ),Skill, (中文(简体) ),Memory, (中文(简体) ),Retriever, (中文(简体) ),Runtime)使每个软件包可以互换 - 包含聊天状态机器 —— 说
createChatController处理流线、中止和消息历史,所以你从不执行循环 - 不到10克贝克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克 ——在社区倡议中执行预算;你可以长期承诺的基础
安装
npm install @agentskit/core
快速实例
import { createChatController, createInMemoryMemory } from '@agentskit/core'
import { anthropic } from '@agentskit/adapters'
const controller = createChatController({
adapter: anthropic({ apiKey: process.env.ANTHROPIC_API_KEY, model: 'claude-sonnet-4-6' }),
memory: createInMemoryMemory(),
})
await controller.send('Hello!')
console.log(controller.getState().messages)
持久确认和内容部分
controller.send 接受字符串或 ContentPart[]; 部件保留在用户信件上 content 是他们的文本投影。 共享 ChatReturn.send 签名还接受部分;现有的字符串调用器仍然兼容。 结构 ChatController 执行必须提供所需的 decide 方法.
配置 ChatConfig.decisionStore 带对讲机 ToolDecisionStore,然后调用 await controller.decide(toolCallId, 'approve') 或者说 await controller.decide(toolCallId, 'deny', reason)。一个控制器在出现时使用它的活式对话,包括未保存的回合;否则它会加载已配置的聊天内存,保存后期的回合;所声称的快照只有在不存在当前对话时才是一种倒置. 它补补并坚持目标工具结果. 该模型仅针对目标助理消息中每个确认被决定时最新完成的助理消息恢复运行;工具结果按照调用顺序跟随他们的出处助理消息. 等待确认被保存到配置聊天存储器和决定库后,才能完成建议.
商店执行插入 - 如果缺席 putPending, (中文(简体) ), get原子 claim (待) 索赔,只将快照还给胜者) settle (维持相应的索赔最终结果). 存储记录必须活过进程重启,每个工具调用的方法必须可线性化. 书写之后同步读取的不是原子主张:使用数据库有条件的更新/交易或等同的比较和分页,包括跨进程. 使用申请授权的对话范围. 数据库索赔可以使用 UPDATE ... WHERE status = 'pending' RETURNING ...;核心船舶没有执行数据库.
同样的决定甚至在声称时也是一意孤行的:它们返回记录的结果,或者在执行时的原调,而不再引用工具或模型. 流式确认在 onToolCall。重启后,流化决定需要当前 ChatMemory:到达快照是不可改变的,可能会省略后期的来电;没有目前的谈话, AK_CONFIG_INVALID 拒绝一个不完整的流出快照后, 才会声称 。 活控制器不需要内存.
同上,只比较裁决的不合理性;一再拒绝和不同的理由保留了最初的理由和结果。 同决定终端重放返回记录 ToolCall 不引用工具或模型。 未知的ID 提升 AK_ACTION_NOT_FOUND;冲突的决定或不再待决的目标引起 AK_ACTION_ALREADY_DECIDED。工具失败是终端,并输入模型;重试需要新的建议ID。 索赔后的空难为应用程序调节留下了不确定的记录,从不自动重复试验副作用。 在对话中将不同的电话序列化,以保护笔录.
为了一个卡住 claimed 记录,操作员必须检查 get(id) 和域行刑证据, 停止原始工人, 并末期 settle 将索赔与经证明的结果或明确的不确定失败相匹配。 绝不删除或重置索赔待决。 在当前聊天内存中调试目标调用,然后明确继续使用新用户转接;任何经授权的重试都需要新的建议ID. 参见业务回收程序 IDR 0042 (英语)。 。 。 .
approve 财务报告和审定财务报表 deny 已贬值。 有一家决定店 他们委托给 decide 并分享它的原子要求和打字错误;没有商店,它们保留了生成本地行为。 见 IDR 0042 (英语)。 。 。 .
特征
createChatController——有中止支持的流能聊天状态机;在成功转会后会保存内存,在失败或中止转会后永远不会保存. 背景记忆和技能激活失败通过onError。 。 。 .createInMemoryMemory— 原型化的零配置进程内存createLocalStorageMemory– 浏览器/演示持续;存储的数据格式不当MemoryError而不是默默地成为空虚的历史createStaticRetriever- 用于演示和倒置的确定符号重叠检索@agentskit/rag用于语义制作检索parseToolArgs键入 JSON 参数分析,用于需要故障闭塞验证的适配器;safeParseArgs保留相容性帮助createId(prefix)前缀外加密码随机UUID;generateId(prefix)保留用于信件和呼叫的相容性帮助- 每个合同的脚本类型 :
ToolDefinition, (中文(简体) ),SkillDefinition, (中文(简体) ),AgentEvent, (中文(简体) ),Adapter, (中文(简体) ),ChatMemory, (中文(简体) ),Retriever, (中文(简体) ),ChatController - 事件发射器
AgentEvent串流 – 随附的可观察钩 AgentEvent.correlation是一个可选、提供者中立的身份信封:operationId跨越边界稳定runId, (中文(简体) ),sessionId, (中文(简体) ),turnId, (中文(简体) ),actionId,以及traceId保留本地含义- 双 CJS/ ESM 输出, 严格类型脚本, 不
any - 静电源护卫规则可从
@agentskit/core/rules作为CORE_RULES;它们用于工具,而非核心运行时间所导入.
处理错误
探员 装船a 教学错误系统 由 Rust 编译器所启发. 每个错误都包含一个 code页:1 hint 给固定,和一个 docsUrl 不再含糊不清 "Something went wrong" 留言.
import {
AgentsKitError,
AdapterError,
ToolError,
MemoryError,
ConfigError,
ErrorCodes,
} from '@agentskit/core'
try {
await runtime.run(task)
} catch (err) {
if (err instanceof ToolError) {
// err.code → 'AK_TOOL_EXEC_FAILED'
// err.hint → actionable suggestion
// err.docsUrl → https://www.agentskit.io/docs/agents/tools
console.error(err.toString())
// error[AK_TOOL_EXEC_FAILED]: ...
// --> Hint: ...
// --> Docs: https://www.agentskit.io/docs/agents/tools
}
}
可用错误代码( 通过 ErrorCodes:
| 代码 | 被丢弃 |
|---|---|
AK_ADAPTER_MISSING | 未向控制器提供适配器 |
AK_ADAPTER_STREAM_FAILED | 给提供者的串流呼叫失败 |
AK_TOOL_NOT_FOUND | 请求的工具名称没有注册 |
AK_TOOL_EXEC_FAILED | execute() 掷出 |
AK_TOOL_PEER_MISSING | 未安装可选工具对等依赖 |
AK_TOOL_INVALID_INPUT | 工具参数或建议无效 |
AK_TOOL_QUOTA_EXCEEDED | 工具执行超过其配置的配额 |
AK_TOOL_FORBIDDEN | 策略拒绝工具执行 |
AK_MEMORY_LOAD_FAILED | 内存. load () 失败 |
AK_MEMORY_SAVE_FAILED | 内存. save () 失败 |
AK_MEMORY_CLEAR_FAILED | 内存. clear () 失败 |
AK_MEMORY_DESERIALIZE_FAILED | 持续状态腐败 |
AK_MEMORY_PEER_MISSING | 未安装可选内存后端 |
AK_MEMORY_REMOTE_HTTP | 远程内存请求失败 |
AK_CONFIG_INVALID | 缺少必要的配置或类型错误 |
AK_RUNTIME_INVALID_INPUT | 运行时间输入无效 |
AK_RUNTIME_STEP_FAILED | 运行时间步骤失败 |
AK_RUNTIME_DELEGATE_FAILED | 代理执行失败 |
AK_SANDBOX_DENIED | 沙盒政策拒绝执行 |
AK_SANDBOX_INVALID_TOOL | 工具对沙盒无效 |
AK_SANDBOX_PEER_MISSING | 未安装可选沙盒后端 |
AK_SANDBOX_BACKEND_FAILED | 沙盒后端失败 |
AK_SKILL_INVALID | 技能定义无效 |
AK_SKILL_DUPLICATE | 技能身份被复制 |
类型安全工具 defineTool
defineTool 推断类型脚本类型 execute是因为 args 参数出自JSON Schema——没有手工铸造.
import { defineTool } from '@agentskit/core'
const greet = defineTool({
name: 'greet',
schema: {
type: 'object',
properties: { name: { type: 'string' } },
required: ['name'],
} as const, // as const is required for inference
execute(args) {
// args.name → string (inferred, not cast)
return `Hello, ${args.name}!`
},
})
使用 InferSchemaType<typeof schema> 引用代码库中其他部分的推断类型.
亚波斯出口(树干,零干重)
| 子路径 | 目的 |
|---|---|
@agentskit/core/agent-schema | 声明YAML/JSON代理定义+验证符 |
@agentskit/core/prompt-experiments | A/B 有 PostHog / GrowthBook / 自定义旗下提供者的提示 |
@agentskit/core/auto-summarize | ChatMemory 折叠旧的包装会变成摘要 |
@agentskit/core/hitl | 核准大门+ ApprovalStore |
@agentskit/core/security | PII和秘密编辑+注射检测器+限速器 |
@agentskit/core/fuzzy-match | 确定 Jaro- Winkler 匹配 KYC、 制裁、 调试和实体解析 |
@agentskit/core/finding | 光学 Finding 编号 : Severity 用于审查和遵守结果的形状 |
@agentskit/core/compose-tool | 链入一个宏工具的 N 工具 |
@agentskit/core/self-debug | 用 LLM 修正参数重试失败的工具 |
@agentskit/core/generative-ui | 已打入UI元素树 + 代码 / 标记下 / html / 图表文物 |
@agentskit/core/a2a | 代理对代理协议规格(JSON-RPC,任何运输) |
@agentskit/core/manifest | Skill + 工具显示格式( MCP 兼容) |
@agentskit/core/eval-format | 便携式 eval 数据集 + 运行结果 JSON |
@agentskit/core/memory-validation | 未经信任的序列式内存记录的验证 |
@agentskit/core/tool-proposal | 通过控制器授权为已验证的建议书路由提供公共帮助 |
@agentskit/core/hash | RFC 8785 Canonic JSON和SHA-256助手 |
见 代理人核心指南 整个合同.
生态系统
| 软件包 | 作用 |
|---|---|
| @ agentskit/ 适应器 | LLM 聊天+ 嵌入提供者、 路由器、 综艺、 倒置 |
| @ agentskit/ 运行时间 | createRuntime, (中文(简体) ), speculate、地形、耐用处决、背景代理 |
| @ agentskit/ 反应 | useChat无头聊天组件 |
| @ agentskit/ veue (帮助) • 妇女 丝绒 • 妇女 固态 • 妇女 反应-内在 • 妇女 角线 | 一样 ChatReturn 合同,每个框架一个包 |
| @ agentskit/ 工具 | 内建工具,20+集成,MCP桥 |
| @ agentskit/ 记忆 | 聊天+矢量+分级+加密+图表存储 |
| @ agentskit/ 擦伤 | 插座和游戏 RAG + 后排 + 加载器 |
| @ agentskit/ 技能 | 预备人员+市场 |
| @ agentskit/ 可观察性 | 追踪、审计记录、费用保障、支架 |
| @ agentskit/ sandbox (英语) | 安全代码执行+强制沙盒政策 |
| @ agentskit/ eval (英语) | Eval套房,定型重播,快照,CI记者 |
| @ agentskit/ cli (英语) | agentskit init / chat / run / ai / dev / doctor |
贡献者
许可证
麻省理工学院——见 自由主义。 。 。 .
文档
成熟性和相容性
- 稳定性: 稳定 看到了吗 文件/服务.md
- 节点.js 20+ 财务报告和审定财务报表 类型脚本 严格模式
- 发表于
@agentskit/core