现实很骨感:很多朋友跑来后台问我:“大佬,为什么我的 OpenCode 聊着聊着就开始胡说八道了?”、“我想让它读我的整个项目,结果它直接报错不干了?”
真相只有一个:你的 Context Window(上下文窗口) 爆了。
一、什么是 Context Window?(用奶茶店排队来理解)
很多教程喜欢用“Token”吓唬人,今天我用排队买奶茶给你讲清楚。
想象一下,OpenCode 是一个奶茶店店员:• Context Window(上下文窗口):就是店员脑子里的记忆容量。
• Token:就是你说的每一句话、代码里的每一个字符,都是排队的人。
场景重现:
你刚开始聊天,店员脑子很清醒(内存充足),记得你是谁,想要几分糖。
你开始往对话框里疯狂扔代码(几百行、几千行)。
店员脑子里的队伍排满了(Context Window 满了)。
后果:◦ 情况 A:新来的人把最早排队的人挤走了(遗忘)。所以 AI 忘了开头的设定,开始胡说八道。
◦ 情况 B:门口保安拦住你,不让进了(报错)。OpenCode 直接提示 Context length exceeded。
重要澄清:
OpenCode 在手机(Termux)和电脑上调用的都是同一个 API,上下文窗口大小完全由你选用的模型本身决定,跟设备无关。
不管是手机还是电脑,只要往上下文里塞太多内容,都会爆——这是所有 AI 编程助手的通用通病,不是手机特有的问题。
不同模型窗口差别很大:有的模型支持 128k~200k Token(能装下中小型项目),有的较早期或受限模型只有 4k~8k(几屏代码就满)。
为什么我们要专门讲这个?
实际使用中,大家最容易犯的错是:
"AI 怎么连我刚说的都忘了?/"AI怎么把我之前提的要求都忘了?"
答案都是——上下文窗口已满或即将溢出。后面的内容,就是教你如何跟这个限制相处。
二、OpenCode 是怎么“记性不好”的?
OpenCode 的上下文包含三部分:
System Prompt:它内置的“性格”和你配置的 Skill(这部分占坑,但你没法删)。 History:你们的聊天记录(你问一句,它答一句,历史越长,占坑越多)。 Input:你当前输入的代码或问题(这是压死骆驼的最后一根稻草)。
致命误区:很多新手以为,只要我不把代码贴进去,AI 就不知道项目结构。错!如果你用 /explain-file main.py,OpenCode 会把 main.py 的内容全部加载到 Context Window 里。
三、急救术:如何清理“脑子里的垃圾”?
当你发现 AI 开始犯傻时,先别急着骂模型不行,试试这几招:
清空上下文(最有效的重启)
在 OpenCode 里,最简单粗暴的方法:
/clear
这会清空当前会话的记忆,让店员重新开始排队。代价是你之前的对话都没了。
使用新 Session(分而治之)
不要在一个窗口里既聊前端又聊后端。• 窗口 1:专门解释代码。
• 窗口 2:专门写文档。
• 窗口 3:专门 Debug。
善用 .gitignore 和 .opencodeignore
OpenCode 会自动索引项目文件。如果有些文件(比如 node_modules、打包后的 dist)不需要 AI 看,一定要在 .opencodeignore 里屏蔽掉,减少不必要的干扰。
四、进阶术:上下文压缩(Context Compression)
这是高手和普通用户的区别。既然窗口有限,我们就把水挤干。
策略 1:Map-Reduce(分而治之)
不要直接扔 5000 行代码给 AI。错误示范:/explain-file big-project.js正确操作:
先让 AI 看目录结构:ls -R 让它挑重点文件:/explain-file core/logic.js 让它总结核心逻辑(压缩信息):请总结这个文件的核心函数,不要贴代码,只要逻辑描述。 拿着这个“总结”,再去问下一个文件。
策略 2:Refinement(提炼)
如果你必须处理长文本(比如日志):
请阅读以下日志,提取出关键的 ERROR 信息和堆栈跟踪,忽略 INFO 和 DEBUG 信息。[粘贴长日志]
核心思想:先过滤,再输入。
五、实战:在手机上处理一个“超长文件”
假设你有一个 legacy-code.js,有 3000 行,手机跑不动。
Step 1:切片在 Termux 里,我们只截取最后 500 行给 AI(通常 Bug 在最近修改的地方):tail -n 500 legacy-code.js > short.txt
Step 2:喂给 AI在 OpenCode 里:
请分析 short.txt 里的代码,找出潜在的内存泄漏风险。
Step 3:利用 Skill 进行压缩还记得上一期的 Skill 吗?我们可以写一个 summarize-file Skill:
name: summarize-filedescription: 压缩文件内容,只保留核心逻辑。
请阅读 @$ARGUMENTS 文件。不要解释每一行代码。请输出:
文件的主要功能。 导出了哪些函数/类。 依赖了哪些外部库。
这样,原本 3000 行的代码,被压缩成了 3 行摘要,极大地节省了 Context Window。
六、总结与下期预告
今天这篇,我们解决了 AI “记不住” 和 “看不完” 的问题。• Context Window 就像店员的脑子,装满了就会忘。
• 压缩术 就是把水挤干,只留干货。
• Skill 可以帮助我们在输入前就做好预处理。
但是,还有一个终极难题:如果我想让 AI 实时读取我手机里的短信、或者查询服务器的数据库,甚至帮我自动发邮件,光靠“聊天”和“压缩”是做不到的。这需要 AI 拥有手脚。
下期预告:《Transfer:高效搬运上下文的艺术》
如果你在手机上跑 OpenCode 时也遇到了“爆内存”的情况,欢迎把报错截图发到后台。
这期我会在评论区抽一位朋友,送一个 价值 ¥10 的 DeepSeek API Key,让你换个更大的“脑子”继续折腾
夜雨聆风