@codeany/open-agent-sdk

中文文档
0.2.4发布于 2026/07/26MITTypeScriptES Module近 30 天下载 6142

开源代理SDK. 运行全代理循环进程——不需要本地CLI. 任何地方部署:云,无服务器,多克,CI/CD.

中文使用文档
文档目录27 节
  1. 开始吧
  2. OpenAI 兼容模型
  3. 第三方兼容供应商
  4. 快开始
  5. 一发查询( 流出)
  6. 简单的屏蔽提示
  7. OpenAI / GBT 模型
  8. 多回合对话
  9. 自定义工具( Zod schema)
  10. 自定义工具( 低级)
  11. 技能
  12. 虎克(生命周期事件)
  13. MCP 服务器集成
  14. 副剂
  15. 权限
  16. 网络用户界面
  17. API 参考
  18. 高级职能
  19. 代理方法
  20. 选项
  21. 环境变量
  22. 内建工具
  23. 包扎技能
  24. 建筑
  25. 实例
  26. 恒星历史
  27. 许可证

打开代理 SDK (TypeScript)

npm version Node.js License: MIT

运行全代理循环的开源代理 SDK 正在处理 ——不需要子进程或CLI. 支持两者 安东尼 财务报告和审定财务报表 OpenAI 兼容 APIs (英语). 任何地方部署:云,无服务器,多克,CI/CD.

也可查阅 走开数字 : 打开代理服务器 sdk-go

开始吧

npm install @codeany/open-agent-sdk

设置您的 API 密钥 :

export CODEANY_API_KEY=your-api-key

OpenAI 兼容模型

与 OpenAI, DeepSeek, Quen, Mistral 或任何 OpenAI 兼容端点合作 :

export CODEANY_API_TYPE=openai-completions
export CODEANY_API_KEY=sk-...
export CODEANY_BASE_URL=https://api.openai.com/v1
export CODEANY_MODEL=gpt-4o

第三方兼容供应商

export CODEANY_BASE_URL=https://openrouter.ai/api
export CODEANY_API_KEY=sk-or-...
export CODEANY_MODEL=anthropic/claude-sonnet-4

快开始

一发查询( 流出)

import { query } from "@codeany/open-agent-sdk";

for await (const message of query({
  prompt: "Read package.json and tell me the project name.",
  options: {
    allowedTools: ["Read", "Glob"],
    permissionMode: "bypassPermissions",
  },
})) {
  if (message.type === "assistant") {
    for (const block of message.message.content) {
      if ("text" in block) console.log(block.text);
    }
  }
}

简单的屏蔽提示

import { createAgent } from "@codeany/open-agent-sdk";

const agent = createAgent({ model: "claude-sonnet-4-6" });
const result = await agent.prompt("What files are in this project?");

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

OpenAI / GBT 模型

import { createAgent } from "@codeany/open-agent-sdk";

const agent = createAgent({
  apiType: "openai-completions",
  model: "gpt-4o",
  apiKey: "sk-...",
  baseURL: "https://api.openai.com/v1",
});

const result = await agent.prompt("What files are in this project?");
console.log(result.text);

这个 apiType 自动从模型名称中检测到的模型 gpt-, (中文(简体) ), o1, (中文(简体) ), o3, (中文(简体) ), deepseek, (中文(简体) ), qwen, (中文(简体) ), mistral等自动使用 openai-completions。 。 。 .

多回合对话

import { createAgent } from "@codeany/open-agent-sdk";

const agent = createAgent({ maxTurns: 5 });

const r1 = await agent.prompt(
  'Create a file /tmp/hello.txt with "Hello World"',
);
console.log(r1.text);

const r2 = await agent.prompt("Read back the file you just created");
console.log(r2.text);

console.log(`Session messages: ${agent.getMessages().length}`);

自定义工具( Zod schema)

import { z } from "zod";
import { query, tool, createSdkMcpServer } from "@codeany/open-agent-sdk";

const getWeather = tool(
  "get_weather",
  "Get the temperature for a city",
  { city: z.string().describe("City name") },
  async ({ city }) => ({
    content: [{ type: "text", text: `${city}: 22°C, sunny` }],
  }),
);

const server = createSdkMcpServer({ name: "weather", tools: [getWeather] });

for await (const msg of query({
  prompt: "What is the weather in Tokyo?",
  options: { mcpServers: { weather: server } },
})) {
  if (msg.type === "result")
    console.log(`Done: $${msg.total_cost_usd?.toFixed(4)}`);
}

