202 lines
5.4 KiB
Markdown
202 lines
5.4 KiB
Markdown
---
|
||
title: 构建你的第一个 Harness
|
||
tags: [实践指南, 入门, Harness]
|
||
source: [NxCode, OpenAI, Martin Fowler]
|
||
confidence_score: 高
|
||
last_updated: 2026-04-07
|
||
---
|
||
|
||
# 构建你的第一个 Harness
|
||
|
||
本文提供了构建 Harness 的实用框架,从个人开发者到工程组织的三个级别。
|
||
|
||
---
|
||
|
||
## Level 1:基础 Harness(单个开发者)
|
||
|
||
如果你正在为个人项目使用 Claude Code、Cursor 或 Codex:
|
||
|
||
### 需要设置的内容
|
||
|
||
- `CLAUDE.md` 或 `.cursorrules` 文件,包含项目约定
|
||
- 用于 linting 和格式化的预提交钩子
|
||
- 智能体可以运行以自我验证的测试套件
|
||
- 具有一致命名的清晰目录结构
|
||
|
||
**设置时间:** 1-2 小时
|
||
**影响:** 防止最常见的智能体错误
|
||
|
||
### 快速入门清单
|
||
|
||
1. **创建 CLAUDE.md**
|
||
```markdown
|
||
# 项目约定
|
||
|
||
## 代码风格
|
||
- 使用 TypeScript,严格模式
|
||
- 使用 2 空格缩进
|
||
- 函数名使用驼峰命名
|
||
|
||
## 测试
|
||
- 所有新代码必须有测试
|
||
- 提交前运行 `npm test`
|
||
|
||
## 目录结构
|
||
- src/ - 源代码
|
||
- tests/ - 测试文件
|
||
- docs/ - 文档
|
||
```
|
||
|
||
2. **设置预提交钩子**
|
||
```bash
|
||
# 使用 husky 或 pre-commit
|
||
npm install husky --save-dev
|
||
npx husky install
|
||
```
|
||
|
||
3. **确保测试存在**
|
||
- 即使是简单的集成测试也比没有好
|
||
- 智能体需要可以运行的东西来验证其工作
|
||
|
||
---
|
||
|
||
## Level 2:团队 Harness(小团队)
|
||
|
||
对于共享代码库的 3-10 名开发者的团队:
|
||
|
||
### 在 Level 1 基础上添加
|
||
|
||
- 包含团队范围约定的 `AGENTS.md`
|
||
- CI 强制执行的架构约束
|
||
- 常见任务的共享提示模板
|
||
- 由 linter 验证的文档即代码
|
||
- 专门针对智能体生成的 PR 的代码审查清单
|
||
|
||
**设置时间:** 1-2 天
|
||
**影响:** 整个团队的智能体行为一致
|
||
|
||
### AGENTS.md 结构建议
|
||
|
||
```markdown
|
||
# AGENTS.md
|
||
|
||
本文档包含智能体在此代码库中工作的约定。
|
||
|
||
## 1. 架构原则
|
||
- 我们使用分层架构:Types → Config → Repo → Service → API
|
||
- 不要跨层导入
|
||
- 所有外部依赖通过 Providers 访问
|
||
|
||
## 2. 编码标准
|
||
- [具体规则...]
|
||
|
||
## 3. 测试策略
|
||
- [具体指南...]
|
||
|
||
## 4. 审查清单
|
||
- [智能体在提交前应检查的内容...]
|
||
```
|
||
|
||
### 共享提示模板
|
||
|
||
创建一个 `prompts/` 目录,包含常见任务:
|
||
- `prompts/add-new-feature.md`
|
||
- `prompts/fix-bug.md`
|
||
- `prompts/write-tests.md`
|
||
- `prompts/refactor-code.md`
|
||
|
||
---
|
||
|
||
## Level 3:生产 Harness(工程组织)
|
||
|
||
对于运行数十个并发智能体的组织:
|
||
|
||
### 在 Level 2 基础上添加
|
||
|
||
- 自定义中间件层(循环检测、推理优化)
|
||
- 可观测性集成(智能体读取日志和指标)
|
||
- 计划运行的熵管理智能体
|
||
- Harness 版本控制和 A/B 测试
|
||
- 智能体性能监控仪表板
|
||
- 智能体陷入困境时的升级策略
|
||
|
||
**设置时间:** 1-2 周
|
||
**影响:** 智能体作为自主贡献者运作
|
||
|
||
---
|
||
|
||
## 常见 Harness 工程错误
|
||
|
||
### 1. 过度工程化控制流
|
||
|
||
> "如果你过度工程化控制流,下一个模型更新会破坏你的系统。"
|
||
|
||
模型快速改进。2024 年需要复杂管道的能力现在由单个上下文窗口提示处理。构建你的 Harness 为**可剥离的**——当模型变得足够智能不需要时,你应该能够移除"智能"逻辑。
|
||
|
||
### 2. 将 Harness 视为静态的
|
||
|
||
Harness 需要随模型一起演进。当新模型版本改进推理时,你的推理优化中间件可能会适得其反。每次重大模型更新时审查和更新 Harness 组件。
|
||
|
||
### 3. 忽略文档层
|
||
|
||
最有影响力的 Harness 改进通常是最简单的:**更好的文档**。如果你的 `AGENTS.md` 含糊,你的智能体输出也会含糊。投资于精确、机器可读的文档,作为智能体的地面真理。
|
||
|
||
### 4. 没有反馈循环
|
||
|
||
没有反馈的 Harness 是一个笼子,而不是指南。智能体需要知道它何时成功何时失败。内置:
|
||
- 任务完成前的自我验证步骤
|
||
- 作为智能体工作流一部分的测试执行
|
||
- 按任务类型的智能体成功率指标
|
||
|
||
### 5. 仅人类可读的文档
|
||
|
||
如果你的架构决策存在于人们的头脑中或智能体无法访问的 Confluence 页面中,Harness 就有差距。**智能体需要的一切都必须在仓库中。**
|
||
|
||
---
|
||
|
||
## 从哪里开始
|
||
|
||
### 如果你是单个开发者
|
||
|
||
1. 从 Level 1 开始
|
||
2. 创建一个简单的 `CLAUDE.md`
|
||
3. 设置基础预提交钩子
|
||
4. 添加一个简单的测试套件
|
||
5. 迭代——观察智能体失败的地方并加以修复
|
||
|
||
### 如果你是一个团队
|
||
|
||
1. 首先就 Level 1 基础达成一致
|
||
2. 一起编写 `AGENTS.md` 的初稿
|
||
3. 识别最常见的 3 个智能体失败模式
|
||
4. 为这些模式构建前 3 个约束/检查
|
||
5. 每 2 周回顾一次什么有效/什么无效
|
||
|
||
### 如果你是一个组织
|
||
|
||
1. 从一些试点团队开始
|
||
2. 收集什么有效的模式
|
||
3. 构建可重用的 Harness 组件库
|
||
4. 投资于可观测性和指标
|
||
5. 建立 Harness 迭代的反馈循环
|
||
|
||
---
|
||
|
||
## 相关概念
|
||
|
||
- [[Harness-Engineering|Harness 工程]]
|
||
- [[Context-Engineering|上下文工程]]
|
||
- [[Architectural-Constraints|架构约束]]
|
||
- [[Mitchellh-Adoption-Journey|Mitchellh AI 采用之旅]]
|
||
|
||
## 参考来源
|
||
|
||
1. NxCode - Harness Engineering: The Complete Guide
|
||
2. OpenAI - Harness Engineering:在智能体优先的世界中利用 Codex
|
||
3. Martin Fowler - Harness engineering for coding agent users
|
||
|
||
---
|
||
|
||
*最后更新:2026-04-07*
|
||
*本文档由 [[WikiLLM]] 编译自多个来源*
|