<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>AI 編程 on KnightLi的博客</title>
        <link>https://knightli.com/zh-tw/tags/ai-%E7%B7%A8%E7%A8%8B/</link>
        <description>Recent content in AI 編程 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-tw</language>
        <lastBuildDate>Sat, 23 May 2026 19:02:20 +0800</lastBuildDate><atom:link href="https://knightli.com/zh-tw/tags/ai-%E7%B7%A8%E7%A8%8B/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>oh-my-pi 是什麼？一個把終端機、IDE 和除錯器打通的 AI 程式設計助手</title>
        <link>https://knightli.com/zh-tw/2026/05/23/oh-my-pi-ai-coding-agent-terminal-ide-lsp-debugger/</link>
        <pubDate>Sat, 23 May 2026 19:02:20 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/23/oh-my-pi-ai-coding-agent-terminal-ide-lsp-debugger/</guid>
        <description>&lt;p&gt;&lt;code&gt;oh-my-pi&lt;/code&gt; 是一個面向終端機和編輯器的 AI Coding Agent。它來自 Mario Zechner 的 &lt;code&gt;Pi&lt;/code&gt; 專案分支，由 &lt;code&gt;can1357&lt;/code&gt; 繼續擴展，目標不是只做一個命令列聊天介面，而是把檔案讀取、程式碼搜尋、結構化編輯、LSP、除錯器、瀏覽器、子代理和多模型提供商接到同一個編程工作流裡。&lt;/p&gt;
