技能介绍
横木(Hengmu)是一个本地优先、以证据为约束的架构评审与目标架构设计工具,面向 Codex 以及兼容 Agent Plugins 的主机。它把仓库事实、已批准的设计意图和显式约束,转换成有证据支撑的现状评估、开放或受约束的目标架构、可追溯的决策、可执行的计划,以及确定性的策略结论。
现状评估与目标设计是两条平等的入口路径:既有系统可以从候选发现出发,经独立验证走到整改决策;新系统与重大重构则可以从一份已批准的 Design Brief 出发,产出完整的目标架构,而不必凭空编造一次评审或一组发现。必需、偏好与禁止类约束都是待挑战的输入,从来不是可行性或适配性的证明。
架构视图覆盖:性能效率、可靠性、安全与隐私边界、数据与 API 契约、可观测性、测试、部署、技术债、比例恰当性、技术选型与运行现实。专用镜头还覆盖 AI Agent 上下文与成本、Memory、工具权限、隐私、行为证据、技术演进、移动系统与多项目组合。
它刻意不是通用的"最佳实践"清单:一条规则只有在守护某个已声明的质量属性或关键流程时才有用;一条建议只有在项目能理解它的成本、依赖、迁移顺序和停止条件时才有用。它也不是托管式架构服务或通用代码 linter。项目 Profile 决定哪些质量属性与专项评审重要——全局 Skill 提供方法,仓库提供事实。
适用场景
- 仓库级架构评审:想拿到基于项目实据的架构风险清单与可落地修复方案。
- AI Agent 架构审计:上下文必要性/组装/压缩/缓存顺序、Memory、检索、工具、注入、隐私、审批、恢复、成本、延迟与演进边界。
- 目标架构设计:为新系统或重大重构设计符合性能、隐私等约束的目标架构。
- 架构决策治理:比较可选方案、记录备选方案为何落选、把授权决策转为有序实施切片。
- 整改规划:把已接受的发现变成带回滚、停止条件与验收证据的实施计划。
- 确定性质量门禁:用可复现的策略评估替代"文件里写了 must"。
核心能力
| 能力 | 横木做什么 |
|---|---|
| 现状评估 | 评审边界与工程品质,并让发现保持"候选"状态,直到独立验证完成证据解析。 |
| 目标架构设计 | 在运行时与部署单元、数据归属、接口、信任边界、关键流程、运维和技术选型上设计开放或受约束的目标。 |
| 决策与计划 | 比较可行方案,记录备选方案为何落选,并把授权决策转成有序的整改或 Greenfield 实施切片。 |
| 证据治理 | 把事实、Knowledge、溯源、权限、验收与确定性策略绑定成一条可审计的链条。 |
它同时工作在两个层级:单个仓库(使用项目专属的 Profile、约束、关键流程、规则与评审历史);仓库组合(寻找重复建设、技术栈发散、共享能力、归属冲突、数据流与隐藏耦合)。
为什么需要它(典型评审失败 vs 横木的回应):
| 典型评审失败 | 横木的回应 |
|---|---|
| 模型看到一个大文件或单例就宣布存在架构问题。 | 候选发现必须通过独立验证与证据解析才能成为可信结论。 |
| 团队指定了一套必需技术栈,却没有目标架构或显式取舍。 | 横木挑战必需/偏好/禁止约束,比较合规变体,记录完整目标架构,而不是把技术名称当作证明。 |
| 缺失能力只被当作批评提到,从未被设计。 | 已确认的缺口会流入方案比较、整改切片、回滚、测试与验收标准。 |
| 每个项目复制同一份架构提示词并逐渐发散。 | 一套全局方法读取仓库本地的 Profile 与真实约束。 |
| 每个仓库单独看都合理,组合起来却在重复建设基础设施。 | 组合评审对共享能力、依赖、数据流、归属与耦合建模。 |
| 散文式策略写了"必须",但自动化无法证明。 | JSON Schemas、哈希、Git 证据、角色策略、指纹、签名与稳定退出码让执行可复现。 |
八个聚焦工作流($hengmu 是唯一需要记住的 Skill 名,直接调用可看到完整能力菜单):
| 阶段 | Skill | 职责 |
|---|---|---|
| 审计 | project-architecture-audit | 单个仓库的边界、数据归属、契约、可靠性、安全、运维、测试、部署、技术债与比例恰当性。 |
| 审计 | ai-agent-architecture-audit | 模型、上下文必要性/组装/压缩/缓存顺序、Memory、检索、工具、注入、隐私、审批、恢复、版本绑定的行为证据、成本、延迟与演进边界。 |
| 审计 | mobile-architecture-audit | 本地状态、同步、迁移、后台任务、通知、隐私、缓存与生命周期行为。 |
| 审计 | portfolio-architecture-audit | 跨项目的重复、技术栈发散、共享能力、依赖、数据流、归属与隐藏耦合。 |
| 验证 | architecture-finding-verifier | 挑战候选、解析证据、给出 V0–V5 验证等级,产出溯源绑定的可信评审。 |
| 决策 | architecture-solution-advisor | 比较或指定开放/受约束目标;评估必需冲突、偏好取舍、禁止项剔除,以及目标单元、流程、边界、运维与 Knowledge。 |
| 规划 | architecture-remediation-planner | 把已接受的整改或 Greenfield 目标转成有序实施切片、迁移控制、防护、停止条件、回滚与验收标准,不编造发现。 |
| 执行门禁 | architecture-quality-gate | 对可信工件应用确定性的契约、发现、变更与发布策略。 |
信任模型
模型可以提出主张。由证据、权限、溯源与策略决定什么能成为可信或阻断。
可信评审会绑定:被评审仓库的身份与 Git 状态、精确范围、Profile、仓库事实、选中的 Knowledge、规则包、候选评审、验证者权限、语义化 Finding 指纹、关键流程覆盖和可解析证据。
确定性运行时提供:项目/评审/决策/计划/策略/基线/风险接受/Knowledge/Provider/基准/治理工件的 JSON Schema;带完整覆盖检查的机器可读核心与领域规则包;在显式上下文预算下选取的有源 Knowledge Pack;可选启用、无 shell 执行、安全环境白名单、超时、结构化输出校验与防篡改运行记录的 Evidence Provider;以及 Git 证据解析、精确哈希、签名验证、SARIF、评审 diff、工件迁移、基准打分与分层门禁。
语言 linter 与质量分析器被当作可选证据来源而不是架构真理。Provider 发现过程会区分:适用标记、项目配置、是否启用、可执行文件是否存在、就绪状态。缺少可执行文件会保留为一个明确的"未评估"证据面。横木从不隐式下载、安装、启用或添加依赖;如果安装能显著改善评审,它会先说明确切的工具、范围、版本策略、命令、受影响文件与后果,再请求用户授权。Provider 通过只证明被捕获的命令、可执行文件、声明的项目依赖闭包、隔离缓存模式、配置、提交与输出字节;只有在绑定到适用不变量并独立评审之后,它才成为架构证据。
门禁阶段与治理模式
门禁阶段是累积的:
| 阶段 | 证明什么 |
|---|---|
| contract | Schema、溯源、身份、哈希、角色与覆盖率有效。 |
| finding | 严重度、置信度、验证、状态、基线、豁免与风险接受满足策略。 |
| change | 评审新鲜度、契约变更、必需决策、迁移兼容性、签名与证据解析可接受。 |
| release | 必需证据、决策权限与完整整改验收齐备。 |
治理模式:
| 模式 | 何时使用 | 行为 |
|---|---|---|
| Advisory | 需要结构化架构帮助,但不要阻断式门禁。 | Skill 产出有证据支撑的工件,维护者保留全部判断权。 |
| Governed | 重要变更需要可信评审、显式决策与变更策略。 | 强制溯源、权限、新鲜度与 Finding 策略。 |
| Enforced | 发布需要确定性架构证据与已完成的整改。 | 变更与发布门禁成为必需的交付控制。 |
product_mode 是声明的运行层级,不是绕过机制:显式调用的门禁始终会评估它的策略。
非目标
横木不会:自主批准架构决策、风险或发布;把每个检测到的技术、模式或大文件都变成 Finding;在没有显式组合注册表的情况下发现无关仓库;自行实施被审计产品的整改;替代专门的安全、隐私、性能、法律或合规评估;证明某个系统是安全或正确的。
效果预览




