声明: 这是 shareAI Lab 的独立教育项目
learn-claude-code的 C# (.NET) 实现版本。与 Anthropic 无关,未获其认可或赞助。"Claude Code" 是 Anthropic 的商标。
从零开始构建你自己的 AI Agent (.NET 版本)。
这个仓库是 learn-claude-code 的 .NET 移植版。原仓库以 Python 语言深入浅出地剖析了 Claude Code 的核心原理。为了方便 .NET 开发者学习掌握 Agent 的构建精髓,我们将其核心代码使用 C# 的最新特性进行了完整重写。
我们认为 Claude Code 是世界上最优秀的 AI 编程代理,通过学习它的设计模式,你将对 "什么才是真正的 AI Agent" 有全新的认知。
兼容 Kode CLI、Claude Code、Cursor,以及任何支持 Agent Skills Spec 的 Agent。
完成本教程后,你将理解:
- Agent 循环 - 所有 AI 编程代理背后那个令人惊讶的简单模式
- 工具设计 - 如何让 C# 代码与 AI 模型及真实世界交互
- 显式规划 - 使用约束让 AI 行为可预测
- 上下文管理 - 通过子代理(进程隔离)保持代理记忆干净
- 知识注入 - 按需加载领域专业知识,无需重新训练
- 上下文压缩 - 三层管道让智能体无限期工作
- 任务系统 - 文件系统上的持久化任务看板与依赖图
- 后台执行 - 非阻塞命令执行与通知排空
- 智能体团队 - 持久化队友与 JSONL 收件箱通信
- 团队协议 - request_id 握手驱动的关机与审批 FSM
- 自治智能体 - WORK/IDLE 生命周期与任务看板自动认领
- Worktree 隔离 - 控制面/执行面分离的并行开发
从这里开始
|
v
[v0: Bash Agent] -----> "一个工具就够了"
| v0_bash_agent.cs
v
[v1: Basic Agent] ----> "完整的 Agent 模式"
| 4 个工具: Bash, Read, Write, Ls
v
[v2: Todo Agent] -----> "让计划显式化"
| +TodoManager
v
[v3: Subagent] -------> "分而治之"
| +Task 工具 (进程隔离)
v
[v4: Skills Agent] ---> "按需领域专业"
| +Skill 工具
v
[v5: Compact] --------> "三层上下文压缩"
| +Compact 工具
v
[v6: Task System] ----> "持久化任务看板"
| +Task CRUD 工具
v
[v7: Background] -----> "后台不阻塞"
| +Background 工具
v
[v8: Agent Teams] ----> "从独狼到团队"
| +MessageBus + Teammate
v
[v9: Protocols] ------> "结构化协议"
| +Shutdown/Plan FSM
v
[v10: Autonomous] ----> "自治生命周期"
| +WORK/IDLE + ClaimTask
v
[v11: Worktree] ------> "目录隔离"
+Git Worktree + EventBus
推荐学习方式:
- 先阅读并运行
v0- 理解核心循环 - 对比
v0和v1- 看工具如何演进 - 学习
v2的规划模式 - 探索
v3的复杂任务分解 - 掌握
v4构建可扩展的 Agent - 理解
v5的上下文压缩——真正能"无限"工作的关键 - 对比
v6/v7的持久化状态与后台执行 - 从
v8到v11逐步构建多智能体系统
- .NET SDK (推荐 .NET 10.0 )
- 一个 Anthropic API Key (或兼容的 API 代理)
-
克隆仓库
git clone https://github.com/your-repo/learn-cc-csharp cd learn-cc-csharp/dotnet -
配置 API Key 复制
.env.example为.env并填入你的 Key。国内用户可使用智谱 GLM-4.7 等兼容模型。Powershell:
cp .env.example .env # 编辑 .env 文件填入 ANTHROPIC_API_KEY=sk-ant-xxx... -
运行 使用
dotnet run运行对应的 Agent。# 极简版(从这里开始!) dotnet run v0_bash_agent.cs # 核心 Agent 循环 dotnet run v1_basic_agent.cs # + Todo 规划 dotnet run v2_todo_agent.cs # + 子代理 dotnet run v3_subagent.cs # + Skills dotnet run v4_skills_agent.cs # + 上下文压缩 dotnet run v5_context_compact.cs # + 任务系统 dotnet run v6_task_system_agent.cs # + 后台任务 dotnet run v7_background_tasks_agent.cs # + 智能体团队 dotnet run v8_agent_teams.cs # + 团队协议 dotnet run v9_team_protocols.cs # + 自治智能体 dotnet run v10_autonomous_agents.cs # + Worktree 任务隔离 dotnet run v11_worktree_task_isolation.cs
每个 Agent 都只是这个循环(C# 伪代码):
while (true)
{
var response = await model.ChatAsync(history, tools);
if (response.StopReason != StopReason.ToolUse)
return response.Text;
var results = await ExecuteTools(response.ToolCalls);
history.Add(results);
}就这样。模型持续调用工具直到完成。其他一切都是精化。
| 版本 | 文件 | 工具 | 核心新增 | 关键洞察 |
|---|---|---|---|---|
| v0 | v0_bash_agent.cs | bash | 递归子代理 | 一个工具就够了 |
| v1 | v1_basic_agent.cs | bash, read, write, edit | 核心循环 | 模型即代理 |
| v2 | v2_todo_agent.cs | +TodoWrite | 显式规划 | 约束赋能复杂性 |
| v3 | v3_subagent.cs | +Task | 上下文隔离 | 干净上下文 = 更好结果 |
| v4 | v4_skills_agent.cs | +Skill | 知识加载 | 专业无需重训 |
| v5 | v5_context_compact.cs | +Compact | 三层压缩管道 | 遗忘是特性 |
| v6 | v6_task_system_agent.cs | +Task CRUD | 持久化任务板 | 状态外部化 |
| v7 | v7_background_tasks_agent.cs | +Background | 后台执行 | 永不阻塞 |
| v8 | v8_agent_teams.cs | +Teammate | 团队通信 | 隔离即特性 |
| v9 | v9_team_protocols.cs | +Protocols | 握手 FSM | 一个模式两种应用 |
| v10 | v10_autonomous_agents.cs | +WORK/IDLE | 自治生命周期 | 拉取胜于推送 |
| v11 | v11_worktree_task_isolation.cs | +Worktree | 目录隔离 | 控制面/执行面分离 |
该系列配套了详细的公众号风格文章,深入剖析设计理念:
- v0: Bash 就是一切
- v1: 模型即代理 - 价值 3000 万美金的 400 行代码
- v2: 用 Todo 实现自我约束
- v3: 子代理机制 - 上下文隔离的艺术
- v4: Skills 机制 - 知识外部化
- v5: 上下文压缩 - 三层管道让智能体无限工作
- v6: 任务系统 - 文件系统上的持久化任务看板
- v7: 后台任务 - 永不阻塞的智能体
- v8: 智能体团队 - 从独狼到团队
- v9: 团队协议 - 一个 FSM,两种应用
- v10: 自治智能体 - WORK/IDLE 生命周期
- v11: Worktree 任务隔离 - 控制面 + 执行面分离
- 上下文缓存经济学
模型是 80%,代码是 20%。
Kode 和 Claude Code 等现代 Agent 能工作,不是因为巧妙的工程,而是因为模型被训练成了 Agent。我们的工作就是给它工具,然后闪开。
MIT
模型即代理。这就是全部秘密。