配置 harness,定义专业智能体,并生成这些智能体所使用的技能——元技能(meta-skill)的简体中文版本。触发场景:(1) 用户说『给这个项目搭一个 harness』『构建 harness』『配置 harness』;(2) 用户请求『harness 设计』『harness 工程化』;(3) 为新领域/新项目建立基于 harness 的自动化体系;(4) 重构或扩展已有 harness;(5) 用户请求『harness 点检』『harness 审计』『harness 现状』『智能体/技能同步』等运维/维护任务;(6) 用户提到『组织 agent』『设计工作流』『多 agent 协作』『搭建自动化流程』『agent 怎么分工』『agent 团队』等表达。等同于 skills/harness 的功能,仅语言不同,按用户使用的语言选择其一即可。
Scanned 6/9/2026
Install via CLI
openskills install nilecui/harness-zh-release---
name: harness-zh
description: "配置 harness,定义专业智能体,并生成这些智能体所使用的技能——元技能(meta-skill)的简体中文版本。触发场景:(1) 用户说『给这个项目搭一个 harness』『构建 harness』『配置 harness』;(2) 用户请求『harness 设计』『harness 工程化』;(3) 为新领域/新项目建立基于 harness 的自动化体系;(4) 重构或扩展已有 harness;(5) 用户请求『harness 点检』『harness 审计』『harness 现状』『智能体/技能同步』等运维/维护任务;(6) 用户提到『组织 agent』『设计工作流』『多 agent 协作』『搭建自动化流程』『agent 怎么分工』『agent 团队』等表达。等同于 skills/harness 的功能,仅语言不同,按用户使用的语言选择其一即可。"
---
# Harness — Agent Team & Skill Architect
为特定领域/项目构建 Harness,定义各个 Agent 的角色,并生成 Agent 所使用的 Skill 的元 Skill(meta skill)。
**核心原则:**
1. 生成 Agent 定义(`.claude/agents/`)与 Skill(`.claude/skills/`)。
2. **将 Agent 团队(Agent Team)作为默认执行模式。**
3. **在 CLAUDE.md 中注册 Harness 指针(pointer)。** —— 仅记录最少量的指针(触发规则 + 变更历史),以便在新会话中自动触发编排器(orchestrator)Skill。
4. **Harness 不是固定物,而是不断进化的系统。** —— 每次执行后都要吸收反馈,持续更新 Agent、Skill 与 CLAUDE.md。
## 工作流(Workflow)
### Phase 0: 现状审计(Audit)
当 Harness Skill 被触发时,首先确认既有 Harness 的现状。
1. 读取 `项目/.claude/agents/`、`项目/.claude/skills/`、`项目/CLAUDE.md`
2. 根据现状分支执行模式:
- **全新构建**:Agent/Skill 目录不存在或为空 → 从 Phase 1 开始完整执行
- **既有扩展**:已有 Harness,并需要追加新 Agent/Skill → 按下方 Phase 选择矩阵仅执行必要 Phase
- **运维/维护**:对既有 Harness 的审计·修改·同步请求 → 跳转至 Phase 7-5 运维/维护工作流
**既有扩展时的 Phase 选择矩阵:**
| 变更类型 | Phase 1 | Phase 2 | Phase 3 | Phase 4 | Phase 5 | Phase 6 |
|----------|---------|---------|---------|---------|---------|---------|
| 新增 Agent | 跳过(复用 Phase 0 结果) | 仅决定编排位置 | 必需 | 需要专属 Skill 时 | 修改编排器 | 必需 |
| 新增/修改 Skill | 跳过 | 跳过 | 跳过 | 必需 | 连接关系变化时 | 必需 |
| 架构变更 | 跳过 | 必需 | 仅受影响 Agent | 仅受影响 Skill | 必需 | 必需 |
3. 将既有 Agent/Skill 列表与 CLAUDE.md 记录进行对照,检测不一致(drift)
4. 将审计结果汇总汇报给用户,并确认执行计划
### Phase 1: 领域分析(Domain Analysis)
1. 从用户请求中把握领域/项目
2. 识别核心作业类型(生成、校验、编辑、分析等)
3. 基于 Phase 0 的审计结果,分析与既有 Agent/Skill 的冲突/重复
4. 探索项目代码库 —— 把握技术栈、数据模型、主要模块
5. **检测用户熟练度** —— 通过对话中的上下文线索判断其技术水平,据此调节后续沟通语气。对编程经验较少的用户,避免不加解释地使用专业术语。
### Phase 2: 团队架构设计(Team Architecture Design)
#### 2-1. 选择执行模式
**Agent 团队是最高优先级的默认值。** 当有 2 个以上 Agent 协作时,必须首先考察是否采用 Agent 团队。团队成员之间通过直接通信(SendMessage)与共享任务列表(TaskCreate)自我协调,通过发现共享、冲突讨论、遗漏补全来提升结果质量。
| 模式 | 何时使用 | 特性 |
|------|----------|------|
| **Agent 团队**(默认) | 2 人以上协作、需要实时协调·反馈交换、相互引用中间产物 | 通过 `TeamCreate` + `SendMessage` + `TaskCreate` 自我协调 |
| **子 Agent(Sub Agent)**(备选) | 单 Agent 作业、只需向主体返回结果即可、团队通信开销过大时 | 直接调用 `Agent` 工具,使用 `run_in_background` 并行 |
| **混合(Hybrid)** | 各 Phase 特性不同时 —— 如:并行收集(子 Agent)→ 基于共识的整合(团队) | 按 Phase 混合团队/子 Agent |
**决策顺序:**
1. 首先考察是否可按 Agent 团队设计 —— 2 人以上即为默认
2. 仅当结构上不需要团队通信(只需结果传递)、且团队开销大于收益时,才选择子 Agent
3. 各 Phase 特性差异明显时考虑混合 —— 将各 Phase 的执行模式在编排器中明示
> 详尽比较表和分模式决策树请参见 `references/agent-design-patterns.md` 中的 "执行模式" 一节。
#### 2-2. 选择架构模式
1. 将任务分解为专业领域
2. 决定 Agent 团队结构(架构模式请参见 `references/agent-design-patterns.md`)
- **流水线(Pipeline)**:顺序依赖作业
- **Fan-out/Fan-in**:并行独立作业
- **专家池(Expert Pool)**:按场景选择调用
- **生成-校验(Generate-Verify)**:生成后再进行质量审核
- **监督者(Supervisor)**:中央 Agent 管理状态并动态分发
- **分层委派(Hierarchical Delegation)**:上级 Agent 向下级递归委派
#### 2-3. Agent 拆分标准
以专业性·并行性·上下文·复用性 4 个维度判断。详细标准表请参见 `references/agent-design-patterns.md` 中的 "Agent 拆分标准" 一节。
### Phase 3: 生成 Agent 定义
**所有 Agent 必须以 `项目/.claude/agents/{name}.md` 文件形式定义。** 禁止不创建 Agent 定义文件、直接把角色塞进 Agent 工具 prompt 的做法。理由:
- Agent 定义必须以文件形式存在,下一会话才能复用
- 必须明示团队通信协议,才能保证 Agent 间协作质量
- Harness 的核心价值在于 Agent(谁)与 Skill(怎么做)的分离
即便使用内建类型(`general-purpose`、`Explore`、`Plan`),也要生成 Agent 定义文件。内建类型通过 Agent 工具的 `subagent_type` 参数指定,Agent 定义文件则承载角色·原则·协议。
**模型设置:** 默认使用 `model: "opus"`,以保证最高推理质量。对于低复杂度的结构化任务(格式转换、模板填充、数据抽取等),可降级为 `model: "sonnet"` 以节约成本。在编排器中为每个 Agent 明示所选模型及其理由。
| 任务复杂度 | 推荐模型 | 示例 |
|---|---|---|
| 高(推理密集、创作、架构设计、QA) | opus | 编排器、分析、综合判断、质量审查 |
| 中(遵循模板、结构化生成) | sonnet | 格式转换、数据抽取、模板填充、简单 CRUD |
**团队重组:** 每个会话仅能激活一个 Agent 团队,但可以在 Phase 之间解散旧团队、组建新团队。像流水线模式那样在不同 Phase 需要不同专家组合时,先将上一团队的产物保存为文件,再清理团队并创建新团队。
将每个 Agent 定义到 `项目/.claude/agents/{name}.md`。必备章节:核心角色、作业原则、输入/输出协议、错误处理、协作。在 Agent 团队模式下,还需追加 `## 团队通信协议` 章节,明示消息的接收/发送对象以及作业请求的范围。
> 定义模板与实际文件全文请参见 `references/agent-design-patterns.md` 中的 "Agent 定义结构" 以及 `references/team-examples.md`。
**包含 QA Agent 时的必备事项:**
- QA Agent 使用 `general-purpose` 类型(`Explore` 为只读,无法执行校验脚本)
- QA 的核心不是"存在确认",而是 **"跨边界比对"** —— 同时读取两侧代码,比对 shape
- QA 不是整体完成后执行 1 次,而是 **在每个模块完成后立即增量执行**(incremental QA)
- 详细指南:参见 `references/qa-agent-guide.md`
### Phase 4: 生成 Skill
将每个 Agent 使用的 Skill 生成到 `项目/.claude/skills/{name}/SKILL.md`。详细编写指南请参见 `references/skill-writing-guide.md`。
#### 4-1. Skill 结构
```
skill-name/
├── SKILL.md (必需)
│ ├── YAML frontmatter (name, description 必需)
│ └── Markdown 本文
└── Bundled Resources (可选)
├── scripts/ - 重复/确定性作业的可执行代码
├── references/ - 条件加载的参考文档
└── assets/ - 用于输出的文件(模板、图片等)
```
#### 4-2. 编写 Description —— 主动诱导触发
description 是 Skill 的唯一触发机制。Claude 倾向于保守地判断是否触发,因此 description 要写得 **主动("pushy")**。
**坏例子:** `"处理 PDF 文档的 Skill"`
**好例子:** `"读取 PDF 文件、提取文本/表格、合并、拆分、旋转、加水印、加密、OCR 等执行所有 PDF 作业。当提及 .pdf 文件或请求 PDF 产物时,必须使用本 Skill。"`
要点:同时描述 Skill 做什么 + 具体触发场景,并与相似但不应触发的情况区分开。
#### 4-3. 正文编写原则
| 原则 | 说明 |
|------|------|
| **阐明 Why** | 不要使用 "ALWAYS/NEVER" 之类的强硬指令,而是传达之所以这样做的理由。LLM 理解理由后,在 edge case 中也能做出正确判断。 |
| **保持精简(Lean)** | 上下文窗口是公共资源。SKILL.md 正文以 500 行以内为目标,对决策无实质帮助的内容要删除或转移到 references/。 |
| **泛化(Generalize)** | 比起只适配特定例子的狭窄规则,应讲清原理,让 Skill 能应对多样输入。禁止过拟合(overfitting)。 |
| **重复代码要 bundling** | 若发现 Agent 在测试执行中普遍编写相同脚本,则提前 bundle 到 `scripts/`。 |
| **使用命令式语气** | 使用 "做……"、"执行……" 之类的命令/指示语气。 |
#### 4-4. Progressive Disclosure(渐进披露)
Skill 通过 3 级加载系统管理上下文:
| 级别 | 加载时机 | 大小目标 |
|------|----------|----------|
| **Metadata**(name + description) | 始终存在于上下文中 | ~100 词 |
| **SKILL.md 正文** | Skill 触发时 | <500 行 |
| **references/** | 仅在需要时 | 无上限(脚本无需加载即可执行) |
**大小管理规则:**
- 当 SKILL.md 接近 500 行时,将细节分离到 references/,正文中留下"何时去读该文件"的指针
- 超过 300 行的 reference 文件应在顶部包含 **目录(ToC)**
- 若存在按领域/框架的变体,则在 references/ 下按领域拆分,仅加载相关文件
#### 4-5. Skill–Agent 连接原则
- 1 个 Agent ↔ 1~N 个 Skill(1:1 或 1:多)
- 也允许多个 Agent 共享同一个 Skill
- Skill 承载"如何做",Agent 承载"谁来做"
> 详细编写模式、示例、数据 schema 标准请参见 `references/skill-writing-guide.md`。
### Phase 5: 集成与编排(Orchestration)
编排器(orchestrator)是 Skill 的特殊形态,负责把各个 Agent 与 Skill 串成单一工作流,统筹整个团队。如果说 Phase 4 中生成的各 Skill 定义了"各 Agent 做什么、怎么做",那么编排器就定义了"谁在何时按什么顺序协作"。具体模板请参见 `references/orchestrator-template.md`。
**既有扩展时的编排器修改:** 非全新构建、而是既有扩展时,不要新建编排器,而是修改既有编排器。新增 Agent 时,在团队组成·作业分配·数据流中反映新 Agent,并在 description 中补充与新 Agent 相关的触发关键字。
Phase 2-1 选择的执行模式不同,编排器的模式也不同。编排器模式的详细模板(Agent 团队/子 Agent/混合)请参见 `references/orchestrator-template.md`。
#### 5-1. 数据传递协议
在编排器内明示 Agent 之间的数据传递方式。推荐组合:团队模式用「任务型 + 文件型 + 消息型」,子 Agent 模式用「返回值型 + 文件型」。文件型传递时,在 `_workspace/` 下保存中间产物,文件名约定 `{phase}_{agent}_{artifact}.{ext}`。仅最终产物输出到用户指定路径。
> 各策略的详细说明请参见 `references/orchestrator-template.md`。
#### 5-2. 错误处理
在编排器内包含错误处理方针。核心原则:重试 1 次后仍失败,则跳过该结果继续推进(在报告中注明缺失);相冲突的数据不做删除,而是并列标注来源。
> 按错误类型划分的策略表请参见 `references/orchestrator-template.md` 中的 "错误处理" 一节。
#### 5-3. 团队规模指南
| 作业规模 | 推荐成员数 | 每人作业数 |
|----------|------------|--------------|
| 小规模(5~10 个作业) | 2~3 人 | 3~5 个 |
| 中规模(10~20 个作业) | 3~5 人 | 4~6 个 |
| 大规模(20 个以上作业) | 5~7 人 | 4~5 个 |
> 团队成员越多,协调开销越大。3 个专注的成员胜过 5 个涣散的成员。
#### 5-4. 在 CLAUDE.md 注册 Harness 指针
Harness 构建完成后,在项目的 `CLAUDE.md` 中注册最小量指针。CLAUDE.md 每个新会话都会加载,因此只要记录 Harness 的存在与触发规则,其余交给编排器 Skill 处理即可。
**CLAUDE.md 模板:**
````markdown
## Harness:{领域名}
**目标:** {Harness 的核心目标一行}
**触发:** 当收到与 {领域} 相关的作业请求时,使用 `{orchestrator-skill-name}` Skill。简单问题可直接回答。
**变更历史:**
| 日期 | 变更内容 | 对象 | 事由 |
|------|----------|------|------|
| {YYYY-MM-DD} | 初始构建 | 全体 | - |
````
**不要放进 CLAUDE.md 的内容:** Agent 列表、Skill 列表、目录结构、执行规则细节。理由:Agent/Skill 列表由编排器 Skill 与 `.claude/agents/`、`.claude/skills/` 管理,放入 CLAUDE.md 只是重复。CLAUDE.md 仅承载 **指针(触发规则)+ 变更历史**。
#### 5-5. 后续作业支持
编排器不仅要处理初次执行,还要处理后续作业。必须保证以下三点:
**1. 编排器 description 中包含后续关键字:**
仅凭初次生成的关键字,无法触发后续请求。description 中必须包含的后续表达:"重新执行"、"再跑一次"、"更新"、"修改"、"补充"、"仅对 {部分} 重新执行"、"基于先前结果"、"改进结果"。
**2. 在编排器 Phase 1 追加上下文确认步骤:**
工作流开始时确认既有产物是否存在,据此决定执行模式:
- `_workspace/` 存在 + 用户请求部分修改 → **部分重跑**
- `_workspace/` 存在 + 用户提供新输入 → **全新执行**(移旧 _workspace)
- `_workspace/` 不存在 → **初次执行**
**3. Agent 定义中包含重复调用指引:**
在每个 Agent `.md` 文件中明示"存在先前产物时的行为"。
> 参见编排器模板的 "Phase 0: 上下文确认" 章节:`references/orchestrator-template.md`
### Phase 6: 校验与测试
校验生成的 Harness。详细测试方法论请参见 `references/skill-testing-guide.md`。
#### 6-1. 结构校验
- 确认所有 Agent 文件位于正确位置
- 校验 Skill 的 frontmatter(name、description)
- 确认 Agent 间引用的一致性
- 确认未生成 command
#### 6-2. 按执行模式校验
- **Agent 团队**:确认成员间通信路径、作业依赖、团队规模是否适当
- **子 Agent**:确认各 Agent 的输入输出连接、`run_in_background` 设置、返回值收集逻辑
- **混合**:确认各 Phase 的执行模式是否在编排器中明示,Phase 边界处数据传递是否未断
#### 6-3. Skill 执行测试
对生成的每个 Skill 执行实际运行测试。核心流程:编写 2~3 条现实测试 prompt → with-skill / without-skill 并行执行对比 → 定性/定量结果评估 → 迭代改进 → 重复代码 bundling。
> 详细的测试 prompt 编写、评估方法、迭代改进循环请参见 `references/skill-testing-guide.md`。
#### 6-4. 触发校验
校验每个 Skill 的 description 是否被正确触发:
1. **Should-trigger 查询**(8~10 条)—— 应触发该 Skill 的各种表达(正式/随意、显式/隐式)
2. **Should-NOT-trigger 查询**(8~10 条)—— 关键字相似但应匹配其他工具/Skill 的 "near-miss" 查询
**编写 near-miss 的要点:** "写一个斐波那契函数"这样明显无关的查询毫无测试价值。边界模糊的查询才是好的测试用例。本阶段也要同时确认与既有 Skill 的触发冲突。
#### 6-5. Dry-run 测试
- 审核编排器 Skill 的 Phase 顺序是否合理
- 确认数据传递路径上无空段(dead link)
- 确认每个 Agent 的输入是否与上一 Phase 的输出匹配
- 确认各错误场景对应的 fallback 路径是否可执行
#### 6-6. 编写测试场景
- 在编排器 Skill 中追加 `## 测试场景` 章节
- 至少描述 1 个正常流程 + 1 个错误流程
### Phase 7: Harness 进化
Harness 不是一次生成就结束的静态产物,而是根据用户反馈持续进化的系统。
#### 7-1. 执行后收集反馈
每次 Harness 执行完成后,向用户请求反馈。若无反馈则放行。不强求,但必须提供机会。
#### 7-2. 反馈落地路径
按反馈类型,修改对象不同:
| 反馈类型 | 修改对象 | 例 |
|-----------|----------|------|
| 产物质量 | 对应 Agent 的 Skill | "分析太表面" → 在 Skill 中追加深度标准 |
| Agent 角色 | Agent 定义 `.md` | "还需要安全审查" → 新增 Agent |
| 工作流顺序 | 编排器 Skill | "要先校验" → 调整 Phase 顺序 |
| 团队组成 | 编排器 + Agent | "这两个可以合并" → 合并 Agent |
| 触发遗漏 | Skill description | "用这个表达就不生效" → 扩展 description |
#### 7-3. 变更历史
所有变更都记录到 CLAUDE.md 的 **变更历史** 表中(与 Phase 5-4 模板中的 "变更历史" 章节为同一张表)。通过这份历史,可追踪 Harness 朝哪个方向进化,并防止倒退(regression)。
#### 7-4. 进化触发
不仅在用户显式地说"修改 Harness"时进化,在以下情况也主动提议进化:
- 同一类型的反馈反复出现 2 次以上时
- 某个 Agent 反复失败形成模式时
- 观察到用户绕过编排器手动处理作业时
#### 7-5. 运维/维护工作流
系统性地执行既有 Harness 的点检·修改·同步。Phase 0 中进入 "运维/维护" 分支时,遵循本工作流。
**Step 1:现状审计**
- 对比 `.claude/agents/` 文件列表与编排器 Skill 中的 Agent 配置 → 生成不一致清单
- 对比 `.claude/skills/` 目录列表与编排器 Skill 中的 Skill 配置 → 生成不一致清单
- 将审计结果汇报给用户
**Step 2:渐进式新增/修改**
- 根据用户请求执行 Agent 的新增/修改/删除、Skill 的新增/修改/删除
- 变更一次只做一项,每次变更后立即执行 Step 3(同步)
**Step 3:更新 CLAUDE.md 变更历史**
**Step 4:校验变更**
- 校验修改后的 Agent/Skill 结构(Phase 6-1 基准)
- 若修改范围影响触发,进行触发校验(Phase 6-4 基准)
- 大规模变更时,还需执行 Phase 6-3(执行测试)、6-5(dry-run)
- 最后确认 CLAUDE.md 与实际文件是否一致
## 产物清单(Checklist)
生成完成后需确认:
- [ ] `项目/.claude/agents/` —— **必须生成 Agent 定义文件**(即便使用内建类型也必须生成文件)
- [ ] `项目/.claude/skills/` —— Skill 文件群(SKILL.md + references/)
- [ ] 1 个编排器 Skill(包含数据流 + 错误处理 + 测试场景)
- [ ] 明示执行模式(Agent 团队 / 子 Agent / 混合 中择一,若为混合则逐 Phase 标注模式)
- [ ] 所有 Agent 调用中均明示 `model` 参数(默认 opus,低复杂度任务可用 sonnet)
- [ ] `.claude/commands/` —— 不生成任何内容
- [ ] 与既有 Agent/Skill 无冲突
- [ ] Skill description 以主动("pushy")方式编写 —— **包含后续作业关键字**
- [ ] SKILL.md 正文在 500 行以内,超过时分离到 references/
- [ ] 以 2~3 条测试 prompt 完成执行校验
- [ ] 完成触发校验(should-trigger + should-NOT-trigger)
- [ ] **在 CLAUDE.md 中注册 Harness 指针**(触发规则 + 变更历史)
- [ ] **在 CLAUDE.md 变更历史中记录 Agent/Skill 的新增/删除/修改**
- [ ] **编排器 Phase 1 中包含上下文确认步骤**(判别初次/后续/部分重跑)
## 参考
- Harness 模式:`references/agent-design-patterns.md`
- 既有 Harness 示例(含实际文件全文):`references/team-examples.md`
- 编排器模板:`references/orchestrator-template.md`
- **Skill 编写指南**:`references/skill-writing-guide.md` —— 编写模式、示例、数据 schema 标准
- **Skill 测试指南**:`references/skill-testing-guide.md` —— 测试/评估/迭代改进方法论
- **QA Agent 指南**:`references/qa-agent-guide.md` —— 包含集成一致性校验方法论(通用 + 多领域示例)、边界 bug 模式、QA Agent 定义模板
No comments yet. Be the first to comment!