本技能基于opencode进行开发,也可以随意迁移到其他Agent中
使用 opencode_skill 安装 Generic Harness 提供的技能。
第一步:安装 opencode_skill。
第二步:安装 Generic Harness 提供的技能:
opencode_skill add https://github.com/Red-Sa1t/generic_harness或者直接让 OpenCode 替你安装:
帮我安装 https://github.com/Red-Sa1t/generic_harness 的 SKILL
第三步,开始使用:
采用审议式方法帮我做架构设计。
Generic Harness 为多语言通用的 驭缰工程(Harness Engineering) 提供参考技能集。
迁移自 仓颉御缰工程
这套技能的核心思路是审议式分工:针对软件工程中的需求澄清、架构设计、技术选型、编码实现、代码审查、Lint 治理、问题诊断等场景,各提供一套多 Agent 编排方案。每个技能内部将职责拆解为多个独立 Agent,以文件为媒介进行迭代审议,通过多角色对抗单一 Agent 的认知偏差与幻觉风险。
与 Cangjie Harness 的原版不同,本套技能已将所有语言特定的锚点参数化:
- 构建/测试命令:通过
build_command/test_command参数传入,而非硬编码cjpm - Lint / Warning 工具:通过
lint_tool参数指定,支持任意语言(ruff、clang-tidy、Checkstyle、PMD、SpotBugs、cjlint、eslint 等) - 语言特性审查:审查维度从具体的"仓颉类型系统"泛化为通用的"目标语言特性"
- 文件扩展名:模板从
.cj改为{ext},适配 C++、Python、Java、Cangjie、Rust、Go 等
当前已提供 Python、C++、Java 和 Cangjie 的 lint 及 warning 处理指导原则文件,其他语言可参照添加。
- Agent 间以文件为唯一沟通媒介,不传内容、不角色兼任
- 每个环节内置独立的审议/质询机制,多轮迭代直至达成一致
- 主 Agent 仅做编排路由,不参与任何环节的执行
| 技能 | 做什么 | 审议模式 | 语言相关参数 |
|---|---|---|---|
| 项目初始化 generic-bootstrap-harness | 在新项目中初始化 .harness/ 运行目录、配置文件、项目级 AI 指导和 .gitignore |
无,纯初始化 | 无 |
| 技能路由 generic-routing-harness | 根据用户目标选择最小可行技能链和参数清单 | 无,纯路由 | 无 |
| 前置准备 generic-deliberation-prep-harness | 生成时间戳、写入用户指令原文,供所有审议式流程复用 | 无,纯前置准备 | 无 |
| 需求设计 generic-requirement-design-harness | 将模糊需求澄清为清晰、完整的需求文档 | 澄清者 ↔ 验证者 | 无 |
| 架构设计 generic-architecture-design-harness | 完成架构级 OOD 设计,聚焦职责划分与抽象层次 | 设计者 ↔ 验证者 | 无 |
| 技术设计 generic-technical-design-harness | 确定技术选型和方案决策,衔接架构与编码 | 设计者 ↔ 验证者 | 无 |
| 编码实现 generic-deliberative-implementation-harness | 将任务逐步实现为可运行代码 | 计划↔设计↔编码↔验证,四阶段管线 | build_command、test_command |
| 测试治理 generic-test-governance-harness | 对测试失败、测试缺口或测试基线漂移进行渐进式治理 | 检查者 → 计划者 → 执行者 → 验证者 | build_command、test_command、language |
| 审议式执行 generic-deliberative-execution-harness | 通过「执行-审查」审议循环完成任意用户任务 | 执行者 ↔ 审查者 | 无 |
| 代码审查 generic-code-review-harness | 与用户协作进行渐进式代码审查 | 人机协作,人定范围,审查者执行 | 无 |
| Lint 治理 generic-lint-governance-harness | 对代码库进行渐进式 lint 治理 | 检查者 → 计划者 → 执行者 | lint_tool、lint_args、build_command、language |
| Warning 治理 generic-warning-governance-harness | 对代码库进行渐进式编译 warning 治理 | 检查者 → 计划者 → 执行者 | build_command、language |
| 问题诊断 generic-problem-diagnosis-harness | 定位问题根因,建立完整证据链 | 诊断者 ↔ 质询者 | 无 |
| 通用 PDC generic-pdc-harness | 以渐进式规划驱动任意任务逐步推进,产出形式不限 | Planner↔Plan Reviewer、Doer↔Do Reviewer、Checker↔Check Reviewer | 无 |
| 再审议框架 generic-redeliberation-harness | 对任意审议式技能的产出进行 A-B 迭代质量审查 | 组件A执行审议式技能 ↔ 组件B质量审查 | 无 |
请用 generic-bootstrap-harness 初始化当前项目。
参数:project_root=/path/to/project, harness_root=.harness
初始化后,后续技能的 workdir 建议放在 .harness/ 下,例如 .harness/implements/{YYYYMMDDHHMM}_{简要描述}/。
请用 generic-routing-harness 为以下任务选择 Generic Harness 技能链:
目标:[你的任务描述]
参数:project_root=/path/to/project
详细路由规则见 ROUTING.md。
请用 generic-lint-governance-harness 对项目进行 lint 治理。
参数:project_root=/path/to/project, lint_tool=ruff, lint_args=check src/, build_command="python -m compileall .", language=python
请用 generic-deliberative-implementation-harness 实现以下任务:
需求:[你的需求描述]
参数:project_root=/path/to/project, build_command="cmake --build build", test_command="ctest --test-dir build"
请用 generic-test-governance-harness 治理当前测试失败。
参数:project_root=/path/to/project, test_command="pytest", build_command="", language=python
请用 generic-lint-governance-harness 对 Java 项目进行 lint 治理。
参数:project_root=/path/to/project, lint_tool=checkstyle, lint_args="-c config/checkstyle/checkstyle.xml src/main/java", build_command="mvn test", language=java
请用 generic-warning-governance-harness 对 Java 项目进行 warning 治理。
参数:project_root=/path/to/project, build_command="./gradlew compileJava", language=java
请用 generic-lint-governance-harness 对仓颉项目进行 lint 治理。
参数:project_root=/path/to/project, lint_tool=cjlint, lint_args="-f src/", build_command="cjpm build && cjpm test --no-run", language=cangjie
请用 generic-warning-governance-harness 对仓颉项目进行 warning 治理。
参数:project_root=/path/to/project, build_command="cjpm build && cjpm test --no-run", language=cangjie
请用 generic-deliberative-execution-harness 帮我写一份技术调研报告:
需求:[你的需求描述]
workdir 由技能自动生成
技能之间通过文件自然衔接,没有硬编码的前后依赖。典型的组合路径:
- 从零构建:需求设计 → 架构设计 → 技术设计 → 编码实现
- 诊断修复:问题诊断 → 需求设计 → 编码实现
- 审查迭代:代码审查 → 需求设计 → 编码实现
- 质量治理:Lint 治理 / Warning 治理 / 测试治理,独立运行
- 通用任务:审议式执行 / 通用 PDC,独立运行,不限产出物形态
根据实际情况自由组合即可。
Java 适配通过以下两个指导文件提供:
generic-lint-governance-harness/lint_guidelines_java.md:覆盖 Checkstyle、PMD、SpotBugs、Error Prone、SonarLint 等 lint 工具的常见规则处理策略generic-warning-governance-harness/warning_guidelines_java.md:覆盖javac -Xlint、Maven/Gradle 编译、注解处理器和 JPMS 等 warning 场景
调用时将 language 设置为 java,技能会按命名规则自动加载对应文件。
常见参数组合:
| 构建系统 | Lint 示例 | Warning/构建示例 |
|---|---|---|
| Maven | lint_tool=checkstyle, lint_args="-c config/checkstyle/checkstyle.xml src/main/java" |
build_command="mvn test" 或 build_command="mvn -DskipTests compile" |
| Gradle | lint_tool=./gradlew, lint_args="checkstyleMain pmdMain spotbugsMain" |
build_command="./gradlew compileJava" 或 build_command="./gradlew test" |
| 直接 javac | 按项目脚本传入自定义 lint_tool / lint_args |
build_command="javac -Xlint:all ..." |
Cangjie 适配参考 cangjie_harness 中的专用治理经验,并转换为当前 generic harness 的参数化形式:
generic-lint-governance-harness/lint_guidelines_cangjie.md:覆盖cjlint抑制语法和G.PKG.01、G.NAM.02、G.ERR.01、G.ERR.03、G.FUN.01、G.FUN.02、G.FUN.03、G.ITF.04、G.VAR.02、G.OTH.02、G.OTH.03等常见规则generic-warning-governance-harness/warning_guidelines_cangjie.md:覆盖cjpm build/cjpm test --no-run的常见 warning,包括宏展开、unused import、unused variable、possibly confusing line terminator 等场景
调用时将 language 设置为 cangjie,技能会按命名规则自动加载对应文件。
常见参数组合:
| 场景 | Lint 示例 | Warning/构建示例 |
|---|---|---|
| cjpm 项目 | lint_tool=cjlint, lint_args="-f src/" |
build_command="cjpm build && cjpm test --no-run" |
| 指定目录 | lint_tool=cjlint, lint_args="-f src/ -f tests/" |
build_command="cjpm build && cjpm test --no-run" |
| 输出全部 warning | 不适用 | 可按项目约定在 cjpm.toml 的 compile-option 中添加 --error-count-limit all |
以 lint 治理为例,在 generic-lint-governance-harness/ 下创建 lint_guidelines_{language}.md 文件:
- 添加 lint 工具的抑制语法说明
- 列出各规则的修复策略(优先级、修复方式、何时抑制)
- 提供代码修复示例
warning 治理同理,在 generic-warning-governance-harness/ 下创建 warning_guidelines_{language}.md 文件。
文件将随 language 参数自动匹配加载。
仓库提供 scripts/validate_skills.sh 用于检查技能目录与文档引用的基本一致性:
scripts/validate_skills.sh当前校验内容包括:
- 每个
.opencode/*/SKILL.md的name是否与目录名一致 - README 是否包含所有已注册技能名
- Markdown 相对链接指向的文件是否存在
ROUTING.md、IMPROVEMENT_REPORT.md和.opencode/PRODUCTION_GUIDELINES.md是否存在
涉及代码修改、构建验证或 git 提交的技能,应遵守 .opencode/PRODUCTION_GUIDELINES.md 中的生产运行约束,尤其是前置检查、恢复模式、状态 token 和提交边界。
generic-redeliberation-harness 内置问题账本与再基线化机制,用于处理多轮迭代后主文档混入历史修订说明、版本矩阵、重复争议或过期方案的问题:
issue_ledger.md跟踪 open / resolved / superseded 问题,只把当前仍有效的问题传给下一轮decision_log.md外置关键设计取舍和被取代方案a_v{M}_canonical.md周期性生成只包含当前有效结论的 canonical 主文档
这样历史保持可追溯,但主设计/需求/诊断/方案文档不会被迭代历史污染。
本项目内容近乎完全由AI生成,使用中遇到错误大概率为项目本身问题。建议提交ISSUE帮助维护该项目,谢谢!
更详细的使用流程参考恩师张引的课程教程:东北大学张引:仓颉御缰工程