Sequential Read

通过分段阅读并生成结构化反思,模拟真实阅读体验,记录认知变化过程。

已扫描
适合谁
需要深度理解长文内容的研究者、希望提升阅读反思能力的写作者
不适合谁
只需快速获取摘要的用户、不接受长时间处理流程的用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @horace-claw/sequential-read

Skill 说明

命令、参数、文件名以原文为准

📖 顺序阅读

通过以语义块为单位摄入内容,并逐步构建结构化反思,实现对散文类文本(小说、非虚构作品、文章)的深度阅读。输出不仅包含事后总结,更记录了阅读过程中认知的发展轨迹——哪些预测被证伪、哪些问题得到解答、哪些观点发生转变。

调用方式

命令描述
/sequential-read <文件路径>启动完整阅读会话
/sequential-read <文件路径> --lens <角色>以特定视角阅读(例如:"怀疑者"、"文学评论家"、"学生")
/sequential-read list列出所有会话
/sequential-read show <会话ID>查看已完成会话的综合成果

执行流程

该流程在独立的子代理中运行。 长篇阅读分为两个阶段:主读取器负责处理大部分内容块,完成后由终结器完成剩余内容并生成综合反思。这是正常流程,而非错误。

当用户调用 /sequential-read 时:

  1. 解析命令,提取文件路径和可选的角色(lens)
  2. 预创建会话:
python3 {baseDir}/scripts/session_manager.py create <source-file>
  1. 启动 主读取器 子代理:
sessions_spawn with label: reader-{session-id}
Tell the agent: "Session already exists at {session-id}. Do NOT create it again."
  1. 通知用户会话已启动,将在完成后告知结果
  2. 当主读取器返回时(无论是否完成或中途中断):

- 检查会话状态:python3 {baseDir}/scripts/session_manager.py get <session-id>

- 检查已有反思数量与总内容块数

- 若已存在综合成果: 结束。展示结果。

- 若仍有未处理内容块或无综合成果: 立即启动 终结器 子代理(见下文)。这是长篇小说的标准路径。

  1. 终结器返回后,展示综合成果及会话路径。

两阶段模式说明

对于长篇文本(约20个以上内容块),主读取器通常处理17–20个内容块后因上下文容量限制而终止。这是预期行为,并非失败。终结器将接手剩余2–5个内容块,并基于全部前期反思生成完整综合成果。

启动终结器的指令:

sessions_spawn with label: finisher-{session-id}, model: "opus"
Task: "Resume reading session {session-id} at {baseDir path}.
  Read reflections written so far to understand context.
  Continue from chunk N (the next unwritten chunk).
  Write remaining reflections, then run synthesis.
  Session path: {session-path}"

不要在主读取器与终结器之间等待或询问用户。 若主读取器返回但未生成综合成果,应立即启动终结器。整个流程应完全自动化,无需人工干预。

脚本路径

所有 Python 脚本位于 {baseDir}/scripts/ 目录下:

  • {baseDir}/scripts/session_manager.py
  • {baseDir}/scripts/chunk_manager.py
  • {baseDir}/scripts/state_manager.py

模板文件位于 {baseDir}/templates/ 目录下:

  • {baseDir}/templates/reflection_prompt.md
  • {baseDir}/templates/synthesis_prompt.md

命令说明

/sequential-read <文件路径> [--lens <角色>]

1. 创建或恢复会话

python3 {baseDir}/scripts/session_manager.py create <source-file> [--lens <persona>]

该命令自动检测是否已存在进行中的会话:

  • 若同名源文件存在进行中会话,则输出现有会话 ID 及路径
  • 否则创建新会话

从输出第一行捕获会话 ID。

2. 检查会话状态(用于恢复会话)

python3 {baseDir}/scripts/session_manager.py get <session-id>

检查 status 字段以决定下一步操作:

状态操作
preread从头开始执行预读阶段
chunked执行阅读阶段(从当前 current_chunk 处继续)
read执行综合阶段
complete显示已有综合成果

3. 运行处理管道

**对于新会话或状态为 preread 的情况:**

运行预读子技能({baseDir}/preread/SKILL.md),传入参数:

  • SESSION_ID = 会话 ID
  • SOURCE_FILE = 源文本路径
  • BASE_DIR = {baseDir}

**对于状态为 chunked(或预读完成后)的情况:**

