Files
reader/plans/reader-mcp-implementation-plan.md
T

4.6 KiB

Reader MCP 实施计划

目标

把 reader 从“生产上主要依赖长 CLI/exec”推进到“以 MCP 为正式入口的工作流服务”。

协作分工

  • 架构与方向:由我负责
  • 编码实现:由 Codex 负责
  • 同步机制:通过 plans/ 下规划文档 + TODO.md 保持进度与方向一致

当前权威文档

实现前,必须先读:

  1. plans/reader-mcp-architecture-design.md
  2. plans/reader-mcp-implementation-plan.md
  3. TODO.md
  4. plans/issues/2026-04-06-reader-digest-sigterm.md
  5. docs/openclaw/openclaw-handoff.md

如实现细节与旧文档冲突,以:

  1. 最新架构设计文档
  2. 最新实施计划
  3. TODO 当前项

为准。


里程碑

M1:运行态落地(最优先)

目标:让现有 freshrss pipeline 拥有明确 run state。

交付:

  • 新增 run-state.json 持久化能力
  • 定义 RunState / StageState / ArtifactRecord 模型
  • 现有 pipeline 按 stage 更新状态
  • 保持现有产物目录兼容

完成标准:

  • 任意一次 run 都能产出 outputs/freshrss/rerun/<run_id>/run-state.json
  • 中途失败时也能看到失败阶段和已有 artifacts

M2:状态查询接口

目标:通过 MCP 查询 run 状态,不再只靠 CLI 或手看目录。

交付:

  • 新增 get_run_status
  • 新增 list_runs
  • 新增 list_run_artifacts

完成标准:

  • OpenClaw 可通过 MCP 查询 run 当前状态
  • 不需要直接读磁盘路径判断是否成功

M3:结果读取接口

目标:通过 MCP 获取结果内容,而不是自己拼文件路径。

交付:

  • 新增 get_delivery_payload
  • 新增 get_run_report
  • 视情况新增 get_digest_brief
  • 视情况新增 get_extracted_article

完成标准:

  • OpenClaw 只要知道 run_id,就能获取关键结果

M4:恢复与补跑

目标:reader 具备正式的恢复机制。

交付:

  • 新增 resume_run
  • 视情况新增 rerun_stage
  • 在 run-state.json 中记录 recovery 信息

完成标准:

  • 至少支持从最近成功 stage 之后继续执行
  • 能给出可恢复/不可恢复的明确判断

M5:生产入口切换

目标:OpenClaw 正式从 exec 模式切到 MCP 模式。

交付:

  • 保留 CLI 作为 debug/fallback
  • 生产推荐入口改为 MCP run + status + payload
  • 更新 handoff / README / docs

完成标准:

  • 正式流程默认不再依赖长 CLI exec

编码原则

  1. 优先复用现有业务逻辑

    • 不要重写成熟的 FreshRSS / extract / summary / filter 逻辑
    • 优先抽 runtime 层把现有逻辑包起来
  2. 先状态化,再协议扩展

    • 先把 run-state 跑通
    • 再补 MCP tools
  3. 保持向后兼容

    • run_freshrss_openclaw_pipeline 先保留
    • 内部逐步改为调用新的 runtime
  4. CLI 降级,不删除

    • 仍保留 debug/fallback 价值
    • 但不要让 CLI 和 MCP 背后出现两套逻辑
  5. 小步提交

    • 每完成一个可验证的小目标就提交
    • 不要攒一个超大变更

建议目录改造

建议新增:

src/summary_mcp/runtime/
  state_models.py
  run_store.py
  artifact_store.py
  workflow_service.py
  stage_runner.py

说明:

  • 目录名可微调
  • 但必须把“运行态管理”从现有 workflows 中抽出来,避免继续黑箱化

Codex 工作方式要求

Codex 每次开始前:

  1. 先读 plans/reader-mcp-architecture-design.md
  2. 再读本文件
  3. 再读 TODO.md
  4. 只处理 TODO 中 TODO 状态的当前优先项

Codex 每完成一项后:

  1. 更新 TODO.md
  2. 在 TODO 对应项下补:
    • 完成情况
    • 改动文件
    • 遗留风险
  3. 如实现偏离原架构,必须先更新 plans/ 文档,再继续代码

决策规则

如果出现以下情况:

  • 需要新增 MCP tool,但架构设计中未定义
  • 需要改动现有 pipeline 关键语义
  • 需要引入数据库 / 队列 / 线程池 / 后台 worker
  • 需要改变 OpenClaw 与 reader 的边界

则不允许 Codex自行拍板,必须先回写到:

  • plans/reader-mcp-architecture-design.md
  • 或新增 plans/issues/*.md

由架构层确认后再继续。


当前实现顺序(强约束)

按以下顺序推进:

  1. run-state.json 模型与持久化
  2. pipeline 中 stage 状态更新
  3. get_run_status
  4. list_runs / list_run_artifacts
  5. get_delivery_payload / get_run_report
  6. resume_run
  7. 再考虑 rerun_stage

不要一上来就做复杂异步后台队列。


一句话执行口径

先把 reader 做成“有运行真相的 MCP 工作流服务”,再做更多工具;不要反过来先堆接口名。