knowledge-vault/discussions/technology/Codex/4.Skills/修复引用.md

156 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 1
我想增加一个新skill用于修复markdown中的引用错误。名字你建议一个。
我导出的Deep Research报告转成markdown后引用全部不正确需要转换为正确的引用格式。
同时把引用放到文档底部。
比如:`citeturn34view0turn34view3turn20search2turn34view6`
在导出元数据里对应的是:
```md
[湖北省卫健委通报](https://wjw.hubei.gov.cn/bmdt/dtyw/201912/t20191231_1822343.shtml)
[新华社郑州暴雨报道](https://www.xinhuanet.com/2021-07/20/c_1127676145.htm)
[新华社/News.cn MU5735报道](https://www.news.cn/2022-03/22/c_1128490813.htm)
[新华社唐山打人事件报道](https://www.xinhuanet.com/politics/2022-06/12/c_1128734449.htm)
```
希望:
```md
正文:删除所有
文末:保留按案例整理的参考资料链接
必要位置:加标准脚注,如 [^1]
```
标准 Markdown 可以写成:
```md
武汉早期疫情通报中,官方表述强调“未发现明显人传人现象”。[^1]
[^1]: 湖北省卫健委《武汉市卫健委关于当前我市肺炎疫情的情况通报》2019-12-31。https://wjw.hubei.gov.cn/bmdt/dtyw/201912/t20191231_1822343.shtml
```
用于测试的文档位置`C:\Users\wangq\Documents\Codex\knowledge-vault\sources\deep-research\中国官方媒体研究\中国官方媒体公共危机报道的比较研究.md`
---
对此有什么问题,请提出。
这是它再次的问题:
```
收到,主逻辑按 turnXXviewY / turnXXsearchY 精确映射,顺序匹配只作为降级 fallback。这个约束会直接写进 Skill 的安全规则
和脚本行为里。
• 下一个关键问题:导出元数据在什么位置、以什么格式提供?
我需要确认脚本接口应该支持哪一种主路径:
1. 元数据就在同一个 Markdown 文件里,比如文末包含 JSON / YAML / HTML 注释块。
2. 元数据是旁边的独立文件,比如 report.md + report.metadata.json。
3. 元数据需要从 ChatGPT/Deep Research 导出的完整 JSON 中读取,而 Markdown 只是正文。
4. 以上都可能,需要脚本支持 --metadata <path>,找不到时再尝试从 Markdown 内嵌块解析。
我的倾向是第 4 种repair-markdown-citations.py report.md --metadata export.json --in-place同时保留自动探测同 名 .json 的能力。这样长期最稳。
```
我的问题:
为什么需要元数据?这个元数据是每个文档都不一样,和文末增加的引用有什么区别?
我放到同一个文件里不行么?
我理解的,最后生成脚注,文末增加一个引用的章节不能解决么?
---
## 我的理解
修复引用的最终目标,确实是把正文里的 ChatGPT citation token 转换为 Markdown 脚注,并在文末生成“参考资料”章节。
但“文末参考资料”本身不能替代元数据,因为它只提供全局来源列表,不能可靠说明正文中每一个 token 对应哪些 URL。citation token 里的 turn34view0 / turn20search2 只是本次导出内部引用 ID必须依赖本篇报告自己的 metadata / content_references / search_result_groups 才能解码。
所以脚本设计应支持两种输入形态:
1. report.md + report.metadata.json
2. report.md 内嵌 metadata 或 citation map。
优先策略是:
- 如果提供 --metadata <path>,优先从独立 JSON 读取;
- 如果没有提供,则尝试从 Markdown 内部的 HTML 注释块或 fenced json 块中读取;
- 如果仍然找不到元数据,只能降级为:
A. 删除 citation token
B. 把所有文末来源作为普通参考资料保留;
C. 标记“无法恢复逐句脚注映射”,不要假装已经精确修复。
最终输出可以是一个清洗后的 Markdown 文件:
- 正文中的 被替换为 [^1][^2]
- 文末生成去重后的 `## 参考资料`
- 可选保留原始 metadata 到隐藏注释块,方便以后重新修复。
## 我建议这个 Skill 的能力分三级
**Level 1无元数据清洗**
只能做:
```
删除乱码 citation token
保留/整理文末已有 URL
提示“无法恢复逐句引用”
```
这是保底方案。
**Level 2有 content\_references 元数据**
可以做:
```
把每一个 citation token 精确替换成 Markdown 脚注
生成去重参考资料
保留正文引用位置
```
这是核心方案。
**Level 3有完整 Deep Research 导出 JSON**
可以做得更好:
```
补标题、来源域名、发布日期、snippet
按案例 / 来源类型分组
生成 source map
检查悬空引用、重复引用、断链风险
```
这才是长期 Skill 的理想状态。
# 2
我先确认一下用的是skills-vault统一的conda环境么
现在能否对`C:\Users\wangq\Documents\Codex\knowledge-vault\sources\deep-research\中国官方媒体研究\中国官方媒体公共危机报道的比较研究.md`做个测试?
# 3
Level 2做不了我也不知道在哪里。现在这个就够我用了。
skills-vault 的 要求里python代码统一使用`skills-vault`这个conda除非确实存在依赖冲突。
1. 你检查一下,为什么看到这个规则,规则哪里不明确还是阅读遗漏
2. 现在需要补一下`skills-vault`环境相关的文件,比如安装说明之类的
3. 现在`.agent/skills`是否实装了没实装需要实装我使用这个技能是在VS Code的Copilot下就像用fix-tilte一样。