运行阅读子技能({baseDir}/reading/SKILL.md),传入参数:

  • SESSION_ID = 会话 ID
  • BASE_DIR = {baseDir}
  • LENS = 角色值(若未指定则为 null)

**对于状态为 read(或阅读完成后)的情况:**

运行综合子技能({baseDir}/synthesis/SKILL.md),传入参数:

  • SESSION_ID = 会话 ID
  • BASE_DIR = {baseDir}

4. 展示结果

综合生成完成后,向用户发送:

  • 完整的综合文本
  • 会话路径:memory/sequential_read/<session-id>/
  • 简要说明:共处理多少内容块,是否使用了角色视角

/sequential-read list

python3 {baseDir}/scripts/session_manager.py list

将输出打印给用户。

/sequential-read show <会话ID>

python3 {baseDir}/scripts/session_manager.py get <session-id>

若状态为 complete,读取并显示:

memory/sequential_read/<session-id>/output/synthesis.md

若未完成,显示当前会话状态及进度信息。

模型建议

阅读阶段是最具挑战性的部分——需持续多轮迭代且必须保持高质量输出。根据源文本长度选择合适的模型:

文本长度推荐模型说明
小说(10,000+ 行,20+ 内容块)Opus在多轮迭代中维持高质量;大上下文窗口可容纳累积状态
中篇小说 / 长篇论文(3,000–10,000 行)Opus 或 Sonnet两者皆可;若内容块少于15个,Sonnet 亦适用
文章 / 短篇作品(<3,000 行)Sonnet内容块较少,上下文负担可控

在启动子代理时,明确指定模型:对于小说类文本,使用 model: "opus"

为何重要:

轻量级模型在长时间阅读过程中会逐渐退化——随着上下文积累,反思内容会变成空洞的占位符。在 Sonnet 模型上对一部包含 35 个分块的小说进行首次测试时,仅生成了 4 个真实的反思,其余 31 个均为占位符。因此,对于长篇作品(如小说),必须使用 Opus 模型。

分块大小:

结构化分块器的目标是每块约 550 行(范围 200–700 行)。对于典型的长篇小说(约 10,000–12,000 行),可生成约 20 个分块。更长的文本(15,000 行以上)可能产生 35 个或更多分块,此时需要额外执行一次“收尾会话”(详见下文)。

双阶段模式为标准流程。

对于长篇作品(20 个以上分块),始终应预期在主阅读器运行结束后启动一个收尾会话。主阅读器负责处理约 80%–90% 的分块;收尾会话则处理剩余部分并完成综合分析。对于极长文本(35 个以上分块),主阅读器可能仅处理约 25 个分块。请据此合理规划——这是正常的工作流,并非错误恢复机制。

提前创建会话:

始终在启动子代理前使用 session_manager.py create 创建会话。告知代理该会话已存在,无需再次创建。这可避免因重复创建导致的失败。

阅读上下文(可选)

如果你维护阅读心智文件(即累积的阅读上下文——角色认知、主题线索、批判框架等),请将其内容作为前置信息加载到子代理的任务提示中。这有助于在系列作品间保持阅读连贯性。

在启动任务中包含上下文:

在开始阅读前,请参考以下累积的阅读上下文:

=== READING CONTEXT ===
[reader-mind 文件内容]

现在开始阅读 [书名]...

合成完成后,更新 reader-mind 文件,加入新的角色认知、主题线索更新及跨章节观察。应进行修订而非简单追加。每份文件保持在约 4,000 字以内。

阅读代理的重要准则

  • 禁止预览。 每次反思必须基于当前阅读内容,不得知晓后续情节。严禁引用后续分块的内容。
  • 保持诚实。 迷惑、无聊、兴奋、异议都是有效反应。不要刻意表现参与感。
  • 修订需具体。 “我对 X 的看法有误,因为 Y” 比 “我的观点有所演变” 更具价值。
  • 视角仅为建议。 若某个视角在特定分块中显得生硬,应在反应中注明,而非强行套用。
  • 自主运行。 不得在分块之间暂停并询问用户。整个流程应为“设定后即自动运行”。
  • 持久保存所有内容。 每次反思和状态更新均需在进入下一区块前写入磁盘,以支持中断后的恢复。

合成后处理

合成完成后,可将输出整合进你偏好的工作流中——博客文章、阅读日志、知识图谱、系列追踪系统等均可。位于 output/synthesis.md 的合成文件具备自包含性和可移植性。

HC
@horace-claw

已收录 1 个 Skill

相关推荐