reweaveSkill reweave

这是一个用于更新旧笔记以包含新连接的技能,通过重新审视和整合现有知识,保持知识体系的活力和相关性。关键词包括:笔记更新、知识整合、连接增强。

NLP 0 次安装 3 次浏览 更新于 2/28/2026

运行时配置(第0步 — 任何处理之前)

阅读这些文件以配置特定领域的操作行为:

  1. ops/derivation-manifest.md — 词汇映射,平台提示

    • 使用 vocabulary.notes 表示笔记文件夹名称
    • 使用 vocabulary.note / vocabulary.note_plural 表示笔记类型引用
    • 使用 vocabulary.reweave 表示输出中的过程动词
    • 使用 vocabulary.topic_map / vocabulary.topic_map_plural 表示MOC引用
    • 使用 vocabulary.cmd_verify 表示下一阶段建议
  2. ops/config.yaml — 处理深度,管道链

    • processing.depth: deep | standard | quick
    • processing.chaining: manual | suggested | automatic
    • processing.reweave.scope: related | broad | full

如果这些文件不存在,则使用通用默认值。

处理深度适应:

深度 Reweave行为
deep 完全重新考虑。广泛搜索更新相关的{vocabulary.note_plural}。考虑拆分,重写,挑战。评估声明锐化。多次搜索。
standard 平衡审查。搜索语义邻居和同一{vocabulary.topic_map} {vocabulary.note_plural}。添加连接,如需要则锐化。
quick 最小向后传递。只添加明显的连接。不重写或拆分。

Reweave范围:

范围 行为
related 搜索与目标直接相关的{vocabulary.note_plural}(同一{vocabulary.topic_map},语义邻居)
broad 在所有{vocabulary.topic_map_plural}和语义空间中搜索潜在连接
full 完整回顾,包括潜在拆分,重写和声明挑战

立即执行

目标:$ARGUMENTS

立即解析:

  • 如果目标包含 [[note name]] 或笔记名称:重新编织该特定{vocabulary.note}
  • 如果目标包含 --handoff:在最后输出RALPH HANDOFF块
  • 如果目标为空:找到最需要重新编织的{vocabulary.note_plural}(最旧的,最稀疏的,最过时的)
  • 如果目标是 “recent” 或 “–since Nd”: 重新编织N天内未触及的{vocabulary.note_plural}
  • 如果目标是 “sparse”: 查找连接最少的{vocabulary.note_plural}

执行这些步骤:

  1. 完全阅读目标{vocabulary.note} — 理解其当前声明,连接和年龄
  2. 问重新编织问题: “如果今天我写这个{vocabulary.note},用我现在知道的一切,会有什么不同?”
  3. 如果任务文件存在(管道执行):阅读它,看看/reflect发现了什么。任务文件的Reflect部分显示哪些连接刚刚被添加,哪些{vocabulary.topic_map_plural}被更新 — 这是你向后传递的起始上下文。
  4. 搜索更新相关的{vocabulary.note_plural} — 使用双重发现(语义搜索 + {vocabulary.topic_map}浏览)找到创建在目标之后的{vocabulary.note_plural},应该连接
  5. 评估需要改变的内容:
    • 添加连接到更新的{vocabulary.note_plural},当这个被写时不存在
    • 如果理解已经发展,锐化声明
    • 如果{vocabulary.note}现在涵盖了应该分开的想法,考虑拆分
    • 如果新证据与之矛盾,挑战声明
    • 如果理解更深了,重写散文
  6. 进行更改 — 编辑{vocabulary.note},添加新连接(内联链接和上下文),改进散文,如果需要,锐化声明
  7. 更新{vocabulary.topic_map_plural} — 如果{vocabulary.note}的主题成员资格改变,更新相关{vocabulary.topic_map_plural}
  8. 如果任务文件存在: 更新{vocabulary.reweave}部分
  9. 报告 — 结构化摘要,说明什么改变了,为什么
  10. 如果在目标中 --handoff:输出RALPH HANDOFF块

现在开始。 以下参考解释方法 — 用于指导,不作为输出。


重新编织

用你今天知道的一切重新审视旧的{vocabulary.note_plural}。{vocabulary.note_plural}是活文档 — 它们成长,被重写,分开,锐化它们的声明。这是保持网络活跃的向后传递。

哲学

{vocabulary.note_plural}是活文档,不是完成品。

上个月写的{vocabulary.note}是带着上个月的理解写的。从那时起:

  • 新的{vocabulary.note_plural}存在,与之相关
  • 对主题的理解加深了
  • 声明可能需要锐化或挑战
  • 曾经是一个想法,现在可能是三个
  • 当时不明显的连接现在变得明显

