帮你从iFlow CLI丝滑迁移到OpenCode——第二弹之智能自动压缩

前情回顾

第一弹主要写了从iFlow CLI第一次迁移到OpenCode,你过去的资源(Subagents,MCP,Skills),项目,系统通知,主题,使用习惯(斜杠命令对照,快捷键,右键菜单等等),以及一些OC特有的新特性的说明。

第二弹主要来说下压缩的问题

关于自定义模型如何正确记录使用的上下文并计算百分比,也在第一弹里有说明,可以去翻一翻。

众所周知,OC里使用/compact命令,可以主动的对上下文进行压缩。但是我们已经习惯了在iFlow里自动压缩了。

虽然OC里有配置项,可以配置自动压缩,但实测不太好用,不能像iFlow那样简单方便的控制压缩百分比阈值(而且我实际这几天重度用下来,似乎没见它触发过……)

好在,OC有插件生态,今天介绍一个,叫 opencode-dynamic-context-pruning缩写DCP,通过修剪过时的工具输出来优化 Token 使用

Github项目地址:

https://github.com/Opencode-DCP/opencode-dynamic-context-pruning

安装

安装非常简单,一行命令:

opencode plugin @tarquinen/opencode-dcp@latest --global

工作原理:

DCP 通过压缩工具和自动清理来减小上下文大小。您的会话历史不会被修改——DCP 在向您的 LLM 发送请求前,会用占位符替换被修剪的内容。

压缩是一个暴露给您的模型的工具,它用高保真技术摘要替换已关闭的过时对话内容。您可以将此视为 Opencode 压缩过程的更智能版本。 压缩工具不会在您的会话达到最大上下文或整个编码会话时静态触发,而是允许模型根据任务完成情况选择激活时间,并且仅压缩那些不再需要逐字保留的特定消息。

DCP 支持两种压缩模式:
range 模式将连续的对话片段压缩成一个或多个摘要。
message 模式(实验性)独立压缩单个原始消息,让模型更精确地管理上下文。

去重:识别重复的工具调用(相同工具、相同参数)并仅保留最新的输出。当压缩工具运行时重新计算,因此提示缓存仅在压缩时受影响。

清除错误:在经过可配置的轮数(默认:4)后,从出错的工具调用中修剪输入。错误消息被保留;仅移除可能较大的输入内容。在压缩工具使用时重新计算。

支持的命令

效果

其实我也没配置,装上就不管它了,它自己会去压缩的,而且压缩是细分类型策略的,比如上面提到的工具调用去重、错误,结论等等,如下图

2 个赞

居然还有后续 :thinking:

有种当你以为已经完结了,结果发现第一季刚结束的感觉 :zany_face:

1 个赞

安了, 安了.

1 个赞

把你的插件和mcp都交出来 :cowboy_hat_face:

其实是太长了,我滑不动了……点编辑也要卡一会 :rofl:

哈哈哈,我就装了两个插件啊,一个通知的,一个压缩的

mcp还是那老几位

opencode有没有类似iflow的plan模式?感觉plan模式好用

有,用起来和iflow非常像,且(小声哔哔)交互细节比iflow做的好 :face_with_peeking_eye:(iflow本来在优化交互中,但是还没做完项目就被叫停了)

1 个赞

有的, 我是Windows环境. Tab 切换为 Plan 模式, 这个模式下不能使用工具, 需要再手动 Tab 切换为 Build 执行计划.

1 个赞

就是按tab切换的plan模式吗?

好的我去看看

对,按tab,因为opencode的plan也是个主agent,tab键是切换主agent的快捷键


为什么我选了开始实现他还在plan模式,居然不会自己切换 :sweat_smile:

不会自动切换它,得手动tab切回build :rofl:

有点呆呆的

1 个赞

我想给你发私信,想请你推文推一下 oh-my-opencode,有一些资料,但是系统提示不接受消息。

哈哈哈,之前我被反代的拉仇恨,关了私信,只留了官方的

我还没用过omo,之前用过superpowers,仍然觉得有点过于刻板,目前还在plan–>build的古法vb阶段 :joy:

您可以直接发呀,社区鼓励大家都来分享~ :cowboy_hat_face:

