GitHub ↗
让 AI 改代码的冲击,可见 · 可控

OpenArch

给 AI 编码团队的反腐败防线

CI 绿了 ≠ 没破坏。每一次改动都在悄悄增加耦合、漏掉消费者、堆出 god-function。 OpenArch 用本地、确定的符号级分析,在提交前把这些看不见的冲击照亮—— 并给你的 Agent 一份它真正会读的防线手册。

为什么引入

它替你的 AI 开发挡掉什么

每个痛点都是 AI 辅助开发里真实会遇到的腐化形态。左列是"没有 OpenArch 时",右列是"装上之后"。

动态防线 · 核心

脚本引擎:写一个 .mjs,就筑起一条新防线

不用改 OpenArch 核心,也不用等官方发版。发现一种新的腐化模式,写一个脚本把它固化成检测规则——这就是"防线廉价可重建"的真正含义。内置 authority-import-bypassplaceholder-implementation 等跨语言规则,你也可以随时加自己的。

text

文本剪枝候选,只读不解析

ast

tree-sitter 结构化查询

link

脚本消费事实,产出 finding

// 检测 authority 边界内代码是否越界 import 禁止模块(如 node:fs)
export default {
  scope: "repository",
  requires: ["authorities.v1"],          // 声明所需事实;缺则 UNAVAILABLE(fail-closed)
  targets: { authority: "any" },
  stages: {
    text: ({ files, text, facts }) =>       // ① 文本剪枝候选
      files.filter(f => facts.authorities.value
        .some(a => a.prohibitedImports?.some(s => text(f).includes(s)))),
    ast: { fact: "static-imports.v1" },  // ② tree-sitter 确认结构
  },
  link({ records, facts }) {                 // ③ 脚本产出 finding
    // 命中 prohibitedImports 即报告,由项目策略决定 block/warn
    return hits;
  },
};

脚本只负责发现裁决由项目 config.ymlauthority_hygiene.quality_rules 决定(block / warn / report-only)。声明 requires 的事实不可用时返回 UNAVAILABLE——fail-closed,不降级兑底。

两份文档

从了解,到用上

为什么是它

四个根本立场

🏠 本地优先
代码不出楼。结构分析、变更冲击、规则执行全部本地运行,可复现。
🚫 门禁无 LLM
裁决靠 tree-sitter / 编译器 / LSP 符号级分析,不是云端的黑箱判断。
🔒 Fail-closed
证据缺失或模糊时返回 PARTIAL / UNAVAILABLE,绝不假装通过。
🌐 五语言符号级
TypeScript · Python · Rust · Java · Go,下探到确认的消费者。complete 是语言级校准边界(单 crate / 单 module / 标准布局等),越界保持 PARTIAL,不降级伪造零。
演进主线

机器契约 · 测试治理 · 插件生态

📜 机器契约目录
openarch contract --json 列出 context / test-governance / provider-list / rules-facts / docs-check 五份 JSON 契约的 id/version/status;破坏性变更 bump version,插件对未知版本 fail-closed。
🔌 context --json
顶层 schema 自识别版本;readiness 三级分级 enforcing / advisory / optional——code-hook 未装是 ⚠,协调服务未配置是常态不是故障。
🧪 测试治理
openarch test:Vitest / node:test / Go / Rust / JUnit / pytest 六框架适配器,逐 provider 覆盖边界与适配器建议,只建议不自动启用。
🧩 DSH 插件
治理状态看板、openarch_context/check/review/scan/test/contract 模型工具与机器契约消费,由同一版本化契约驱动。

现在就让你的代码库停止静默腐化

可复现路径(npm 发行暂缓,源码构建是当前正式安装方式;也可以直接把 INSTALL.md 交给 Agent 执行):

# 1. 构建并安装 CLI(前置:Node 20+、pnpm 9、bun、Git)
git clone https://github.com/VilTea/openarch
cd openarch
corepack enable
pnpm install
pnpm release:binary
pnpm release:local-command

# 2. 在你的项目里初始化(新终端已可直接使用 openarch)
cd /path/to/your-project
openarch init --agent claude
openarch context
打开完整手册 → 在 GitHub 开始 ↗