自定义工具( 低级)

import {
  createAgent,
  getAllBaseTools,
  defineTool,
} from "@codeany/open-agent-sdk";

const calculator = defineTool({
  name: "Calculator",
  description: "Evaluate a math expression",
  inputSchema: {
    type: "object",
    properties: { expression: { type: "string" } },
    required: ["expression"],
  },
  isReadOnly: true,
  async call(input) {
    const result = Function(`'use strict'; return (${input.expression})`)();
    return `${input.expression} = ${result}`;
  },
});

const agent = createAgent({ tools: [...getAllBaseTools(), calculator] });
const r = await agent.prompt("Calculate 2**10 * 3");
console.log(r.text);

技能

技能是可重复使用的可扩展代理能力的即时模板. 包括五个捆绑的技能: simplify, (中文(简体) ), commit, (中文(简体) ), review, (中文(简体) ), debug, (中文(简体) ), test。 。 。 .

import {
  createAgent,
  registerSkill,
  getAllSkills,
} from "@codeany/open-agent-sdk";

// Register a custom skill
registerSkill({
  name: "explain",
  description: "Explain a concept in simple terms",
  userInvocable: true,
  async getPrompt(args) {
    return [
      {
        type: "text",
        text: `Explain in simple terms: ${args || "Ask what to explain."}`,
      },
    ];
  },
});

console.log(`${getAllSkills().length} skills registered`);

// The model can invoke skills via the Skill tool
const agent = createAgent();
const result = await agent.prompt('Use the "explain" skill to explain git rebase');
console.log(result.text);

虎克(生命周期事件)

import { createAgent, createHookRegistry } from "@codeany/open-agent-sdk";

const hooks = createHookRegistry({
  PreToolUse: [
    {
      handler: async (input) => {
        console.log(`About to use: ${input.toolName}`);
        // Return { block: true } to prevent tool execution
      },
    },
  ],
  PostToolUse: [
    {
      handler: async (input) => {
        console.log(`Tool ${input.toolName} completed`);
      },
    },
  ],
});

20起生命周期事件: PreToolUse, (中文(简体) ), PostToolUse, (中文(简体) ), PostToolUseFailure, (中文(简体) ), SessionStart, (中文(简体) ), SessionEnd, (中文(简体) ), Stop, (中文(简体) ), SubagentStart, (中文(简体) ), SubagentStop, (中文(简体) ), UserPromptSubmit, (中文(简体) ), PermissionRequest, (中文(简体) ), PermissionDenied, (中文(简体) ), TaskCreated, (中文(简体) ), TaskCompleted, (中文(简体) ), ConfigChange, (中文(简体) ), CwdChanged, (中文(简体) ), FileChanged, (中文(简体) ), Notification, (中文(简体) ), PreCompact, (中文(简体) ), PostCompact, (中文(简体) ), TeammateIdle。 。 。 .

MCP 服务器集成

import { createAgent } from "@codeany/open-agent-sdk";

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

const result = await agent.prompt("List files in /tmp");
console.log(result.text);
await agent.close();

副剂

import { query } from "@codeany/open-agent-sdk";

for await (const msg of query({
  prompt: "Use the code-reviewer agent to review src/index.ts",
  options: {
    agents: {
      "code-reviewer": {
        description: "Expert code reviewer",
        prompt: "Analyze code quality. Focus on security and performance.",
        tools: ["Read", "Glob", "Grep"],
      },
    },
  },
})) {
  if (msg.type === "result") console.log("Done");
}

权限

import { query } from "@codeany/open-agent-sdk";

// Read-only agent — can only analyze, not modify
for await (const msg of query({
  prompt: "Review the code in src/ for best practices.",
  options: {
    allowedTools: ["Read", "Glob", "Grep"],
    permissionMode: "dontAsk",
  },
})) {
  // ...
}

网络用户界面

包含一个内置的网络聊天界面用于测试:

npx tsx examples/web/server.ts
# Open http://localhost:8081

API 参考

高级职能

