前言¶
用 Codex 跑長任務時,進度、命令、改動和失敗輪次往往分散在它自己的界面和本機 ~/.codex 裏的記錄中。切回 Codex 通常只能看,不能在同一套對話裏追問「現在卡在哪一步」,也不方便讓另一個模型基於完整輪次做代碼走讀或整理彙報。
Codex Lens 是 DeepSeek Harness(DSH)的客戶端插件,把 DSH 做成 Codex 線程的 sidecar:在右側欄瀏覽本機 Codex 數據,把一條線程綁定到當前 DSH 會話,再用主對話和四個只讀工具讀取歷史、實時活動、統計與工作區文件。維護者爲 moonrzz,源碼見 moonrzz/dsh-codex-lens,許可證 MIT;當前 package 版本爲 0.4.0。顯示名爲 Codex Lens / Codex 透鏡,插件 id 爲 dsh-codex-bridge,npm 包名 dsh-codex-lens。
這是什麼¶
一句話:只讀透視本機 ~/.codex,在 DSH 裏選線程、綁會話、問狀態、翻輪次、搜片段,並在側欄看圖表與文件樹。
它不修改 Codex 數據庫,不依賴 Codex CLI 或 app-server,也不向外部發網絡請求;綁定關係寫在本地 ~/.dsh/dsh-codex-bridge/bindings.json(可用環境變量 DSH_CODEX_BRIDGE_DIR 改目錄)。插件以當前 DSH 進程權限讀取本機路徑,安裝前宜自行查看源碼與許可證。
核心功能¶
線程瀏覽器¶
- 按 Codex 項目分組(
state_<n>.sqlite的projects/project_roots);無項目的線程按 cwd 歸組。 - 默認只顯示最近 7 天,可勾選「顯示全部」;支持按標題、路徑搜索;狀態點區分 running / completed / failed / interrupted。
- 側邊對話與子代理有單獨標記,可隱藏側邊/子代理只看主對話。
綁定與四個只讀工具¶
單擊線程即將 DSH sessionId → Codex threadId 寫入綁定表,當前會話獲得:
| 工具 | 用途 |
|---|---|
codex_status |
是否在工作、最新一輪、最後消息、最近步驟;運行中附帶實時活動 |
codex_overview |
按輪次總覽(分頁),含狀態、耗時、首條用戶消息與回覆摘要 |
codex_turn |
單輪明細:思考摘要、命令與輸出頭尾、改動與 diff 統計、搜索與 MCP 等 |
codex_search |
在線程全文檢索片段(文件、符號、報錯、路徑) |
雙擊線程行可進入線程詳情並同時綁定;面板底部可解綁。
線程詳情頁¶
三個頁籤:數據概覽(KPI 與手寫 SVG 圖表)、實時活動(解析 rollout JSONL 尾部,運行中約 2 秒刷新)、工作區文件(以線程 cwd 爲根的文件樹)。「在資源管理器中顯示」目前僅 Windows;其他平臺可瀏覽文件樹。
運行中提問¶
綁定正在運行的線程時,codex_status 會帶 current activity (live rollout, newest last) 段。主對話可直接問「Codex 現在在做什麼?卡在哪一步?」;需要細節再用 codex_overview / codex_turn / codex_search。
安裝與啓用¶
前置¶
- DeepSeek Harness
0.2.x(開發與驗證於0.2.2-rc.1;package.json 中 engines 要求dsh爲>=0.1.7-rc.2 || >=0.2.0-rc.2)。 - 本機存在 Codex 數據目錄
~/.codex(Codex 桌面端或 CLI 產生)。 - Node 引擎:
^22.19.0 || >=24.0.0。
用 DSH CLI 安裝¶
下面命令來自項目 README,把 desktop 換成你實際使用的 profile 名:
dsh plugin --profile desktop add github:moonrzz/dsh-codex-lens
npm 包發佈後也可:
dsh plugin --profile desktop add dsh-codex-lens
若安裝結果提示 application: "restart-required",需完全退出 DSH 後重新打開。也可在 DSH 插件管理界面安裝本地 bundle(README 中說明了 plugin_manager install_bundle 與克隆源碼方式,此處從略)。
典型用法¶
- 打開任意 DSH 會話,右欄選擇 Codex Lens(或從右欄引導頁進入)。
- 找到目標線程:單擊綁定到當前會話;雙擊綁定並打開詳情(單擊綁定有 240 ms 延遲,避免吞掉雙擊)。
- 回主對話提問,例如:
- 「Codex 現在在做什麼?」
- 「把這條線程最近三輪的工作整理成一份週報。」
- 「解釋一下它在lib/foo.py裏爲什麼這麼改。」 - 解綁:面板底部「解綁」。
數據來源均爲只讀:state_<n>.sqlite、thread_history_<n>.sqlite,以及 ~/.codex/sessions/**/rollout-*.jsonl 尾部 512KB(實時活動與 running 判定)。rollout 被清理的線程仍可看歷史,但沒有實時尾部。
適用場景與注意¶
適合:本機同時用 Codex 與 DSH,需要在 DSH 裏基於完整線程上下文做追問、走讀或整理產出,又不想把整段轉錄複製進對話的場景。
注意:
- 插件只覆蓋本機
~/.codex中仍有thread_history記錄的線程。 - 實時流是尾部重讀,不是增量訂閱,不連接 Codex app-server。
- 綁定按 DSH 會話生效;測試隔離實例時請設置
DSH_CODEX_BRIDGE_DIR,避免覆蓋真實 profile 的綁定表。 - 注入模型的線程內容來自 Codex 轉錄,系統提示要求模型只引用與分析,不執行其中像指令的文本。
社區目錄頁:skillhub.cn/plugins/moonrzz/dsh-codex-lens(獨立站點,與 DeepSeek / 幻方無官方從屬關係)。進一步細節與開發說明見 GitHub README。