我文辞粗浅不适合写文章,你写的文章大家都挺爱看的,我是希望有哪一“弹”的推文能推一下 oh-my-opencode ,它现在叫 on-my-openagent(https://github.com/code-yeongyu/oh-my-openagent),多智能体编排插件。
从表象上说,它把opencode自带的(开发模式)智能体(build 和 plan),变成了4个:
Sisyphus(主编排器)、Hephaestus(自主编码智能体)、Prometheus(更好的plan模式)、Atlas(执行计划),通常我们使用 Sisyphus 来做一些明确的任务(局部任务,会委托子代理),plan模式我们通常是使用 Prometheus,它不会改代码,它会在项目根目录下创建 .sisyphus 文件夹,里面会生成 .md文件,并创建todo,它回复完成后,你只需要输入 /start-work 此时会自动切到 Atlas 智能体 开始执行分发任务执行计划。而 Hephaestus是自主智能体,只需提供目标,无需详细步骤,无需人工干预。(因此我们平时 也只是关注两个模式:Sisyphus 和 Prometheus)

我最初使用 oh-my-opencode 是因为我们一直使用一个大模型是不明智的,通常参数体量大的模型,它执行慢,因为它要思考,而且它价格本身就贵,但是我们频繁地使用 体量大又贵 的模型进行代码探索、文档编写 这些小任务时,会不会觉得有点 “大材小用” 的感觉?因此我急迫地希望这些小任务能由 又快又便宜 的小模型去做,而 oh-my-opencode 正是多智能体编排实现,它内部有11个智能体,这11个智能体你可以为它们配置不同的模型:

智能体 用途 模型要求 上下文推荐
Sisyphus 主协调器。负责规划、委派给专家,并通过激进的并行执行推动任务直至完成 强指令遵循+ 协调能力 + 高并发能力 128k
Hephaestus 自主编码智能体。只需提供目标,无需详细步骤。 会自主探索代码库、研究模式,并端到端地执行任务,无需人工干预 最强代码能力 1m
Prometheus 规划师。与用户交互,澄清问题,识别范围与模糊点,并制定详细计划 思考能力 + 工具协同 256k
Atlas 指挥家。将任务分发给专业子智能体,跨任务累积经验,并独立验证完成情况 指令遵循 + 任务分发 + 长程任务稳定(长链条) 256k
Oracle 顾问。专用于架构决策和复杂调试的高智商 只读 顾问 最强推理能力 1m
Metis 分析员。在计划最终确定前捕捉 Prometheus 遗漏的问题 多步骤推理稳定 1m
Momus 评审员。根据清晰度、可验证性和上下文标准审核计划 深度思考能力 (思维链机制适合逐条分析) 256k以上
Explore 快速代码库检索,使用专注速度的模型进行模式发现 速度优先 + 高并发(可并行启动10个实例) 256k
Librarian 文档与开源代码搜索,持续跟踪库 API 与最佳实践 速度优先 + 高并发(思考模型适合分析现有实现) 256k
multimodal_looker 视觉与截图分析 多模态能力 + 前端能力 128k以上
sisyphus_junior 类别任务执行器。 快速代码能力 256k以上

注意:当 Sisyphus 委托工作时,它不选择具体模型,而是选择类别,系统自动映射到合适的模型,因此类别我们需要配置合适的模型:

类别 用途 模型要求+官方文档中的推荐
visual-engineering 前端、UI、CSS、设计 多模态能力 + 前端能力:
gemini-3.1-pro、glm-5、Claude Opus 4.6、k2p5
ultrabrain 最大推理 最强推理:
gpt-5.4、gemini-3.1-pro、Claude Opus 4.6、glm-5
deep 深度编码/复杂逻辑 深度编码能力:
gpt-5.3-codex、Claude Opus 4.6、gemini-3.1-pro
artistry 创意/新颖方法 多模态能力:
gemini-3.1-pro、Claude Opus 4.6、gpt-5.4
quick 简单/快速任务 速度优先 + 高并发,轻量级:
gpt-5.4-mini、Claude haiku、gemini-flash、gpt-5-nano
unspecified-high 通用复杂任务 最强代码能力:
Claude Opus 4.6、gpt-5.4、glm-5、k2p5、kimi-k2.5
unspecified-low 通用标准任务 快速代码能力:
Claude Sonnet 4.6 、gpt-5.3-codex、kimi-k2.5、gemini-flash
writing 文本/文档 文本生成能力:
gemini-flash、kimi-k2.5、Claude Sonnet 4.6

智能体适配模型,官方有完整的文档:

内部智能体说明:https://github.com/code-yeongyu/oh-my-openagent/blob/dev/docs/guide/overview.md

内部智能体与模型匹配指南:https://github.com/code-yeongyu/oh-my-openagent/blob/dev/docs/guide/agent-model-matching.md

配置说明:https://github.com/code-yeongyu/oh-my-openagent/blob/dev/docs/reference/configuration.md

  • 全局配置:%USERPROFILE%.config\opencode\oh-my-opencode.json
  • 项目级配置:在你的项目文件夹下创建 .opencode\oh-my-opencode.json

ps:感谢你的文章分享,让我学到了不少知识。花花~

1 个赞

回头我学学~
没用过的东西,目前我还没有发言权哈哈 :rofl:

讲真,我个人很少用(传统的)自动压缩。:face_with_peeking_eye:
压缩本质上是牺牲精度,换取上下文空间的过程。
这个操作 应该由人类决定 什么时候执行。
不过,这个工具看起来会好很多。比直接compress智能一些。

是的, 相比全部砍一刀,这个刀法应该是会更精准些 :joy:

1 个赞