Skip to content

About

generic_harness reformed from cangjie_harness

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

generic harness

快速开始

本技能基于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质量审查 无

典型调用示例

新项目 — 初始化 Harness 工作区

请用 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。

Python 项目 — Lint 治理

请用 generic-lint-governance-harness 对项目进行 lint 治理。
参数:project_root=/path/to/project, lint_tool=ruff, lint_args=check src/, build_command="python -m compileall .", language=python

C++ 项目 — 编码实现

请用 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

Java 项目 — Lint 治理

请用 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

Java 项目 — Warning 治理

请用 generic-warning-governance-harness 对 Java 项目进行 warning 治理。
参数:project_root=/path/to/project, build_command="./gradlew compileJava", language=java

Cangjie 项目 — Lint 治理

请用 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

Cangjie 项目 — Warning 治理

请用 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 项目适配

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 适配参考 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

添加新语言的 Guidelines

以 lint 治理为例,在 generic-lint-governance-harness/ 下创建 lint_guidelines_{language}.md 文件:

  1. 添加 lint 工具的抑制语法说明
  2. 列出各规则的修复策略(优先级、修复方式、何时抑制)
  3. 提供代码修复示例

warning 治理同理,在 generic-warning-governance-harness/ 下创建 warning_guidelines_{language}.md 文件。

文件将随 language 参数自动匹配加载。

维护校验

仓库提供 scripts/validate_skills.sh 用于检查技能目录与文档引用的基本一致性:

scripts/validate_skills.sh

当前校验内容包括:

  1. 每个 .opencode/*/SKILL.md 的 name 是否与目录名一致
  2. README 是否包含所有已注册技能名
  3. Markdown 相对链接指向的文件是否存在
  4. 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帮助维护该项目,谢谢!

更详细的使用流程参考恩师张引的课程教程:东北大学张引:仓颉御缰工程

About

generic_harness reformed from cangjie_harness

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages