use-charter/charter
GitHub: use-charter/charter
Charter 是一款离线、确定性的 AI agent 就绪度扫描器,对代码仓库进行 0–100 评分并针对上下文、MCP 安全、密钥、CI 等 9 大类共 18 条规则提供可操作的修复方案。
Stars: 0 | Forks: 0
## 为什么选择 Charter
AI 编程 agent 的安全性和有效性,完全取决于它所操作的代码仓库。缺失的
上下文文件、未固定版本的 MCP server、泄漏的密钥以及缺失的 CI 门禁,都会悄然降低
每一个接触你代码的 agent 的表现——而你往往是在查看 diff 时才发现这些问题,而非事先察觉。
Charter 让这种就绪度变得**可衡量**:一个确定性评分,涵盖 **9 个类别**的 **18 条规则**,以及 **0 次网络调用**。在本地运行它,在 CI 中将其设为门禁,并修复它标记出的问题。
| | |
|---|---|
| **确定性** | 同一代码仓库,每次评分相同。核心环节无模型介入,杜绝不稳定输出。 |
| **离线运行** | 绝不向外部发送数据。对于私有、受监管和气隙隔离的代码库完全安全。 |
| **可操作** | 每一项检查结果都包含规则 ID、原因和修复方法。`charter fix` 会以 diff 优先的方式自动修复其中许多问题。 |
| **跨供应商** | 提供适用于 Claude Code、Cursor、Copilot、Gemini、Windsurf、Codex、Zed 和 Replit 的统一评分标准。 |
## 快速开始
```
# 安装 (macOS / Linux)
brew install use-charter/tap/charter
# 为当前 repo 评分
charter doctor
```
这就是完整的闭环。`charter doctor` 会扫描目录树,评估 18 条规则,并打印出一个分段评分,附带每个类别的详细分类以及每一项内联的检查结果。退出码即作为门禁:
`0` 通过 · `1` 低于阈值 · `2` 错误。
## 安装
我们为 **macOS、Linux 和 Windows** 的 `amd64` 和 `arm64` 架构均提供已签名的二进制文件。请在下方选择
适合你的平台,或在任一平台上使用 Go。
### macOS
```
brew install use-charter/tap/charter
```
兼容 Apple Silicon 和 Intel 芯片。之后可使用 `brew upgrade charter` 进行升级。
### Linux
```
# Homebrew (Linuxbrew)
brew install use-charter/tap/charter
```
没有安装 Homebrew?请从 [最新发布版本](https://github.com/use-charter/charter/releases/latest) 中获取适合你架构的压缩包
— `charter_
_linux_amd64.tar.gz` (或 `_arm64`) — 然后执行:
```
tar -xzf charter_*_linux_*.tar.gz
sudo install charter /usr/local/bin/charter
```
### Windows
从 [最新发布版本](https://github.com/use-charter/charter/releases/latest) 下载
`charter__windows_amd64.zip` (或 `_arm64`),解压后将
`charter.exe` 添加到你的 `PATH` 中:
```
# 从你解压 charter.exe 的文件夹中
$dest = "$env:LOCALAPPDATA\Programs\charter"
New-Item -ItemType Directory -Force $dest | Out-Null
Move-Item charter.exe $dest -Force
[Environment]::SetEnvironmentVariable("Path", "$env:Path;$dest", "User") # reopen the terminal
```
### 任意平台 — Go
```
go install go.use-charter.dev/charter/cmd/charter@latest # requires Go 1.26+
```
### 从源码构建
```
git clone https://github.com/use-charter/charter && cd charter
go build -o charter ./cmd/charter
```
### 验证下载
每次发布都**附有 cosign 签名及 SLSA Level 3 来源证明**,并包含 `checksums.txt`、
Sigstore 包 (`checksums.txt.sigstore.json`) 以及针对每个压缩包的 SBOM。你可以随时确认已安装的内容:
```
charter version --verify # prints version, build provenance, and cosign verification status
```
## 命令
精简而强大的操作界面。以下七个命令在你的 shell 和 CI 环境中的行为完全一致。
| 命令 | 功能描述 |
|---------|--------------|
| `charter doctor` | 扫描并为代码仓库打分 (0–100),提供按类别的分数细分。 |
| `charter init` | 为缺失的上下文文件生成基础结构。绝不覆盖现有文件。 |
| `charter fix` | 针对受支持的规则提供 diff 优先的自动修复——在你批准之前绝不写入任何内容。 |
| `charter explain ` | 打印某条规则的类别、摘要、严重程度和文档 URL。 |
| `charter suppress ` | 登记一项受管理的豁免,包含原因、负责人和到期时间。 |
| `charter report` | 生成独立的离线 HTML 报告(内嵌字体和数据)。 |
| `charter version` | 打印版本号、构建来源和供应链验证状态。 |
## 检查内容
涵盖 9 个类别的 18 条规则。严重程度决定了评分权重;每一条规则都拥有 `AE-*` ID
及对应的修复方案。完整参考请见 [use-charter.dev/rules](https://use-charter.dev/rules)。
| 类别 | 规则 | 检查内容 |
|----------|-------|-----------|
| **Context** | `AE-CTX-001/002/004/006` | 具备有意义且准确的 `AGENTS.md`;agent 产生的产物已被 git 忽略;强调标记克制有度。 |
| **Secrets** | `AE-SEC-001/002` | agent 可见的文件或 MCP 配置中无明文密钥。 |
| **MCP Safety** | `AE-MCP-001/002/003` | MCP server 版本已固定,来源受信任,已声明认证信息。 |
| **Agent Config** | `AE-CC-001/002` | 无危险的 hook 命令;具备明确的 agent 编辑范围。 |
| **Environment** | `AE-ENV-001` | 可复现的工具链 — 包含 lockfile 及固定版本。 |
| **CI** | `AE-CI-002` | Charter 和工作流 linter 在 CI 中运行。 |
| **Testing** | `AE-TEST-001` | 存在自动化测试,以便 agent 进行自我验证。 |
| **Autonomy** | `AE-AUTO-001` | 验证命令易于发现。 |
| **Governance** | `AE-SUPPRESS-001/002/003` | 豁免操作具备原因、审批人,且保持在健康的比率内。 |
## 评分机制
```
score = max(0, 100 − B×20 − H×10 − M×4 − L×1)
final = min(score, applicable_cap)
```
`B`/`H`/`M`/`L` 分别代表 Blocker/High/Medium/Low 级别的问题发现数量。Informational 级别的发现
不计入其中。硬性上限确保了对危险情况的严格把控:
- agent 可见内容中出现明文密钥 → **≤ 49**
- 存在任何活跃的 Blocker → **≤ 59**
该公式是公开的,并且在同一个主版本内保持稳定。相同的输入,相同的评分——始终保持一致。
## 在 CI 中设为门禁
```
# .github/workflows/charter.yml
- uses: use-charter/charter-action@v1
with:
threshold: "80" # fail PRs that score below this
verify: true # cosign + sha256 the binary before running
```
该 action 会下载已签名的二进制文件,运行 `charter doctor --format sarif`,并上传至
**GitHub Code Scanning** —— 检查结果将直接内联显示在 PR 中,无需学习使用新的控制面板。详见
[`action/README.md`](./action/README.md)。
## 契约
Charter 做出了十项承诺,并在每一项上展现其实际行动:
- ✅ 绝不发起网络调用
- ✅ 核心逻辑不调用任何 LLM
- ✅ 不删除任何文件
- ✅ 绝不静默修改 — 仅限 diff 优先的修复
- ✅ 每一项发现都附带规则 ID 和修复指南
- ✅ 每一次发布都经过签名 (SLSA L3 + cosign)
- ✅ 评分公式公开,且在同一个主版本内保持稳定
- ✅ 跨供应商支持所有主流编程 agent
- ✅ 绝不打印密钥
- ✅ CLI 永久免费 (Apache-2.0)
## 性能表现
`charter doctor` 可在 **≤ 2 秒**内扫描包含 **50,000 个文件**的代码库,且 RSS 内存占用
**≤ 256 MiB** — 该表现已通过 CI 中的 `moon run :perf` 进行断言验证。
## 技术栈
| 层级 | 构建工具 |
|-------|------------|
| **核心 CLI** |  |
| **构建与工具链** |     |
| **Web 与文档** |    |
| **基础设施与 CI/CD** |    |
| **供应链** |    |
## 文档
| | |
|---|---|
| **产品文档** | [use-charter.dev/docs](https://use-charter.dev/docs) (Mintlify) · 源码位于 [`docs/product/`](./docs/product/) |
| **规则参考** | [use-charter.dev/rules](https://use-charter.dev/rules) |
| **架构设计** | [`docs/internal/architecture/charter-architecture-2026.md`](./docs/internal/architecture/charter-architecture-2026.md) |
| **仓库契约** | [`AGENTS.md`](./AGENTS.md) · [`ARCHITECTURE.md`](./ARCHITECTURE.md) · [`SECURITY.md`](./SECURITY.md) · [`CONTRIBUTING.md`](./CONTRIBUTING.md) · [`TESTING.md`](./TESTING.md) |
## Star 历史
## 许可证
[Apache License 2.0](./LICENSE)。采用 DCO 优先的贡献方式。
标签:AI代理, EVTX分析, Go, Ruby工具, 云安全监控, 安全合规, 日志审计, 程序员工具, 网络代理, 静态分析