重新编织不仅仅是 “添加向后链接。” 它是根据当前知识完全重新考虑{vocabulary.note}。问:“如果我今天写这个{vocabulary.note},会有什么不同?”

“你昨天写的{vocabulary.note}是一个假设。今天的知识是测试。”

重新编织可以做什么

动作 何时做
添加连接 新的{vocabulary.note_plural}存在,应该在这里链接
重写内容 理解发展了,散文应该反映它
锐化声明 标题太模糊,没有用
拆分{vocabulary.note} 多个声明捆绑在一起
挑战声明 新证据与原始的相矛盾
改进描述 更好的框架出现了
更新例子 现在有更好的插图存在

重新编织不仅仅是/reflect的第4阶段向后应用。它是完全重新考虑。

调用模式

/reweave [[note]]

根据当前知识,完全重新考虑特定的{vocabulary.note}。

/reweave (无参数)

扫描需要重新编织的候选者,呈现排名列表。

/reweave --sparse

处理/health标记为稀疏的{vocabulary.note_plural}。

/reweave --since Nd

重新编织所有N天内未更新的{vocabulary.note_plural}。

如何找到候选者:

# Find notes not modified in 30 days
find {vocabulary.notes}/ -name "*.md" -mtime +30 -type f

/reweave --handoff [[note]]

外部循环模式/ralph:

  • 正常执行完整工作流程
  • 最后,输出结构化的RALPH HANDOFF块
  • 用于每个任务以新鲜上下文运行孤立阶段时

工作流程

第1阶段:理解{vocabulary.note}的现状

完全阅读目标{vocabulary.note}。理解:

  • 它提出了什么声明?
  • 什么理由支持声明?
  • 它有什么连接?
  • 它是什么时候写的/最后修改的?
  • 创建时的上下文是什么?

如果存在任务文件(管道执行)。任务文件的Reflect部分显示:

  • /reflect刚刚添加了哪些连接
  • 哪些{vocabulary.topic_map_plural}被更新了
  • 哪些综合机会被标记
  • 发现追踪看起来如何

这种上下文防止了冗余工作 — 你知道/reflect已经找到了什么,所以你可以把重点放在它错过的或需要更深入考虑的事情上。

第2阶段:收集当前知识(双重发现)

使用与/reflect相同的双重发现模式 — {vocabulary.topic_map}探索和平行的语义搜索。

路径1:{vocabulary.topic_map}探索 — 策划导航

从{vocabulary.note}的主题页脚,确定它属于哪些{vocabulary.topic_map}(s):

  • 阅读相关的{vocabulary.topic_map}(s)
  • 有什么综合可能影响这个{vocabulary.note}?
  • 核心思想中的更新{vocabulary.note_plural}应该引用这个{vocabulary.note}吗?
  • 这个{vocabulary.note}涉及哪些紧张关系?

路径2:语义搜索 — 找到{vocabulary.topic_map_plural}可能遗漏的东西

语义搜索的三级后备:

第1级 — MCP工具(首选): 使用 mcp__qmd__deep_search(混合搜索,带有扩展 + 重新排名):

  • 查询:“[{vocabulary.note}的核心概念和机制]”
  • 限制:15

第2级 — bash qmd带锁定序列化: 如果MCP工具失败或不可用:

LOCKDIR="ops/queue/.locks/qmd.lock"
while ! mkdir "$LOCKDIR" 2>/dev/null; do sleep 2; done
qmd query "[note's core concepts]" --collection {vocabulary.notes_collection} --limit 15 2>/dev/null
rm -rf "$LOCKDIR"

锁定防止多个并行工作器同时加载大型模型。

第3级 — 仅grep: 如果MCP和bash都失败,记录"qmd不可用,仅grep发现"并依赖{vocabulary.topic_map} + 关键词搜索。这降低了质量,但不阻碍工作。

通过相关性评估结果 — 阅读任何标题或片段表明真正连接的结果。

还检查:

  • 回链接 — 什么{vocabulary.note_plural}已经引用这个?它们是否建议目标应该引用回来?
grep -rl '\[\[target note title\]\]' {vocabulary.notes}/ --include="*.md"

关键问题: 我今天知道什么,当我写这个{vocabulary.note}时,我还不知道?

第3阶段:评估声明

原始声明仍然有效吗?

发现 动作
声明有效,证据加强 添加支持连接
声明有效但框架薄弱 重写以清晰
声明太模糊 锐化以更具体
声明太宽泛 分拆成专注的{vocabulary.note_plural}
声明部分错误 用细微差别修订
声明被反驳 标记紧张,提出修订

