Skip to content

Repository files navigation

Agent-core

基于 LangChain 官方 createAgent + middleware 策略层的 agent 运行时组件库。 审批策略 / 稳定事件 / 自由组装开箱即用,LangChain 生态即插即用,中文默认。

CI npm License: MIT Language: TypeScript

这是什么

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

About

基于官方 LangChain createAgent + middleware 策略层的 agent 运行时组件库:审批策略 / 稳定事件 / 自由组装

Topics

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages