mcpField
A
argot

argot

本地服务
argot.tmonier.com开发工具518 周前更新

关于 argot

argot 是一个本地运行、不依赖 LLM 的 MCP 服务,通过分析仓库自身的 git 历史来学习代码模式,并检查变更是否偏离这些模式。它面向希望审查 AI 生成代码的团队,区别在于其结论基于统计和仓库证据,由人工决定是否采纳。

主要功能

  1. 01从 git 历史学习仓库模式
  2. 02完全本地运行,无需账号或网络
  3. 03检测外来导入与未知调用
  4. 04提供 12 类规则并支持自定义规则
  5. 05结果附带仓库证据,供人工判断

适用场景

  1. 01审查 AI 生成的拉取请求是否符合仓库风格
  2. 02在 CI 中对变更进行只读检查
  3. 03发现测试被删除或弱化的情况

MCP 相关

argot 以 MCP 服务的形式运行,向已配置的客户端提供只读上下文、代码块级别及完整变更集的检查工具。依赖模型的工具需要先对仓库进行 fit 处理。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"get-tmonier-argot": {
"command": "npx",
"args": [
"-y",
"@tmonier/argot"
]
}
}
}
启动命令npx -y @tmonier/argot

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@tmonier/argot0.2.127

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

argot

检查那些你从未写下的规则。

AI 编写代码。argot 用唯一不会产生幻觉的东西为它保驾护航:你自己的代码库历史。
用统计学,而非第二个大模型。100% 本地运行。它会揭示偏差——是否接受,由你决定。

argot.tmonier.com  ·  文档  ·  实证  ·  研究日志

发布版本 npm 许可证

单个静态链接的 Rust 二进制文件 100% 本地运行,无云端服务,无需账户 支持 12 种语言 在 36 个真实代码库上进行过基准测试

Glama 上的 argot MCP 服务 观看 argot 发布短片
🎬 观看 45 秒发布短片
## 从审计开始

argot audit 无需预先进行 Argot 拟合或配置。它会在临时工作树中拟合历史基线,然后评估保留的基线到 HEAD 净差异。你的工作树不会受到影响。这是一条供审查的提示,并非对代码作者的统计,也不能证明某项发现就是缺陷。

# macOS / Linux
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/get-tmonier/argot/releases/latest/download/argot-installer.sh | sh

cd your-repository
argot audit

Windows:powershell -c "irm https://github.com/get-tmonier/argot/releases/latest/download/argot-installer.ps1 | iex"。 也可以通过 npm install -g @tmonier/argot 安装 npm 软件包。

审计需要可用的 Git 历史记录和受支持的源代码。它不承诺固定的运行时间。 它完全离线运行——语义发现背后的代码嵌入模型随二进制文件一起提供。安装 和拟合详情请参阅入门指南。

如果审计为你提供了有用的线索,请拟合当前仓库,并为你打算审查的更改评分:

argot init
argot check

审查并提交生成的 argot.toml 和 .argot/ 拟合快照,然后在添加 CI 工作流 之前,将其合并到未来 PR 的目标分支。之后,本地工具和 CI 都会使用相同的学习基线。CI 只读取基分支快照, 不会进行拟合,因此,初始快照 PR 必须与 CI 工作流 PR 分开提交。之后,只有在已接受的源代码、 函数或布局范围发生实质性变化时,argot status 才会建议在本地 重新拟合并提交。默认情况下,提交数量和快照年龄不会触发刷新;只有作为团队明确设置的兜底措施时, 才可使用 [fit] refresh-after。 argot-refresh 技能会在拟合前重新审查排除项、结构路径和静音设置, 因此仓库重新组织后不会盲目地重新学习旧范围。

flowchart LR
    A["argot init<br/>learn locally"] --> B["review + commit<br/>argot.toml · .argot/"]
    B --> C["local tools + CI<br/>read one baseline"]
    C --> D{"material accepted drift?"}
    D -- no --> C
    D -- yes --> E["argot-refresh<br/>review scope · fit locally"]
    E --> B

