djproject-id/token-thrift
GitHub: djproject-id/token-thrift
面向敏感代码库的安全优先 AI 代码审查工具,通过本地知识图谱索引和多层安全防护机制,在 AI 辅助审查时保护密钥、钱包等机密信息不被泄露。
Stars: 0 | Forks: 0
# token-thrift
**针对敏感代码库的安全优先代码审查。**
一个强化的 CLI 工具,可将您的代码库索引到本地知识图谱中,让 AI 助手仅读取所需内容,并对钱包、密钥和机密信息设置严格的防护机制。
[](LICENSE)
[](#)
[](#)
[](https://github.com/djproject-id/token-thrift/pulls)
[](https://github.com/djproject-id/token-thrift/issues?q=is%3Aopen+label%3A%22good+first+issue%22)
[](https://github.com/djproject-id/token-thrift/stargazers)
## 为什么选择 token-thrift
大多数 AI 代码审查工具都以效率为优化目标。而 token-thrift 的优化原则是 **安全第一,效率第二**。
专为交易机器人、钱包工具、包含 `.env` 机密的代码库,以及任何将供应链攻击或意外数据泄露视为切实威胁的项目而构建。
| 功能 | 提供的优势 |
|---------|-------------------|
| 🔒 预检扫描器 | 检测 `*.key`、`wallet*.json`、`.env`、`*mnemonic*`,在被正确忽略之前拒绝对其进行索引。 |
| 🌐 默认禁用云端流量出口 | 在 runtime 下取消设置 Cloud API 环境变量(OpenAI, Google, MiniMax)。socket 级别的防护也会阻止已知的云主机。 |
| ✅ SHA256 校验安装 | 主 wheel 包以及(当存在 lock 文件时)所有传递依赖在安装前均会进行哈希校验。 |
| 📦 隔离执行 | 在由 pipx 管理的 virtualenv 中运行。您的全局 Python 环境保持不受影响。 |
| 🚫 无侵入式 hooks | 永不修改编辑器配置(.cursor、.windsurf、.zed)和 git hooks。 |
| 🛡️ 全局忽略模板 | 内置针对钱包、密钥、机密信息和加密制品的安全默认配置。 |
| 🧬 防篡改包装器 | 包装器在安装时对自身进行哈希处理,如果被修改过则拒绝运行。 |
| 📜 审计日志 | 每次调用都会追加到 `~/.token-thrift/audit.log` 中,以供取证分析。 |
| 🔍 内容机密扫描器 | 基于正则表达式扫描内联机密(PEM 密钥、API token、mnemonics)。 |
| 📂 扩展名白名单 | 纵深防御:对不在已知安全白名单内的文件类型发出警告。 |
| 🔐 加密备份 | 一键 `backup` 和 `restore` 状态,使用 age、gpg 或 openssl。 |
| 🔄 自我更新 | `token-thrift self-update` 拉取最新发布版本,并支持可选的 GPG 验证。 |
## 快速安装
```
git clone https://github.com/djproject-id/token-thrift.git
cd token-thrift
bash install.sh
```
安装程序将会:
1. 检查 Python 3.10 或更高版本。
2. 如果缺失则安装 pipx。
3. 在安装前验证主包 wheel 的 SHA256。
4. 如果存在 `requirements.lock`,则对所有传递依赖强制执行 `--require-hashes`。
5. 将引擎安装在隔离的 pipx venv 中。
6. 将 `token-thrift` 包装器放入 `~/.local/bin/` (chmod 700)。
7. 将辅助库放在 `~/.token-thrift/lib/`,数据文件放在 `~/.token-thrift/data/` (chmod 600)。
8. 对包装器、MCP 配置和 pipx venv 二进制文件进行快照(SHA256),以进行篡改检测。
9. 在 `~/.claude.json` 中注册 MCP server (chmod 600)。
重启 Claude Code,该工具即处于活动状态。
## 用法
### 核心审查命令
```
token-thrift build # Parse the codebase in cwd, after a pre-flight scan.
token-thrift update # Refresh the graph, after a pre-flight scan.
token-thrift status # Show graph status.
token-thrift help # Full command list.
```
### 安全扫描器
```
token-thrift scan ~/myproject # Filename-based check for sensitive files.
token-thrift secret-scan ~/myproject # Content-level regex scan for inline secrets.
token-thrift ext-scan ~/myproject # Flag files with extensions outside the allowlist.
token-thrift init ~/myproject # Drop the default ignore template into a project.
```
### 操作
```
token-thrift audit # Show the last 50 audit-log entries.
token-thrift audit-path # Print the audit log path.
token-thrift verify # Re-run all integrity checks (wrapper, MCP, venv).
token-thrift backup out.age # Encrypted backup of ~/.token-thrift/.
token-thrift restore out.age # Restore from an encrypted backup.
token-thrift self-update # Pull and reinstall the latest release.
```
其他子命令会透明地传递到底层 CLI,但始终处于下文所述的安全防护机制之下。
## 被阻止的子命令(为了您的安全)
| 子命令 | 阻止原因 |
|------------|---------------------|
| `install` | 会修改许多系统文件(设置、git hooks)。请改用捆绑的安装程序。 |
| `apply-refactor` | 直接写入源文件。请改用您的编辑器。 |
| `cross-repo-search` | 跨 repo 注册表验证极少。存在路径遍历风险。 |
## 预检扫描器
在执行 `build` 或 `update` 之前,扫描器会查找任何匹配以下内容的文件:
```
*.key, *.pem, id_rsa*, id_ed25519*, *.gpg
wallet*.json, keypair*.json, phantom*.json, solflare*.json, backpack*.json
.env, *.env, secrets.json, auth.json, credentials*
*mnemonic*, *passphrase*, *seed.json, *master.key
```
如果发现任何尚未添加到 `.code-review-graphignore` 的匹配项,构建将停止。要覆盖此设置,请输入字面短语 `i-accept-the-risk`。这是刻意制造的阻力,以防您的钱包被意外索引。
内容级别的机密扫描器与文件名检查同时运行,负责在文本文件中查找内联模式(PEM 密钥、API token、mnemonics)。完整列表请参见 `data/secret-patterns.txt`。可自由定制。
## 威胁模型
token-thrift 可防范:
- ✅ 供应链攻击(主 wheel 的 SHA256 验证,以及当存在 lock 文件时对传递依赖项的 `--require-hashes` 校验)。
- ✅ 云端数据泄露(强制取消设置云端环境变量,且 socket 级网络防护会拒绝向已知云主机的出站连接)。
- ✅ 侵入式的自动配置(危险的子命令已被阻止)。
- ✅ 钱包或种子文件被错误索引(文件名 + 内容扫描器,以及文件扩展名白名单)。
- ✅ 跨 repo 路径遍历(`cross-repo-search` 已被阻止)。
- ✅ 全局 Python 环境污染(pipx 隔离的 venv)。
- ✅ 包装器被篡改(启动时进行自哈希校验,不匹配则拒绝运行)。
- ✅ MCP 配置被篡改(`~/.claude.json` 哈希监视器在发生偏移时会发出警告)。
token-thrift 无法防范:
- ❌ 解析器或 SQLite 中的 Zero-day 漏洞。请以偏执的心态运行。
- ❌ `~/.claude.json` 被攻破。请保护好此文件(安装时已设置为 chmod 600)。
- ❌ pipx venv 二进制文件被攻破。如果 venv 快照发生偏移,请重新安装。
- ❌ 您自己 `data/` 文件中不受信任的模式。在定制前请进行审计。
## 多设备设置
在第二台设备上克隆 repo,运行 `bash install.sh`。每台设备都会获得自己独立的安装。
如果与最初生成的 lock 文件的平台不同,可选择为该平台重新生成 `requirements.lock`:
```
bash scripts/gen-lock.sh
```
## 自行验证
安装时验证的主 wheel SHA256:
```
08d715607aefde3414d28b3a7844243823b150dc63ba4dd4529d6919f540d048
```
手动验证:
```
pip download --no-deps code-review-graph==2.3.2
sha256sum code_review_graph-2.3.2-py3-none-any.whl
```
如果提交了 `requirements.lock`,则每个传递依赖项也都会被锁定。该 lock 文件由 `scripts/gen-lock.sh` 在受信任的机器上生成,并提交到 repo 中。
## 文件布局
安装后:
```
~/.local/bin/token-thrift # Main wrapper (chmod 700)
~/.token-thrift/
global-ignore # Default ignore patterns
wrapper.sha256 # Hash of the wrapper at install time
claude.json.sha256 # Hash of ~/.claude.json at install time
pipx-venv.sha256 # Hash list of pipx venv binaries
audit.log # Append-only audit log
lib/
integrity.sh # Hash storage and verification helpers
audit.sh # Audit-log helpers
allowlist.sh # Extension-allowlist scanner
secret-scan.sh # Content-level secret scanner
backup.sh # Encrypted backup and restore
selfupdate.sh # Self-update from GitHub
network-guard.py # Runtime socket-level egress guard
data/
secret-patterns.txt # Regex patterns for content scanner
allowed-extensions.txt # File-type allowlist
blocked-hosts.txt # Network egress blocklist
```
在每个项目中,包装器会在首次构建时根据全局模板自动创建 `.code-review-graphignore`。
## 架构
token-thrift 包含:
- `install.sh`:带有 SHA256 校验、pipx 隔离、MCP 注册和完整性快照的已验证安装程序。
- `token-thrift`:Bash 包装器,增加了预检扫描器、环境变量加固、runtime 网络防护和子命令防护。
- `lib/`:用于完整性、审计、扫描、备份和自更新的内置辅助脚本。
- `data/`:用户可定制的模式和列表(机密正则表达式、扩展名白名单、主机黑名单)。
- `scripts/gen-lock.sh`:为每个传递依赖项重新生成带有 SHA256 哈希的 `requirements.lock`。
知识图谱引擎:PyPI 上的 [code-review-graph](https://pypi.org/project/code-review-graph/),固定为版本 2.3.2 并具有 SHA256 验证。
AI 集成:MCP (Model Context Protocol)。兼容 Claude Code 和任何其他支持 MCP 的客户端。
## 卸载
```
pipx uninstall code-review-graph
rm ~/.local/bin/token-thrift
rm -rf ~/.token-thrift
# 手动从 ~/.claude.json 中移除 “token-thrift” 条目。
```
## License
MIT © 2026 djproject-id
## 贡献
欢迎您的贡献——尤其是对扫描器模式、文档和 CI 的改进。
浏览 [新手友好 issues](https://github.com/djproject-id/token-thrift/issues?q=is%3Aopen+label%3A%22good+first+issue%22)
以查找小而明确界定的任务,或者发起一个
[讨论](https://github.com/djproject-id/token-thrift/discussions) 来提问或分享想法。
如果 token-thrift 对您有帮助,点个 star 可以帮助其他人发现它。标签:Blue Team, 云安全监控, 人工智能, 代码审查, 依赖管理, 安全合规, 应用安全, 用户模式Hook绕过, 网络代理, 逆向工具, 静态分析