名称: 流水线 描述: 端到端源处理 – 种子、提取、通过反射/重织/验证处理所有声明,归档。一个命令完成完整流水线。触发词:“/pipeline”、“/pipeline [文件]”、“端到端处理此文件”、“完整流水线”。 版本: “1.0” 生成自: “arscontexta-v1.6” 用户可调用: true 上下文: fork 模型: sonnet 允许工具: Read, Write, Edit, Grep, Glob, Bash, Task 参数提示: “[文件] — 要端到端处理的源文件路径”
立即执行
目标: $ARGUMENTS
立即解析:
- 源文件路径: 要处理的文件(必需)
--handoff: 在结束时输出 RALPH 交接块(用于链式调用)- 如果目标为空: 列出 {DOMAIN:inbox}/ 中的文件并询问处理哪个
步骤 0: 读取词汇表
读取 ops/derivation-manifest.md(或回退到 ops/derivation.md)以获取领域词汇映射。所有输出必须使用领域原生术语。如果两个文件都不存在,则使用通用术语。
立即开始。 运行完整流水线。
流水线概述
流水线链接四个阶段。每个阶段使用技能调用或 /ralph 进行基于子代理的处理。状态保存在队列文件中——流水线是无状态编排,建立在有状态的队列条目之上。
源文件
|
v
阶段 1: /seed — 创建提取任务,将源文件移动到归档
|
v
阶段 2: /reduce (通过 /ralph) — 从源文件中提取声明
|
v
阶段 3: /ralph (所有声明) — 创建 -> 反射 -> 重织 -> 验证
|
v
阶段 4: /archive-batch — 移动任务文件,生成摘要
|
v
完成
流水线是便利包装器。/ralph 是引擎。/seed 是入口点。
阶段 1: 种子
对目标文件调用 /seed 以创建提取任务,检查重复项,并将源文件移动到其归档文件夹。
如何调用:
如果可用则使用 Skill 工具,否则直接执行 /seed 工作流:
- 验证源文件存在
- 检查先前处理(重复检测)
- 创建归档文件夹
- 将源文件从 {DOMAIN:inbox} 移动到归档
- 创建提取任务文件
- 将提取任务添加到队列
从种子输出捕获:
- 批次 ID: 源文件基本名称(用于后续步骤中的 --batch 过滤)
- 归档文件夹路径: 源文件移动到的位置
- next_claim_start: 声明编号起始点
报告: $ 已播种: {source-name}
如果种子报告文件已处理: 询问用户是否继续或跳过。不要自动跳过——用户可能希望以不同范围重新处理。
阶段 2: 提取(Reduce)
通过 /ralph 处理提取任务。这会生成一个运行 /reduce 的子代理,从源文件中提取声明并在队列中创建任务条目。
如何调用:
/ralph 1 --batch {batch_id} --type extract
或通过 Task 工具:
Task(
prompt = "运行 /ralph 1 --batch {batch_id} --type extract",
description = "提取: {batch_id}"
)
完成后,读取队列以计算提取的声明和增强项数量:
检查此批次有多少待处理任务。reduce 阶段为每个声明创建 1 个队列条目,为每个增强项创建 1 个条目。
报告:
$ 已提取: {N} 个{DOMAIN:note_plural}, {M} 个增强项
正在处理 {total_tasks} 个任务通过流水线...
如果提取到零个声明: 报告问题。对于 TFT 源,零提取是错误——源文件几乎肯定包含可提取内容。询问用户是否以不同范围重试或跳过。
阶段 3: 处理所有声明
从队列中计算此批次的总待处理任务数。然后通过完整阶段序列处理所有任务。
如何调用:
/ralph {remaining_count} --batch {batch_id}
或通过 Task 工具:
Task(
prompt = "运行 /ralph {remaining_count} --batch {batch_id}",
description = "处理: {batch_id} ({remaining_count} 个任务)"
)
这通过以下步骤处理每个声明: 创建 -> 反射 -> 重织 -> 验证。每个增强项通过: 增强 -> 反射 -> 重织 -> 验证。
每个阶段在具有全新上下文的隔离子代理中运行。/ralph 处理所有编排: 子代理生成、交接解析、队列推进、学习捕获。
进度报告:
/ralph 调用报告每个任务的进度。流水线中继此信息:
$ 正在处理 {DOMAIN:note} 1/{total}: {title}
$ 创建... 完成
$ 反射... 完成 (找到 3 个连接)
$ 重织... 完成 (更新了 2 个{DOMAIN:note_plural})
$ 验证... 完成 (通过)
对于大批量(20+ 个声明): /ralph 通过子代理自动处理上下文隔离。流水线不需要分块——/ralph 按顺序处理 N 个任务,每个阶段都有全新上下文。
阶段 4: 验证完成
/ralph 完成后,验证此批次的所有任务都已完成。
检查队列: 计算此批次中未完成的任务数。
如果任务仍待处理:
- 报告哪些任务不完整以及处于哪个阶段
- 显示具体的任务 ID 及其 current_phase
- 建议: “运行
/ralph --batch {batch_id}以从停止处继续” - 不要继续到归档
如果所有任务都已完成: 继续到阶段 5。
阶段 5: 归档批次
当批次的所有任务都完成后,归档该批次。
如何调用:
/archive-batch {batch_id}
或直接执行:
- 将所有任务文件从
ops/queue/移动到ops/queue/archive/{date}-{batch_id}/ - 生成批次摘要文件:
{batch_id}-summary.md - 从队列中移除已完成的条目(或标记为已归档)
摘要应包括:
- 源文件名称和原始位置
- 提取的声明数量
- 增强项数量
- 创建的 {DOMAIN:note_plural} 列表及其标题
- 批次中的任何显著学习
阶段 6: 最终报告
--=={ 流水线 }==--
源文件: {source_file}
批次: {batch_id}
提取:
提取的{DOMAIN:note_plural}: {N}
识别的增强项: {M}
处理:
创建的{DOMAIN:note_plural}: {N}
增强的现有{DOMAIN:note_plural}: {M}
添加的连接: {C}
更新的{DOMAIN:topic map}s: {T}
通过重织更新的较旧{DOMAIN:note_plural}: {R}
质量:
所有验证检查: {通过/失败计数}
归档: ops/queue/archive/{date}-{batch_id}/
摘要: {batch_id}-summary.md
创建的{DOMAIN:note_plural}:
- [[声明标题 1]]
- [[声明标题 2]]
- ...
如果设置了 --handoff 标志,也输出:
=== RALPH 交接: 流水线 ===
目标: {source_file}
完成的工作:
- 播种源文件: {batch_id}
- 提取了 {N} 个{DOMAIN:note_plural} 和 {M} 个增强项
- 通过 4 阶段流水线处理了所有声明
- 归档批次到 {archive_path}
修改的文件:
- {DOMAIN:notes}/ ({N} 个新{DOMAIN:note_plural})
- ops/queue/archive/{date}-{batch_id}/ (已归档)
学习:
- [摩擦]: {描述} | 无
- [惊喜]: {描述} | 无
- [方法论]: {描述} | 无
- [流程差距]: {描述} | 无
队列更新:
- 批次 {batch_id} 的所有任务标记为完成并已归档
=== 交接结束 ===
错误处理
任何阶段的失败:
- 报告失败及上下文(哪个阶段、哪个任务、什么错误)
- 显示此批次的当前队列状态
- 建议补救措施: “运行
/ralph --batch {batch_id}以从停止处继续” - 不要自动尝试继续处理失败后的步骤
流水线是可恢复的。 队列状态在会话间持久化:
- /seed 检测到先前处理并询问是否继续
- /ralph 从最后完成的阶段继续(队列是真相来源)
- /archive-batch 在归档前验证完整性
种子失败: 如果 /seed 失败(文件未找到、检测到重复且用户拒绝),完全停止流水线。
提取失败: 如果 /reduce 提取零个声明,报告并停止。不要继续到空处理阶段。
处理失败: 如果 /ralph 在批次中途失败,队列会保留状态。单个声明在下次 /ralph 调用时从其失败阶段恢复。
归档失败: 如果归档失败,声明仍被创建和连接。仅缺少组织清理——手动重新运行 /archive-batch。
可恢复性
流水线设计为可在任何点中断和恢复:
| 中断位置 | 如何恢复 |
|---|---|
| 种子之前 | 再次运行 /pipeline(全新开始) |
| 种子之后,reduce 之前 | /ralph 1 --batch {id} --type extract |
| reduce 之后,处理声明期间 | /ralph --batch {id}(从失败阶段继续) |
| 所有声明之后,归档之前 | /archive-batch {id} |
状态保存在队列文件中。流水线读取队列状态,而非会话状态。这意味着您可以中断、关闭会话,稍后恢复。
边缘情况
无目标文件: 列出 {DOMAIN:inbox}/ 中的候选文件,根据年龄和相关性建议最佳选择。
源文件已播种: /seed 检测到此情况并询问用户。如果他们拒绝,流水线干净地停止。
大源文件(2500+ 行): /reduce 自动处理分块。流水线不需要特殊处理。
无 ops/derivation-manifest.md: 对所有输出使用通用词汇表。
关键约束
绝不:
- 跳过种子阶段(重复检测很重要)
- 自动继续处理失败后的阶段
- 内联处理声明而不是通过 /ralph 子代理
- 归档具有不完整任务的批次
始终:
- 在每个阶段边界报告进度
- 在归档前验证所有任务已完成
- 向用户显示创建的内容({DOMAIN:note_plural} 列表)
- 如果中断,建议后续步骤
- 使用来自派生清单的领域原生词汇表