内容
<div align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/brand/opcore-hero-dark.png">
<img alt="Opcore" src="docs/brand/opcore-hero-light.png" width="720">
</picture>
<br><br>
**变更文件验证门控:编码代理在编辑生效前运行。**
背后是由 Rust 代码图支持的,可以读取已死导出、未测试的表面、热点和 Rust 模块循环。
[](LICENSE)
[](#install)
[](#platforms)
[](#the-open-engine)
</div>
它在本地运行,保持设置审批门控,并为代理提供退出代码,以便其分支。
```text
$ opcore check --changed
1 file changed · checks passed CLEARED exit 0
$ opcore check --changed # 在代理引入类型错误后
1 file changed · 1 check failed BLOCKED exit 1
FAIL typescript.types src/cart.ts:9 TS2322
```
| 退出码 | 含义 |
| ---: | --- |
| `0` | 在容忍范围内。无发现。 |
| `1` | 存在发现,或调用者应处理的错误。 |
| `2` | 请求的检查未针对此堆栈实施。 |
| `64` | 不支持的作用域。已计算,但未失败。 |
## 检查内容
Rust 代码图可以看到单文件 lint 无法看到的结构:没有导入的导出,没有测试的符号,以及所有内容都依赖的模块。
| 堆栈 | 深度 | 检查 |
| --- | --- | --- |
| TypeScript, JavaScript | 深度 | 语法、类型、导入、相关测试、死导出、热点和大文件热点。 |
| Rust | 有用 | 源卫生、过大文件、模块循环和孤立项、cargo、fmt、clippy、rustdoc。 |
| Python (`.py`, `.pyi`) | 实验性 | 结构、未测试的模块、死导出、语法、卫生。 |
每个发现都指向文件、检查 ID 和符号。
## 安装和连接门控
```bash
npx opcore install
```
`opcore install` 首先扫描,显示计划,并在 TTY 上询问。在 Git 仓库中,它会询问是否在此仓库或全局安装 Claude Code/Codex 编写门控。默认仓库设置会安装 Opcore 代理技能、Claude Code/Codex 编写门控钩子以及在没有现有 pre-commit 钩子的情况下运行 `opcore check --changed` 的 Git pre-commit 钩子。
对于显式全局安装:
```bash
npm install -g opcore
opcore install --global
```
安装脚本不会修改仓库或代理设置。软件包仅打印设置提醒。需要 Node >= 22。
## 命令
```bash
opcore --repo . # 只读扫描:覆盖率,然后是发现
opcore status # 准备情况和覆盖率;永不写入
opcore check --changed --json # 代理门控;也可以使用 --staged 或显式 <files>
opcore install # 扫描,然后在批准后连接仓库/全局代理钩子
opcore install --global # 为使用全局设置的所有仓库安装写入门控
opcore uninstall --yes # 仅删除 Opcore 添加的内容
opcore measure --repo . # 来自本地历史的 before/after 增量
opcore try # 在生成的示例仓库上运行循环
```
只有 `opcore install` 和兼容的 `opcore init` 路径会写入设置文件,并且仅在批准后。 `--json` 和非 TTY 运行仅限于计划,除非您传递 `--yes` 进行安装或 `--approve` 进行初始化。
## 工作原理
Opcore 是混合型的:Rust 图核心拥有提取、持久性和热查询;TypeScript 拥有合约、CLI 和验证适配器。发现是从图上读取的,因此它们映射到真实结构而不是文本匹配。
批准的仓库设置会写入附加的 `.opcore` 配置、一个指导块、Opcore 代理技能、一个小型写入门控适配器、合并的 Claude Code/Codex 钩子条目、一个活跃的 Git pre-commit 钩子(如果安全),以及撤销元数据。批准的全局设置会写入用户级钩子配置和技能,遵循相同的附加、可撤销策略。有关所有权模型,请参见 @docs/architecture/runtime-cli-ard.md。
## 平台
`darwin-arm64`、`darwin-x64` 和 `linux-x64`。其他平台会返回清晰的状态而不会崩溃。
## 文档
[快速入门](docs/quickstart.md) · [概念](docs/concepts.md) · [示例](docs/examples.md) · [代理集成](docs/agent-integration.md) · [架构](docs/architecture/runtime-cli-ard.md)
## The Open Engine
Opcore 是 [The Open Engine](https://theopenengine.com) 的 Layer 02(约束),是 [Zeroshot](https://github.com/the-open-engine/zeroshot) (Layer 01,验证)的 sibling。