Files
his/.qoder/skills/walkinglabs-harness/SKILL.md

143 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: walkinglabs-harness
description: "Practical Harness Engineering patterns from the walkinglabs course. Implements the 5-subsystem model (Instruction, Tools, Environment, State, Feedback) with concrete templates: feature_list.json, claude-progress.md, init.sh, session-handoff.md, clean-state-checklist.md. Use when setting up project harness infrastructure, session continuity, or implementing the init phase pattern."
---
# WalkingLabs Harness — 实战模式
> 来源:[Learn Harness Engineering](https://walkinglabs.github.io/learn-harness-engineering/zh/)
## 🎯 核心概念
### 能力鸿沟Capability Gap
模型在基准测试上的表现 vs 真实任务上的表现之间的落差。SWE-bench Verified 50-60% 不意味着真实任务也能达到这个成功率。
### Harness 诱导失败
模型本身能力足够但因为执行环境有结构性缺陷而失败。Anthropic 对照实验:同一个 prompt + 同一个模型,裸跑 20 分钟 $9 失败,带 harness 跑 6 小时 $200 成功。
### 验证缺口
Agent 对自己输出的信心评估和实际正确性之间的偏差。"做完了" ≠ 真的做完了。
### 上下文焦虑
当 Agent 感觉上下文快满了,会匆忙结束当前工作,跳过验证,选简单方案而非最优方案。
## 🔧 5 子系统模型
```
┌─────────────────────────────────────────────┐
│ 指令Instruction— AGENTS.md / CLAUDE.md │
│ 工具Tools— shell / 文件 / 测试 │
│ 环境Environment— 依赖 / 服务 / 版本 │
│ 状态State— PROGRESS.md / 功能清单 │
│ 反馈Feedback— test / lint / build │
└─────────────────────────────────────────────┘
```
**量化价值的方法:** 控制变量排除法 — 保持模型不变,逐个移除子系统,看哪个移除后性能下降最多。
## 📋 标准工作循环
```
开始会话
├→ 1. Init初始化
│ ├── pwd 确认目录
│ ├── 读取 claude-progress.md / feature_list.json
│ ├── git log --oneline -5
│ └── 运行 ./init.sh
├→ 2. Select选择功能
│ └── 只选一个未完成功能
├→ 3. Implement实现
│ └── 一次只做一个功能,不扩大范围
├→ 4. Verify验证
│ ├── 运行验证命令
│ └── 有可运行证据才标记完成
└→ 5. Cleanup清理
├── 更新 claude-progress.md
├── 更新 feature_list.json
├── 运行 clean-state-checklist.md
├── git commit
└── 留下干净重启路径
```
## 📁 必需模板文件
| 文件 | 用途 | 必需 |
|---|---|---|
| `feature_list.json` | 功能状态唯一事实来源 | ✅ |
| `PROGRESS.md` | 会话进度和已验证状态 | ✅ |
| `init.sh` | 统一启动与验证入口 | ✅ |
| `session-handoff.md` | 跨会话交接摘要 | 可选 |
| `clean-state-checklist.md` | 结束时清洁检查 | ✅ |
| `evaluator-rubric.md` | 评审评分表 | 可选 |
| `quality-document.md` | 质量快照 | 可选 |
## 📐 约束设计
### DoD完成定义
一个功能只有在以下条件都满足时才算完成:
1. 目标行为已经实现
2. 要求的验证真的跑过
3. 证据记录在 feature_list.json 或 PROGRESS.md
4. 仓库仍能按标准启动路径重新开始工作
### 规则
- 一次只做一个功能
- 不要因为"代码已经写了"就把功能标记为完成
- 不要悄悄改弱验证规则
- 优先依赖仓库里的持久化文件,而不是聊天记录
## 🔄 会话交接
每次会话结束前必须运行 `clean-state-checklist.md`
```
□ 标准启动路径仍然可用
□ 标准验证路径仍然可运行
□ 当前进度已记录到进度日志
□ 功能状态真实反映 passing 和未验证的边界
□ 无半成品步骤处于未记录状态
□ 下一轮会话无需人工修复即可继续
```
## 📊 评审评分表
| 维度 | 问题 | 0-2分 |
|---|---|---|
| 正确性 | 行为是否符合目标功能? | |
| 验证 | 检查是否真的跑过并留下证据? | |
| 范围纪律 | 是否基本保持在选定功能范围内? | |
| 可靠性 | 结果能否在重启后继续工作? | |
| 可维护性 | 代码和文档是否清楚到可交接? | |
| 交接准备度 | 新会话能否只靠仓库内工件继续推进? | |
## 📚 12 讲大纲速查
| 讲 | 标题 | 核心观点 |
|---|---|---|
| L01 | 模型强 ≠ 执行可靠 | 能力鸿沟、harness 诱导失败 |
| L02 | Harness 到底是什么 | 5 子系统模型 |
| L03 | 仓库即记录系统 | Agent 看不到的就不存在 |
| L04 | 一个大文件不行 | 100 行 AGENTS.md更多放 docs/ |
| L05 | 跨会话连续性 | 缺少持久化30 分钟+ 任务失败率激增 |
| L06 | Init 需要独立阶段 | 启动检查标准化 |
| L07 | Agent 越界/半途而废 | 显式范围边界 + 完成定义 |
| L08 | 功能清单是原语 | feature_list.json 机器可读 |
| L09 | Agent 过早宣告胜利 | 自评 ≠ 验证,分开"干活"和"检查" |
| L10 | 端到端测试改变结果 | 集成测试发现单元测试漏掉的问题 |
| L11 | 可观测性属于 Harness | 日志、追踪、指标在 Harness 内 |
| L12 | 每次会话留下干净状态 | 技术债持续还,不攒到爆雷 |
## ⚠️ 常见陷阱
| 陷阱 | 表现 | 解决 |
|---|---|---|
| 无 Init 阶段 | Agent 直接开工,不知道环境状态 | 强制运行 init.sh |
| 无功能清单 | Agent 凭记忆工作 | 维护 feature_list.json |
| 无进度文件 | 跨会话从头探索 | 维护 PROGRESS.md |
| 不跑验证 | Agent 自己说了算 | 验证命令写在 AGENTS.md 里 |
| 不清理 | 技术债指数级累积 | 每次结束运行 clean-state-checklist |
| 同时做多个功能 | 上下文混乱,范围蔓延 | 一次做一个 |