用于的Claude代理SDK。网
现代。NET库,用于与Claude Code CLI交互,提供简单的一次性操作 QueryAsync() API和完全双向客户端,支持控制协议。
  
免责声明: 这是一个独立的、非官方的港口,与Anthropic、PBC无关或不受其认可。
特性
- 简单
Claude.QueryAsync()用于一次性请求的API ClaudeSDKClient用于多回合双向对话- 控制协议支持(中断、模式、动态模型切换)
- 挂钩系统(PreToolUse、PostToolUse、UserPromptSubmit)
- 具有允许/拒绝控制的工具权限回调
- 过程中MCP服务器支持(工具、提示、资源)
- 跨平台:Windows、Linux、macOS
- 消息类型的源代码生成JSON模型
- 测试良好:109个测试(90个单元+19个集成;默认情况下禁用集成测试)
先决条件
- .NET 8.0或。净值9.0
- 克劳德代码CLI>=2.0.0:
npm install -g @anthropic-ai/claude-codeCLI路径解析
SDK按以下顺序发现Claude Code CLI:
ClaudeAgentOptions.CliPath(显式路径)CLAUDE_CLI_PATH环境变量PATH搜索claude(或claude.cmd在Windows上)
快速开始
单次查询
using Claude.AgentSdk;
await foreach (var msg in Claude.QueryAsync("What is 2+2?"))
{
if (msg is AssistantMessage am)
foreach (var block in am.Content)
if (block is TextBlock tb)
Console.Write(tb.Text);
}多回合对话
using Claude.AgentSdk;
await using var client = new ClaudeSDKClient();
await client.ConnectAsync();
await client.QueryAsync("Write a Python hello world");
await foreach (var msg in client.ReceiveResponseAsync())
{
if (msg is AssistantMessage am)
foreach (var block in am.Content)
if (block is TextBlock tb)
Console.Write(tb.Text);
}带选项
var options = Claude.Options()
.SystemPrompt("You are a helpful coding assistant.")
.MaxTurns(5)
.Model("claude-sonnet-4-20250514")
.AcceptEdits()
.Build();
await foreach (var msg in Claude.QueryAsync("Explain async/await", options))
{
// handle messages
}工具权限回调
var options = Claude.Options()
.CanUseTool(async (toolName, input, context, ct) =>
{
if (toolName == "Bash" && input.GetProperty("command").GetString()?.Contains("rm") == true)
return new PermissionResultDeny("Destructive commands not allowed");
return new PermissionResultAllow();
})
.Build();钩子
var options = Claude.Options()
.AllowTools("Bash")
.Hooks(h => h
.PreToolUse("Bash", (input, toolUseId, ctx, ct) =>
{
Console.WriteLine($"[Hook] Bash: {input}");
return Task.FromResult(new HookOutput { Continue = true });
}))
.Build();MCP工具(进行中)
using Claude.AgentSdk;
using Claude.AgentSdk.Mcp;
var options = Claude.Options()
.McpServers(m => m.AddSdk("calculator", s => s
.Tool("add", (double a, double b) => a + b, "Add two numbers")))
.AllowAllTools()
.Build();自定义代理
var options = Claude.Options()
.Agents(a => a
.Add("reviewer", "Reviews code", "You are a code reviewer.", "Read", "Grep")
.Add("writer", "Writes code", "You are a clean coder.", tools: ["Read", "Write"]))
.Build();沙盒配置
var options = Claude.Options()
.Sandbox(s => s
.Enable()
.AutoAllowBash()
.ExcludeCommands("rm", "sudo")
.Network(n => n.AllowLocalBinding()))
.Build();配置
ClaudeAgentOptions 镜像Python SDK的选项:
| 属性 | 类型 | 描述 |
|---|---|---|
SystemPrompt | string? | 自定义系统提示 |
MaxTurns | int? | 最大对话次数 |
MaxBudgetUsd | decimal? | 美元支出限额 |
Model | string? | 要使用的模型 |
FallbackModel | string? | 回退模型 |
PermissionMode | PermissionMode? | 默认值、接受编辑、绕过权限 |
McpServers | object? | MCP服务器配置 |
CanUseTool | CanUseToolCallback? | 工具权限回调 |
Hooks | IReadOnlyDictionary? | 事件挂钩 |
AllowedTools | IReadOnlyList | 白名单工具 |
DisallowedTools | IReadOnlyList | 黑名单工具 |
Cwd | string? | 工作目录 |
CliPath | string? | 显式CLI路径 |
消息类型
AssistantMessage-克劳德的回应Content块UserMessage-用户输入SystemMessage-系统通知ResultMessage-查询完成,包含成本/工期信息
内容块
TextBlock-文本内容ThinkingBlock-扩展思维(附签名)ToolUseBlock-工具调用ToolResultBlock-刀具输出
例子
看 examples/ 目录:
| 示例 | 说明 |
|---|---|
BasicQuery | 简单的一次性查询 |
StreamingMode | 交互式双向客户端 |
SystemPrompt | 自定义系统提示 |
McpCalculator | 过程中MCP工具 |
McpPrompts | MCP提示模板 |
Hooks | 前/后工具使用钩 |
ToolPermissionCallback | 权限控制 |
Agents | 代理配置 |
MaxBudget | 支出限额 |
状态和奇偶校验
- 当前版本: 0.1.0
- 状态: 预览(API和行为可能会更改)
- 对等: 设计用于匹配Python-Claude Agent SDK API、行为和人体工程学
- 测验: 109个测试(90个单元+19个集成;默认情况下禁用集成测试)
已知限制
control_cancel_request当前被忽略(取消正在进行的控制请求尚未实现;与Python SDK TODO匹配)。
运行集成测试
集成测试需要一个可用的Claude Code CLI,默认情况下是禁用的。
- 通过以下方式启用它们:
CLAUDE_AGENT_SDK_RUN_INTEGRATION_TESTS=1 dotnet test
规范规则: 蟒蛇 claude-agent-sdk 是规范参考。这个。NET端口跟踪其行为和API。
安装
NuGet包(即将推出)
dotnet add package Claude.AgentSdk来源
git clone https://github.com/anthropics/claude-agent-sdk-dotnet.git
cd claude-agent-sdk-dotnet
dotnet build相关项目
| 项目 | 语言 | 描述 |
|---|---|---|
| claude代理sdk python | Python | 官方Python SDK(规范参考) |
| 克劳德特工sdk-cpp | 具有全功能奇偶校验的C++ | C++端口 |
许可证
根据MIT许可证获得许可。看 LICENSE 了解详情。
这是一个。NET端口 claude代理sdk python 中国人民银行Anthropic。
支持
- 问题:使用GitHub问题跟踪器
- 示例:参见
examples/ - 测试:见
tests/
