戰(zhàn)踩坑)
如果你是一個(gè)每天都在終端里寫代碼、改 Bug、跑測(cè)試的開發(fā)者最近應(yīng)該沒少聽到 opencode 這個(gè)名字。它是一款開源的 AI 編程代理coding agent主打在終端里直接跟 AI 對(duì)話完成代碼任務(wù)讀代碼、改代碼、跑命令、提 PR、甚至自己打開瀏覽器去驗(yàn)證前端問題。和 Claude Code、Codex 這些同類工具相比它最大的特點(diǎn)就是完全開源、本地可控、模型接入靈活而且對(duì)免費(fèi)模型的支持相當(dāng)友好。這篇文章我會(huì)從零開始講清楚 opencode 是什么、怎么裝、怎么配、怎么用再把我在 Windows 和 macOS 上實(shí)際踩過的坑、排查過的問題一起整理出來給想上手的朋友一份能直接照著抄的實(shí)戰(zhàn)手冊(cè)。1. 項(xiàng)目概述opencode 到底是什么為什么值得關(guān)注1.1 核心定位終端里的 AI 編程副駕opencode 本質(zhì)上是一個(gè)運(yùn)行在終端里的交互式 AI Agent。你在終端輸入opencode它會(huì)進(jìn)入一個(gè)類似 REPL 的對(duì)話界面然后你可以像跟同事說話一樣告訴它幫我看看這個(gè)項(xiàng)目的結(jié)構(gòu)這個(gè)報(bào)錯(cuò)出現(xiàn)在哪一行把某個(gè)功能重構(gòu)一下它會(huì)自動(dòng)調(diào)用工具鏈去完成。它跟普通的 AI 代碼補(bǔ)全插件有本質(zhì)區(qū)別。補(bǔ)全工具是你寫它猜而 opencode 這類 Agent 是你說它做它會(huì)自己去讀文件、搜索代碼、執(zhí)行命令、看測(cè)試結(jié)果然后根據(jù)輸出決定下一步動(dòng)作。這意味著你不需要手動(dòng)把代碼片段 Copy 給它它自己長著眼睛和手在當(dāng)前項(xiàng)目里就能干活。opencode 還有一個(gè)很實(shí)用的設(shè)計(jì)它內(nèi)置了多種模型接入方式既可以用云端大廠的模型 API也可以接入本地模型比如通過 Ollama 跑的 Qwen、DeepSeek 這類開源模型。對(duì)于在意數(shù)據(jù)隱私或者網(wǎng)絡(luò)成本的人來說本地模型這條路非常舒服。1.2 和 Claude Code、Codex、Pi 這類工具有什么區(qū)別先用一個(gè)表格直觀對(duì)比一下方便大家按需挑選維度opencodeClaude CodeCodexOpenAIPi開源程度完全開源GitHub 可查閉源部分開源輕量工具社區(qū)驅(qū)動(dòng)模型綁定可自由切換多種模型默認(rèn)綁定 Claude 系列默認(rèn)綁定 GPT/Codex 系列支持多模型偏輕量免費(fèi)模型支持很友好支持本地模型需要賬號(hào)或 API Key需要沙盒賬號(hào)部分支持?jǐn)U展能力Skills、Memory、LSP、Playwright 都有有生態(tài)插件偏內(nèi)置工作流偏簡(jiǎn)單場(chǎng)景適用人群喜歡折騰、重視可控性的開發(fā)者追求開箱即用的開發(fā)者深度使用 OpenAI 系的人想快速上手 Agent 的初級(jí)用戶從我實(shí)際使用的體感來看opencode 最大的差異化優(yōu)勢(shì)在于透明。它每一步做了什么、調(diào)用了什么工具、讀取了什么文件都會(huì)在終端里清楚展示。出了問題你能看到它卡在哪能及時(shí)打斷糾正而不是等它稀里糊涂跑完才發(fā)現(xiàn)方向錯(cuò)了。這種可控感是很多 AI 編程工具最欠缺的。1.3 它能解決什么問題適合誰來用opencode 適合三類人第一類是重度終端用戶日常開發(fā)全部在命令行里完成希望 AI 能直接接入工作流而不是在瀏覽器和終端之間反復(fù)切換。第二類是維護(hù)老項(xiàng)目的人接手一個(gè)別人寫的代碼庫面對(duì)一屋子不熟悉的業(yè)務(wù)邏輯靠 opencode 快速理清結(jié)構(gòu)、定位關(guān)鍵代碼效率提升非常明顯。熱搜詞里opencode 接手開發(fā)項(xiàng)目就是這個(gè)場(chǎng)景。第三類是喜歡折騰模型的人今天試試 Claude、明天換個(gè)本地模型不愿意被單一廠商綁定。opencode 的模型切換機(jī)制讓這件事變得非常輕。2. 安裝與環(huán)境準(zhǔn)備從零到跑起來2.1 Windows 安裝全流程我最早是在 Windows 上裝的 opencode當(dāng)時(shí)就撞上了熱搜里那個(gè)知名報(bào)錯(cuò)opencode : 無法將opencode項(xiàng)識(shí)別為 cmdlet、函數(shù)、腳本文件或可運(yùn)行程序的名稱。這個(gè)報(bào)錯(cuò)的原因 90% 是環(huán)境變量 PATH 里沒有 opencode 的安裝路徑系統(tǒng)根本找不到這個(gè)可執(zhí)行文件。opencode 的官方推薦安裝方式是在終端執(zhí)行安裝腳本curl -fsSL https://opencode.ai/install | bash在 Windows 上如果你用的是 PowerShell可以這樣iwr https://opencode.ai/install | iex安裝完成后腳本會(huì)把 opencode 的二進(jìn)制文件放到一個(gè)目錄常見的是%USERPROFILE%\.opencode\bin或者/usr/local/bin然后在 shell 配置文件里加上 PATH 引用。但腳本改 PATH 這一步經(jīng)常失敗尤其是 Windows 的 PowerShell 因?yàn)闄?quán)限問題沒能更新當(dāng)前會(huì)話的環(huán)境變量。我的建議是安裝完直接檢查一下文件在不在然后手動(dòng)加 PATH。先確認(rèn)安裝目錄通??梢栽谟脩裟夸浵抡业?opencode\bin文件夾。打開系統(tǒng)屬性 - 環(huán)境變量在用戶變量的 Path 里新增這個(gè)目錄。重開一個(gè)終端窗口輸入opencode --version驗(yàn)證。如果你用 Windows Terminal記得重開標(biāo)簽頁才會(huì)加載新的環(huán)境變量。另外一個(gè)很省事的方案是用 Go 直接安裝因?yàn)?opencode 本身是 Go 寫的go install github.com/sst/opencodelatest這個(gè)命令會(huì)把 opencode 裝到你的$GOPATH/bin或$HOME/go/bin下只要這個(gè)目錄在 PATH 里就沒問題。不過在 Windows 上也要手動(dòng)確認(rèn)一下 Go 的 bin 目錄是否在環(huán)境變量里。這也是很多人問opencode go是什么時(shí)的最大誤會(huì)來源之一這里的 go 既指 Go 語言安裝方式在有些討論里也指代某些模型服務(wù)商提供的訂閱套餐名稱得根據(jù)上下文區(qū)分清楚。2.2 macOS / Linux 安裝macOS 和 Linux 安裝就省心很多。同樣用官方腳本curl -fsSL https://opencode.ai/install | bash如果你的機(jī)器上已經(jīng)裝了 Homebrew也可以試一下社區(qū)維護(hù)的 brew 包如果有的話。不過我個(gè)人更推薦官方腳本因?yàn)樗WC拿到的是當(dāng)前最新版。安裝完以后如果你在 zsh 下想讓opencode命令自動(dòng)補(bǔ)全可以在~/.zshrc里加一行eval $(opencode completion zsh)這屬于錦上添花但用起來是真的順。2.3 環(huán)境變量與 PATH 問題實(shí)戰(zhàn)環(huán)境變量這關(guān)可以說是新手遇到最多的坑。我總結(jié)了一套排查流程先執(zhí)行where opencodeWindows或者which opencodemacOS/Linux看系統(tǒng)能不能找到這個(gè)命令。如果找不到就去安裝目錄確認(rèn)文件是否存在。Windows 下常見目錄%USERPROFILE%\.opencode\binmacOS/Linux 常見目錄/usr/local/bin、~/.opencode/bin。確認(rèn)文件存在后手動(dòng)把目錄加進(jìn) PATH然后重啟終端。執(zhí)行opencode --version看到版本號(hào)就說明安裝成功了。注意Windows 下的 PowerShell 有個(gè)特性當(dāng)前窗口打開時(shí)已經(jīng)加載的環(huán)境變量不會(huì)再更新。改了 PATH 以后必須新開一個(gè)終端窗口否則你會(huì)以為自己沒改成功。3. 核心配置模型接入與 JSON 配置實(shí)戰(zhàn)3.1 模型選擇策略免費(fèi)模型、訂閱套餐、本地模型opencode 默認(rèn)界面會(huì)讓你選擇接入哪個(gè)模型服務(wù)商。它支持 OpenRouter、Anthropic、OpenAI、Ollama、Azure、自定義 API 端點(diǎn)等覆蓋了絕大多數(shù)使用場(chǎng)景。如果你不想花錢OpenRouter 上有不少免費(fèi)模型可以用比如一些開源模型的免費(fèi)額度版本。opencode 識(shí)別到免費(fèi)模型以后會(huì)直接允許你添加不需要付費(fèi)。在這里我提醒一句免費(fèi)模型的穩(wěn)定性受上游服務(wù)影響比較大搜熱詞里就有人問hy3-free 下線了嗎這類免費(fèi)源確實(shí)經(jīng)常會(huì)因?yàn)樯嫌握{(diào)整而臨時(shí)不可用所以最好多準(zhǔn)備一兩個(gè)備選模型防止用到一半突然沒法請(qǐng)求。對(duì)于愿意付費(fèi)的用戶opencode go或者類似的訂閱套餐能省去自己折騰 API Key 的精力。這里的套餐通常指的是模型服務(wù)商提供的打包訂閱里面包含了多個(gè)主流模型的調(diào)用額度通過一個(gè)入口統(tǒng)一接入。配合 CC Switch 或 SuperPower 這類模型通道管理工具可以實(shí)現(xiàn)一個(gè)配置文件里一鍵切換不同模型。我個(gè)人習(xí)慣把日常模型和備用模型都配好CC Switch 用來統(tǒng)一管理多個(gè)通道opencode 里需要切換模型時(shí)直接改配置項(xiàng)或?qū)υ捓镎{(diào)用切換命令非常方便。3.2 opencode.json 配置文件詳解opencode 的配置文件叫opencode.json可以使用opencode config調(diào)出配置界面也可以直接編輯 JSON。它默認(rèn)會(huì)讀取全局配置也可以在你項(xiàng)目根目錄放一份局部配置覆蓋全局。一個(gè)典型的配置長這樣{ $schema: https://opencode.ai/config.json, provider: { openrouter: { models: { anthropic/claude-3.5-sonnet: true, qwen/qwen-2.5-coder-32b-instruct: true, meta-llama/llama-3.3-70b-instruct: true } }, ollama: { models: { qwen2.5-coder:14b: true } } }, model: anthropic/claude-3.5-sonnet, theme: dark, autoupdate: true }provider下面配置不同的模型服務(wù)商models里把你想用的模型都打開。model字段指定默認(rèn)模型。這里要注意的是不同服務(wù)商的模型 ID 一定要寫對(duì)最穩(wěn)妥的方法是先通過opencode models命令看一下當(dāng)前服務(wù)商返回的可用模型列表再在配置里引用不要靠記憶手寫經(jīng)常容易踩坑。項(xiàng)目級(jí)的opencode.json會(huì)跟你項(xiàng)目一起提交到代碼倉庫里這樣團(tuán)隊(duì)協(xié)作時(shí)大家拉下來代碼就能擁有相同的 AI 工具配置。我一般把 provider 的 key 相關(guān)配置放在全局把項(xiàng)目和團(tuán)隊(duì)相關(guān)的 prompt、rules 放在項(xiàng)目級(jí)配置里避免把敏感信息提交到倉庫。注意如果你通過其他工具比如 CC Switch給 opencode 注入環(huán)境變量或代理設(shè)置配置文件的層級(jí)沖突是個(gè)容易忽略的點(diǎn)。項(xiàng)目級(jí)配置覆蓋全局配置時(shí)一定要確認(rèn) provider 配置沒有被局部文件誤覆蓋否則會(huì)出現(xiàn)明明全局配好了進(jìn)項(xiàng)目卻連不上模型的情況。3.3 與 CC Switch、SuperPower 等工具協(xié)同的正確姿勢(shì)這里單獨(dú)說下這類工具。CC Switch 本質(zhì)是一個(gè)模型通道管理器它可以把不同廠商的 API Key、Base URL、模型列表集中管理并通過環(huán)境變量或配置文件接入到 Agent 工具里。配合 opencode 使用時(shí)你只需要在 CC Switch 里把通道配好然后在啟動(dòng) opencode 之前確保它讀取到正確的環(huán)境變量即可。我自己的做法是在 CC Switch 里配置好主用通道和備用通道每個(gè)通道標(biāo)明可用的模型列表。在 opencode 的全局配置里把默認(rèn) provider 指向一個(gè)通用入口避免每次切換都要改 JSON。遇到當(dāng)前通道限流模型不可用時(shí)到 CC Switch 里切一個(gè)通道回來重新發(fā)起請(qǐng)求即可。這里的核心思路是opencode 負(fù)責(zé)干活CC Switch 負(fù)責(zé)管通道兩者解耦互不干擾。這也是很多重度用戶推薦的組合方式。4. 功能解析與實(shí)操從 Skills 到 LSP 再到 Playwright4.1 Skills給 AI 加裝自定義技能包Skills 是 opencode 里非常亮眼的一個(gè)擴(kuò)展機(jī)制你可以把它理解為給 Agent 預(yù)裝的能力插件。如果你希望 opencode 在特定場(chǎng)景里表現(xiàn)出某種行為可以把對(duì)應(yīng)的操作步驟封裝成一個(gè) Skill然后在對(duì)話里觸發(fā)它。舉個(gè)例子你經(jīng)常需要讓 opencode 幫你檢查代碼規(guī)范那就可以寫一個(gè) skill# lint-check 當(dāng)你需要對(duì)當(dāng)前項(xiàng)目做代碼規(guī)范檢查時(shí)遵循以下步驟 1. 查看項(xiàng)目根目錄的 package.json 或 go.mod確認(rèn)使用的語言和工具鏈。 2. 查找項(xiàng)目中已有的 lint 配置如 .eslintrc、.golangci.yml。 3. 運(yùn)行對(duì)應(yīng)的 lint 命令例如 npm run lint 或 golangci-lint run。 4. 修復(fù)出現(xiàn)的錯(cuò)誤有疑問時(shí)向用戶確認(rèn)修復(fù)方案。Skills 文件放到~/.config/opencode/skills/或項(xiàng)目.opencode/skills/目錄下就行。對(duì)話時(shí)你只要說一句執(zhí)行 lint-checkopencode 就會(huì)加載對(duì)應(yīng)的步驟去執(zhí)行。它的好處是讓 Agent 的行為可沉淀、可復(fù)用團(tuán)隊(duì)里完全可以攢一套自己的技能庫新人上手直接就能用。4.2 Memory讓 AI 記住你的偏好如果你和同一個(gè)代碼庫打了很久交道肯定希望 AI 能記住一些長期信息比如這個(gè)項(xiàng)目用 pnpm 不用 npm測(cè)試命令是 make test數(shù)據(jù)庫連接串在 .env 里等。opencode 的 Memory 機(jī)制就是干這個(gè)的。它會(huì)把重要的上下文寫在項(xiàng)目目錄或全局目錄的 Markdown 文件里在每次對(duì)話時(shí)自動(dòng)讀取。你可以在對(duì)話里明確告訴它記住我們統(tǒng)一用 pnpmAgent 會(huì)把這個(gè)信息寫進(jìn)記憶文件。下次新開對(duì)話它也能一直遵守。我實(shí)際用下來給記憶區(qū)分的兩個(gè)層次比較有效項(xiàng)目級(jí)記憶只記錄這個(gè)項(xiàng)目特有的信息比如構(gòu)建命令、目錄約定、部署方式。全局級(jí)記憶記錄我個(gè)人的偏好比如代碼風(fēng)格優(yōu)先保持現(xiàn)有模樣提交信息用 conventional commits 風(fēng)格。這樣既不會(huì)混淆不同項(xiàng)目的上下文也能讓 AI 在不同項(xiàng)目里保持一致的協(xié)作習(xí)慣。4.3 LSP讓 Agent 真正看懂代碼LSPLanguage Server Protocol集成是 opencode 區(qū)別于一眾只會(huì)搜關(guān)鍵詞的工具的關(guān)鍵之一。有了 LSPopencode 能拿到語言服務(wù)器提供的語義信息包括定義跳轉(zhuǎn)、引用查找、類型信息、診斷報(bào)錯(cuò)等。用大白話說沒有 LSP 的 Agent 只能靠正則和關(guān)鍵詞去猜代碼關(guān)系遇到重名變量、跨文件引用就很容易暈有了 LSP它知道某個(gè)函數(shù)定義在哪個(gè)文件哪一行知道這個(gè)變量在哪些地方被使用改起代碼來準(zhǔn)確率高很多。opencode 會(huì)自動(dòng)探測(cè)項(xiàng)目使用的語言并嘗試啟動(dòng)對(duì)應(yīng)的 language server。比如 Go 項(xiàng)目會(huì)自動(dòng)用 goplsTypeScript 項(xiàng)目會(huì)嘗試用 typescript-language-server。如果你的環(huán)境里缺少對(duì)應(yīng)的語言服務(wù)器opencode 會(huì)有提示把依賴裝上再重新啟動(dòng)就行。4.4 Playwright讓 Agent 自己打開瀏覽器修 Bug這個(gè)功能我愿稱之為前端開發(fā)者的救星。opencode 內(nèi)置了對(duì) Playwright 的調(diào)用來驅(qū)動(dòng)真實(shí)瀏覽器可以打開你的本地開發(fā)環(huán)境或者線上頁面通過截圖、點(diǎn)擊、輸入來復(fù)現(xiàn)和驗(yàn)證前端問題。我在一個(gè) Vue 項(xiàng)目里遇到過一個(gè)列表刷新后滾動(dòng)位置錯(cuò)亂的 Bug。傳統(tǒng)流程是我得自己寫測(cè)試腳本、手動(dòng)復(fù)現(xiàn)現(xiàn)在直接讓 opencode 打開頁面滾動(dòng)到某個(gè)位置切換 tab再回來它通過 Playwright 一步步操作后把截圖貼給我看順帶根據(jù) console 報(bào)錯(cuò)定位到問題代碼。整個(gè)排查鏈路在一個(gè)對(duì)話里完成效率確實(shí)高。使用上要注意一點(diǎn)opencode 的 Playwright 功能默認(rèn)會(huì)依賴你的系統(tǒng)環(huán)境里有 Chromium 或?qū)?yīng)的瀏覽器內(nèi)核。第一次使用如果報(bào)錯(cuò)多半是瀏覽器沒有安裝用 Playwright 自帶的安裝腳本裝一下就行。實(shí)際測(cè)試時(shí)建議讓 Agent 配合截圖確認(rèn)的步驟每一步都留下截圖方便后續(xù)回看問題發(fā)生的位置。5. 常見問題與排查技巧實(shí)錄5.1 Windows 下無法識(shí)別 opencode的完整排查這個(gè)熱搜詞出現(xiàn)的頻率極高。Windows 上安裝完 opencode 后終端提示無法識(shí)別我拆成三句話總結(jié)安裝腳本可能在下載二進(jìn)制后沒能把可執(zhí)行文件放到 PATH 已有目錄中。或者腳本更新了 PATH但當(dāng)前 shell 窗口沒有重新加載?;蛘邭⒍拒浖?安全策略攔截了腳本對(duì)系統(tǒng)環(huán)境變量的修改。解決路徑我在前面已經(jīng)寫過了核心就是找到二進(jìn)制位置手動(dòng)配置 PATH重啟終端。如果手動(dòng)加了還是不行檢查一下你是不是同時(shí)裝了 32 位和 64 位版本導(dǎo)致路徑?jīng)_突。5.2 提示 this model is not available in your country這個(gè)報(bào)錯(cuò)我也遇到過。它本質(zhì)上是模型服務(wù)商對(duì)使用區(qū)域的限制當(dāng)你選擇的模型或者模型通道在你當(dāng)前所在區(qū)域不可用時(shí)就會(huì)觸發(fā)。處理方式主要三種換同一個(gè)服務(wù)商下的其他模型比如當(dāng)前模型不可用就換一個(gè)不限區(qū)域的模型如某些開源模型。檢查你的模型通道管理工具CC Switch 這類里當(dāng)前通道綁定的服務(wù)區(qū)域選項(xiàng)換成可用區(qū)域重新建立連接。直接切換到本地模型例如通過 Ollama 跑 Qwen、DeepSeek 等。本地模型完全沒有區(qū)域限制而且對(duì)普通項(xiàng)目的代碼理解能力已經(jīng)足夠好這也是我推薦在敏感場(chǎng)景下優(yōu)先用本地模型的原因。注意千萬不要為了繞過區(qū)域限制去做什么特殊網(wǎng)絡(luò)操作既不安全也容易出問題。最穩(wěn)妥的思路就是換個(gè)可用模型或者把模型放到本地跑。5.3 啟動(dòng)后報(bào)錯(cuò) unexpected server error 怎么辦報(bào)錯(cuò)unexpected server error. check server logs時(shí)大多數(shù)人第一反應(yīng)是配置出了問題但實(shí)際情況往往更簡(jiǎn)單先確認(rèn)網(wǎng)絡(luò)請(qǐng)求是不是被限流了等十幾秒再試一次。再檢查 API Key 是否有效、額度是否用盡。然后看是不是服務(wù)商整體故障去狀態(tài)頁看一眼。如果上述都排查過運(yùn)行opencode debug或查看日志文件定位具體是哪一步拋出的異常。opencode 的日志文件通常位于~/.local/share/opencode/log/Linux/macOS或%USERPROFILE%\.local\share\opencode\log\Windows。排查時(shí)優(yōu)先看最新的日志搜索 error 關(guān)鍵字很快就能定位到是模型請(qǐng)求失敗還是本地工具執(zhí)行失敗。5.4 模型管理工具協(xié)同的幾個(gè)坑我見過很多人在 CC Switch 和 opencode 協(xié)同使用時(shí)翻車最常見的坑有三個(gè)環(huán)境變量沒有真正注入到 opencode 進(jìn)程。有些人以為在 CC Switch 里點(diǎn)了全局生效就完事了但其實(shí)需要在啟動(dòng) opencode 之前確保 shell 會(huì)話里已經(jīng)加載了新的環(huán)境變量。配置了多個(gè) provider 后opencode 默認(rèn)模型選錯(cuò)導(dǎo)致一直請(qǐng)求不存在的模型。項(xiàng)目和全局配置覆蓋關(guān)系沒搞清項(xiàng)目里一份舊配置把全局正確配置覆蓋了。這類問題的通用排查思路是先用opencode models列出當(dāng)前可用的模型列表確認(rèn)你想用的模型真的存在再opencode config查看當(dāng)前生效的完整配置都不行就開 debug 日志看真實(shí)請(qǐng)求地址和報(bào)錯(cuò)信息。6. 工具選型與踩坑后的幾點(diǎn)心得6.1 opencode、Claude Code、Codex、Pi 怎么選選型這件事沒有標(biāo)準(zhǔn)答案但我可以提供一套自己的判斷框架。先問自己三個(gè)問題我是否在意工具的開源可控性在意就選 opencode。我是否需要深度綁定某個(gè)廠商的模型生態(tài)比如你重度使用 Claude 的 artifacts 功能那 Claude Code 會(huì)有優(yōu)勢(shì)。我的使用場(chǎng)景是輕量問詢還是重量級(jí)代碼庫改造輕量問詢 Pi 已經(jīng)足夠重量級(jí)改造、需要 Agent 自己跑測(cè)試改文件opencode 更能扛。從我個(gè)人的工作流來看日常主力是 opencode因?yàn)樗骖櫫碎_源、模型自由、功能完整。Claude Code 我也用過確實(shí)很多場(chǎng)景很順手但閉源和模型綁定讓我不太放心把它作為唯一依賴。Codex 在 OpenAI 生態(tài)內(nèi)體驗(yàn)不錯(cuò)但如果你不打算全家桶使用就沒必要。Pi 適合快速試水理解 Agent 概念后再切到 opencode 會(huì)有一個(gè)平滑的上手過程。6.2 關(guān)于配置和自動(dòng)化的一些建議最后分享幾個(gè)我日常使用中沉淀下來的習(xí)慣不一定適合所有人但可以給你一個(gè)參考方向第一所有的重復(fù)性操作都盡量沉淀成 Skill。比如給我寫單元測(cè)試幫我跑前端構(gòu)建并修復(fù)報(bào)錯(cuò)檢查 git 狀態(tài)并生成規(guī)范的 commit message。這些工作每天都會(huì)做寫成 Skill 后每次對(duì)話只需一句話觸發(fā)省下的時(shí)間非??捎^。第二給 AI 提供明確的禁止事項(xiàng)。在項(xiàng)目級(jí)配置里寫清楚哪些操作不要做比如不要修改 package-lock.json不要?jiǎng)?migrations 目錄等。很多時(shí)候 Agent 犯錯(cuò)的根源不是能力不夠而是約束不足。第三每次大改動(dòng)盡量讓 opencode 在小步提交之間保持代碼庫可用。你可以要求它每完成一個(gè)子任務(wù)就運(yùn)行一次測(cè)試并給出結(jié)果這樣即使中途出錯(cuò)也不會(huì)出現(xiàn)無法回滾的大爛攤子。第四看日志是一種能力。opencode 暴露了非常詳細(xì)的操作軌跡出現(xiàn)問題時(shí)先去讀日志再?zèng)Q定是調(diào)整配置還是提 issue。這個(gè)習(xí)慣能讓你在社區(qū)里少當(dāng)伸手黨也能更快成為高級(jí)用戶。6.3 我的真實(shí)體會(huì)用 opencode 小半年我最大的感受是這類工具的上限取決于你敢把多少工作交給它而下限取決于你對(duì)自己的代碼庫有多少了解。剛開始用的時(shí)候我只敢讓它改改文檔和注釋后來熟悉了它的行為模式開始讓它做重構(gòu)、寫測(cè)試、跑回歸。這個(gè)過程中我踩過很多坑也一度覺得Agent 還是不靠譜但如果把每次失敗當(dāng)作一次 prompt 和配置調(diào)優(yōu)的機(jī)會(huì)積累下來的經(jīng)驗(yàn)會(huì)讓工具越用越順。如果你恰好和我一樣喜歡跟代碼庫直接打交道、喜歡折騰命令行、又不想被某個(gè)模型廠商綁架opencode 值得花一個(gè)下午認(rèn)真玩玩。裝好它、把模型配上、跑一個(gè)小項(xiàng)目然后試試讓它自己發(fā)現(xiàn)問題并修復(fù)你會(huì)很快感受到這類工具帶來的改變。