第十节
Claude Code SDK
以编程方式在应用和脚本中运行 Claude Code
Claude Code SDK 让你能够从自己的应用程序和脚本中以编程方式运行 Claude Code。它适用于 TypeScript、Python 和 CLI,为你提供与终端版本相同的 Claude Code 功能, 但集成到更大的工作流中。
核心特性
SDK 运行的 Claude Code 与你熟悉的完全相同。 它可以访问所有相同的工具,并使用它们来完成你给定的任何任务。这使得它在自动化和集成场景中特别强大。
以编程方式运行
从代码中调用 Claude Code
相同功能
与终端版本功能一致
继承设置
继承目录中 Claude Code 实例的所有设置
只读权限
默认只读,更安全的权限控制
集成友好
最适合作为大型管道或工具的一部分
多语言支持
TypeScript、Python 和 CLI
基础用法
这是一个简单的 TypeScript 示例,要求 Claude 分析代码以查找重复查询:
import { query } from "@anthropic-ai/claude-code";
const prompt = "Look for duplicate queries in the ./src/queries dir";
for await (const message of query({ prompt })) {
console.log(JSON.stringify(message, null, 2));
}输出说明:当你运行这段代码时,你会看到本地 Claude Code 和 Claude 语言模型之间的原始对话, 逐条消息显示。最后一条消息包含 Claude 的完整响应。
权限和工具
默认情况下,SDK 只有只读权限。它可以读取文件、搜索目录和执行 grep 操作, 但不能写入、编辑或创建文件。
默认允许
- • 读取文件
- • 搜索目录
- • Grep 操作
默认阻止
- • 写入文件
- • 编辑文件
- • 创建文件
启用写入权限
要启用写入权限,你可以向查询添加 allowedTools 选项:
for await (const message of query({
prompt,
options: {
allowedTools: ["Edit"]
}
})) {
console.log(JSON.stringify(message, null, 2));
}替代方案:或者,你可以在 .claude 目录内的设置文件中配置权限,以实现项目级别的访问。
实战示例
让我们看一个实际的例子,演示如何使用 SDK:
步骤演示:
允许编辑工具
要让 SDK 能够编辑文件,在 prompt 参数后添加 options:
import { query } from "@anthropic-ai/claude-code";
for await (const message of query({
prompt: "Add a description to package.json",
options: {
allowedTools: ["Edit"]
}
})) {
console.log(JSON.stringify(message, null, 2));
}运行后,打开 package.json 文件,你会看到描述已被添加。
实际应用场景
Claude Code SDK 在集成到更大的开发工作流时大放异彩。考虑在以下场景中使用它:
Git hooks
自动审查代码更改
构建脚本
分析和优化代码
辅助命令
代码维护任务
文档生成
自动生成文档
CI/CD 管道
代码质量检查
自定义工具
为工作流添加 AI 智能
核心价值:SDK 本质上让你能够将 AI 驱动的智能添加到开发过程的任何部分, 在这些地方编程访问会很有价值。特别适合在 hooks、辅助命令和脚本中使用。
最佳实践
从只读开始
默认只读权限更安全,仅在需要时启用写入
明确提示词
提供清晰具体的任务描述
处理输出
正确解析和处理返回的消息
错误处理
实现适当的错误处理和重试逻辑
权限最小化
只授予任务所需的最小工具集
集成到工作流
作为更大自动化流程的一部分使用
使用建议:SDK 最适合作为其他工具的一部分使用。考虑在 helper 命令、脚本或 最值得注意的是在你自己项目中的 hooks 里使用它。