OpenCode 發佈 2.0,加入本機服務、Code Mode 和背景任務
OpenCode 2.0
OpenCode 發佈 2.0,加入常駐本機服務,讓 TUI、網頁介面和桌面應用程式共用同一個服務程序。新版重寫 API,並以 `@opencode/codemode` 將 MCP 伺服器或 OpenAPI 端點轉為智能體可在腳本中呼叫的函式,支援在一次往返中串接多個工具。
OpenCode 2.0 把 MCP 工具組合、背景子智能體和非同步 Shell 工作納入編碼流程,展示如何減少逐次呼叫工具及等待長任務完成的阻塞。
OpenCode 2.0 是一次重大改版。它汲取數百萬名每日用戶的使用經驗,打造出一套能靈活配合 Agent 各種需求的系統。此外,還有不少新功能、效能改進和錯誤修正,以下是一些對用戶影響較大的變更
服務
從一開始OpenCode採用客戶端/伺服器模型。不過,OpenCode預設並不會利用這種模式,而這種模式主要由進階用戶使用。
在2.0中,這個伺服器現時會在你的電腦上自動以單一背景程序運行。當你開啟TUI、網頁介面或桌面應用程式時,它們都會連接到同一個中央程序。
opencodepid 48213運行中
工作階段
修正不穩定的測試
加入深色模式
檢視變更
如果你使用程式化用戶端 @opencode/client 編寫自己的指令碼,它們會自動探索本機服務,並正常運作。這對尤其有用排程工作。你可以亦呼叫它透過 CLI 使用 opencode api 指令呼叫它。
你可以將開放它給其他主機使用,並執行 /pair 或 opencode pair,將連接至其他應用程式。我們正在原生應用程式開發,以利用這個流程。
API
舊 API 在我們和整個世界逐漸瞭解 Agent 是甚麼、應該是甚麼的過程中,毫無章法地擴展。情況很糟糕。
我們從頭開始,檢視數百萬名每天使用 OpenCode 的用戶所涉及的各種奇特使用情境。如今,它幾乎支援你需要做的任何事。
OpenCode 亦瞭解自身API,並會呼叫它來執行有用操作例如在開始新工作時,將目前工作階段移至git 工作樹。
工作階段新工作階段
OpenCode
~/app
修正不穩定的上載測試已中斷
遷移設定載入器分頁已關閉
新工作階段此工作階段
~/worktrees/rate-limit
我們亦推出了一個新的用戶端套件@opencode/client,其中包含用戶端適用於原生 JavaScript 及 Effect。
import { OpenCode } from "@opencode/client"
import { Service } from "@opencode/client/service"
const endpoint = await Service.ensure()
const client = OpenCode.make({
baseUrl: endpoint.url,
headers: Service.headers(endpoint),
})
const session = await client.session.create({
location: { directory: process.cwd() },
})
await client.session.prompt({
sessionID: session.id,
text: "Review the current changes",
})程式碼模式
模型喜歡編寫程式碼,而 OpenCode 2.0 比其他任何編碼 Agent 都更能善用這一點。我們打造了一個極簡的 JavaScript 解譯器,內含於 @opencode/codemode 套件中。
工作階段
程式碼模式
MCP 伺服器
github
linear
sentry
這個套件會接入MCP 伺服器或 OpenAPI 端點,並將它們轉換為 Agent 可在指令碼中呼叫的函式可呼叫。它可以原生執行這些指令碼,無須面對Node.js VM 的複雜性 ,亦無須嵌入複雜方案,例如QuickJS。
這讓你的 Agent 編寫腳本,令其能夠執行以下操作,例如呼叫一個工具、遍歷結果並呼叫另一個工具。只需一次往返,無須逐一呼叫它們。
所有 MCP 伺服器在 2.0中預設啟用程式碼模式這表示你可以加入其中一千個,幾乎不會造成上下文膨脹,而你的 Agent 會探索並組合使用它們以完成任務。
背景工作
最新一批模型非常擅長協調,而評測框架能讓它們充分展現這種能力,這點十分重要。
工作階段
背景
首先,我們重新加入了背景子這讓主要代理可以在繼續工作的同時,將部分工作交由另一個代理處理。
這會自動發生,但你可以亦觸發它手動,甚至使用不同模型。這讓你可以做一些事情例如「啟動一個背景fable子代理來審查這段程式碼」同時你繼續輸入提示詞。
第二,我們新增了背景shell指令shell工具可以呼叫非同步因此長時間執行的工作不必阻塞主要Agent。主要 Agent 會在工作完成時收到通知
如果任何前景 shell 指令或子代理的執行時間比預期長,你可以按下快速鍵將它們背景,這樣你可以繼續輸入提示詞。
外掛程式
雖然 OpenCode 1.0 設有 外掛系統,但一直未獲得應有的關注。為此,我們強迫自己將幾乎每項OpenCode 2.0 功能實作為內部外掛,而目前已有 80+ 個。這確保Plugin API 得到妥善維護。
我們亦已將 TUI 外掛程式由實驗版提升至穩定版。由於這一切均由 OpenTUI 驅動,你幾乎可以建立任何東西。以下是一個毫無用處的例子。
我們亦花了不少時間,確保 OpenCode 2.0 的所有內容都可以熱重載。因此,它可以在工作階段中途為自己編寫一個外掛程式並立即使用該外掛程式——我們在較早前的網誌文章中介紹過這項設計。
你 可以 要求 OpenCode 建立 任何 你想要的外掛程式 而 它 知道 如何 建立。 不過 如果 你 確實 想 閲讀 文件, 可於 此處查閲。
SDK
OpenCode 現在 亦 可 作為 程式庫 , 配合 @opencode/sdk 套件使用。這是為我們的CLI提供運作支援的完全相同的程式碼。
這表示你可以精簡它,並打造自己的 OpenCode 版本,讓它在伺服器或專門環境中執行,例如 Durable Objects。之後,你可以從任何 OpenCode 用戶端連接至它,因為它採用標準的 OpenCode 伺服器協定。
它亦有一個可選的基於 Effect 的 API。
這個版本仍在開發中,因為相關內容仍在變動,但你已經可以使用它。
升級
要升級 CLI,請確保你使用的是最新的 1.x版本,然後執行 opencode upgrade --major。
要升級你的桌面應用程式,請下載最新版本,連結在此處。
有一些不相容的變更。
1.0的外掛程式無法在2.0中運作
伺服器 API 完全 不同
tui.json 設定 已 移至 json
還有很多其他變更,但這些變更都向後相容。 值得 讓 OpenCode 指向 這份文件, 讓 它 可以 遷移 相關內容 替 你。
來源:Hacker News 熱門(buzzing.cc 中文翻譯) · anoma.ly