<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>CLI on KnightLi的博客</title>
        <link>https://knightli.com/zh-tw/tags/cli/</link>
        <description>Recent content in CLI on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-tw</language>
        <lastBuildDate>Sat, 16 May 2026 22:41:41 +0800</lastBuildDate><atom:link href="https://knightli.com/zh-tw/tags/cli/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>DeepSeek-TUI：把 DeepSeek V4 變成終端裡的編程智能體</title>
        <link>https://knightli.com/zh-tw/2026/05/16/deepseek-tui-terminal-coding-agent/</link>
        <pubDate>Sat, 16 May 2026 22:41:41 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/16/deepseek-tui-terminal-coding-agent/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/Hmbown/DeepSeek-TUI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;DeepSeek-TUI&lt;/a&gt; 是一個把 DeepSeek V4 接入終端開發流程的開源專案。它不是普通聊天外殼，而是更接近 Claude Code、Codex CLI 這類「命令列編程智能體」：能看檔案、改程式碼、執行命令、調用工具，並在終端裡用 TUI 方式持續推進任務。&lt;/p&gt;
&lt;p&gt;如果你已經習慣在編輯器和終端之間切換，這類工具的價值很直接：不用把程式碼來回複製到網頁對話框裡，也不用手動描述完整專案結構。你把任務交給它，它可以在目前工作區裡讀取上下文、規劃步驟、執行修改，再把結果交還給你審查。&lt;/p&gt;
&lt;h2 id=&#34;它解決的是-deepseek-的使用入口問題&#34;&gt;它解決的是 DeepSeek 的使用入口問題
&lt;/h2&gt;&lt;p&gt;DeepSeek 模型本身提供了很強的推理和程式能力，但模型能力要落到真實開發流程裡，還需要一層工程化外殼。&lt;/p&gt;
&lt;p&gt;網頁聊天適合問問題，不適合長時間改專案。API 適合接入系統，但一般開發者還要自己寫工具調用、上下文管理、檔案讀寫和權限控制。DeepSeek-TUI 想補上的正是這一層：把 DeepSeek V4 包成一個可以在終端裡工作的 Agent。&lt;/p&gt;
&lt;p&gt;從專案介紹看，它的重點能力包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;終端 TUI 介面；&lt;/li&gt;
&lt;li&gt;面向 DeepSeek V4 的對話與任務執行；&lt;/li&gt;
&lt;li&gt;工具調用和檔案操作；&lt;/li&gt;
&lt;li&gt;1M 上下文支援；&lt;/li&gt;
&lt;li&gt;Auto 模式；&lt;/li&gt;
&lt;li&gt;子智能體；&lt;/li&gt;
&lt;li&gt;沙箱執行；&lt;/li&gt;
&lt;li&gt;持久化任務佇列。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些功能組合起來，目標不是「讓模型回答得更像人」，而是讓模型更容易進入開發現場。&lt;/p&gt;
&lt;h2 id=&#34;tui-比純命令列更適合長任務&#34;&gt;TUI 比純命令列更適合長任務
&lt;/h2&gt;&lt;p&gt;很多 AI CLI 工具一開始都是純文字互動：輸入提示詞，等待輸出，再複製命令或補充上下文。這種方式簡單，但任務一長就容易混亂。&lt;/p&gt;
&lt;p&gt;TUI 的好處是能把會話、檔案、執行結果、任務狀態放在一個更穩定的介面裡。對編程 Agent 來說，這很重要。因為一次程式任務往往不是一問一答，而是包含：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;理解專案結構；&lt;/li&gt;
&lt;li&gt;查找相關檔案；&lt;/li&gt;
&lt;li&gt;修改程式碼；&lt;/li&gt;
&lt;li&gt;執行測試或命令；&lt;/li&gt;
&lt;li&gt;根據錯誤繼續修復；&lt;/li&gt;
&lt;li&gt;總結變更。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果介面只是一串日誌，使用者很難快速判斷 Agent 走到了哪一步。TUI 至少給了一個更適合觀察和接管的入口。&lt;/p&gt;
&lt;h2 id=&#34;auto-模式適合明確邊界的任務&#34;&gt;Auto 模式適合明確邊界的任務
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 提到的 Auto 模式，適合用在邊界比較清楚的工作裡。例如修一個小 bug、補一個腳本、改一段配置、整理一組文件、實作一個局部功能。&lt;/p&gt;
&lt;p&gt;這類任務的共同點是：目標清楚，檢查方式明確，影響範圍可控。Agent 可以自己查檔案、改檔案、跑命令，然後把結果交給使用者確認。&lt;/p&gt;
&lt;p&gt;但 Auto 模式不適合無限放權。尤其是在真實專案裡，刪除檔案、批量重構、資料庫遷移、部署命令都應該有明確確認。編程 Agent 的效率來自自動化，但風險也來自自動化。越是能執行命令的工具，越需要沙箱、權限邊界和人工審查。&lt;/p&gt;
&lt;h2 id=&#34;子智能體的意義在於拆任務&#34;&gt;子智能體的意義在於拆任務
&lt;/h2&gt;&lt;p&gt;子智能體不是新概念，但放在程式場景裡很有用。&lt;/p&gt;
&lt;p&gt;一個稍複雜的任務，通常會同時需要幾類工作：有人負責讀程式碼，有人負責改實作，有人負責檢查測試，有人負責整理文件。傳統多 Agent 系統經常顯得花俏，是因為它們沒有真實工具和真實工作區，只是在對話裡互相討論。&lt;/p&gt;
&lt;p&gt;如果子智能體能結合檔案系統、命令執行和任務佇列，它就更像一種任務拆分機制。比如一個子智能體專門分析依賴關係，另一個負責修改某個模組，主智能體再整合結果。這樣可以減少單一上下文裡堆太多無關資訊的問題。&lt;/p&gt;
&lt;p&gt;當然，子智能體也會帶來額外成本：更多 token、更複雜的狀態、更難追蹤的責任邊界。所以它適合中等複雜度以上的任務，不一定適合每一次小修改。&lt;/p&gt;
&lt;h2 id=&#34;1m-上下文不是萬能但很適合讀專案&#34;&gt;1M 上下文不是萬能，但很適合讀專案
&lt;/h2&gt;&lt;p&gt;1M 上下文聽起來很誇張，但在編程場景裡並不只是行銷數字。&lt;/p&gt;
&lt;p&gt;真實程式庫的上下文很碎：README、設定檔、型別定義、測試、調用鏈、歷史約定、錯誤日誌，都可能影響一次修改。更長上下文能減少「只看局部就動手」的問題，也能讓模型保留更多專案約束。&lt;/p&gt;
&lt;p&gt;不過，上下文長不等於判斷一定更準。程式任務仍然需要檢索、篩選和驗證。把整個專案塞進上下文並不一定比精準讀取相關檔案更好。好的編程 Agent 應該把長上下文當作緩衝區，而不是把它當成替代工程判斷的捷徑。&lt;/p&gt;
&lt;h2 id=&#34;更適合哪些使用者&#34;&gt;更適合哪些使用者
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 更適合幾類人：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想在終端裡使用 DeepSeek 做程式任務的開發者；&lt;/li&gt;
&lt;li&gt;不想自己搭工具調用和檔案操作框架的人；&lt;/li&gt;
&lt;li&gt;已經熟悉 Claude Code、Codex CLI，但想嘗試 DeepSeek 模型入口的人；&lt;/li&gt;
&lt;li&gt;需要本地專案上下文，而不是只在網頁裡問程式片段的人；&lt;/li&gt;
&lt;li&gt;想把 AI 編程流程放進命令列環境的人。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是偶爾問一個函式怎麼寫，網頁聊天已經夠用。如果你希望模型直接參與專案修改，終端 Agent 才更有意義。&lt;/p&gt;
&lt;h2 id=&#34;需要關注的風險&#34;&gt;需要關注的風險
&lt;/h2&gt;&lt;p&gt;這類工具最需要關注三件事。&lt;/p&gt;
&lt;p&gt;第一是權限。只要工具能讀寫檔案、執行命令，就要確認它預設能存取哪裡、能不能刪除檔案、能不能連網、危險命令是否需要確認。&lt;/p&gt;
&lt;p&gt;第二是可回滾。使用前最好保持 Git 工作區乾淨，讓每次 Agent 修改都能被 &lt;code&gt;git diff&lt;/code&gt; 清楚看到。不要在一堆未提交改動裡讓 Agent 自動改專案。&lt;/p&gt;
&lt;p&gt;第三是驗證。Agent 寫完程式不代表任務完成。測試、構建、lint、人工 review 仍然要保留。AI 編程工具可以提高推進速度，但不能替代最後的工程確認。&lt;/p&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;DeepSeek-TUI 的意義不在於又多了一個聊天客戶端，而在於它把 DeepSeek V4 放進了更接近真實開發工作的終端環境裡。&lt;/p&gt;
&lt;p&gt;對開發者來說，模型能力只是第一步。真正影響體驗的是：它能不能讀專案、能不能安全改檔案、能不能執行驗證命令、能不能在長任務裡保持狀態、能不能讓使用者隨時接管。&lt;/p&gt;
&lt;p&gt;如果你想把 DeepSeek 用在日常程式修改、專案閱讀和自動化開發任務裡，DeepSeek-TUI 值得關注。它代表的方向也很清楚：AI 編程工具正在從「回答程式問題」轉向「參與專案執行」。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>該放棄 MCP 嗎？為什麼 CLI 正在成為 Agent 的預設工具層</title>
        <link>https://knightli.com/zh-tw/2026/04/10/mcp-vs-cli-for-agents/</link>
        <pubDate>Fri, 10 Apr 2026 21:55:12 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/04/10/mcp-vs-cli-for-agents/</guid>
        <description>&lt;p&gt;過去一年，關於 Agent 工具鏈的爭論越來越集中在一個問題上：&lt;/p&gt;
