关于 AppLedger
AppLedger 面向使用 AI 工具构建应用的开发者,以通俗语言说明安全扫描结果,并生成可交给编码 Agent 的修复请求。它支持托管扫描和本地扫描,也可重新检查修复结果。
主要功能
- 01使用 Trivy 和 Opengrep 扫描应用
- 02以通俗语言解释安全问题
- 03生成编码 Agent 修复请求并复查
- 04输出 HTML、JSON 和 Markdown 报告
- 05支持托管模式与本地模式
适用场景
- 01在分享应用前检查安全问题
- 02将扫描结果交给编码 Agent 修复
- 03在不上传代码的本地模式中扫描
- 04定期检查应用并保存结果摘要
MCP 相关
提供本地 MCP 服务,供客户端调用 AppLedger 的应用安全检查功能。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx appledgerAPPLEDGER_MODEhosted (default): files Git would commit are sent to appledger.net, scanned and deleted. local: Trivy and Opengrep run on this machine.APPLEDGER_KEY密钥Optional dashboard connection key (al_...). Without it, nothing goes to a dashboard; a hosted check returns a link that saves its result to a free account (the summary is kept up to 24 hours).本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
5收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 是 | |
| app_name | any | 否 | |
| confirm_upload | boolean | 否 | |
| save_to_dashboard | boolean | 否 |
详细介绍
AppLedger 诚实检查
用通俗易懂的语言,为使用 Claude Code、Codex、Cursor 和 Lovable 等 AI 工具构建的应用提供诚实的安全反馈。
AppLedger 会使用独立扫描器检查你的应用文件夹,并用日常用语解释检查结果:哪里有问题、为何重要,以及该怎么做。它还会生成一份修复请求,你可以直接交给构建该应用的 AI 工具,然后再次检查。
检查内容
| 扫描器 | 可发现的问题 |
|---|---|
| Trivy | 泄露的密码和密钥、存在已知安全问题的过时库、有风险的容器配置 |
| Opengrep | 危险的代码模式:SQL 注入、命令注入、不安全的数据加载、未关闭的调试模式 |
| SonarQube(可选,仅本地模式) | 代码质量问题,以及更多安全隐患(前提是你已运行 SonarQube 服务) |
每次运行都会在 <your-app>/.appledger/ 中生成:
report.html:评分、当前可能使用该应用的人员范围(仅你、你的团队、整个公司),以及用通俗语言描述的所有问题fix-prompt.md:可直接交给你的编码 Agent 的修复请求findings.json:供工具和仪表板使用的相同检查结果
两种运行方式
| 模式 | 需要安装 | 代码去向 |
|---|---|---|
| 托管(默认) | 仅此软件包 | 将 Git 会提交的源文件打包成 ZIP,通过 HTTPS 发送到 appledger.net,扫描后立即删除。绝不会发送机密文件。每个文件夹首次上传前,你都需要确认 |
本地(--local 或 APPLEDGER_MODE=local) | 还需安装 Trivy、Opengrep 和 Opengrep 规则 | 文件留在你的电脑上。使用连接密钥时,只有摘要会发送到你的仪表板(见下文);--no-dashboard 则连摘要也不会发送 |
托管模式下会上传什么
- 会发送: Git 会提交的文件(
git ls-files,包括未被忽略的新文件)。如果当前目录不在 Git 仓库中,仍会遵守.gitignore。 - 绝不会发送:
.env和.env.*(.env.example、.env.sample、.env.template除外)、*.pem、*.key、*.p12、*.pfx、SSH 密钥、.npmrc、.pypirc、.netrc、*credentials*.json、service-account*.json、secrets.*、cert、certs、secrets、.ssh和.aws文件夹、.claude/settings.local.json、Terraform 状态文件、密码文件、Ansible Vault 文件、Kubernetes/Helm 机密清单、证书及类似文件(完整列表见src/appledger/uploadpolicy.py)。服务器也会再次剔除此类文件,作为第二道安全保障。 - 会跳过: 依赖项、构建产物、媒体、文档和数据文件(CSV、电子表格、幻灯片、SQL、日志、数据转储),以及超过 1 MB 的文件。
如果某个机密文件已提交到 Git 或未被忽略,检查会通过文件名将其报告为问题,但绝不会读取或发送其内容。
无需上传任何内容,即可准确查看哪些内容会被发送、哪些内容会被排除以及原因:
python -m appledger path/to/your-app --list-files
首次托管检查某个文件夹时,系统会要求你确认。在脚本和定时运行中,请传入 --yes。如果代码属于你的雇主或客户,请确认你有权上传,或者使用本地模式。
安装
Claude Code 插件(推荐:提供引导式 check-my-app 技能):
claude plugin marketplace add contentasoftware/appledger
claude plugin install appledger@appledger
在 Claude Code 桌面应用中,也可以在插件设置中添加市场 contentasoftware/appledger。开启新会话,然后询问:“我的应用可以安全分享吗?”或“将这个应用添加到 AppLedger”。
仅安装 MCP 服务(需要 uv):
claude mcp add appledger -- uvx --from appledger appledger-mcp
命令行:
pip install appledger
python -m appledger path/to/your-app
包含故障排查的分步指南:https://appledger.net/docs/
0.2.0 版(上传预览、同意确认、排除机密文件、定时运行)正在发布到 PyPI;在此之前,pip install appledger 会安装 0.1.x。
公司仪表板
在 appledger.net 创建免费账户,将团队成员检查的每个应用都记录在同一份账本中:负责人、等级、评分趋势、可使用该应用的人员,以及构建该应用的 AI 工具。在“Connect a computer”下创建连接密钥,然后将它保存在每台计算机上:
python -m appledger --connect al_your_key
或者告诉 Claude:“用此密钥连接 AppLedger:al_…”。密钥保存在 ~/.appledger/key 中;APPLEDGER_KEY 可覆盖该密钥,--disconnect 会将其移除。
此后,每次检查也会向仪表板保存摘要:应用名称、评分、等级、问题数量、发现的问题列表(级别和简短标题,最多 60 条;绝不包含代码或文件路径),以及所用的扫描器。绝不保存代码。
尚未连接? 从 0.2.3 版本起,没有密钥的计算机进行托管检查后,会显示保存链接,该链接也会显示在 report.html 中:
Save this result to a free AppLedger ledger (link works for 24 hours): https://appledger.net/app/claim.php?t=...
打开链接,创建免费账户或登录,检查结果就会记入账本;随后页面会提供该计算机的密钥。在使用链接之前,服务最多保留 24 小时的检查摘要(应用名称、问题的级别和标题;绝不包含代码)。链接只能使用一次;--no-dashboard 可将其关闭。
你也可以在 Web 应用中点击 Add app 添加应用:无需代码即可注册,或上传 zip 文件并在浏览器中检查(zip 文件会以相同方式扫描并删除)。
定期检查
python -m appledger path/to/your-app --schedule weekly --yes # or daily
python -m appledger --schedules # list
python -m appledger path/to/your-app --schedule off # stop
Windows 上使用 Windows 任务计划程序,macOS 和 Linux 上使用 cron。托管定期检查需要一次性同意,使用 --yes;添加 --local 可改为安排本地检查。--quiet 每次检查只打印一行。
本地模式设置
- Trivy:
winget install AquaSecurity.Trivy(Windows)或brew install trivy(Mac) - Opengrep:从 发布页面 下载并将其放入 PATH
- 规则:
git clone --depth 1 https://github.com/opengrep/opengrep-rules.git ~/.appledger/opengrep-rules - 检查:
python -m appledger --doctor
仓库结构
| 路径 | 内容 |
|---|---|
src/appledger/scanner.py | 扫描器、通俗易懂的翻译、报告和修复请求 |
src/appledger/client.py | 选择要发送的文件(遵循 .gitignore),并将其发送到托管服务 |
src/appledger/uploadpolicy.py | 绝不会上传的机密文件完整列表,供客户端和服务端使用 |
src/appledger/service.py | 服务端:安全解包上传内容并进行扫描 |
src/appledger/server.py | 插件使用的本地 MCP 服务 |
plugin/ | 包含 check-my-app 技能的 Claude Code / Codex 插件 |
tests/mcp_smoke.py | 像 Agent 一样调用每个 MCP 工具 |
许可证
MIT。扫描器使用的 Opengrep 社区规则采用各自的许可证(Commons Clause);在付费服务中使用前请先查看。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。