⚡帮你从 iFlow CLI 无缝迁移到OpenCode
约 4175 字大约 14 分钟
2026-03-23
0. 写在开头的话
好的,我非常理解大家的心情,我明白大家对iFlow CLI的不舍之情,因为我也一样……但是我们还是要向前看,iFlow CLI固然是好用顺手,陪我们度过了一个一个难忘的日子,但随着后续团队业务重心的转向,iFlow CLI从2026年3月20日之后,原则上不再进行维护和更新功能了,那么随着时间的推移,抱守不再更新的工具也并非明智之举,其实开源项目里,opencode的体验也还是很不错的,推荐各位没有尝试过的小伙伴也都可以试一下。
为了让各位没接触过的小伙伴能更加顺利地从iFlow CLI迁移过来上手使用(包括过去的资源和使用习惯),我这里整理了一些迁移和使用方面的内容,如果有错误和遗漏的地方,也欢迎大家指出或补充,众人拾柴火焰高嘛~
1. 安装
1.1 Node.js
opencode和iflow一样,也是需要node.js的环境,当然如果是之前就在用iFlow的小伙伴,这部分就可以跳过了, 如果之前没有安装过类似CLI工具的小伙伴,可以先看下你的电脑上是否安装了node.js环境,打开你的终端,输入:
node -v看看能否返回版本号,如果可以正常返回版本号,并且版本号高于20,也可以调过此步骤了,如果没有正确返回版本号,说明没有安装过,那么需要首先安装nodejs,去官网: Node.js — Download Node.js®,选择你对应平台和版本的安装方式,按照官网指示安装即可。
1.2. opencode

官网: OpenCode | 开源 AI 编程代理
Github: GitHub - anomalyco/opencode: The open source coding agent. · GitHub
有多种安装方式
curl:curl -fsSL https://opencode.ai/install | bash
npm:npm i -g opencode-ai
bun:bun add -g opencode-ai
brew:brew install anomalyco/tap/opencode
paru:paru -S opencode
安装完后输入opencode -v,能正常看到返回版本号就算是成功了。

2. 模型提供商接入
2.1 官方支持的供应商
如果是官方支持的供应商,可以在opencode中输入/connect命令,然后在供应商列表中选择一个。
比如智谱的coding plan
我扫了一眼,支持智谱的api,智谱coding plan,Nvidia,魔搭社区,Llama,小米,七牛云,Minimax Coding plan,阿里百炼Coding plan,Kimi coding plan,DeepSeek,OpenRouter,腾讯Coding plan等等……

之后再输入你的API Key即可。
哎……
2.2 自定义模型
如果你的模型供应商没有在上面的支持的列表里,不论您是购买的,还是从其他什么渠道获得的,通常来说关键信息就是三个
- baseUrl
- API Key
- 模型标识
拿到这三样信息后,我们有两种方式来配置。
2.2.1 (古法) 手搓配置
当你安装完opencode后,会在你的用户目录下创建了一个~/.config/opencode目录,这里是放置opencode各项配置的地方,类似于iFlow CLI的~/.iflow/。
步骤1:
使用opencode auth login进行认证登录,然后选择other。

