Learn Harness Engineering

来源:https://github.com/walkinglabs/learn-harness-engineering 收录时间:2026-05-18

课程概述

项目制课程,教如何构建让 AI Coding Agent 可靠运行的环境、状态管理、验证和控制机制。

核心理念: 最强的模型没有合适的 harness 也会失败。Harness 不是写更好的 prompt,而是设计模型运行的系统。

核心参考:

Harness 五大子系统

┌─────────────────────────────────────────────────────────────────┐
│ THE HARNESS                                                     │
│                                                                 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐      │
│ │ Instructions │ │ State        │ │ Verification         │      │
│ │ AGENTS.md    │ │ progress.md  │ │ tests + lint         │      │
│ │ CLAUDE.md    │ │ feature_list │ │ type-check           │      │
│ │ feature_list │ │ git log      │ │ smoke runs           │      │
│ │ docs/        │ │ session hand │ │ e2e pipeline         │      │
│ └──────────────┘ └──────────────┘ └──────────────────────┘      │
│                                                                 │
│ ┌──────────────┐ ┌──────────────────────────────────────┐      │
│ │ Scope        │ │ Session Lifecycle                    │      │
│ │ one feature  │ │ init.sh at start                     │      │
│ │ at a time    │ │ clean-state checklist at end         │      │
│ │ definition   │ │ handoff note for next session        │      │
│ │ of done      │ │ commit only when safe to resume      │      │
│ └──────────────┘ └──────────────────────────────────────┘      │
└─────────────────────────────────────────────────────────────────┘
  1. Instructions — 告诉 Agent 做什么、按什么顺序、开始前读什么。渐进式披露,不是一个巨型文件
  2. State — 跟踪已做、进行中、下一步。持久化到磁盘,下个 session 从断点继续
  3. Verification — 只有通过的测试才算证据。Agent 不能没有可运行证明就宣布完成
  4. Scope — 约束 Agent 一次只做一个功能。不越界、不半途而废
  5. Session Lifecycle — 开始时初始化,结束时清理,为下一个 session 留干净的重启路径

课程结构

12 讲 Lecture

| 讲次 | 问题 | 核心观点 | |------|------|---------| | L01 | 强模型为什么在真实任务上失败? | 基准测试和真实工程的差距 | | L02 | Harness 到底是什么? | 五大子系统 | | L03 | 为什么仓库必须是唯一真相源? | Agent 看不到的就不存在 | | L04 | 为什么一个大指令文件会失败? | 渐进式披露:给地图,不是百科全书 | | L05 | 长时间任务为什么丢失连续性? | 进度持久化到磁盘 | | L06 | 初始化为什么需要独立阶段? | Agent 开始前验证环境健康 | | L07 | Agent 为什么过度扩展和欠完成? | 一次一个功能;明确定义"完成" | | L08 | 为什么功能列表是 Harness 原语? | 机器可读的范围边界 | | L09 | Agent 为什么过早宣布胜利? | 信心 ≠ 正确 | | L10 | 为什么端到端测试改变结果? | 只有全流水线运行才算真验证 | | L11 | 为什么可观测性属于 Harness? | 看不到 Agent 做了什么就无法修复 | | L12 | 为什么每个 session 必须留干净状态? | 下一个 session 的成功依赖这个 session 的清理 |

6 个 Project(围绕同一个 Electron 知识库 App)

| 项目 | 做什么 | Harness 机制 | |------|--------|-------------| | P01 | 对比:纯 prompt vs. 有规则 | 最小 harness:AGENTS.md + init.sh + feature_list.json | | P02 | 重构仓库让 Agent 可读 | Agent-readable workspace + 持久化状态文件 | | P03 | 让 Agent 从断点继续 | 进度日志 + session 交接 + 多 session 连续性 | | P04 | 阻止 Agent 做太多或太少 | 运行时反馈 + 范围控制 + 增量索引 | | P05 | 让 Agent 验证自己的工作 | 自验证 + 有据 Q&A + 基于证据的完成 | | P06 | 从零构建完整 harness(毕设) | 全部机制 + 可观测性 + 消融实验 |

学习路径

Phase 1: SEE THE PROBLEM        Phase 2: STRUCTURE THE REPO
L01→L02→P01                     L03→L04→P02

Phase 3: CONNECT SESSIONS       Phase 4: FEEDBACK & SCOPE
L05→L06→P03                     L07→L08→P04

Phase 5: VERIFICATION           Phase 6: PUT IT ALL TOGETHER
L09→L10→P05                     L11→L12→P06

Quick Start 模板

YOUR PROJECT ROOT
├── AGENTS.md           <-- Agent 操作手册
├── CLAUDE.md           <-- (替代,如果用 Claude Code)
├── init.sh             <-- 运行 install + verify + start
├── feature_list.json   <-- 哪些功能存在,哪些已完成
├── claude-progress.md  <-- 每个 session 发生了什么
└── src/                <-- 实际代码

关键数据

  • Anthropic 实验:同一模型(Opus 4.5),同一任务(构建 2D 复古游戏编辑器)
    • 无 Harness:20 分钟花 $9,产出不能用
    • 有完整 Harness:6 小时花 $200,构建了可玩的游戏
  • 模型没变,Harness 改变了一切

附加资源

  • 12 语言版本(含中文)
  • 内置 skills/harness-creator/ 技能,可快速为项目脚手架生成生产级 harness
  • PDF 构建管线:npm run pdf:build