dsh-overleaf-sync:在 DSH 裏把本地 LaTeX 與 Overleaf 雙向同步

前言

在 DeepSeek Harness(DSH)裏寫論文或改 LaTeX,常見做法是本地用 Agent 改文件,協作仍放在 Overleaf 網頁上。若只靠手動下載 zip 或依賴 Overleaf 付費 Git 橋接,Agent 很難穩定地 pull、push、看 diff。下面介紹社區插件 dsh-overleaf-sync(維護者 measureer):它把本地 LaTeX 目錄與 Overleaf 項目綁在一起,通過 Overleaf 編輯器自帶的協作通道(Socket.IO + OT)同步,不走 Git 橋接;拉取後可自動 git init,並支持後臺 watch 與衝突處理。

這是什麼

dsh-overleaf-sync 是 DSH 的 Cordis 插件,分類爲聯網工具。一句話:在 Harness 裏爲 Agent 提供 overleaf_pull / overleaf_push / overleaf_diff 等工具,以及設置頁與右側邊欄,把本地文件夾與 Overleaf 項目雙向同步。思路參照 VS Code 擴展 measureer/overleaf-sync。README 標明當前階段爲 M3 完成(登錄、綁定、拉取、推送、三方 diff、watch、衝突解決與 GUI 兩半均已落地)。

核心功能

Agent 工具

插件向 DSH 註冊一組只讀或寫遠端/本地的工具(推送默認 dry-run,需顯式關閉纔會寫遠端):

工具 作用 是否寫遠端/本地
overleaf_status 登錄態、綁定、文件數、git、watch 否
overleaf_login / overleaf_logout 保存或清除 cookie/CSRF 本地憑據
overleaf_projects 列出可見項目 否
overleaf_link 綁定項目與本地目錄,寫 link.json 本地
overleaf_pull 遠端 → 本地;首次成功可自動建 git 本地文件
overleaf_push 本地 → 遠端(默認 dry-run) 遠端
overleaf_diff local / baseline / remote 三方對比 否
overleaf_watch 後臺雙向同步 on/off/status 兩端
overleaf_conflicts / overleaf_resolve 列衝突;keep_local / keep_remote / merge 兩端

默認行爲(可配置)

  • 未指定 localRoot 時,拉取目錄默認爲 ~/Overleaf/<項目名>(配置鍵 localRootPattern)。
  • 拉取後默認 自動 git init 並首次提交(git.autoInit;若已在上層 git 倉庫內則複用,不嵌套)。
  • 衝突 不靜默覆蓋:本地保留,遠端側寫入 foo.remote-<ts>.tex 等(defaultStrategy)。
  • 後臺 watch 默認關閉(watch.autoStart 爲真時插件加載即啓動)。

GUI

具備 DSH Web 宿主時,提供:

  • 設置頁(Settings → Overleaf 同步):Cookie/CSRF、選項目、綁定目錄、策略與 git/watch 開關。
  • 右側邊欄 tab:狀態、待推送、Pull/Push、watch 開關、衝突逐條解決、日誌與 SSE 刷新。

Host 側暴露 /overleaf/api/* 與 GET /overleaf/events;無 webServer 時退化爲純工具插件。

自建 Overleaf 實例

baseUrl 默認 https://www.overleaf.com,可在登錄或設置裏改爲 CE / Server Pro 等地址;支持 Cookie 透傳、子路徑部署、socket 協議探測(含部分 0.9 老實例)。登錄仍須從瀏覽器複製 Cookie,插件 不收密碼。

憑據與 link.json 等落在 ~/.dsh/overleaf-sync/,不寫進項目目錄。

安裝與啓用

官方 README 給出的安裝方式如下(Release 的 tgz;npm 包發佈中見倉庫 RELEASING.md):

# 從 GitHub Release 的 tgz 安裝
dsh plugin add ./dsh-overleaf-sync-0.1.0.tgz
# 或
dsh plugin --profile desktop add <absolute-path>.tgz

本地開發可 link 進 profile(改代碼後需重啓 DSH):

dsh plugin --profile desktop add link:C:/code/dsh-overleaf-sync

等價手工步驟:在 profile 的 package.json 增加依賴並在 dsh.profile.bundles 追加包名,於 profile 目錄執行 pnpm install 後重啓 DSH。默認配置在插件 cordis.patch.yml,可在 profile 的同名文件中 整體替換 覆蓋。

安裝前請自行查看源碼與 MIT 許可證;插件以當前 DSH 進程權限訪問網絡與本地文件,僅安裝你信任的來源。

典型用法

README 推薦的 Agent 流程如下。

  1. 瀏覽器登錄 Overleaf,在 DevTools 複製 Cookie(含 overleaf_session2=…)與頁面 <meta name="ol-csrfToken"> 的值。
  2. 調用 overleaf_login 粘貼上述兩項(無密碼字段)。
  3. overleaf_projects 查項目 id。
  4. overleaf_link 綁定;不傳 localRoot 時使用 ~/Overleaf/<項目名>。
  5. overleaf_pull 下載全部文檔,並按配置自動 git init + 首次提交。
  6. 本地修改後 overleaf_diff 確認變更,再 overleaf_push:先默認 dry-run,確認無誤後傳 dryRun: false 寫遠端。

需要持續同步時,可在側邊欄或 overleaf_watch 開啓後臺雙向同步;出現衝突用 overleaf_conflicts 與 overleaf_resolve 處理。同一項目同一賬號僅允許一條活動 watch 連接;部分自建實例與瀏覽器同開一項目時會爭用 socket,需先關閉瀏覽器標籤。

適用場景與注意

適合:在 DSH 裏用 Agent 改本地 LaTeX,同時與 Overleaf 網頁協作、又不想依賴 Git 橋接的用戶;需要 diff、dry-run 推送與衝突顯式策略的論文寫作流程。

注意:

  • 憑據來自瀏覽器 Cookie,需自行保管;日誌對 session 做脫敏,但仍應限制 profile 與機器訪問權限。
  • 寫遠端前務必理解 默認 dry-run 與衝突不覆蓋策略。
  • 社區目錄 SkillHub 與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,本文事實以 GitHub README 與倉庫文檔爲準。

結尾

dsh-overleaf-sync 把 Overleaf 項目同步能力收進 DSH 工具與 GUI,讓 Agent 能按步驟 pull、diff、再 push,並在本地保留 git 歷史。進一步瞭解實現與 API 契約可見倉庫 docs/design.md 等文檔。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