嵌入模型本身随二进制文件一起提供。Git 只会存储特定于仓库的学习快照——通常为几 MB 到几十 MB——因此 每个克隆都可以复现检查,无需重新训练或运行服务。

check 会报告所选变更集中值得审查的模式;结果干净并不能证明更改正确或完全符合惯用做法。请阅读 审计、 初始化与拟合和 检查指南,了解具体约定。

它能发现什么

类型检查器会询问代码能否编译。argot 会询问代码是否属于你的仓库。 即使拉取请求代码干净、类型正确且经过充分审查,也可能与合入它的仓库格格不入。argot 自带以下规则,每一条都是从你自己的历史记录中学得,而非手动配置:

规则分组检查内容
foreign-import风格导入仓库从未使用过的依赖
unfamiliar-callee风格调用仓库代码从未调用过的接收者或被调用方
rare-tokens风格在统计上不符合仓库风格的词元序列
convention风格违反从仓库中学得的惯例的构造
superseded风格仓库正在替换或已声明不再使用的模式
redundant语义新函数与仓库已有函数重复
misplaced语义看起来应属于其他模块领域的函数
layering架构反转仓库分层方向的内部导入
test-deleted完整性删除了测试,但测试所覆盖的代码仍然存在
test-disabled完整性随着生产代码变更添加跳过标记,或大幅删减测试
test-weakened完整性随变更移除断言、使断言成为恒真式或放宽断言
rule-tampered治理移除或弱化锁定规则的变更

仓库还可以在这些规则之上添加自己的规则——在 .argot/rules/ 下放置一个 TOML 清单和一个沙盒化的 Rhai 脚本,可在 examples/rules/ 中找到可直接复制使用的示例。无需重新编译。

argot 是概率性审查护栏,而非正确性判定器。每条发现都会附带仓库证据。请将其视为检查并明确作出人工判断的提示词,绝不能将其视为代码有误的证明。

选择运行方式

CLI 是完整、明确的变更集检查。其他方式的触发条件和覆盖范围更窄;没有任何一种能在验收时提供通用检查。

方式执行类型前置条件和覆盖范围证据状态
CLI由用户或 Agent 调用运行 audit、init 或完整的 check;命令需要时必须先完成拟合。CLI/源代码清单,2026-07-22
Skills调用面向兼容技能宿主的七种按需工作流;安装不会安排命令、配置 MCP 或添加钩子。清单/源代码清单,2026-07-30
MCP被动配置好的客户端选择只读上下文、代码块或完整变更集工具;依赖模型的工具需要已拟合的仓库。拟合仍需通过明确的本地 CLI/技能工作流完成。定向测试和源代码检查,2026-07-30
Claude Code 插件配置后自动运行,同时提供调用/被动功能在已拟合的仓库中,其选择启用的写入前钩子仅会在 Write、Edit 或 MultiEdit 引入外部导入时询问。它绝不会阻止操作,也不是完整检查或回合结束时的检查。清单/源代码检查,2026-07-22
pre-commit用户配置后自动运行在已拟合的仓库中为暂存的受支持文件评分。argot-check 钩子针对发现的问题提供建议;argot-check-gate 可选择启用错误级别退出。清单检查,2026-07-22
GitHub Action用户配置后自动运行在工作流中为配置的 ref/范围评分;需要检出历史记录和发布下载访问权限。fail-on-hits 默认为 false。Action 清单检查,2026-07-22

规范的设置和宿主详情:Claude Code、 其他 Agent 和 MCP,以及 CI 和 pre-commit。

证据与局限

当前公开测量结果针对特定检测器,并非适用于整个产品的准确率或综合简报声明。已批准的声明清单 记录了:

  • 可见外来符号样本:620/637 — 97.3%,涵盖 36 个语料库和 12 种语言;
  • 重造样本:545/584 — 93.3%,涵盖 31 个语料库和 11 种语言;
  • 位置移植样本:12,899/13,456 — 95.9%,涵盖 22 个可评估语料库和 11 种语言 (其余九个语料库因布局中没有可分离的架构而弃权);
  • 分层样本:264/272 — 97.1%,涵盖 25 个语料库和 12 种语言;
  • 测试完整性样本:154/164 — 93.9%,涵盖 23 个语料库和 12 种语言。