锐化测试:

阅读标题。问:有人能不同意这个具体的声明吗?

  • 如果是,声明足够锐利
  • 如果不是,它太模糊了,需要锐化

示例:

  • 模糊:“上下文很重要”(谁会不同意?)
  • 锐利:“显式上下文比自动记忆更重要”(可争论的立场)

拆分测试:

这个{vocabulary.note}是否提出了多个可以独立存在的声明?

  • 如果{vocabulary.note}连接到5个以上不同领域的主题,它可能需要拆分
  • 如果你想链接到它的部分而不是全部,它是拆分候选者

第4阶段:评估连接

向后连接(这个{vocabulary.note}应该引用什么):

对于每个更新的{vocabulary.note},问:

  • 它扩展了这个{vocabulary.note}的论点吗?
  • 它提供证据或例子吗?
  • 它共享机制吗?
  • 它创造了值得承认的紧张关系吗?
  • 引用它是否加强了推理?

向前连接(应该引用这个的):

检查更新的{vocabulary.note_plural},它们应该在这里链接但没有:

  • 它们是否提出了依赖这个声明的论点?
  • 跟随这个链接是否会提供有用的上下文?

代理遍历检查(适用于所有连接):

问:“如果代理在遍历期间遵循这个链接,它能够实现什么决策或理解?”

连接存在是为了服务代理导航。添加一个链接,因为内容是"相关"的,而没有操作价值,会创造噪音。每个向后或向前的连接都应该回答:

  • 这是否帮助代理理解为什么某事有效?
  • 这是否帮助代理决定如何实施某事?
  • 这是否浮现了代理应该考虑的紧张关系?

拒绝那些只是"有趣"而没有代理效用的连接。

表述要求:

每个新连接都必须表述为什么:

  • “通过添加时间维度扩展了这个”
  • “提供支持这个声明的证据”
  • “与这个相矛盾 — 需要解决”

永远不要:“相关"或"另见”

第5阶段:应用更改

对于管道执行(–handoff模式): 直接应用更改。管道需要在没有等待批准的情况下继续。

对于交互执行(无–handoff): 首先提出重新编织建议,然后批准后应用。

重新编织建议格式(仅限交互):

## 重新编织建议:[[target note]]

**上次修改:** YYYY-MM-DD
**评估的当前知识:** N更新的{vocabulary.note_plural},M回链接

### 声明评估

[声明是否成立?需要锐化?拆分?修订?]

### 建议更改

**1. [更改类型]:[描述]**

当前:
> [现有文本]

建议:
> [新文本]

理由:[为什么这个更改]

**2. [更改类型]:[描述]**
...

### 要添加的连接

- [[更新的笔记A]] — [关系]:[具体原因]
- [[更新的笔记B]] — [关系]:[具体原因]

### 要验证的连接(其他{vocabulary.note_plural}应该在这里链接)

- [[笔记X]]可能因为...而从引用这个中受益

### 不更改

- [考虑过但拒绝的内容,以及为什么]

---

应用这些更改?(是/否/修改)

应用更改时:

  1. 原子地进行更改
  2. 保留现有有效内容
  3. 保持散文流程 — 新链接应该自然地内联阅读
  4. 验证所有链接目标存在
  5. 如果声明改变,更新描述

五种重新编织动作

1. 添加连接

最简单的动作。存在应该被引用的更新的{vocabulary.note_plural}。

内联连接(首选):

# before
约束从捕获转移到策展。

# after
约束从捕获转移到策展,并且由于[[吞吐量比积累更重要]],问题变成了谁来选择。

页脚连接:

相关笔记:
  - "[[newer note]] — 通过添加时间维度扩展了这个"

2. 重写内容

理解发展了。散文应该反映当前思考,而不是历史思考。

何时重写:

  • 理由现在更清晰
  • 更好的例子存在
  • 措辞尴尬
  • 遗漏了重要细微差别

如何重写:

  • 保留核心声明(除非挑战它)
  • 改善通往结论的路径
  • 将新连接作为散文整合
  • 保持{vocabulary.note}的声音

3. 锐化声明

模糊的声明无法建立。锐化意味着使声明更具体和可争论。

锐化模式:

模糊 锐利
“X很重要” “X之所以重要是因为Y,它使Z成为可能”
“考虑做X” “X在[条件]下有效,因为[机制]”
“有权衡” “[具体权衡]:获得X需要付出Y”

锐化时,还更新:

  • 标题(如果声明改变) — 如果有重命名脚本,使用它。否则手动重命名,并更新所有维基链接。
  • 描述(必须与新声明匹配)
  • 正文(理由必须支持锐化的声明)

