Matrix-ops77/dont-lie

GitHub: Matrix-ops77/dont-lie

一个为 AI API 调用生成 Ed25519 签名哈希链回执的本地代理,用于满足合规审计对防篡改记录的需求。

Stars: 0 | Forks: 0

# Don't-Lie [![MIT](https://img.shields.io/badge/license-MIT-16a34a?style=flat-square)](LICENSE) [![Python 3.9+](https://img.shields.io/badge/python-3.9+-16a34a?style=flat-square)](https://www.python.org) [![测试](https://img.shields.io/badge/tests-356%20passing-16a34a?style=flat-square)](#benchmarks) [![OpenAI 兼容](https://img.shields.io/badge/OpenAI-compatible-16a34a?style=flat-square)](#how-it-works) [![Anthropic 兼容](https://img.shields.io/badge/Anthropic-compatible-16a34a?style=flat-square)](#how-it-works) [![本地优先](https://img.shields.io/badge/local--first-MIT-16a34a?style=flat-square)](#philosophy) ![签名回执通过哈希链连接到本地保险库的插图](https://static.pigsec.cn/wp-content/uploads/repos/cas/a3/a3e8eb1bc0831eb42e19f7c4cf38843ad9223ac7cfaf02f84267b88cf916327d.png) ``` pip install dontlie dontlie demo ``` 就这样。只需 30 秒。无需 API 密钥。你会得到一个带签名的回执链,你可以随意篡改它,以验证它是否真的能检测出篡改。 ## 这是什么 一个本地优先的代理,它将每一次 AI 请求和响应捕获到一个**带签名的、哈希链接的回执链**中。采用 Ed25519 签名。SHA-256 链。支持离线验证。便携式数据包。没有虚假声明。 ``` # 之前 openai.api_base = "https://api.openai.com/v1" # 之后(单行) openai.api_base = "http://localhost:8080/v1" ``` 你的客户端不需要改变。你的提供商不需要改变。现在,每次调用都会生成一份你可以直接交给审计员的回执。 ## 它能证明什么 —— 以及不能证明什么 | 能证明 | 不能证明 | |---|---| | 回执由文档记录的密钥签名 | 模型答案是否正确 | | 从第一份回执开始的链是完整无缺的 | 上游提供商是否为所声称的那一家 | | 数据包与你移交的回执相匹配 | 哪个人或哪个组织持有签名密钥 | | 每份回执都绑定了你发送和接收的确切字节 | 字节之外的内容语义 | 其核心价值在于诚实。我们不声称 AI 是真实的。我们声称记录是防篡改的。 ## 功能特性 - **Ed25519 签名的回执** — 保存在本地,不向外部发送数据 - **哈希链接链 (v2)** — 每份回执通过 SHA-256 链接至上一份 - **OpenAI 兼容代理** — 可直接替换 OpenAI、Anthropic、MiniMax、LangChain、LlamaIndex - **便携的签名数据包** — 可在干净的机器上离线验证 - **HTML 证明报告** — 独立完整,排版精美 - **敏感信息脱敏** — API 密钥、电子邮件、社会安全号码 (SSN)、信用卡、JWT - **兼容 200 多种模型** — OpenAI、Anthropic、MiniMax、Gemini、Llama、Mistral、任何本地模型 - **30 秒安装** — 无需 Docker、无需云平台、无需注册账户 - **MIT 许可证** — 全部代码 - **信任分数** — 根据现有保险库状态生成的 0-100 的数值,提供用于 CI 的 JSON 格式 - **NDJSON 流** — 使用 `dontlie tail --follow --json` 接入 Splunk / Datadog / ELK / Sumo - **Web UI** — 使用 `dontlie web` 供非工程师审计员使用(基于标准库 HTTP,无 JS 依赖) - **TUI 浏览器** — 使用 `dontlie ui` 通过 SSH 浏览回执 - **一行代码的 agent SDK** — `import dontlie_agent; dontlie_agent.install()` - **针对不同合规体系的备忘录** — `docs/compliance/` 中包含 HIPAA、SOC 2、EU AI Act、NY DFS ## 工作原理 ![应用请求通过 Don't-Lie 代理路由到 AI 提供商,同时在本地存储带签名的哈希链接回执](https://raw.githubusercontent.com/Matrix-ops77/dont-lie/main/docs/assets/dontlie-architecture.svg) 1. 将任何兼容 OpenAI 的客户端指向 `http://localhost:8080/v1` 2. Don't-Lie 转发请求并捕获确切的请求/响应 3. 每份回执都会被计算 SHA-256 哈希、进行 Ed25519 签名,并与上一份链接 4. 使用 `dontlie verify` 进行离线验证 5. 使用 `dontlie export --bundle` 导出便携式数据包 6. 生成 HTML 证明报告(演示脚本会自动执行此操作;该辅助工具也可通过 `python3 -m dontlie.demo.render_report` 调用) ### 随处验证 ![签名回执变为一个便携的数据包,任何人都可以在干净的笔记本电脑上离线验证](https://static.pigsec.cn/wp-content/uploads/repos/cas/0f/0fcef0215711130008569b30535e6f5110e71096e40abb623d1c192ce5701205.svg) ## 使用场景 **事件响应** — 你的客户问“AI 到底说了什么?”在 30 秒内生成一份单页证明报告,而无需费力翻找日志。 **合规与审计** — SOC 2、GDPR、EU AI Act:向审计员提供一份能够抵御任何本地机器更改的签名证据链。 **客户信任** — 向你的客户准确展示他们的数据变成了什么样,证明你没有篡改过它,以及是哪个提供商给出了回答。支持独立验证。 **提供商迁移** — 从 OpenAI 切换到 Anthropic,再到本地模型,而不会丢失你的审计历史记录。 **取证调试** — 每一个 prompt、每一次响应、每一个字节、每一个签名。篡改一个字节,验证就会失败。 ## 安装 ``` pip install dontlie ``` 验证安装: ``` dontlie --version dontlie demo # offline proof: 3 signed receipts, tamper + restore dontlie demo --port 9879 # same demo on a non-default proxy port ``` 30 秒离线演示: ``` dontlie demo ``` 这将运行一个本地 mock provider,捕获 3 份回执,进行验证,篡改其中一份,并向你准确展示哪里出了问题。 使用 MiniMax 进行实时演示: ``` export DONTLIE_UPSTREAM_BASE_URL=https://api.minimax.io/v1 export DONTLIE_UPSTREAM_API_KEY="$MINIMAX_API_KEY" dontlie proxy --port 8080 & export OPENAI_BASE_URL=http://127.0.0.1:8080/v1 export OPENAI_API_KEY=dontlie-local # 与任何 OpenAI-compatible 客户端通信。Receipts 会自动写入。 ``` ## 架构 ``` dontlie/ ├── storage.py # SQLite vault, chain v2, append ├── sign.py # Ed25519 signing, key management ├── proxy.py # OpenAI-compatible HTTP proxy ├── verify.py # Offline verification, bundle export ├── render_report.py # HTML proof report ├── redaction.py # Secret detection and redaction ├── encryption.py # Encrypted-at-rest vault option ├── groundtruth/ # Receipt ↔ source bytes reconciliation ├── anchor/ # External timestamp anchoring ├── clients/ # SDK adapters (LangChain, LlamaIndex) ├── demo/ # Offline + live runbooks ├── site/ # Landing, demo, explorer, checkout └── tests/ # 356 tests, < 60s ``` ## 模板 - [🏠 `site/index.html`](site/index.html) — 落地页 - [🎬 `site/demo.html`](site/demo.html) — 30 秒交互式验证 - [🔍 `site/RECEIPT_EXPLORER.html`](site/RECEIPT_EXPLORER.html) — 回执表格 UI - [💳 `site/CHECKOUT.html`](site/CHECKOUT.html) — 套餐结账 ## 定价 | 套餐 | 价格 | 受众 | |---|---|---| | 免费 · 本地版 | $0 | 独立开发者、OSS 维护者 | | 开发者版 | $19/月 | 独立开发者、自由职业者 | | 团队版 | $299/月 | 正在交付 agent 的小型团队 (5–25人) | | 企业版 | $25K+/年 | 受监管的团队 (50–500人) | **免费版永远不会在完整性验证、签名器、提供商或链式验证上进行限制。** 这是我们的核心价值。 ## 基准测试 在 Apple M 系列硬件上测量,单线程: | 操作 | 吞吐量 | |---|---| | 签名 + 存储 | ~300 份回执/秒 | | 验证 | ~1,900 份回执/秒 | | 打包导出 | ~2,400 份回执/秒 | | HTML 报告生成 | ~80 份回执/秒 | 完整记录请见:[demo/output/BENCHMARK.md](demo/output/BENCHMARK.md) ## 文档 - [LAUNCH.md](LAUNCH.md) — 面向客户的发布说明 - [competitive.md](competitive.md) — 公开的行业格局与市场定位 - [PRIVACY.md](PRIVACY.md) — 隐私承诺 - [SECURITY.md](SECURITY.md) — 威胁模型与报告 - [PLDG.md](PLDG.md) — 绝不外联承诺(由 `test_phone_home.py` 强制执行) - [company/BRAND.md](company/BRAND.md) — 风格指南 - [company/PRIVACY_POLICY.md](company/PRIVACY_POLICY.md) - [company/TERMS_OF_SERVICE.md](company/TERMS_OF_SERVICE.md) - [company/DPA.md](company/DPA.md) — 数据处理协议 ## 部署 此代码库是 CLI 和已部署站点的**单一事实来源**。 这台机器上没有第二个 `site/` 的副本。 ### 部署静态站点 `site/` 文件夹是在 [queued-inlet-pmqa.here.now](https://queued-inlet-pmqa.here.now/) 上运行的内容。 由于此开发机器上未安装 `herenow` CLI,因此部署是通过手动拖放完成的: 1. `dontlie backup` — 首先为实时保险库创建快照(安全防范机制) 2. 在浏览器中打开 [here.now 上传页面](https://here.now/upload) 3. 将整个 `site/` 文件夹拖到上传区域 4. 使用 `view-source:https://queued-inlet-pmqa.here.now/` 验证部署的 URL 是否渲染正常 5. 打开 `https://queued-inlet-pmqa.here.now/#v=` 以确认可分享的验证 URL 流程仍然有效 `site/` 文件夹是自包含的:不获取 CDN、不包含分析脚本、不包含第三方字体。请参阅 [PLDG.md](PLDG.md) 了解该承诺以及在 CI 中运行的强制执行测试。 ### 部署见证公证节点 支持 `witness-attest` 和 `witness-coverage` 的 Cloudflare Worker 位于 [`projects/dontlie/witness-worker/`](projects/dontlie/witness-worker/)。 使用以下命令部署: ``` cd projects/dontlie/witness-worker wrangler deploy ``` 然后将 worker URL 传递给 `dontlie witness-coverage --url https://your-worker.workers.dev`。 ### 单一位置规则 如果你发现自己在该代码库之外的任何地方编辑 `site/` 或 `dontlie` 文件夹,**请停止** — 那些是过时的副本。从两个位置合并到一个位置的操作是在提交 `50dd58c` (v0.3.3) 中完成的。位于 `~/orca projects/dontlie/` 的旧工作区已被删除;请勿重新创建。 ## 理念 Don't-Lie 是一个公证员,而不是法官。我们记录模型说了什么。我们并不声称它是正确的。这种更狭义的声明在法庭、审计以及你客户的安全审查中都是经得起推敲的。 ## 安全性 请参阅 [SECURITY.md](SECURITY.md)。如需报告漏洞:security@dontlie.dev。 ## 许可证 MIT。由 Don't-Lie 团队构建。 ## 链接 - [GitHub](https://github.com/Matrix-ops77/dontlie) - [文档](https://dontlie.dev) - [演示](https://dontlie.dev/demo.html) - [回执浏览器](https://dontlie.dev/RECEIPT_EXPLORER.html) - [定价](https://dontlie.dev#pricing) - [联系我们](mailto:hello@dontlie.dev)
标签:Python, Zenmap, 审计日志, 密码学签名, 数据完整性, 无后门, 本地代理, 程序员工具, 逆向工具