接着输入你的供应商id,api key
步骤2:
在~/.config/opencode/下边创建一个opencode.json文件,文件格式为:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"<你的模型供应商id>": {
"npm": "@ai-sdk/openai-compatible",
"name": "<你的模型供应商显示名称>",
"options": {
"baseURL": "<之前获取到的baseUrl填这里>/v1",
},
"models": {
"<模型id>": { "name": "<模型显示名称>" }
}
}
}
}步骤3:
进入opencode,使用/models命令列出模型列表,你就能看到刚刚添加的模型了。
我这加了个iflow-ROME来演示效果:
给它发条消息测试下,收到回应就说明调通了
附:
配置文件里其实还可以配置更多的附件参数,例如
- headers:随每个请求发送的自定义请求头。
- options.headers:可选,设置自定义请求头。
- limit.context:模型接受的最大输入 Token 数。
- limit.output:模型可生成的最大 Token 数。
2.2.2 使用CC-Switch(推荐)
其实我更推荐您使用CC-Switch来配置管理您的模型配置,无论从配置难度上,还是管理、切换的便利性上来说,相比古法配置方法都要好上不少,答应我宝贝,别再手搓json配置了,对自己好点。
CC-Switch Github地址:
GitHub - farion1231/cc-switch: A cross-platform desktop All-in-One assistant tool for Claude Code, Codex, OpenCode, openclaw & Gemini CLI. · GitHub
直接到旁边release链接里,根据你的平台,下载对应的即可。
它有两种,一个是安装包的,一个是便携版(绿色版),便携版开箱即用,就是无法自动更新,根据你的喜好下载即可。

打开之后长这个样子,可以看到它现在支持ClaudeCode,Codex,GeminiCLI,OpenCode,OpenClaw。
切换到Opencode下边,点击添加供应商,自定义配置,还是输入供应商标识,名称,APIKey,BaseUrl,模型id,模型显示名称(还是熟悉的配方,熟悉的味道)
从后边的json看,其实就是提供了一个GUI界面,然后帮你拼成上面格式的json,写入opencode.json文件。因此你配置一次后,即便下次不启动cc-switch,也不会影响,因为配置已经写入文件了,除非你要切换供应商。

之后将你要切换的供应商"+添加"到你的配置中,就可以在opencode中的模型列表中使用了。
是不是比古法手搓方便多了!
3. Skills 迁移
其实这里我强烈建议你,除了你自己创建的那些私有skills,其他公共安装的,就别迁移了,直接使用 The Agent Skills Directory上的方式来安装skills,具有以下两个明显优势:
- 统一:通过该方式安装的skills,会统一安装在一个地方,而在各个vibe coding工具中都可以读取或者通过符号链接的方式来使用skills,这避免了你在不同的工具中要重复安装skills的问题
- 更新:是的,skills也是会更新的,通过此方式安装skills之后,你便可以通过
npx skills update一键更新你所有的skills了。
至于你自己创建的skills,可以直接把skills的目录复制粘贴到~/.config/opencode/skills/下即可。
4. Subagents 迁移
可以直接将你在iflow中的subagent迁移到opencode中,创建~/.config/opencode/agents,将你的subagent的md文档直接复制粘贴过来。

****注意:**迁移过来后,你可能会遇到启动opencode后显示报错,类似下面的样子:

感谢 @10011029045 大佬和 @10011114789 大佬的贡献。
这是由于配置的兼容性问题。
第一个是subagent定义里的模型名为空,第一个是颜色信息不支持。
对于第一个,我们只要打开对应subagent的md文档,在元数据中的model:后边填写优先使用的模型名称即可。
对于第二个,我们需要调整subagent标识颜色,iflow使用的是颜色的英文名称,opencode需要改成颜色的16进制标识,并且需要使用引号进行包裹。
区别对比:

iflow的配置格式