4. 分拆{vocabulary.note}

随着时间的推移,一个{vocabulary.note}变成了多个想法。拆分创造了专注,可组合的片段。

拆分指标:

  • 连接到5个以上不同领域的主题
  • 提出多个不同的声明
  • 你想链接到它的部分而不是全部
  • 不同的部分可以独立引用

拆分过程:

  1. 确定不同的声明
  2. 为每个声明创建新的{vocabulary.note_plural}
  3. 每个新{vocabulary.note}获得:
    • 专注的标题(声明)
    • 自己的描述
    • 相关内容的相关子集
    • 适当的连接
  4. 原始{vocabulary.note}要么:
    • 成为链接到拆分的综合
    • 如果拆分完全取代它,则被归档
    • 保留一个声明,并链接到其他声明

拆分示例:

原始:“知识系统需要结构和灵活性”

拆分:

  • [[结构使大规模检索成为可能]]
  • [[灵活性允许有机增长]]
  • [[结构和灵活性创造紧张]](链接到两者)

何时不拆分:

  • {vocabulary.note}确实是关于一件事,触及许多领域
  • 连接都是相同关系的变化
  • 拆分会创造出太薄而无法独立站立的{vocabulary.note_plural}

5. 挑战声明

新证据与原始的相矛盾。不要默默地"修复" — 承认演变。

挑战模式:

# 如果部分错误
原来的洞察是[X]。然而,[[更新的证据]]表明[Y]。经过提炼的声明是[Z]。

# 如果存在紧张关系
这个论点是[X]。但[[反驳笔记]]争论[Y]。紧张关系仍然没有解决 — 可能[X]适用于上下文A,而[Y]适用于上下文B。

# 如果大错特错
这个笔记最初声称[X]。基于[[证据]],声明被修正:[新声明]。

总是记录挑战: 当声明被挑战或修订时,这是一个重大事件。在任务文件的重新编织部分记录原始声明,新证据和修订后的立场。


丰富触发动作

当处理通过丰富管道传输的{vocabulary.note}时,检查任务文件中的post_enrich_action信号。这些由/enrich提出,需要执行:

title-sharpen

丰富阶段确定{vocabulary.note}的标题在内容整合后太模糊。

  1. 阅读post_enrich_detail,了解推荐的新标题
  2. 评估:建议的标题真的更好吗?(声明更锐利,更具体,仍然可以作为散文组合)
  3. 如果是,并且存在重命名脚本:使用它来重命名。否则手动重命名,并更新所有维基链接。
  4. 更新{vocabulary.note}的描述以匹配新标题
  5. 在任务文件重新编织部分记录重命名

split-recommended

丰富阶段确定{vocabulary.note}现在涵盖了多个不同的声明。

  1. 阅读post_enrich_detail,了解拆分建议
  2. 评估:拆分真的能改善Vault吗?(每个片段必须独立站立)
  3. 如果是:
    • 为每个拆分声明创建新的{vocabulary.note}文件
    • 从原始移动相关内容到拆分
    • 更新原始以链接到拆分或保留一个声明
    • 为新{vocabulary.note_plural}创建队列条目,从连接阶段开始
  4. 在任务文件重新编织部分记录拆分

merge-candidate

丰富阶段确定这个{vocabulary.note}与另一个有大量重叠。

不要自动合并或自动删除。 这需要人类判断。

  1. 在任务文件重新编织部分记录合并建议
  2. 记录哪些{vocabulary.note_plural}重叠以及为什么
  3. 最终报告为人类审查而浮现

质量门

门1:表述测试

每次更改都必须能够表述。“我添加这个是因为…”,具体原因。

门2:改进测试

更改后,{vocabulary.note}是否更好?更有用?连接更多?更准确?

如果你不能自信地说是,不要做更改。

门3:连贯性测试

更改后,{vocabulary.note}是否仍然作为一个专注的片段连贯?或者你不小心让它更宽泛了?

门4:网络测试

更改是否改善了网络?更多的遍历路径?更好的路径?

门5:何时不更改

  • {vocabulary.note}准确,连接良好,且最近 — 让它保持原样
  • "改进"只是美容重写 — 不要搅动
  • {vocabulary.note}是历史记录 — 这些通过状态变化发展,而不是重写

输出格式

## 重新编织完成:[[target note]]

### 应用的更改

| 类型 | 描述 |
|------|-------------|
| connection | 添加了[[note A]]内联,[[note B]]页脚 |
| rewrite | 在第2段中澄清了理由 |
| sharpen | 标题未变,描述已更新 |

### 声明状态

[未改变 | 锐化 | 分裂 | 挑战]