如果不考虑误报成本,检出率意义不大,因此两项指标都会公布。在同一批 36 个语料库中,语音检测器会将 0.25% 的普通已接受编辑标记出来;而对于新增文件中的代码块,这一比例为 0.00%。此时仓库最难判断哪些内容才是合适的。

每个数字都有各自的语料库、分母和限定条件。综合简报/噪声结果以及普通仓库的运行时间尚未形成公开测量声明。请参阅 基准测试方法与来源。

Argot 提供适用于 12 种语言的适配器。经过测试的五个发布目标为 macOS arm64/x64、Linux x64/arm64 和 Windows x64。本地分析路径会使用统计、图、脚本和嵌入证据;没有生成式或表达观点的模型会决定检测结果。

模型适配状况很重要。如果仓库历史记录较浅、由生成内容构成、包含供应商代码,或以其他方式不适用,可能无法生成有用的模型。对于完全使用熟悉词汇、经过掩饰的描述以及所选范围之外的代码做出的错误选择,Argot 的可靠性也最低。依赖特定检测器之前,请先阅读 局限。

可复现的编写示例

编写的双提交样本:argot audit --commits 1 在一个新增的 Django 风格导入中报告了一处外来词符序列。此开发版本不提供语义、架构和完整性检测。

这是一个编写的样本,并非真实案例语料库。固定的命令、版本、回执、校验和、重新生成步骤,以及图中 GIF 无法保证逐字节稳定的说明,均记录在 证明回执中。此图是可审计的 Markdown 回执的可复现配套内容。

隐私与开源

Argot 会在本地分析源代码、历史记录和检测结果。个人本地核心版本免费,采用 MIT 开源许可证,且无需账户或云服务。Argot 默认不启用遥测,也不会上传源代码。其执行的分析完全不需要网络——语义检测所用的代码嵌入模型已编译到二进制文件中。不过,Argot 仍可通过网络检查更新/版本、下载发行版,或连接显式配置的审查/更新/CI 集成。设置 ARGOT_OFFLINE=1 可阻止网络访问;不会损失任何分析功能。

请阅读完整的隐私与安全边界、 安全政策和 MIT 许可证。

贡献

欢迎贡献。请先查看 CONTRIBUTING.md,再参阅产品策略了解维护中的决策记录,并查看研究日志了解相关证据。

致谢

argot 发布的每项数据,都是基于 36 个开源项目的真实历史记录,在支持的 12 种语言中进行测量的——fastapi、rich、 faker、saleor、wagtail、scrapy、hono、ink、faker-js、excalidraw、outline、 express、commander、eslint、gh-cli、hugo、ripgrep、bat、guava、junit5、 powershell、jellyfin、redis、curl、rocksdb、fmt、homebrew、rubocop、laravel、 composer、castle-engine、mORMot2、uos、ideU、MSEide/MSEgui 和 dagster。

没有这些项目,就不会有这项基准测试。我们衷心感谢它们的维护者和贡献者。Argot 不会打包或重新分发这些项目的任何代码:测试框架会在固定的 SHA 上克隆每个仓库,在本地读取其历史记录,且不会随其分发任何内容。每个项目仍受其自身许可证约束,版权归其作者所有。完整列表及链接,以及 argot 提交的内容,请见: benchmarks/README.md。

argot 确实会重新分发一项内容。redundant 和 misplaced 背后的模型,是通过 model2vec 技术(MinishLab,MIT)从 jina-embeddings-v2-base-code (Jina AI,Apache-2.0)蒸馏而来的、含 15.6M 个参数的静态表。其权重已编译进二进制文件,并依据 Apache-2.0 许可证重新分发; 完整条款请见 NOTICE。argot 与这两个项目均无关联。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。