DeepSeek Harness (DSH) 的插件生態允許開發者擴展模型推理能力。對於閱讀任務,最大的痛點在於上下文窗口限制:把整本書丟進主會話會迅速消耗 Token。dsh-deep-reading 解決這個問題:它通過拆分章節、單章子代理處理原文、主會話僅接收短結果的方式,實現 Token 效率優先的讀書流程。
插件核心價值在於將「讀一本書」變成一件可累積、可續讀、可導出的事。它維護一份帶定位的章節記憶,允許用戶在不重讀原文的情況下切換視角;同時支持逐字導出,確保導出的筆記與原文完全一致。
核心功能¶
導入與拆章¶
插件支持導入多種格式並自動拆章:
- 格式支持:EPUB、單個 Markdown 文件、包含多個章節的 Markdown 目錄、TXT、PDF。
- 轉換邏輯:TXT 和 PDF 會先通過 lib/convert.js 轉換爲 Markdown。轉換後的全文保留在 books/<ID>/source.md 中。
- 切章規則:Markdown 按 # 一級標題切分,標題前內容算「前言」;EPUB 按書自身的 spine 結構切分。
- 段落編號:導入時會給每章正文添加 [1] [2] [3] 段落號,用於後續定位。
- 冪等性:源文件未變再導入會返回 skipped:true。
單章精讀與子代理¶
- 原文隔離:用戶發起精讀指令後,主會話會派生一個
reading_chapter子代理。子代理帶着本章原文和閱讀目的獨立工作,返回的講解和狀態落盤,但原文不會進入主會話。 - 斷點續讀:超長章節(默認 12000 字節)會自動分節。中途斷開下次可從斷點續讀;讀完全章後狀態由
partial變爲complete。
章節記憶與複用¶
- 帶定位的記憶:每條 AI 解釋必須帶有
[n]段落定位,寫入memory/NNN.md。記憶綁定源文件哈希,源文件變動會導致舊記憶過期。 - 記憶不可回改:標記爲
complete的記憶一旦寫入,不可修改。若後續理解改變,需在後續章節的記憶中追加修正。 - 已讀複用:
dr_status會檢查記憶是否滿足complete、哈希一致、協議版本一致三個條件。若滿足,標記爲reusable,後續直接基於記憶講解,不重讀原文。
工具與導出¶
插件提供以下核心工具:
- dr_import:導入並拆章。
- dr_read:只讀模式,支持 index、range、locate、find 四種定位原文的方式。
- dr_write:寫入記憶、講解、用戶筆記等。
- dr_status:查看每章狀態與 reusable 判定。
- dr_usage:記錄 Token 消耗,支持 report 模式彙總。
- dr_export_epub:將 lecture/*.md 逐字拼接成 EPUB3。
安裝與啓用¶
安裝插件需要使用官方提供的命令,直接指定本地目錄路徑:
dsh plugin --profile <profile> add <本目錄路徑>
安裝完成後,桌面版必須重啓 DSH 應用纔會加載插件。
典型用法¶
以下是一個典型的閱讀流程:
- 導入書籍:
導入一本書並指定 ID,插件會自動拆分章節並建立索引。 - 精讀單章:
對話中發起精讀指令,主會話生成子代理處理本章,原文不進入主對話。 - 繼續閱讀:
在新會話中直接說「繼續讀書」,插件會從第一個未完成或過期的章節開始。 - 切換視角:
對已讀完的章節,要求「從人物角度再講一遍」,插件會複用記憶,不重讀原文。 - 導出:
使用dr_export_epub生成逐字收錄的電子書。
注意事項¶
- 掃描件限制:沒有文字層的 PDF 掃描件會被拒絕導入。
- PDF 依賴:PDF 轉換依賴特定的 CMap 表和
pdfjs-dist構建,若配置不當會導致中文靜默抽空。 - 數據結構:
complete的記憶不可回改,需通過後續章節追加修正。 - 權限:插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證。
書庫配置¶
默認書庫路徑爲 $DSH_HOME/deep-reading/books。若需共享書庫或更改路徑,可在 profile 的 cordis.patch.yml 中修改 booksRoot 配置。