### 网络效应

- 外出链接:3 -> 5
- 这个{vocabulary.note}现在连接[[领域A]]和[[领域B]]

### 级联建议

- [[相关笔记]]可能从重新编织中受益(类似年代)
- {vocabulary.topic_map} [[主题]]应该更新以反映变化

### 观察

[未来洞察模式,见解]

成功看起来像什么

成功的重新编织:

  • {vocabulary.note}反映了当前的理解,而不是历史的理解
  • 声明足够锐利,可以不同意
  • 连接存在于相关的新内容中
  • {vocabulary.note}在网络中积极参与
  • 今天有人读它,得到最好的版本

测试:如果这个{vocabulary.note}今天用你知道的一切写,会有意义地不同吗? 如果是,而你没有改变它,重新编织失败了。


临界约束

永远不要:

  • 在不承认演变的情况下默默改变声明
  • 将{vocabulary.note_plural}拆分成太薄而无法独立站立的部分
  • 不表述原因就添加连接
  • 重写声音/风格(保持{vocabulary.note}的角色)
  • 在交互模式下未经批准就进行更改
  • 创建指向不存在文件的维基链接

总是:

  • 在编辑前提出建议(交互模式)
  • 解释每次更改的理由
  • 保留仍然有效的内容
  • 记录重大声明变化
  • 验证链接目标存在

网络通过演变而活

昨天写的{vocabulary.note_plural}不知道今天。用旧理解写的{vocabulary.note_plural}不反映新理解。没有重新编织,Vault变成了一个有组织的过时思想的墓地。

重新编织是知识保持活力的方式。不仅仅是连接,还有质疑,锐化,拆分,重写。每个{vocabulary.note}都是一个假设。每次重新编织都是一个测试。

网络通过演变而复合,不仅仅是积累。


交接模式(–handoff标志)

当用--handoff调用时,在会话结束时输出此结构化格式。这使得外部循环(/ralph)能够解析结果并更新任务队列。

检测: 检查$ARGUMENTS是否包含--handoff。如果是,完成正常工作流程后附加此块。

交接格式:

=== RALPH HANDOFF: {vocabulary.reweave} ===
目标:[[target note]]

完成的工作:
- 更新了N个旧{vocabulary.note_plural}:
- 声明状态:未改变 | 锐化 | 挑战 | 分裂
- 网络效应:M条新的遍历路径

修改的文件:
- {vocabulary.notes}/[older note 1].md(添加了内联链接)
- {vocabulary.notes}/[older note 2].md(添加了页脚连接)
- [任务文件路径]({vocabulary.reweave}部分)

学习:
- [Friction]: [description] | NONE
- [Surprise]: [description] | NONE
- [Methodology]: [description] | NONE
- [Process gap]: [description] | NONE

队列更新:
- 推进阶段:{vocabulary.reweave} -> {vocabulary.verify}
=== END HANDOFF ===

任务文件更新(通过ralph循环调用)

当通过/ralph循环以--handoff模式运行时,提示包括任务文件路径。完成工作流程后,更新任务文件的## {vocabulary.reweave}部分,包括:

  • 更新的旧{vocabulary.note_plural}及原因
  • 声明状态(未改变/锐化/挑战/分裂)
  • 网络效应摘要

关键: 交接块是输出,不是工作流程的替代。首先完成完整的重新编织工作流程,更新任务文件,然后格式化结果为交接。

队列更新(交互执行)

当以交互方式运行(不是通过/ralph)时,你必须在队列中推进阶段。/ralph自动处理这个,但交互会话不。

完成工作流程后,推进阶段:

# 获取时间戳
TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")

# 推进阶段(当前阶段 -> 下一个,添加到已完成阶段)
# NEXT_PHASE是在phase_order之后的阶段(即,验证)
jq '(.tasks[] | select(.id=="TASK_ID")).current_phase = "{vocabulary.verify}" |
    (.tasks[] | select(.id=="TASK_ID")).completed_phases += ["{vocabulary.reweave}"]' \
    ops/queue/queue.json > tmp.json && mv tmp.json ops/queue/queue.json

交接块的"队列更新"部分不仅仅是输出 — 它是你自己的待办事项列表,当以交互方式运行时。

管道链

重新编织完成后,根据ops/config.yaml管道.chaining模式输出下一步:

  • manual:输出"Next: {vocabulary.cmd_verify} [note]" — 用户决定何时继续
  • suggested:输出下一步并推进任务队列条目到current_phase: "{vocabulary.verify}"
  • automatic:队列条目推进,验证立即进行

链输出使用派生清单中的领域本地命令名称。