基于 LangChain 官方
createAgent+ middleware 策略层的 agent 运行时组件库。 审批策略 / 稳定事件 / 自由组装开箱即用,LangChain 生态即插即用,中文默认。
Agent-core 是一套 agent 运行时组件库:它直接基于官方 createAgent 构建,不重造图。
- 主循环、工具绑定、checkpointer、中断、流式、事件协议——全部复用官方
langchain统一包 - 增值能力(审批策略层、稳定事件协议)以官方 middleware 策略层实现
- 每个部件可独立取用 / 替换 / 裁剪,宿主自由构建 harness(CLI / 桌面 / 服务端 / 测试)
设计细节见 docs/architecture.md。
- 🚀 开箱即用:
new Agent({ model, tools })一个配置即可运行,中文默认 prompt - 🛡️ 审批策略层:工具
DANGER_KEY声明危险等级,声明式ApprovalPolicy(auto/require + 预览),interrupt挂起 +resume恢复 - 📡 稳定事件协议:
AgentEvent判别联合,覆盖完整生命周期(agent_start → … → agent_end),换 middleware / checkpointer 不破坏消费方 - 🧩 自由组装:middleware / 事件 / 审批 / 模型 / 工具 / hooks 全部独立导出,宿主自由搭建外壳
- 🔌 生态兼容:
BaseChatModel/tool()/BaseCheckpointSaver/BaseStore标准接口直通 - 🇨🇳 中文默认:中文 prompt / 中文文档
npm install @agent-core/core环境要求:Node.js ≥ 20、TypeScript ≥ 5。
import { ChatOpenAI } from "@langchain/openai";
import { tool } from "@langchain/core/tools";
import { Agent, DANGER_KEY, byDangerPolicy } from "@agent-core/core";
// 工具用 metadata 声明危险等级(不声明默认按 medium 兜底)
const deleteFile = tool(async ({ path }) => {
// ...
return "deleted";
}, {
name: "delete_file",
description: "删除文件",
schema: {
type: "object",
properties: { path: { type: "string" } },
required: ["path"],
},
metadata: { [DANGER_KEY]: "high" }, // 高危:默认 require
});
const agent = new Agent({
model: new ChatOpenAI({ model: "gpt-4o" }),
tools: [deleteFile],
// 声明式审批策略:按危险等级自动放行 / 人工确认
approval: { policy: byDangerPolicy({ high: "require" }) },
});
// 无状态一次调用,返回最终状态
const state = await agent.invoke("你好,介绍一下你自己");
// 流式消费 AgentEvent(token / 工具 / 审批事件全在其中)
for await (const event of agent.stream("删掉 /tmp/cache 目录")) {
if (event.type === "approval_pending") {
// 高危操作待确认:event.calls 含危险等级与预览,展示给用户(CLI / 弹窗 / 服务端端点)
console.log(event.calls);
}
}
// 用户做出决定后恢复运行(resume 自动续接刚才的挂起线程):
await agent.resume({ type: "accept", args: null }); // 批准
// await agent.resume({ type: "reject", args: null }); // 拒绝
// await agent.resume({ type: "edit", args: { path: "/tmp/old" } }); // 改参
// await agent.resume({ type: "response", args: "改用 /tmp/new" }); // 补充指令每次挂起的决策与审批记录会写入状态(state.approvals),可用 agent.state(threadId) 读取。
| 文档 | 说明 |
|---|---|
| 示例 | 最小可运行示例(Agent + 真实模型 + 审批) |
| 架构设计 | 总体架构、数据模型、关键流程、扩展点、生态兼容 |
| CHANGELOG | 变更记录(Keep a Changelog) |
| CONTRIBUTING | 贡献指南 |
pnpm install
pnpm typecheck # 类型检查
pnpm test # 单元测试
pnpm build # 构建(tsup + tsc 类型声明)MIT © 2026 agent-core contributors