函数说明
query({ prompt, options })一发流查询, 返回 AsyncGenerator<SDKMessage>
createAgent(options)创建一个具有会话持久性的可重复使用的代理
tool(name, desc, schema, handler)用 Zod schema 验证创建工具
createSdkMcpServer({ name, tools })装入进程内 MCP 服务器的工具
defineTool(config)低级工具定义助手
getAllBaseTools()获取全部 35+ 内置工具
registerSkill(definition)注册自定义技能
getAllSkills()获得所有注册技能
createProvider(apiType, opts)直接创建 LLM 提供者
createHookRegistry(config)为生命周期事件创建钩子注册
listSessions()连续会议清单
forkSession(id)为分枝分叉会话

代理方法

方法说明
agent.query(prompt)流转查询、返回 AsyncGenerator<SDKMessage>
agent.prompt(text)屏蔽查询, 返回 Promise<QueryResult>
agent.getMessages()获取对话历史
agent.clear()重设会话
agent.interrupt()中止当前查询
agent.setModel(model)更改模式会议中期
agent.setPermissionMode(mode)更改权限模式
agent.getApiType()获取当前 API 类型
agent.close()关闭 MCP 连接, 持续会话

选项

选项类型默认说明
apiTypestring自动检测'anthropic-messages' 或者说 'openai-completions'
modelstringclaude-sonnet-4-6LLM 型号 ID
apiKeystringCODEANY_API_KEYAPI 密钥
baseURLstring—— 说自定义 API 端点
cwdstringprocess.cwd()工作目录
systemPromptstring—— 说系统即时覆盖
appendSystemPromptstring—— 说附加到默认系统提示
toolsToolDefinition[]全部内置可用工具
allowedToolsstring[]—— 说工具允许列表
disallowedToolsstring[]—— 说工具拒绝列表
permissionModestringbypassPermissionsdefault 编号 : acceptEdits 编号 : dontAsk 编号 : bypassPermissions 编号 : plan
canUseToolfunction—— 说自定义权限回调
maxTurnsnumber10最大代理转弯
maxBudgetUsdnumber—— 说支出上限
thinkingThinkingConfig{ type: 'adaptive' }扩展思维
effortstringhigh合理努力: low 编号 : medium 编号 : high 编号 : max
mcpServersRecord<string, McpServerConfig>—— 说MCP 服务器连接
agentsRecord<string, AgentDefinition>—— 说亚剂定义
hooksRecord<string, HookCallbackMatcher[]>—— 说生命周期钩
resumestring—— 说通过 ID 恢复会话
continuebooleanfalse继续最近的会话
persistSessionbooleantrue坚持到磁盘
sessionIdstring自动明确会话编号
outputFormat{ type: 'json_schema', schema }—— 说结构化产出
sandboxSandboxSettings—— 说文件系统/网络沙盒
settingSourcesSettingSource[]—— 说装入 AGENT.md, 项目设置
envRecord<string, string>—— 说环境变量
abortControllerAbortController—— 说取消控制器

环境变量

变量说明
CODEANY_API_KEYAPI 密钥( 需要)
CODEANY_API_TYPEanthropic-messages (违约)或 openai-completions
CODEANY_MODEL默认模式覆盖
CODEANY_BASE_URL自定义 API 端点
CODEANY_AUTH_TOKEN替代认证符

内建工具

工具说明
巴许执行 shell 命令
读取读取有行号的文件
写入创建/ 覆盖文件
编辑文件精确字符串替换
光环按模式查找文件
Grep 读取以 regex 搜索文件内容
Web ưμ㼯A获取和剖析网页内容
网络搜索搜索网络
笔记本编辑编辑 Jupyter 笔记本单元格
探员用于并行工作的后继剂
技能启动注册技能
任务创建/列表/更新/获取/停止/输出任务管理系统
团队创建/删除多代理人小组协调
发送消息代理通讯
EnterWorktree/出厂树Git 工作树隔离
输入 Plan 模式/ 退出 Plan 模式结构化规划工作流程
询问用户问题询问用户输入
工具搜索发现懒惰工具
ListMcp 资源/读取Mcp 资源MCP 资源访问
创造/删除/列表计划任务管理
远程调试器远程代理触发器
LSP 软件语言服务器协议(代码智能)
配置动态配置
写入会话待办事宜列表

包扎技能

技能说明
simplify审查更改的再利用代码、质量和效率
commit以精心设计的信息创建 git 承诺
review审查代码更改的正确性、安全和性能
debug利用结构化调查系统调试
test运行测试和分析失败

注册自定义技能 registerSkill()。 。 。 .

建筑