&lt;p&gt;MCP（Model Context Protocol）是讓工具調用更簡單，還是把原本簡單的事情變複雜？&lt;/p&gt;
&lt;p&gt;在大多數日常開發任務中，CLI 正在成為更實用的預設方案。&lt;/p&gt;
&lt;h2 id=&#34;成本差異不是體驗問題而是數量級問題&#34;&gt;成本差異不是「體驗問題」，而是數量級問題
&lt;/h2&gt;&lt;p&gt;MCP 最大的現實壓力是 token 開銷。&lt;/p&gt;
&lt;p&gt;在常見場景裡，MCP 在真正執行任務前，往往需要先載入大量工具 schema。以 GitHub MCP Server 為例，初始化就可能消耗數萬 tokens。對長任務而言，這會直接擠壓上下文預算。&lt;/p&gt;
&lt;p&gt;社群基準測試也反覆指向同一個結論：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MCP 單次調用成本常見是 CLI 的數倍到數十倍&lt;/li&gt;
&lt;li&gt;失敗重試成本也更高（要重建連線、重新載入上下文）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這不是「慢一點」的差距，而是會放大成 API 成本、延遲與穩定性問題。&lt;/p&gt;
&lt;h2 id=&#34;為什麼模型天然更會用-cli&#34;&gt;為什麼模型天然更「會用 CLI」
&lt;/h2&gt;&lt;p&gt;一個常被忽略的事實是訓練分布。&lt;/p&gt;
&lt;p&gt;LLM 在訓練中看過海量終端文本：命令、輸出、報錯、腳本、man page。也就是說，CLI 互動模式本來就接近模型的「母語輸入」。&lt;/p&gt;
&lt;p&gt;相對地，MCP 的 JSON-RPC 與 tool schema 是近兩年才大規模出現的新範式。模型當然能學會，但熟悉度與壓縮效率通常仍不如 CLI 這類歷史語料。&lt;/p&gt;
&lt;p&gt;這也解釋了為什麼很多時候：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同樣目標，CLI 指令更短&lt;/li&gt;
&lt;li&gt;輸出更適合直接持續推理&lt;/li&gt;
&lt;li&gt;錯誤恢復路徑更穩定&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;安全與隔離mcp-還有補課空間&#34;&gt;安全與隔離：MCP 還有補課空間
&lt;/h2&gt;&lt;p&gt;MCP 不是不能做安全，而是生態還在早期。&lt;/p&gt;
&lt;p&gt;當前常見擔憂包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;工具描述投毒（Tool Poisoning）&lt;/li&gt;
&lt;li&gt;服務行為漂移（Rug Pull）&lt;/li&gt;
&lt;li&gt;同名工具覆蓋（Shadowing）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CLI 當然也有安全問題（注入、越權、路徑風險），但它的進程模型、權限邊界、審計鏈路已經過數十年工程實踐驗證。對生產環境而言，這種「可預期性」很重要。&lt;/p&gt;
&lt;h2 id=&#34;這不等於-mcp-沒價值&#34;&gt;這不等於 MCP 沒價值
&lt;/h2&gt;&lt;p&gt;我不認為 MCP 應該被拋棄。&lt;/p&gt;
&lt;p&gt;更合理的定位是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CLI 負責執行層（本地、低延遲、高頻調用）&lt;/li&gt;
&lt;li&gt;MCP 負責連接層（遠端服務發現、統一認證、審計與多租戶）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是常說的混合架構：&lt;code&gt;CLI + MCP Gateway&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;在需要對接大量遠端系統、做統一權限治理與合規審計時，MCP 仍然有明顯價值；但在「讓 Agent 快速完成開發任務」這件事上，CLI-first 往往更符合當前模型能力邊界。&lt;/p&gt;
&lt;p&gt;在今天的工程現實裡，CLI 更像 Agent 的工作母語；MCP 更適合作為連接協議，而不是唯一執行協議。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