&lt;p&gt;從專案 README 來看，它更像一套 AI 編程工具底座：終端機裡可以直接互動，編輯器可以透過 ACP 接入，Node 專案也可以透過 SDK 嵌入。對已經在用 Claude Code、Codex CLI、Cline、Cursor 或其他 Agent 工具的人來說，&lt;code&gt;oh-my-pi&lt;/code&gt; 值得關注的地方在於它把很多原本分散在外部工具裡的能力做成了內建工具面。&lt;/p&gt;
&lt;h2 id=&#34;它主要解決什麼問題&#34;&gt;它主要解決什麼問題
&lt;/h2&gt;&lt;p&gt;很多 AI 編程工具的短板不在模型本身，而在工具介面。模型想改程式碼時，如果只能拿到粗糙的全文、脆弱的字串替換和一次性的 shell，失敗率就會被工具鏈放大。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;oh-my-pi&lt;/code&gt; 的思路是把這些常見摩擦點壓低：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;讀取檔案時優先給結構化摘要，而不是把整份檔案塞進上下文。&lt;/li&gt;
&lt;li&gt;搜尋、glob、find、語法高亮、token 計數等能力盡量放進原生實作，減少對外部命令的依賴。&lt;/li&gt;
&lt;li&gt;寫程式碼時接入 LSP，讓重新命名、引用查找、檔案移動更接近 IDE 行為。&lt;/li&gt;
&lt;li&gt;除錯時接入 &lt;code&gt;lldb&lt;/code&gt;、&lt;code&gt;dlv&lt;/code&gt;、&lt;code&gt;debugpy&lt;/code&gt; 等 DAP 工具，而不是只靠日誌和猜測。&lt;/li&gt;
&lt;li&gt;複雜任務可以拆給子代理，並用結構化結果返回。&lt;/li&gt;
&lt;li&gt;對編輯操作使用內容錨點和預覽機制，降低錯誤 patch 直接落盤的機率。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這些設計說明它關注的不是「模型會不會回答」，而是「模型能不能穩定完成一次真實程式碼修改」。&lt;/p&gt;
&lt;h2 id=&#34;安裝方式&#34;&gt;安裝方式
&lt;/h2&gt;&lt;p&gt;專案提供了幾種安裝入口。macOS 和 Linux 可以使用安裝腳本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://omp.sh/install &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果使用 Bun，官方推薦全域安裝 npm 套件：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun install -g @oh-my-pi/pi-coding-agent
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Windows PowerShell 可以使用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;irm &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;https&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;omp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;sh&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;install&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;py&#34;&gt;ps1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;iex
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;專案 README 還提到可以透過 &lt;code&gt;mise&lt;/code&gt; 固定版本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;mise use -g github:can1357/oh-my-pi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安裝前要注意 Bun 版本要求。README 中標註的平台範圍包括 macOS、Linux、Windows，並要求 &lt;code&gt;bun &amp;gt;= 1.3.14&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;值得關注的能力&#34;&gt;值得關注的能力
&lt;/h2&gt;&lt;h3 id=&#34;1-工具呼叫不只停留在-shell&#34;&gt;1. 工具呼叫不只停留在 shell
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;oh-my-pi&lt;/code&gt; 內建了檔案讀取、搜尋、寫入、編輯、AST 編輯、瀏覽器、任務拆分、除錯、LSP 等工具。README 中提到它有 32 個內建工具、13 個 LSP 操作和 27 個 DAP 操作。&lt;/p&gt;
&lt;p&gt;這意味著 Agent 不必把所有事情都包裝成命令列輸出。比如查引用可以走 LSP，讀 PR 或 issue 可以走統一的檔案式介面，網頁和 PDF 可以被轉換成帶連結結構的 Markdown，再交給模型處理。&lt;/p&gt;
&lt;h3 id=&#34;2-lsp-接入更適合真實程式碼庫&#34;&gt;2. LSP 接入更適合真實程式碼庫
&lt;/h3&gt;&lt;p&gt;對大型專案來說，重新命名和移動檔案最怕漏掉 re-export、別名匯入、barrel file 或跨目錄引用。&lt;code&gt;oh-my-pi&lt;/code&gt; 的 README 特別強調寫入路徑會接入 LSP，例如檔案重新命名會經過 &lt;code&gt;workspace/willRenameFiles&lt;/code&gt;，讓編輯更接近 IDE 的語意操作。&lt;/p&gt;
&lt;p&gt;這類能力適合 TypeScript、Rust、Go、Python 等專案裡的日常重構，尤其是那些「手動改能改，但很容易漏一個引用」的場景。&lt;/p&gt;
&lt;h3 id=&#34;3-除錯器是一級工具&#34;&gt;3. 除錯器是一級工具
&lt;/h3&gt;&lt;p&gt;很多 AI 編程流程遇到崩潰時，仍然停留在加日誌、重新執行、再讀輸出。&lt;code&gt;oh-my-pi&lt;/code&gt; 把 DAP 除錯器接入工具面，README 裡舉了 C 程式用 &lt;code&gt;lldb&lt;/code&gt;、Go 服務用 &lt;code&gt;dlv&lt;/code&gt;、Python 行程用 &lt;code&gt;debugpy&lt;/code&gt; 的例子。&lt;/p&gt;
&lt;p&gt;這會改變 Agent 處理 bug 的方式：它可以暫停行程、查看堆疊框架、讀局部變數，再決定下一步，而不是只靠錯誤文字猜測。&lt;/p&gt;
&lt;h3 id=&#34;4-hashline-編輯降低-patch-失敗率&#34;&gt;4. Hashline 編輯降低 patch 失敗率
&lt;/h3&gt;&lt;p&gt;專案強調的 &lt;code&gt;Hashline&lt;/code&gt; 是一種基於內容錨點的編輯方式。它的目標是讓模型指向要修改的內容錨點，而不是反覆輸出大段 diff。這樣做的好處是減少空格、上下文過期、字串匹配失敗造成的編輯錯誤。&lt;/p&gt;
&lt;p&gt;對 Agent 工具來說，這類機制很重要。模型能力再強，如果寫入介面經常失敗，最終體驗仍然會變成反覆重試。&lt;/p&gt;
&lt;h3 id=&#34;5-子代理和工作區隔離&#34;&gt;5. 子代理和工作區隔離
&lt;/h3&gt;&lt;p&gt;README 中介紹了 &lt;code&gt;task&lt;/code&gt; 子代理能力：一個任務可以拆給多個隔離 worker，結果再以結構化物件返回。專案還包含工作區隔離相關實作，用來支援並行任務、分支探索和避免互相覆蓋。&lt;/p&gt;
&lt;p&gt;這適合程式碼審查、遷移、批量修復、測試定位等任務。真正的價值不只是「並行更快」，而是讓不同探索路徑之間的上下文和檔案改動更清楚。&lt;/p&gt;
&lt;h3 id=&#34;6-相容已有規則和配置&#34;&gt;6. 相容已有規則和配置
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;oh-my-pi&lt;/code&gt; 首次執行時會讀取已有工具留下的規則和配置，包括 &lt;code&gt;.claude&lt;/code&gt;、&lt;code&gt;.cursor&lt;/code&gt;、&lt;code&gt;.windsurf&lt;/code&gt;、&lt;code&gt;.gemini&lt;/code&gt;、&lt;code&gt;.codex&lt;/code&gt;、&lt;code&gt;.cline&lt;/code&gt;、&lt;code&gt;.github/copilot&lt;/code&gt; 和 &lt;code&gt;.vscode&lt;/code&gt; 等目錄。&lt;/p&gt;
&lt;p&gt;這點很實用。很多團隊已經為不同 AI 工具寫過規則，如果每換一個工具都要遷移一遍，成本會很高。&lt;code&gt;oh-my-pi&lt;/code&gt; 的做法是盡量直接繼承已有上下文。&lt;/p&gt;
&lt;h2 id=&#34;四種入口&#34;&gt;四種入口
&lt;/h2&gt;&lt;p&gt;專案提供了四類使用入口：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;互動式 TUI：在終端機裡直接執行 &lt;code&gt;omp&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;一次性命令：用 &lt;code&gt;omp -p&lt;/code&gt; 發送單次 prompt。&lt;/li&gt;
&lt;li&gt;Node SDK：透過 &lt;code&gt;@oh-my-pi/pi-coding-agent&lt;/code&gt; 嵌入到 Node 或 TypeScript 專案。&lt;/li&gt;
&lt;li&gt;RPC / ACP：透過 stdio 或 Agent Client Protocol 接入其他程式和編輯器。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這說明它不只面向個人終端使用者，也給 IDE、插件、自動化平台和內部工具留了整合空間。&lt;/p&gt;
&lt;h2 id=&#34;適合誰嘗試&#34;&gt;適合誰嘗試
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;oh-my-pi&lt;/code&gt; 比較適合這幾類使用者：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;經常在終端機裡做程式碼修改、除錯和審查的人。&lt;/li&gt;
&lt;li&gt;已經在使用 AI Coding Agent，但覺得檔案讀取、patch、搜尋或除錯鏈路不夠穩的人。&lt;/li&gt;
&lt;li&gt;想把 Agent 接入編輯器、RPC 或 Node 服務的開發者。&lt;/li&gt;
&lt;li&gt;需要在一個工具裡切換多模型和多提供商的人。&lt;/li&gt;
&lt;li&gt;對 LSP、DAP、AST 編輯和子代理這些底層能力感興趣的工具開發者。&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;code&gt;oh-my-pi&lt;/code&gt; 仍然是快速演進中的開源專案。倉庫提交頻繁，issue 和 PR 數量也不少，安裝和使用時要預期到變化。&lt;/p&gt;
&lt;p&gt;第二，它的能力邊界和本地環境強相關。LSP、除錯器、Bun、模型提供商認證、終端環境、Windows 或 Unix 差異都會影響體驗。&lt;/p&gt;
&lt;p&gt;第三，內建工具多不等於每個場景都應該全開。實際使用時更適合按任務啟用需要的工具，把規則、權限和工作區邊界配置清楚。&lt;/p&gt;
&lt;p&gt;第四，AI Agent 能寫程式碼，也能誤改程式碼。即使有預覽和錨點編輯機制，重要專案仍然要保留版本控制、測試和人工審查。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;oh-my-pi&lt;/code&gt; 的亮點不在於又做了一個 AI 終端殼，而在於它把 AI 編程中最容易拖後腿的工具層重新整理了一遍：檔案讀取、搜尋、編輯、LSP、除錯、瀏覽器、子代理和 SDK 都被放進同一個 Agent 工作流。&lt;/p&gt;
&lt;p&gt;它適合關注 AI 編程基礎設施的人，也適合想比較不同 Coding Agent 路線的開發者。當前 AI 編程工具的競爭，已經不只是模型回答品質的競爭，也是在比誰能把模型穩定接入真實程式碼庫、真實除錯流程和真實團隊規則。&lt;code&gt;oh-my-pi&lt;/code&gt; 正是在這個方向上給出了一套很激進的開源實作。&lt;/p&gt;
&lt;p&gt;參考資料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub 專案：&lt;a class=&#34;link&#34; href=&#34;https://github.com/can1357/oh-my-pi&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/can1357/oh-my-pi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;官方站點：&lt;a class=&#34;link&#34; href=&#34;https://omp.sh/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://omp.sh/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SDK 文件：&lt;a class=&#34;link&#34; href=&#34;https://omp.sh/docs/sdk&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://omp.sh/docs/sdk&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
