ralabarta/agentproof
GitHub: ralabarta/agentproof
一个本地优先的 Go CLI 工具,将 AI 编码 Agent 的会话与 Git 变更关联,生成经完整性校验的可重现合并证据报告。
Stars: 0 | Forks: 0
# AgentProof
**确切了解你的编码 Agent 做了哪些更改——并收集判断其合并是否安全所需的证据。**
[](https://github.com/ralabarta/agentproof/actions/workflows/ci.yml)
[](LICENSE)
[](https://go.dev)
[](#contributing)
[](#隐私与信任模型)
[快速开始](#quickstart) · [为什么](#why-agentproof) · [GitHub Action](#github-action) · [真实报告](docs/example-report.md) · [架构](docs/architecture.md) · [威胁模型](docs/threat-model.md)
AgentProof 是一个**本地优先的 Go CLI**,它将 Codex 和 Claude Code 会话与 Git 更改关联起来,摄取测试结果工件,检测确定性风险,评估代码影响,并生成可重现的 **Markdown、HTML 和 JSON 证据**。
无需账户。无需服务。无需遥测。无需网络请求。
## 快速开始
```
go install github.com/ralabarta/agentproof/cmd/agentproof@latest
agentproof init
agentproof record --objective "Protect refresh tokens from replay" --agent codex -- codex
agentproof verify --test-result test-results.jsonl
```
```
AgentProof verification: WARNING
✓ Required evidence complete: 3/3
✓ Canonical manifest integrity passed
✓ 28 test results passed
✓ No secret patterns detected in captured added lines
⚠ Authentication or authorization code modified
Affected components: internal/auth, internal/api
Bundle ID: 7f0c…d91a
```
## 为什么选择 AgentProof
编码 Agent 的证据通常散落在终端会话、Git、CI 日志和代码审查工具中。AgentProof 将这些来源汇总成一个经过完整性校验的包裹,同时将原始会话内容保留在你的本地机器上。
| | 原则 | 实际意义 |
|---|---|---|
| 🔒 | **默认本地** | 无账户、无服务、无遥测、无网络请求 |
| 🧭 | **诚实关联** | Git/会话匹配是一种*关联*,绝不是作者身份声明 |
| 🚧 | **失败即关闭证据** | 缺失或状态不明确的必需来源绝不会变成通过 |
| 🎯 | **确定性检查** | 稳定的发现 ID、有序的输出、有界的解析器、规范的清单 |
| 🍴 | **感知 Fork 的 CI** | 验证过程只摄取工件;它绝不运行测试、hooks、构建或仓库命令 |
### 证据词汇表
每一个面向人类的声明都在三个独立的维度上进行分类。这是信任模型的核心,并且是强制执行的:这些词汇表在 `internal/evidence` 中枚举,如果本节内容与它们不一致,测试就会失败。
**证据状态** — 是否捕获到了来源?
| 状态 | 含义 |
|---|---|
| `observed` | 直接从 Git、进程结果或提供的工件中捕获 |
| `missing` | 已声明且为必需,但在声明位置不存在 |
| `unsupported` | 当前版本未处理 |
| `unknown` | 已尝试但状态不明确,且说明了原因 |
| `not_observed` | 从未声明或发现,因此不期望任何内容 |
**声明置信度** — 结论距离捕获的字节有多远?
| 置信度 | 含义 |
|---|---|
| `observed` | 直接从捕获的证据中读取 |
| `derived` | 从证据中按确定性逻辑计算得出 |
| `inferred` | 因 AgentProof 观察到但无法控制的条件而减弱 |
**关联度** — 更改与记录窗口的绑定程度有多紧密?绝不是对作者身份的声明。
| 关联度 | 含义 |
|---|---|
| `clean-baseline` | 基准是干净的,因此 Git 范围是精确的 |
| `contaminated-baseline` | 未提交的工作早于记录时间,无法单独分离 |
| `unknown-uncaptured-worktree` | 更改的内容无法捕获,因此范围不完整 |
## 安装
下载发布归档文件并根据 `checksums.txt` 进行验证,或者使用 Go 1.22+ 从源码构建:
```
go install github.com/ralabarta/agentproof/cmd/agentproof@latest
```
本地开发
``` git clone https://github.com/ralabarta/agentproof.git cd agentproof make test make build ``` 运行时仅依赖 Go 标准库——无需安装其他任何内容。原始输出保留(可选开启,默认关闭)
``` agentproof record --retain-raw --objective "Reproduce issue" -- codex agentproof purge --raw # preview files older than seven days agentproof purge --raw --confirm # delete the previewed selection ```Action 的输入与输出
| 输入 | 默认值 | 用途 | |---|---|---| | `base` | *必需* | 要进行比对的 Git 基准 | | `test-results` | – | 以换行符分隔的工件路径 | | `require-tests` | `"false"` | 当没有测试证据时失败 | | `fail-on` | `critical` | 导致作业失败的严重性阈值 | | 输出 | 用途 | |---|---| | `conclusion` | `passed`、`warning` 或 `failed` | | `bundle-id` | SHA-256 包裹身份标识 | | `completeness` | 必需证据的完整度百分比 | | `integrity` | 规范清单完整性结果 | | `critical-violations` | 关键发现计数 | | `warnings` | 警告计数 | | `report` | 生成的 Markdown 报告路径 |标签:AI辅助编程, EVTX分析, SOC Prime, 代码审查, 完整性校验, 开发工具, 文档结构分析, 日志审计, 网络安全研究