Brave
@47c132035ed7a1105a867946b99d67af 人工智能研究 公开
讨论 Open Agent SDK:在任何地方部署自主 AI Agent 的开源利器

Open Agent SDK:在任何地方部署自主 AI Agent 的开源利器

一、项目简介

Open Agent SDK 是一个开源的 AI Agent 开发框架,灵感来源于 Anthropic 官方的 @anthropic-ai/claude-agent-sdk。它能让开发者构建自主运行的 AI Agent,这些 Agent 可以理解代码库、编辑文件、执行命令、搜索网页,并完成复杂的多步骤工作流。

与官方 SDK 最大的区别在于架构设计。官方的 @anthropic-ai/claude-agent-sdk 需要依赖本地 Claude Code CLI 进程,其调用链为:

你的代码 → SDK → 启动 cli.js 子进程 → stdin/stdout JSON → Anthropic API

而 Open Agent SDK 将整个 Agent 循环都运行在进程内(in-process),调用链大幅简化为:

你的代码 → SDK → QueryEngine → Anthropic API(直接调用)

这意味着你可以将它部署到任何环境——云服务器、Serverless 函数、Docker 容器、CI/CD 流水线,不再受本地 CLI 依赖的束缚。

二、快速上手

安装

npm install @shipany/open-agent-sdk

配置 API Key

可以直接使用 Anthropic 官方的 API Key:

export ANTHROPIC_API_KEY=your-api-key

也支持第三方 Provider(如 OpenRouter):

export ANTHROPIC_BASE_URL=https://openrouter.ai/api
export ANTHROPIC_API_KEY=your-openrouter-api-key
export ANTHROPIC_MODEL=anthropic/claude-sonnet-4-6

最简示例:阻塞式调用

import { createAgent } from '@shipany/open-agent-sdk'

const agent = createAgent({ model: 'claude-sonnet-4-6' })
const result = await agent.prompt('读取 package.json 并告诉我项目名称')

console.log(result.text)
console.log(`Tokens: ${result.usage.input_tokens + result.usage.output_tokens}`)

仅需三行核心代码,你就拥有了一个可以读取文件、理解内容并回答问题的 AI Agent。

三、核心功能详解

3.1 多种调用方式

Open Agent SDK 提供了灵活的 API 设计,满足不同使用场景:

query() 流式调用——兼容官方 SDK 的顶层入口,返回 AsyncGenerator<SDKMessage>,适合需要实时展示中间过程的场景:

import { query } from '@shipany/open-agent-sdk'

for await (const message of query({
  prompt: '找到并修复 auth.py 中的 Bug',
  options: {
    allowedTools: ['Read', 'Edit', 'Bash'],
    permissionMode: 'acceptEdits',
  },
})) {
  if (message.type === 'assistant' && message.message?.content) {
    for (const block of message.message.content) {
      if ('text' in block) console.log(block.text)
      else if ('name' in block) console.log(`Tool: ${block.name}`)
    }
  }
}

createAgent() + prompt() 阻塞式调用——适合简单的一问一答场景,代码更简洁。

createAgent() + query() 流式调用——结合 Agent 会话管理和流式输出的优势。

3.2 多轮会话

Agent 会自动维护上下文,支持多轮对话:

const agent = createAgent({
  model: 'claude-sonnet-4-6',
  systemPrompt: '你是一位资深软件工程师,请简洁回答。',
})

const r1 = await agent.prompt('阅读主入口文件并解释架构')
console.log(r1.text)

// 第 1 轮的完整上下文会自动保留
const r2 = await agent.prompt('现在重构错误处理部分')
console.log(r2.text)

通过 agent.getMessages() 可以获取完整的对话历史,agent.clear() 则可以重置会话。

3.3 丰富的内置工具(26 个)

Open Agent SDK 内置了与 Claude Code 完全相同的 26 个工具,涵盖文件操作、代码搜索、Web 访问、多 Agent 协作等各个方面:

