SuperAPI AI 工具集

review-markdown-comments

写作与研究

查看项目

更新于 10-16 08:29

技能介绍

用途

该技能用于处理 Hubble 评审评论。Hubble 将评审状态以 CriticMarkup 形式存储在 Markdown 文件正文中,本技能可对指定评论进行回复、标记为已解决或重新打开。当用户要求处理某条 Hubble 评审评论时使用。

评论格式

Hubble 使用以下可移植子集在 Markdown 正文中存储评审状态:

{==anchored text==}{>>comment body<<}{#c1}
{++suggested insertion++}
{--suggested deletion--}
{~~original text~>replacement text~~}

评论锚点之后可能跟随一个 HTML 注释,其中包含原始 JSON,用于表示线程状态。该 JSON 不进行 URI 编码;Hubble 直接使用 JSON.parse 解析,因此编码后的负载会解析失败,并在笔记中显示为字面文本:

<!-- hubble-review:{"v":1,"replies":[],"resolved":false}-->

Hubble 使用 v、replies 和 resolved 字段;允许其他顶层键。始终写入 "v": 1。JSON 内部的任何 -- 需转义为 \u002d\u002d,因为字面 -- 会提前终止 HTML 注释。回复的结构如下:

{
  "id": "r1",
  "body": "Agent response",
  "author": "agent",
  "createdAt": "2026-01-01T00:00:00.000Z"
}

行内代码或围栏代码中的评审标记是字面文本,不是评论。

处理评论

读取完整文件。定位请求的紧凑 id,例如 {#c7};如果用户只给出锚定文本,则定位精确的 CriticMarkup 锚点。确认锚定文本和评论正文与用户请求匹配。如果 id 或精确锚点不存在或有歧义,停止并报告歧义。

解析紧跟在逻辑评论之后的 JSON 元数据。如果不存在,从空对象开始。如果格式错误,停止而不是覆盖它。

对元数据进行往返处理:仅修改回复列表和 resolved,然后重新序列化完整对象——其他所有键和现有回复保持不变。回复是仅追加的:使用下一个未使用的 rN id 添加回复,author 为 "agent",包含响应正文,以及当前 UTC 时间作为 ISO-8601 createdAt。

仅当用户请求实际已处理时,才设置 resolved: true。对于明确的重新打开请求,设置 resolved: false。确认、测试、问题和部分工作保持为 false。

将元数据块紧跟在评论的 {#cN} 标记之后写入(参见碎片化锚点)。保持锚定文本逐字节不变,以及评论正文、CriticMarkup 分隔符、建议编辑和所有无关 Markdown 不变。

碎片化锚点

一个逻辑评论 id 可能出现在多个 CriticMarkup 片段中。最后一个片段是权威的:保留每个标记,保留单个元数据块,并将其放在最后一个片段之后——如果它当前位于较早片段之后,则将其移动到那里。如果碎片化可能影响用户的格式,请报告。

验证

编辑后:

重新读取文件,确认请求的 id 和精确锚定文本仍然存在。

解析最后一个片段之后的元数据,验证它是有效的 JSON,新回复是最后一条回复,旧回复和其他键已往返,resolved 具有预期值。确认笔记渲染评论而不是将原始块显示为文本。

检查周围 Markdown 是否有意外更改:对于已跟踪文件,检查 git diff -- <file>;对于忽略/生成的文件,比较前后文本。

报告你留下的回复以及是否解决了评论。