Skip to content

feat(PaperReader): 大幅升级并重构为 Rust stdio 插件#277

Merged
lioensky merged 2 commits intolioensky:mainfrom
Andyduck-ops:paperreader-rust-pr
Apr 6, 2026
Merged

feat(PaperReader): 大幅升级并重构为 Rust stdio 插件#277
lioensky merged 2 commits intolioensky:mainfrom
Andyduck-ops:paperreader-rust-pr

Conversation

@Andyduck-ops
Copy link
Copy Markdown
Contributor

@Andyduck-ops Andyduck-ops commented Apr 6, 2026

概述

这个 PR 将 PaperReader 从旧版 JavaScript 运行时大幅升级并重构为 Rust stdio 插件实现。

新的 PaperReader 不再是单次 PDF 摘要工具,而是一个以 artifact-first 为核心的研究流水线,支持结构化 workspace、显式运行时契约、可恢复执行,以及单文档 / 多文档的证据导向阅读与研究编排。

主要变更

  • 用 Rust 可执行 stdio 插件替换旧的
    ode PaperReader.js 运行时
  • 保留旧版 VCP 命令别名兼容:
    • IngestPDF
    • Read
    • ReadSkeleton
    • ReadDeep
    • Query
  • 新增 canonical runtime commands,用于:
    • workspace bootstrap / runtime introspection
    • 单文档 ingest / read / audit / claim trace
    • 多文档 collection ingest / compare / conflict audit / synthesis
    • evidence retrieval / artifact inspection
    • research graph planning / async execution / resume / cancel / reset
  • 新增 Plugin/PaperReader/paperreader-rs Rust workspace 源码
  • 新增发布物 Plugin/PaperReader/bin/paperreader-cli.exe
  • 删除旧版 JS runtime 与原有 lib/* 实现

为什么这样改

旧版 JS 版本更像原型,PaperReader 现在已经演进成一个更大的文档研究系统。

这次重构的目标是:

  • 更清晰的领域边界
  • 更稳定的 artifact 落盘与恢复能力
  • 更好的 evidence tracing
  • 更明确的运行时契约
  • 更可维护的后续扩展基础

兼容性

  • 保持 pluginType: synchronous 和现有 VCP Host 的 stdio 集成方式
  • 保留 legacy PaperReader command aliases,尽量兼容已有调用方式
  • 插件入口从 JS 脚本更新为 Rust 可执行文件

本地验证

已在隔离的 PR 工作区完成本地验证:

  • cargo test -p paperreader-application -p paperreader-api
  • cargo check -p paperreader-cli

以上均已通过。

备注

  • 这是一次替换式的大重构,主要范围限定在 Plugin/PaperReader
  • 本地私有配置、运行态工作区、构建缓存等内容未包含在此 PR 中

@lioensky lioensky merged commit af39bcf into lioensky:main Apr 6, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants