关于 cite-gate
cite-gate 用于检查 AI 辅助撰写的脚本,验证引文是否出自源文本,并标记缺少引文支持的数字和复制措辞。它面向需要重复执行引文核验的作者和 Agent,但不判断主张或来源是否属实。
主要功能
- 01将引文与源文本核对
- 02检查引文是否包含文中数字
- 03标记可能缺乏来源的人名和数量
- 04检测复制来源措辞的情况
- 05通过命令行或 GitHub Actions 运行
- 06配置引文长度和时代规则
适用场景
- 01审查 AI 撰写脚本中的引文
- 02发布前发现无引文支持的数字
- 03检查草稿是否复制来源措辞
- 04在仓库每次变更时执行引文检查
MCP 相关
本地 stdio MCP 服务为 Agent 提供引文和数字检查。托管的 Streamable HTTP 端点提供相同的两种工具。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.mlpc.co.kr/mcpclaude mcp add --transport http kr-co-mlpc-cite-gate https://mcp.mlpc.co.kr/mcp{"mcpServers":{"kr-co-mlpc-cite-gate":{"type":"http","url":"https://mcp.mlpc.co.kr/mcp"}}}在 Cursor 中打开{"servers":{"kr-co-mlpc-cite-gate":{"type":"http","url":"https://mcp.mlpc.co.kr/mcp"}}}在 VS Code 中打开{"mcpServers":{"kr-co-mlpc-cite-gate":{"type":"http","url":"https://mcp.mlpc.co.kr/mcp"}}}{"mcpServers":{"kr-co-mlpc-cite-gate":{"serverUrl":"https://mcp.mlpc.co.kr/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
2| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| claims | object | 是 | {"config": {...}, "sections": [{"title": str, "items": [{"id": str, "text": str, "claims": [{"src": str, "quote": str}]}]}]} |
| sources | object | 是 | 源 ID 到完整源文本的映射。 |
详细介绍
cite-gate
一个用于检查 AI 辅助编写脚本的小工具。它要求脚本中的每项事实都附带一条逐字出现在源文件中的引文,并标记那些照抄来源而非转述的文字。
它不会判断某项说法是否属实。它会判断你能否指出说法所依据的句子,以及该句子是否确实存在。
$ python -m cite_gate check examples/gettysburg/claims.json
5 items · 91 words · 2 failures · 1 warnings
FAIL [number-not-in-quote] number(s) ['1776', '87'] not in the quotes
FAIL [quote-not-in-source] quote not found in 'gettysburg': 'this nation shall endure forever and ever'
warn [copied-not-retold] 26 consecutive words shared with the quotes; retell, don't copy
这个示例故意无法通过:最后三项是语言模型常犯的错误(自行推算出的数字、只记得一半的引文,以及从来源中直接摘录的段落)。
为什么
语言模型擅长写出流畅且细节十足的文字,但出错的往往是一些小细节:年份差了一年、为了“提供背景”而添加的名字,或是把引文转述成来源中从未说过的话。手动将整篇脚本与来源逐一核对,无法扩展到更大规模。这个工具将核对过程变成一道检查关卡,可在每次更改时运行。
检查内容
| 检查项 | 结果 |
|---|---|
| 每条引文都存在于其源文件中(统一处理弯引号、破折号和空格) | 失败 |
| 每条引文至少有 20 个字符 | 失败 |
正文中的每个数字都出现在该条目的引文中(1,000 = 1000) | 失败 |
| 来源 ID 只能是纯名称(不能包含路径) | 失败 |
| 正文中出现“hundred / thousand / million”,但引文中没有 | 警告 |
| 句中出现引文中没有的大写单词(可能是未标明来源的名称) | 警告 |
| 与引文连续重复 11 个或更多单词(属于照抄而非转述) | 警告 |
| 可选的时代规则:正文提到某个时代,但引文未将该条目与该时代关联;引文中没有出现正文中的月份名称或“X era”短语;正文中出现特殊字母 | 警告 / 失败 |
存在失败项时,退出代码为 1。使用 --strict 时,警告也会导致失败。
输入格式
一个声明文件(JSON)和一个纯文本来源文件夹,每个来源 ID 对应一个文件。
{
"config": {"allow": ["Lincoln"], "copy_run": 11},
"sections": [
{"title": "The occasion",
"items": [
{"id": "opening",
"text": "He began by looking back four score and seven years ...",
"claims": [{"src": "gettysburg",
"quote": "Four score and seven years ago our fathers brought forth on this continent, a new nation"}]}
]}
]
}
sources/gettysburg.txt 保存来源文本。请为每个来源保留一份副本(并在顶部注明 URL 和修订版本),这样后续运行时就能对照相同的文本进行检查。
配置
| 键 | 默认值 | 含义 |
|---|---|---|
allow | [] | 无需引文即可接受的名称(例如脚本的主题) |
copy_run | 11 | 判定为照抄所需的连续重复单词数 |
min_quote_chars | 20 | 可接受引文的最短长度 |
fold_accents | false | 将正文中的 Tokaido 与来源中的 Tōkaidō 进行匹配 |
era | null | {"name": "Victorian", "tie": "\\b18[3-9]\\d\\b", "months": true, "letters": ""} |
使用
命令行(Python 3.10+,无依赖项):
pip install . # from a checkout; adds the `cite-gate` command
cite-gate check path/to/claims.json [--sources DIR] [--json] [--strict]
# or without installing
python -m cite_gate check path/to/claims.json
GitHub Actions:
- uses: actions/checkout@v4
- uses: cite-gate/cite-gate@v0
with:
claims: script/claims.json
strict: "false"
通过你的 Agent 使用(MCP)
cite-gate 内置了一个小型 Model Context Protocol 服务,因此 Agent 可以在向你展示草稿前先检查自己的草稿。它通过 stdio 在本地运行,没有依赖项,不会进行网络调用,也不会收集遥测数据。
{
"mcpServers": {
"cite-gate": { "command": "python", "args": ["-m", "cite_gate.mcp_server"],
"cwd": "/path/to/cite-gate" }
}
}
工具:
| 工具 | 输入 | 输出 |
|---|---|---|
check_citations | claims(上述格式)和 sources({id: full text}) | 失败项、警告、passed |
check_numbers | text 和 quotes | 文本中没有任何引文包含的数字 |
此外还有一个托管端点:https://mcp.mlpc.co.kr/mcp(MCP Streamable HTTP,提供相同的两个工具,每次调用最多处理 3,000 个字符的正文)。它不会存储你的文本;它会记录的内容列在 worker/README.md 中。如需零日志,请使用上方的本地服务。
托管版本或审核服务对你有帮助吗?欢迎在讨论区告诉我们。
限制
- 这些启发式规则针对英文文本进行了调优。
- 存在引文并不代表其内容正确。来源可能有误,某条内容也可能引用了真实存在但表达了其他意思的句子。此门禁可以缩小审查范围,但不能取代审查。
- 专有名词和数量检查可能产生误报,因此仅发出警告。请修复问题,或将名称添加到
allow中;不要习惯性地忽略这些警告。
示例文本
examples/gettysburg/sources/gettysburg.txt 是葛底斯堡演说(1863 年),属于公有领域,此处根据布利斯抄本转录而成。林肯的手稿副本之间存在细微的措辞差异;检查器仅与此文件进行比对。
许可证
AGPL-3.0-or-later。版权所有 (C) 2026 MLPC Inc.(参见 LICENSE)。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。