用途
Grounded Citations 用于在答案或文档中为来自外部来源的陈述提供可验证的引用。当回答或产出物依赖于你检索到的信息而非已知信息时使用,包括:研究、比较、新闻摘要、"X 的当前状态是什么";任何写入磁盘并引用、转述或报告外部事实的交付物(报告、简报、文档、幻灯片、wiki 页面);用户希望核查你工作的事实调查;需要归属冲突来源的多来源综合。当检索只是其他任务的附带行为时(如编码中快速查找语法/版本、随意对话、创意写作)可跳过行内引用。
主要能力
- 行内编号引用与 Sources 列表:每条来自外部来源的陈述后紧跟方括号编号,文末生成 Sources 块。
- 账本管理:sources.py 脚本维护 url → [n] 映射,add 操作幂等且 URL 规范化,同一页面在同一账本内始终返回相同编号。
- 证据链与事实核查:可为来源附加逐字引文,引文必须逐字出现在抓取页面文本中(对空白、大小写、markdown 标记不敏感),否则被拒绝;模型知识陈述标记 [unverified];verify --evidence 会让引用来源缺少证据的草稿失败。
- 多平台扫描:可跨开放网络、社区讨论、博客/发布/变更日志、视频、代码、X/Twitter 等来源类型收集并综合,每条陈述归属到其来源平台。
- 验证:verify 命令检查未知编号、Sources 块与账本不一致、引用覆盖率不足等问题。
使用方式
脚本路径:S=~/.hermes/skills/research/grounded-citations/scripts/sources.py
常用命令:
python "$S" reset开始干净账本python "$S" add https://example.com/a --title "A"注册来源并打印编号python "$S" add <url1> <url2> ...一次注册多个python "$S" ingest results.json从 JSON 工具输出注册python "$S" quote <id> --text "exact wording" --from page.txt附加逐字证据python "$S" list [--json]显示账本python "$S" render [--style markdown|plain|footnotes|bibtex|evidence] [--only 1,3]渲染 Sources 块python "$S" render --cited-in draft.md仅渲染草稿引用的来源python "$S" render --replace-in draft.md就地重写草稿的 Sources 块python "$S" verify draft.md [--strict] [--min-coverage 0.6] [--evidence]检查草稿引用
流程:① 任务开始时重置账本(若继续已有编号的草稿则跳过);② 检索时注册每个来源,在写正文前完成;③ 边写边引用,方括号紧跟支持该句的来源,每句最多 3 个编号,只使用账本返回的编号;④ 用 render --cited-in 追加 Sources 块;⑤ 交付前用 verify 验证;⑥ 聊天回答遵循相同步骤。
账本位置:$HERMES_HOME/cache/citations/ledger.json(profile 感知),可用 --ledger <path> 或 HERMES_CITATION_LEDGER 覆盖。
适用场景
- 研究、比较、新闻摘要、状态查询
- 报告、简报、文档、幻灯片、wiki 页面等交付物
- 需要用户核查的事实调查
- 多来源综合与冲突来源归属
- 医疗、法律、金融、安全、争议性声明等高风险工作(升级为证据模式)
限制
- 不覆盖学术 BibTeX 流程;会议论文应使用 arxiv 技能。
- 需要标准工具集,检索来自已配置的 web_search、web_extract、browser_navigate 或 terminal(curl、CLIs)。
- reddit-reading 和 rss-feeds 技能为可选,若缺失需先安装。
- xurl 需要 API 访问。
- 证据引文必须来自抓取的页面文本,不能来自搜索片段。
- 并行子代理需指向同一账本,否则编号会冲突。
- 其他具体收费、价格、平台支持等信息暂未提供。