opencode的配置格式
5. MCP 迁移
将你的~/.iflow/settings.json中的"mcpServers":{}中的配置,复制粘贴到~/.config/opencode/opencode.json的mcp:{}下面,保存。
6. 项目迁移
这个其实就做的时候,在项目目录下,/init一下就好,opencode的指令也是/init,并且opencode也是使用的AGENTS.md文档,这就是统一的好处啊。opencode会读取你iflow创建更新的AGENT.md文档内容,对项目进行初始化,你可以继续用opencode更新你的项目了。
对于那种比较老的项目,之前iflow创建的是IFLOW.md文档,您可以手动修改下文件名即可。
7. 通知提示功能
占坑,需要仔细研究下opencode的hook,等我下周一去单位再更新这块吧,先留个坑
8. 一些在iFlow中常用的命令映射到opencode,以及opencode中一些有意思的功能特性
8.1 常用命令映射关系
注:
- 斜杠命令有多个的,说明有别名,都可以用
- opencode的组合键,是先按ctrl+x松手,它会等待你继续按下一个命令键,再按一个键触发命令
| 命令内容 | iflow | opencode | opencode(组合键) |
|---|---|---|---|
| 压缩上下文 | /compress | /compact | ctrl+x c |
| 清空上下文 | /clear | /new, /clear | ctrl+x n |
| 切换会话 | /resume | /sessions, /resume | ctrl+x l(是L,不是i) |
| 跳转到指定对话内容 | – | /timeline | ctrl+x g |
| 重命名会话 | – | /rename | – |
| 切换模型 | /model | /models | ctrl+x m |
| 切换模式 | sifth+tab, alt+m | tab(向下切换,默认bulid,第二个plan,之后是subagent,所以实际上opencode都是agent),shift+tab(向前切换) | – |
| 回滚 | /restore | /undo(可多次回滚) | ctrl+- |
| 重做 | – | /redo | ctrl+. |
| 退出 | /quit | /exit, /quit | ctrl+x q |
| 主题 | /theme | /themes | ctrl+x t |
| 终止输出 | ESC | 两次 ESC | – |
| 分支 | – | /fork | – |
| 输入换行 | ctrl+Enter | ctrl+Enter | – |
| 执行shell命令 | !开头切换shell模式 | !开头切换shell模式 | – |
| 导出会话 | /export | /export | ctrl+x x |
| 分享会话 | – | /share | – |
| 引用文件 | @ | @ | – |
| 显式调用subagent | $ | tab, /agent | ctrl+x a |
先整理这么多,基本涵盖之前在iFlow CLI中使用到的一些功能,映射到opencode里对应的命令,以及组合快捷键。
这里重点解释一下加粗的三个。
- 清空上下文:在iFlow CLI中,仅仅是清屏+清空上下文,让上下文剩余百分比回满(100%)。在opencode中,其实它是在当前窗口中新开了一个会话,你原先的会话如果有任务,还会继续跑(对,并发!),你可以随时通过后边的切换会话命令
/sessions或者快捷键ctrl+x l,回到你前一个会话去看执行的结果情况。 - 分支:这是一个特性,用于某个地方,如果你拿不动主意哪个方案更好,可以
/fork有个分支会话出来,进行ab方案的验证。 - 切换到指定对话内容:之前其实也有小伙伴提过,对话内容太多了,怎么能定位到之前的某次对话,在终端界面里疯狂滚动鼠标,腱鞘炎都要滚出来了。在opencode里,你可以通过/timeline,会弹出窗口,列出你的对话列表,然后你可以快速跳转了。

