前言¶
DeepSeek Harness(命令名 dsh)把智能體運行時拆成可組合的插件:模型、工具、會話、沙箱和界面都可以在 Cordis 內核上增刪。官方開發者預覽頁把這件事概括成 Everything is a plugin(一切皆插件)。隨附的可交互入口是 Web UI(dsh web / --profile web),一次性任務走 headless profile。終端裏要持續對話,官方安裝並不自帶一塊交互式 TUI。
CLI 參考文檔裏曾經用 github:deepseek-harness/turtle-ui 當 profile 組合包的例子。這個組織倉庫目前 404。Harness 維護者 turtle1999 在討論區說明:那是一個沒開的私倉,TUI 的定位之後會再考慮;公開可看的是 turtle1999/turtle-ui。倉庫 README 寫它是「某個週五下午做出的第一版 dsh UI」,內容來自原先的 packages/ui/tui。社區目錄把它歸在「界面增強」,簡介是「原版 turtle UI 項目(原樣提供,不擔保)」。
需要先說明:下文引用的目錄頁來自獨立社區站點 DeepSeek Harness 插件庫,與 DeepSeek / 幻方沒有官方從屬關係,不能當成官方應用商店。官方倉庫是 deepseek-ai/deepseek-harness。本文按目錄詳情頁、GitHub README / package.json / cordis.patch.yml / 源碼,以及官方 CLI 參考和討論區 #871 交叉覈對,覈實日期爲 2026-08-18。
這是什麼¶
turtle-ui 是一款界面增強插件,由 turtle1999 維護。npm 包名仍是 @deepseek-ai/dsh-tui,package.json 裏 "private": true,不走公共 npm 發佈,安裝走 Git。許可證是 BSD-3-Clause,LICENSE 版權行寫的是 Copyright (c) 2026, DeepSeek。GitHub 倉庫描述是 as is, no warranty;目錄頁同期標註 6 星,倉庫頁面爲 7 星。
它解決的問題很具體:給 dsh 補一塊終端前臺。職責邊界在 README 裏寫清楚了——TUI 只負責終端呈現和輸入;agent、模型、工具、持久化和 dsh 啓動器仍歸 Harness。實現上它是一套 profile 組合包(bundle):package.json 聲明 "dsh": { "bundle": { "patch": "./cordis.patch.yml" } },裝進某個 profile 後會自動疊一層 patch,騎在 @deepseek-ai/dsh-base 上面,把 TUI 和已配置的 agent 綁到同一次持久會話。
渲染依賴打過補丁的 @earendil-works/pi-tui。倉庫把它放在 devDependencies,構建時打進 lib/,使用者不用再裝 pi-tui,也不用配 patchedDependencies。
核心功能¶
下面這些能力來自 README、cordis.patch.yml 和 src/,不是產品宣傳清單。
-
終端會話前臺
啓動後在當前 TTY 裏對話。默認打開推理塊顯示(showReasoning: true),工具卡片摺疊預覽默認保留 6 行(maxToolOutputLines: 6)。狀態欄模板能拼工作目錄、git worktree、模型、緩存命中率和上下文用量。 -
會話身份由啓動參數決定
tui-startup解析啓動器交給應用的參數,提供tuiStartup服務;agent-loop 和 TUI 行注入這份服務後再求值,避免開到錯誤的會話。--help只打印幫助,不啓動 agent。--resume和--session不能同時傳。 -
斜槓命令與快捷鍵
源碼裏註冊的命令包括:
-/help:快捷鍵和命令列表
-/model [[provider/]model]:查看或切換本會話模型
-/clear:清轉錄視圖,會話歷史不變
-/details [collapsed|expanded|hidden] [reasoning [on|off]]:工具卡片可見性和推理顯示
-/palette:終端用到的顏色角色
-/status:會話診斷、系統提示詞和已註冊工具
-/resume:列出當前工作區可恢復會話
-/reload:實驗性,空閒時重讀 loader 配置
-/exit、/quit:當前 turn 空閒後退出
-/skill: [instructions]:把 skill 載入對話(在命令註冊表之外攔截)
幫助文本里的快捷鍵:Enter 發送;Shift/Alt+Enter 換行;上下鍵翻輸入歷史;Esc 取消當前 turn;Ctrl+O 循環工具卡片摺疊/展開/隱藏;Ctrl+R 開關推理塊;Ctrl+L 重繪;運行中 Ctrl+C 取消,空閒時清空輸入或退出;Ctrl+D 退出。
-
默認疊在 dsh-base 上的 agent 行
自帶 patch 會改agent-loop、system-prompt、llm-deepseek、fs-sandbox、tools,並插入會話引用、存儲、投影緩存、tmux 上下文、TUI 自身和tool-ask-user。默認模型是deepseek-v4-pro,提供方deepseek-official,API 密鑰環境變量DEEPSEEK_API_KEY,thinking: enabled,reasoningEffort: max,工具模式native。這些是組合包默認值,profile 自己的cordis.patch.yml可以整行覆蓋。 -
@文件補全
配置項裏有工作區文件索引上限、結果條數和排除目錄,給編輯器裏的@模糊查找用。
有一條 README 寫明的缺口:應用內 /resume 的進程交接,以及退出提示文案,仍然依賴已經拆掉的 TUI 專用啓動器,目前不可用。/resume 可以列出可恢復會話;真正換會話,要用命令行的 --resume <sessionId>。
安裝與啓用¶
目錄詳情頁給出的安裝命令是:
dsh plugin add github:turtle1999/turtle-ui
這是組合包,需要進一個 profile。web / headless 會從隨附模板自動初始化;其他名字(包括 tui)第一次只裝 @deepseek-ai/dsh-base。倉庫 README 和官方 CLI 參考都按 --profile tui 來寫。討論區有人驗證可用的寫法是:
dsh plugin --profile tui add github:turtle1999/turtle-ui
不要照抄 README 和 CLI 參考裏的 github:deepseek-harness/turtle-ui。GitHub API 對該路徑返回 404;#871 裏用這條命令會在 git ls-remote 階段失敗。turtle1999 指向的公開倉庫是 turtle1999/turtle-ui。
從 Git 安裝會拉源碼,再跑 prepare(tsdown.prepare.config.ts)在本機轉出 lib/,不做類型檢查。pnpm ≥10 默認攔住這個腳本。第一次 add 會失敗並打印 allowBuilds 鍵;把打印出來的那把鍵寫進 profile 的 pnpm-workspace.yaml 後再跑一次。官方文檔把這次放行理解成:允許安裝時在本機執行該包代碼,不在 agent 沙箱裏。不要猜鍵名。
需要可復現安裝時,按目錄頁把 commit 釘死:
dsh plugin add github:turtle1999/turtle-ui#<commit>
本地開發時,README 要求把本倉庫和 DeepSeek Harness 放成兄弟目錄,先構建 Harness,再構建 turtle-ui,然後用 file: 裝進 profile,讓 peer 依賴走 profile 的託管回退:
(cd ../deepseek-harness && pnpm install && pnpm run build)
pnpm install
pnpm run build
dsh plugin --profile tui add file:.
dsh --profile tui
package.json 聲明 Node ^22.19.0 || >=24.0.0,packageManager 爲 pnpm@11.7.0。重建之後要再執行一次 add,纔會刷新 profile 裏那份拷貝。
典型用法¶
裝好後啓動:
dsh --profile tui
不帶會話參數時,每次啓動生成新的 session id。指定新會話 id,或繼續已有會話:
dsh --profile tui --session review
dsh --profile tui --resume <sessionId>
dsh --profile tui --help
--help 打印的示例與源碼 startup.ts 一致。進 TUI 後可以用 /help 看快捷鍵,/status 看會話、token 和工具,/model 切模型。改界面行爲不要改包內文件,在 profile 的 cordis.patch.yml 裏覆蓋 tui 那一行的 config。patch 替換整份 config,不是深合併,覆蓋時要把仍需要的鍵一併寫上。
模型調用需要 DEEPSEEK_API_KEY。patch 裏 llm-deepseek 還讀 DEEPSEEK_BASE_URL。憑據解析順序以官方 CLI 參考爲準:繼承環境、$DSH_HOME/.credentials.yaml、調用目錄 .env、$DSH_HOME/.env。
適用場景與注意事項¶
適合已經在用 dsh、希望少開瀏覽器、在 SSH 或本機終端裏盯 agent 的人。它不是社區另外幾款 TUI(例如目錄裏的 dsh-TUI、npm 上的 @tomowang/dsh-tui)的替代說明,那些是獨立實現;turtle-ui 是從 Harness 拆出來的原版終端層,目錄和倉庫都按「原樣、不擔保」發佈。
使用前注意:
- 權限。插件以當前 dsh 進程的權限運行,安裝時可能執行代碼(包括
prepare)。安裝前檢查源碼和許可證。 - 文檔滯後。官方 CLI 參考和本倉庫 README 仍出現
github:deepseek-harness/turtle-ui。以能打開的turtle1999/turtle-ui爲準。 - TUI 定位未定。維護者在 #871 寫過,之後會重新考慮 TUI 的位置。API 和包結構可能跟着 Harness 預覽版一起變。
- 恢復會話走命令行。應用內
/resume交接不可用;繼續會話用dsh --profile tui --resume <sessionId>。 - 環境。需要交互式 TTY、已安裝的
dshCLI,以及 PATH 上的 pnpm。peer 依賴指向多套@deepseek-ai/dsh-*^0.0.1和@deepseek-ai/cordis^4.0.0-rc.7,跟當前 Harness 對不上時,優先查版本而不是改 TUI 源碼。
小結¶
turtle-ui 把 DeepSeek Harness 早期那套終端 UI 以組合包的形式交出來:不改啓動器,只在 profile 上疊一層 patch,讓 agent 在 TTY 裏跑。目錄頁和倉庫都標明原樣提供、不擔保;安裝地址用 github:turtle1999/turtle-ui,不要用已經 404 的 deepseek-harness/turtle-ui。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/turtle-ui/
GitHub:https://github.com/turtle1999/turtle-ui