decodingai-magazine/building-a-coding-agent-from-scratch-course

Learn harness engineering by building Claude Code from scratch. Free, open-source course: 8 articles, 6 videos, 1 codebase.

这个项目是什么

一个开源、免费运行的课程(8篇文章、6个视频、Apache-2.0许可证),带你从零开始构建一个编码代理——一个能够读取、编辑和运行项目中代码的AI。结果是decode,一个你自己构建的可工作的编码助手。该课程由Decoding AI出品,并得到Modal、Opik和Kitaru的技术支持。

核心思想:“harness”才是关键

该项目提出了一个强有力的、有证据支持的论点:AI模型本身只有大约20行代码——一个简单的循环,模型读取提示,决定调用哪个工具(如读取文件、运行命令),然后重复。困难且有趣的工作是围绕这个循环的一切:工具、权限检查、内存管理、沙箱和错误处理。这个外围系统被称为harness,README声称仅改进harness就将一个编码代理在基准测试中从约第30名提升到前5名。因此,课程教你如何工程化这个harness。

你构建什么

一个完整的编码代理,名为decode,具有:

  • 两个界面: 一个交互式终端UI和一个远程无服务器模式(部署在Modal上),可以并行运行多个代理,通过手动、webhook或计划触发。
  • 六个支持模块: LLM提供商、内存、技能(可重用的指令集)、沙箱、权限,以及一个用于快速编辑器式反馈的LSP服务器。
  • 上下文工程: 当对话达到模型上下文窗口的约80%时自动总结,加上内存和技能加载。
  • 子代理: 专门的辅助代理(用于探索代码、规划或审查),每个都获得一个专注的小上下文窗口,而不是一个臃肿的窗口。
  • 可观测性与评估: 每个会话都被记录并可重放。代码集成了Opik用于追踪和Kitaru用于重放运行,并包含一个评估harness用于基准测试和捕获回归。

技术栈

  • 语言: Python
  • 代理框架: Pydantic AI
  • LLM: 三个可替换的提供商——Modal(通过SGLang托管你自己的开放权重模型)、OpenRouter(开放权重作为服务)或Gemini(专有)
  • 沙箱: 本地Docker或远程Modal沙箱——代理的命令永远不会直接在你的机器上运行
  • 部署: Modal无服务器函数
  • 记录/评估: Kitaru(会话、重放)、Opik(追踪)

其他一切都是有意识地从头构建的——课程避免使用抽象掉困难部分的框架。

8节课(每节有文章,大部分有视频)

# 主题 你学到的
1 系统设计 勾勒整个harness:无头核心、六个模块、两种界面模式和一个评估层。
2 极简代理循环 你的代理在一个可控制的TUI中循环使用9个工具和3个可替换的LLM提供商。
3 沙箱 工具在Docker或Modal沙箱内运行——绝不在你的主机上。
4 上下文工程 加载内存、调用技能、读取LSP诊断,并在窗口的80%时自动压缩。
5 子代理 并行展开Explore子代理;在构建、规划和代码审查者角色之间切换。
6 部署 在Modal上远程运行无头harness,通过CLI、webhook或cron触发代理。
7 评估 为你的代理构建基准和回归测试。
8 回归增长 将真实的失败代理轨迹转化为新的回归测试,并使用Kitaru重放来比较运行。

立即尝试

完成的代理附带演示技能。你可以克隆、安装(免费),并在大约5分钟内看到decode构建一个可玩的贪吃蛇游戏、将网页文章抓取到交互式知识图谱中,或将GitHub数据获取到仪表板——全部来自一个提示。

git clone https://github.com/decodingai-magazine/building-a-coding-agent-from-scratch-course.git
cd building-a-coding-agent-from-scratch-course
make install
cp .env.example .env   # 设置你的LLM API密钥
uv run decode

然后输入/demo-并选择一个演示。

适合谁

README发出一个有趣的警告:从零构建编码harness可以让你在构建任何其他AI产品——金融、医疗或电子商务——时“危险地擅长”。课程强调的不仅是代码做什么,还有为什么做出每个设计决策——例如,为什么压缩在约80%而不是在极限时触发,或者为什么子代理是上下文工程的问题。

相关

  • 项目
  • 项目
  • 项目
  • 项目