类别工具说明
文件操作Read, Write, Edit读取(支持图片、PDF)、创建、精确替换
代码搜索Glob, Grep文件模式匹配、正则搜索(基于 ripgrep)
命令执行Bash执行 Shell 命令
Web 访问WebFetch, WebSearch获取网页内容、搜索互联网
Agent 协作Agent, SendMessage, TeamCreate/Delete子 Agent、消息传递、团队管理
任务管理TaskCreate/Update/List/Get/Stop/Output完整的任务生命周期管理
其他NotebookEdit, AskUserQuestion, TodoWrite 等Jupyter 编辑、用户交互、待办事项等

你可以通过 allowedTools 来控制 Agent 可以使用的工具白名单,例如创建一个只读 Agent:

for await (const message of query({
  prompt: '审查这段代码的最佳实践',
  options: {
    allowedTools: ['Read', 'Glob', 'Grep'], // 只允许读取类工具
  },
})) {
  // ...
}

3.4 自定义工具

除了内置工具,你还可以轻松定义自己的工具:

const weatherTool = {
  name: 'GetWeather',
  description: '获取城市天气',
  inputJSONSchema: {
    type: 'object',
    properties: { city: { type: 'string' } },
    required: ['city'],
  },
  get inputSchema() {
    return { safeParse: (v) => ({ success: true, data: v }) }
  },
  async prompt() { return this.description },
  async call(input) {
    return { data: `${input.city}的天气:22°C,晴` }
  },
  userFacingName: () => 'GetWeather',
  isReadOnly: () => true,
  isConcurrencySafe: () => true,
  mapToolResultToToolResultBlockParam: (data, id) => ({
    type: 'tool_result', tool_use_id: id, content: data,
  }),
}

const agent = createAgent({
  tools: [...getAllBaseTools(), weatherTool],
})

3.5 MCP Server 集成

Open Agent SDK 完整支持 MCP(Model Context Protocol),包括 stdio、SSE、HTTP 三种传输方式:

const agent = createAgent({
  mcpServers: {
    filesystem: {
      command: 'npx',
      args: ['-y', '@modelcontextprotocol/server-filesystem', '/tmp'],
    },
    playwright: {
      command: 'npx',
      args: ['@playwright/mcp@latest'],
    },
  },
})

const result = await agent.prompt('列出 /tmp 目录下的文件')

这让你可以轻松接入社区中丰富的 MCP 工具生态。

3.6 子 Agent(Subagents)

对于复杂任务,可以定义多个子 Agent 协同完成工作:

for await (const message of query({
  prompt: '使用 code-reviewer Agent 审查这个代码库',
  options: {
    allowedTools: ['Read', 'Glob', 'Grep', 'Agent'],
    agents: {
      'code-reviewer': {
        description: '专业代码审查员,专注于代码质量和安全性。',
        prompt: '分析代码质量并提出改进建议。',
        tools: ['Read', 'Glob', 'Grep'],
      },
    },
  },
})) {
  // 处理消息...
}

四、引擎内核解析

Open Agent SDK 并非一个简化版的重新实现——它包含了完整的 Claude Code 引擎(2000+ 源文件)。以下是其核心组件:

系统提示词构建:完整的 Prompt 构建逻辑,支持静态/动态边界缓存(boundary caching),最大化利用 Anthropic 的 prompt caching 能力,降低 Token 消耗。

四层权限系统:规则匹配 → 低风险跳过 → 白名单 → AI 分类器 + 熔断机制。这套精密的权限管道确保了 Agent 操作的安全性,同时保持灵活性。通过 permissionMode 可以选择不同级别,如 bypassPermissions(绕过所有权限检查,适合受控环境)、acceptEdits(自动接受编辑操作)、plan(计划审批模式)等。