工作方式
横木把模型判断与确定性信任分开。它接受两条来源路径,候选审计和约束声明都不是策略或证明:
- 建立事实与意图 — 检查仓库并绑定 Profile;做目标设计时,补充一份带可度量场景与边界的已批准 Brief。
- 加载上下文 — 绑定约束、关键流程、选中的规则包与任务范围内的 Knowledge,不把检测到的技术或负责人主张变成证明。
- 评估或设计 — 既有系统产出候选发现供独立验证;Greenfield 工作用已批准 Brief 比较开放或合规的目标,不制造发现。
- 决策 — 记录选中的目标、被拒的备选、取舍、完整架构模型、来源绑定与建议状态。
- 授权 — 由具名决策者接受、拒绝或取代该决策;横木的路由器与 Advisor 不能执行这一转换。
- 规划 — 把已接受的整改或 Greenfield 目标转成有序实施切片、防护、回滚、停止条件与验收证据。
- 门禁 — 对溯源绑定的工件应用确定性的契约、发现、变更或发布策略。
一个方法,多个项目:仓库不应携带一份私有的架构方法副本,而只携带让它的决策与众不同的上下文——profile.yaml(项目类型、关键质量属性、必需评审)、constraints.md(真实的技术、产品、法规与团队限制)、critical-flows.md(不得回退的业务与运行时路径)、architecture-design-brief.yaml(目标意图、质量场景、边界与类型化约束)、reviews/(候选与已验证的评审、决策、计划与证据历史)。组合评审补充缺失的系统之系统视角:哪些能力应当共享、哪些边界必须独立、数据在哪里流动,以及一个仓库会在哪里意外影响另一个。
当前 Brief 1.1 路径会产出一份提议中的 Decision 1.4,其中包含完整目标架构。横木不批准 Brief 或 Decision,也不实现应用代码。在具名决策者接受 Decision 之后,$hengmu plan … 可以产出 Greenfield Plan 1.3。审计路径可以直接运行:Skill 会自动调用准备命令并初始化 .architecture/;只有当你想要一次不留仓库工件的一次性 Advisory 评估时,才使用显式的只读请求。
你需要提供
- Python 运行时:横木的 Skill 是可移植的,但确定性辅助工具需要 Python 3.11–3.13、PyYAML 和 jsonschema,依赖需按 lock 文件安装到 IDE agent 能用的
python3环境。 - 完整安装目录:把解压目录放在稳定的绝对路径并称为
HENGMU_ROOT;每个主机都需要完整目录而不只是skills/hengmu,因为路由器、聚焦 Skill、schema、Knowledge 与确定性 CLI 都在skills/和resources/之间使用相对路径。 - 仓库与该仓库的事实:要评审的项目仓库,以及项目专属的 Profile、约束与关键流程。
- 做目标设计时:一份已批准的 Design Brief(模板刻意是
draft;在改为approved之前,需要加入带授权决策者身份的brief.approval、至少一个仓库相对路径的批准证据与 SHA-256,以及每位批准者一份分离的 SSH 签名。验证从不把模板作者或一个状态字符串当作批准)。
你会获得
- 候选评审(Candidate Review)与经独立验证、溯源绑定的可信评审(含 V0–V5 验证等级)。
- 完整的决策记录:选中目标、被拒备选、取舍、架构模型与来源绑定。
- 有序的整改计划(Plan 1.2)或 Greenfield 计划(Greenfield Plan 1.3),含回滚、停止条件与验收标准。
- 确定性的门禁结果与稳定退出码(
0通过、1策略失败、2输入或配置无效)。 - 仓库本地的控制面
.architecture/(profile.yaml、repository-facts.yaml、constraints.md、critical-flows.md、gate-policy.yaml、baseline.yaml、risk-acceptances.yaml、evidence-providers.yaml 以及 evidence/、rules/、runs/、reviews/ 目录)。
使用示例
安装与运行时准备
从同一个 GitHub release 下载两个 ZIP 文件及其 .sha256 文件,解压前先校验(macOS 用 shasum,Linux 用 sha256sum):
shasum -a 256 -c hengmu-.zip.sha256
shasum -a 256 -c hengmu--agent-plugins.zip.sha256cd "$HENGMU_ROOT"
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install --require-hashes -r requirements-runtime.lock
python3 resources/scripts/architecture_tool.py --version最后一条命令应打印 architecture_tool.py 1.0.4。Windows PowerShell 下用 .venv\Scripts\Activate.ps1 激活。安装不会授予权限或启用 Hooks;在允许仓库写入或 shell 执行前,请先检查每个主机的 agent 权限。
Codex / ChatGPT desktop:把 Codex ZIP 解压到个人插件目录(例如 ~/.codex/plugins/hengmu),然后把下面这条加入 ~/.agents/plugins/marketplace.json 的 plugins 数组(与已有 marketplace 合并,不要覆盖整个文件):
{
"name": "hengmu-local",
"interface": { "displayName": "Hengmu Local" },
"plugins": [
{
"name": "hengmu",
"source": {
"source": "local",
"path": "./.codex/plugins/hengmu"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Developer Tools"
}
]
}重启 ChatGPT desktop,打开 Plugins,选择 Hengmu Local 并安装。Codex CLI 里运行 /plugins,从同一 marketplace 安装并开启新会话。用 $hengmu audit this repository 调用路由器,或直接用自然语言描述目标。ChatGPT Work 模式下用 @hengmu 选择它。
Cursor:把 Agent Plugins ZIP 解压到 ~/.cursor/plugins/local/hengmu,重启 Cursor 或运行 Developer: Reload Window;在 Customize 中确认 Hengmu Skills 已启用。开发时也可以软链接一个 checkout:
mkdir -p ~/.cursor/plugins/local
ln -s /absolute/path/to/hengmu ~/.cursor/plugins/local/hengmuVS Code / GitHub Copilot:启用 chat.plugins.enabled,运行 Chat: Install Plugin From Source 并输入 https://github.com/qingye-lab/hengmu;固定本地构建时解压 Agent Plugins ZIP 并在设置里注册绝对目录:
{
"chat.pluginLocations": {
"/absolute/path/to/hengmu": true
}
}VS Code 会用插件名为插件提供的 Skill 加命名空间,因此在 Copilot Chat 中调用 /hengmu:hengmu audit this repository,或使用自然语言。GitHub Copilot CLI 也可直接安装:
copilot plugin install qingye-lab/hengmu
copilot plugin list
copilotKiro:Kiro 从 .kiro/skills/ 发现工作区 Skill,不使用横木根目录的 plugin.json。把 Agent Plugins ZIP 解压到稳定的 HENGMU_ROOT,再把 Skill 及其共享资源投影进仓库(仅当 .kiro/resources 未被占用时使用,或刻意合并目录):
mkdir -p .kiro/skills .kiro/resources
cp -R "$HENGMU_ROOT/skills/." .kiro/skills/
cp -R "$HENGMU_ROOT/resources/." .kiro/resources/在 Kiro 中打开 Agent Steering & Skills,确认九个横木 Skill 全部可见。不要只导入 skills/hengmu:路由器会委派给八个兄弟 Skill,它们都需要共享运行时。
快速开始
git clone https://github.com/qingye-lab/hengmu.git
cd hengmu
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install --require-hashes -r requirements-runtime.lock
python3 scripts/validate_repository.py准备仓库控制面(缺失时创建,存在时校验并复用,不覆盖):
HENGMU_ROOT=/path/to/hengmu
python3 "$HENGMU_ROOT/resources/scripts/architecture_tool.py" \
prepare-project-audit --repo /path/to/your-project在 Codex 中选择结果。对既有系统,从现状评估开始:
Use $hengmu to audit this repository.
Treat missing capabilities as findings, but verify evidence before
recommending a structural change.$hengmu 是唯一需要记住的 Skill 名,单独调用可看到完整能力菜单,也可以用自然语言描述目标:
$hengmu
$hengmu verify the latest candidate findings
$hengmu compare the queue and durable-workflow options对新系统或重大重构,先添加并批准 Design Brief,再要求开放或受约束的目标:
if [ ! -e /path/to/your-project/.architecture/architecture-design-brief.yaml ]; then
cp "$HENGMU_ROOT/resources/templates/architecture-design-brief.yaml" \
/path/to/your-project/.architecture/architecture-design-brief.yaml
fi
python3 "$HENGMU_ROOT/resources/scripts/architecture_tool.py" \
validate-design-brief \
/path/to/your-project/.architecture/architecture-design-brief.yaml \
--project /path/to/your-project$hengmu design an open target architecture from the approved Design Brief
$hengmu constrain the target to FastAPI, PostgreSQL, and one production deployment; challenge each constraint and record rejected alternatives项目 Profile 决定哪些质量属性与专项评审重要:
project:
name: example-service
type:
- ai-agent-platform
critical_qualities:
- traceability
- recoverability
- privacy
required_reviews:
- project-architecture
- ai-agent-architecture校验结果
python3 "$HENGMU_ROOT/resources/scripts/architecture_tool.py" \
validate-project /path/to/your-project
python3 "$HENGMU_ROOT/resources/scripts/architecture_tool.py" \
gate --project /path/to/your-project --stage change
python3 "$HENGMU_ROOT/resources/scripts/architecture_tool.py" \
gate --project /path/to/your-project \
--decision .architecture/reviews/ --stage change门禁返回 0 表示通过,1 表示策略失败,2 表示输入或配置无效。
可信评审与证据命令
python3 resources/scripts/architecture_tool.py review-bindings \
--project /path/to/project \
--candidate .architecture/reviews/example-candidates.yaml
python3 resources/scripts/architecture_tool.py validate-review \
/path/to/verified.yaml --project /path/to/project
python3 resources/scripts/architecture_tool.py verify-evidence \
--repo /path/to/project --review /path/to/verified.yaml
python3 resources/scripts/architecture_tool.py verify-review-signature \
--project /path/to/project --review /path/to/verified.yaml任务范围内的 Knowledge 选择
python3 resources/scripts/architecture_tool.py inspect-repository \
--repo /path/to/project \
--output /path/to/project/.architecture/repository-facts.yaml
python3 resources/scripts/architecture_tool.py select-knowledge \
--facts /path/to/project/.architecture/repository-facts.yaml \
--profile /path/to/project/.architecture/profile.yaml \
--task "Current architecture audit" \
--skill project-architecture-audit \
--output /path/to/project/.architecture/knowledge-selection.yaml \
--context-output /path/to/project/.architecture/knowledge-context.yaml页面上的「试试这样做」示例
- 帮我审计当前项目仓库的架构,识别安全边界问题并给出可落地的修复方案。
- 帮我审计当前项目仓库的整体架构,输出经过验证的风险发现清单。
- 为我新开发的移动应用设计符合性能和隐私约束的目标架构。
支持范围:支持 Python 3.11–3.13,运行时完全本地——不需要托管服务、遥测、凭据、网络访问或 MCP 服务器。仓库当前已在 Codex、Cursor、VS Code / GitHub Copilot、Kiro 的官方安装路径上给出说明,但尚未记录在 Cursor 或其他外部 IDE 中的横木专属安装冒烟测试;格式兼容不等于命令、权限、UI 或市场行为完全一致。