┌──────────────────────────────────────────────────────┐
│                   Your Application                    │
│                                                       │
│   import { createAgent } from '@codeany/open-agent-sdk' │
└────────────────────────┬─────────────────────────────┘
                         │
              ┌──────────▼──────────┐
              │       Agent         │  Session state, tool pool,
              │  query() / prompt() │  MCP connections, hooks
              └──────────┬──────────┘
                         │
              ┌──────────▼──────────┐
              │    QueryEngine      │  Agentic loop:
              │   submitMessage()   │  API call → tools → repeat
              └──────────┬──────────┘
                         │
         ┌───────────────┼───────────────┐
         │               │               │
   ┌─────▼─────┐  ┌─────▼─────┐  ┌─────▼─────┐
   │  Provider  │  │  35 Tools │  │    MCP     │
   │ Anthropic  │  │ Bash,Read │  │  Servers   │
   │  OpenAI    │  │ Edit,...  │  │ stdio/SSE/ │
   │ DeepSeek   │  │ + Skills  │  │ HTTP/SDK   │
   └───────────┘  └───────────┘  └───────────┘

关键内部:

构成部分说明
提供者层抽象 Anthropic / OpenAI API 差异
查询引擎具有自动压缩、重试、工具管弦的核心代理循环
技能系统可重用具有5个捆绑技能的快速模板
钩子系统20起生命周期事件纳入引擎
自动压缩上下文窗口填充时摘要对话框
微协议截断过大的工具结果
重试利率限制和瞬间出错的指向后退
托肯估计Claude、GPT、DeepSeek模型的定价
文件缓存文件读取的 LRU 缓存( 100个条目, 25 MB)
会话存储磁盘上坚持/恢复/分叉会话
上下文注射Git 状态 + AGENT.md 自动注入系统提示

实例

{\fn方正粗倩简体\fs12\an8\1cHFFFF00\b0}文件说明
01号examples/01-simple-query.ts用事件处理来流转查询
第02条examples/02-multi-tool.ts多工具管弦乐( Glob + Bash)
03号examples/03-multi-turn.ts多回合持续
04号examples/04-prompt-api.ts封锁 prompt() API 密码
05号examples/05-custom-system-prompt.ts自定义系统提示
06号examples/06-mcp-server.tsMCP 服务器集成
07号examples/07-custom-tools.ts自定义工具 defineTool()
08号examples/08-official-api-compat.tsquery() API 模式
09个examples/09-subagents.ts副代表代表团
10个examples/10-permissions.ts带有工具限制的只读代理
第11个examples/11-custom-mcp-tools.tstool() + 键 createSdkMcpServer()
第12条examples/12-skills.ts技能系统使用情况
第13条examples/13-hooks.ts生命周期钩
页:1examples/14-openai-compat.tsOpenAI / 深搜索模式
网络examples/web/用于测试的网络聊天 UI

运行任意示例 :

npx tsx examples/01-simple-query.ts

启动网络用户界面 :

npx tsx examples/web/server.ts

恒星历史

Star History Chart

许可证

麻省理工学院

版本与发布记录

@codeany/open-agent-sdk 共发布 6 个版本,首次发布于 2026/04/01;过去 12 个月发布了 6 个版本。

版本发布日期距今
0.2.4latest2026/07/263 个月前
0.2.32026/07/263 个月前
0.2.22026/07/263 个月前
0.2.12026/04/097 个月前
0.2.02026/04/047 个月前
0.1.02026/04/017 个月前

关于 @codeany/open-agent-sdk 的常见问题

@codeany/open-agent-sdk 是什么?

开源代理SDK. 运行全代理循环进程——不需要本地CLI. 任何地方部署:云,无服务器,多克,CI/CD.

如何安装 @codeany/open-agent-sdk?

在项目目录运行 npm install @codeany/open-agent-sdk,或使用 pnpm add / yarn add / bun add。

@codeany/open-agent-sdk 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@codeany/open-agent-sdk 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@codeany/open-agent-sdk 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@codeany/open-agent-sdk 可以商用吗?

@codeany/open-agent-sdk 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@codeany/open-agent-sdk 的下载量有多少?

根据 npm 官方下载统计,@codeany/open-agent-sdk 在 2026/10/10 – 2026/11/08 这 30 天内被下载 6,142 次,日均约 205 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@codeany/open-agent-sdk 还在维护吗?

最新版本 0.2.4 发布于 2026/07/26(3 个月前);至今共发布 6 个版本,其中过去 12 个月发布了 6 个;首次发布于 2026/04/01。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。