记忆系统:支持 4 种记忆类型(用户记忆、反馈记忆、项目记忆、参考记忆),并内置 autoDream 后台记忆整理器,让 Agent 能够在长时间工作中保持上下文连贯性。

上下文压缩:9 段结构化提取策略(autocompact、microcompact、snip compact),在上下文窗口接近限制时智能压缩对话历史,保留最关键的信息。

多 Agent 协作:支持 Leader/Teammate 团队模式、Git worktree 隔离、权限冒泡、异步邮箱通信等高级特性。

工具执行策略:只读工具支持并发批量执行,写入类工具则串行执行,在性能和安全性之间取得平衡。

API 客户端:流式传输、指数退避重试、备选模型回退、Prompt 缓存等企业级特性一应俱全。

五、与官方 SDK 的对比

特性官方 SDKOpen Agent SDK
架构启动本地 CLI 子进程进程内 Agent 循环
云部署需安装 CLI任意环境可用
Serverless不支持完全支持
Docker需在镜像中包含 CLI仅需 npm install
自定义工具通过 MCP原生函数工具 + MCP
流式输出通过子进程 stdio直接 API 流式传输
系统提示词/权限/记忆/压缩/多Agent/MCP完整引擎完整引擎(相同代码)

核心差异在于部署灵活性。官方 SDK 的子进程架构使其更适合本地开发场景,而 Open Agent SDK 的进程内架构使其天然适合云端和容器化部署。

六、配置参考

Open Agent SDK 提供了丰富的配置选项:

选项类型默认值说明
modelstringclaude-sonnet-4-6Claude 模型 ID
apiKeystring环境变量API Key
baseURLstringAnthropic APIAPI 地址(第三方 Provider)
cwdstring当前目录工具工作目录
systemPromptstring自定义系统提示词
toolsTool[]全部内置工具可用工具列表
allowedToolsstring[]工具白名单
permissionModestringbypassPermissions权限模式
maxTurnsnumber100最大 Agent 轮次
maxBudgetUsdnumber最大花费(美元)
mcpServersobjectMCP 服务器配置
agentsobject子 Agent 定义
hooksobject生命周期钩子
thinkingobject扩展思考配置
canUseToolfunction自定义权限回调

七、适用场景

基于以上特性,Open Agent SDK 特别适合以下场景:

自动化代码审查:在 CI/CD 流水线中部署 Agent,自动审查 Pull Request,检测潜在问题。通过只赋予只读工具权限,确保审查 Agent 不会修改代码。

智能运维助手:部署在云服务器或 Docker 容器中,结合 Bash 工具和自定义工具,实现服务器状态监控、日志分析、故障诊断等自动化运维任务。

Serverless AI 工作流:在 AWS Lambda、Vercel Functions 等 Serverless 平台上运行,按需处理复杂的 AI 任务,无需维护长期运行的服务器。

多 Agent 协作系统:利用子 Agent 和团队功能,构建多 Agent 协作系统,如「架构师 Agent + 编码 Agent + 测试 Agent」的组合,处理大型项目任务。

集成 MCP 工具生态:通过 MCP 集成 Playwright(浏览器自动化)、数据库访问、文件系统操作等各种外部工具,扩展 Agent 能力边界。

八、总结

Open Agent SDK 将 Claude Code 的完整引擎能力(2000+ 源文件)从本地 CLI 的束缚中解放出来,以进程内运行的方式使其能够部署到任何 Node.js 可运行的环境中。它保留了官方 SDK 的全部核心能力——四层权限系统、记忆系统、上下文压缩、多 Agent 协作、MCP 支持——同时提供了更简洁的 API、更灵活的部署方式,以及原生自定义工具支持。

无论你是想在 Serverless 函数中运行 AI Agent,还是在 Docker 容器中部署自动化工作流,亦或是构建复杂的多 Agent 协作系统,Open Agent SDK 都值得一试。

项目安装npm install @shipany/open-agent-sdk