8.2 其他
Q:旁边的侧边栏看着烦,怎么隐藏?
A:ctrl+x b
Q:从剪贴板中粘贴文字和图片?
A:iflow里粘贴文字是Ctrl+V,粘贴图片是Alt+V,在Opencode里都是Ctrl+V
Q:会话可以重命名吗?
A:可以的,使用/rename即可对会话进行重命名
然后再切换会话时,就会看到会话名字已经变成你刚刚重命名过的了
Q:启动后直接进如上一次的会话?
A:在iflow里是iflow -c,在opencode里是opencode -c
于是,你依然可以使用类似下面的做法,将opencode打开添加到你的右键菜单里,参数加上-c,就可以直接在你的项目目录打开opencode并自动进入上一次的会话,继续你未完成的任务了。
https://vibex.iflow.cn/t/topic/1474
Q:思考深度?
A:iflow里是通过提示词触发的不同深度的思考,opencode通过ctrl+t来切换
Q:支持自动压缩吗?
A:有自动压缩的配置,可以在你的~/.config/opencode/opencode.json配置文件中加入相关配置,类似如下格式:
{
"$schema": "https://opencode.ai/config.json",
"compaction": {
"auto": true,
"prune": true,
"reserved": 10000
}
}auto:自动压缩,默认值true
prune:删除旧的工具输出以节省token,默认值true
reserved:压缩时的 Token 缓冲区。保留足够的窗口以避免压缩过程中溢出。
Q:工具权限如何设置?支持yolo模式吗?
A:通过"permission": {}来设置工具的权限。
支持的工具包括:
- bash
- edit
- write
- read
- grep
- glob
- list
- lsp
- patch
- skill
- todowrite
- todoread
- webfetch
- websearch
- question
支持的权限配置为:
- allow
- ask
- deny
你可以自由的配置每种工具的权限,例如:
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"*": "ask",
"bash": "allow",
"edit": "deny"
}
}表示bash允许,edit进制,其他询问。
如果设置了”*“:”allow“,即为全部允许,也就是iFlow CLI的YOLO,注意该配置风险较大,请谨慎评估是否要使用全部允许的模式。
当然如果你有更加灵活的配置需求,也可以针对每种工具,对不同的命令,甚至不同的代理单独配置,例如:
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"git commit *": "deny",
"git push *": "deny",
"grep *": "allow"
}
},
"agent": {
"build": {
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"git commit *": "ask",
"git push *": "deny",
"grep *": "allow"
}
}
}
}
}上面的例子,为bash中的git commit,git push进行了阻止,grep,git其他设置了允许,其余bash命令为询问。build代理下的执行bash命令也是同样的权限配置。
施工中……
9. WSL
占坑
10. opencode server(Web)
opencode可以本机起一个服务,然后通过浏览器web进行访问
通过opencode web命令启动后,会自动给你分配一个默认的端口(4096端口,默认值,配置里可进行修改)
然后你就可以在你的浏览器中使用啦


大概长这个样子(我把能展开的都展开了),看起来功能还是很全的,更多的你可以自己去探索~
指定端口:
opencode web --port xxxx默认情况下,服务器绑定到 127.0.0.1 (仅限本地访问)。要使 OpenCode 在网络中可访问:
opencode web --hostname 0.0.0.011. 颜值
Opencode默认有个黑色的底色,四周和终端有个一些间距,当改变终端的外观,如透明度,开启亚克力材质效果(Windows Terminal)时,只有四周margin的区域是透明亚克力的,里边还是很丑的黑色大方框,而且由于要给滚动条留出位置,左右还不等宽的感觉,强迫症史诗狂怒,没有人比我更懂亚克力!(风琴手)

无法做到iFlow CLI那种一整块亚克力的效果?
其实是主题的问题,默认的主题是有背景色的。
使用/themes,或者组合快捷键ctrl+x t,打开主题列表,搜索system,选择它,回来了,都回来了,你的一整块亚克力它来了。

12. 支持中文吗?
web版和桌面应用都是支持中文界面的。
输入和输出的内容也都是支持中文的。
目前CLI的界面语言还没有支持中文,未来可能会支持,毕竟现在文档,web,desktop都逐渐有原生中文支持了。
如果实在需要CLI界面显示中文,可以看看下面的项目,是一个Opencode的汉化项目,基于opencode官方仓库做的自动化流水线。
https://github.com/1186258278/OpenCodeChineseTranslation
OpenCode 汉化发行版 是一个全自动化的 OpenCode 本地化项目。我们基于 GitHub Actions 构建了一套完整的自动化流水线:
每小时检测 官方仓库更新
智能触发 累计 ≥5 个新 commit 时自动构建
完整日志 Release Notes 自动包含官方更新日志
主要特性:
汉化统计
指标 数量 说明 翻译文件
41 个 模块化 JSON 配置 翻译规则
397 条 精准字符串替换 覆盖模块
5 个 dialogs/routes/components/common/root 测试覆盖
100% 18 个单元测试用例
版权所有
版权归属:寰宇

每小时检测 官方仓库更新
智能触发 累计 ≥5 个新 commit 时自动构建
完整日志 Release Notes 自动包含官方更新日志
翻译文件
覆盖模块
测试覆盖