展开本页目录
开始前准备什么
- 下载练习包,先阅读 README 中的依赖和运行范围。
- 使用独立练习目录;starter 是待完成任务,reference 是作者参考实现。
- 账号型功能须在自己的授权环境执行;本题不要求提供真实凭据。
- 记录尚未完成项
- 确认压缩设置
- 建立压缩前基线
- 执行手动压缩
- 追问剩余工作
- 续做受限补丁
- 保存前后对应
2026-10-23 核验材料;实际执行范围、结果与限制见下方记录。
先下载样例,再完成自己的首次调用
示例不含密钥。API 按实际用量计费;下载和点击不代表调用成功。
OpenCode:压缩前后待办与边界核对
真实压缩保留待办和禁止路径,同时暴露待批准指令漂移,需重新核对权威合同。
· OpenCode1.2.15真实创建会话并执行summarize,出现compaction及summary:true的原生消息,之后可复述两个未完成测试和禁止routes.ts,源码SHA相同。但真实摘要把Do not modify any file yet弱化为Please continue with file updates,待批准边界漂移,因此只算partial,不能认定全部约束保持。
已取得下列真实结果;仍有内容质量或功能范围需要按本页检查项复核。
- 运行环境
- OpenCode1.2.15;独立练习目录;原创虚构输入;本页未使用apizt测试Key
1. 隔离配置和唯一供应商
独立外部练习目录,写compaction.auto:false/prune:true,启用唯一ollama provider并固定模型。
2. 启动原生本地服务
以独立XDG配置/数据/缓存启动opencode serve --hostname127.0.0.1 --port11436,禁默认插件、Claude提示读取、远端模型抓取、LSP下载。
3. 回读实际压缩配置
GET /config回读真实解析配置,本次version1.2.15/auto:false/prune:true。
4. 保存未完成合同和源码SHA
保存原创shipping.ts、shipping.test.ts、routes.ts SHA和真实Node测试:empty-basket、unknown-region均失败。告知仅允许shipping两文件、routes禁止,以及Do not modify any file yet;权限仍deny写入。
5. 调用原生summarize
调用官方POST /session/:id/summarize,保存HTTPtrue、compaction part、summary:true助手消息以及摘要文本。必须查摘要含义,不能只查字数或200。
6. 核对后续回答与禁止路径
压缩后先核对待办、禁止文件和待批准边界。本次前两者可复述、SHA未变,但摘要把待批准弱化成继续修改;因此需要重新附上权威contract.txt并等明确批准。写入被权限deny阻挡,不能用源码未变证明模型记忆全对。
这次实际得到什么
- 原生summarize返回true,并产生compaction part和summary:true消息。
- 压缩后真实回答仍有empty-basket、unknown-region和禁止routes.ts。
- 真实摘要把“Do not modify any file yet”改成“Please continue with file updates”,待批准边界漂移。
- 三个源码SHA保持,但写入权限deny也提供保护;两项原始Node失败测试没有被修复。
使用这份结果时注意
- 不能声称所有约束保留;压缩后必须重新核对权威合同并等明确批准。
- 本次短会话只能证明真实手动compaction和这一项漂移,不代表超长生产会话的保持率。
先读有效压缩配置,再验收 /compact 后的任务约束
OpenCode 1.3.13;本地命令核验。没有模型请求。
在隔离 opencode.json 中设置 compaction.auto 与 compaction.prune 为 false。
执行 opencode --pure debug config,核对输出中两个字段均为 false。
回到原样例单独核对压缩前后的待测项、禁止修改路径、测试状态和 Git 差异。
这次检查证明字段被读入,没有主动触发 /compact;历史案例结果与配置读取证据分开。
- 通过:有效配置 auto 为 false
- 通过:有效配置 prune 为 false
本地样例复跑
python3 lab.py --output ./result o051. 记录尚未完成项
原创长会话列出empty-basket、unknown-region两项失败及允许修改范围,避免压缩后只剩“继续开发”这样无法验收的指令。
2. 确认压缩设置
回读原生解析后的compaction设置。本题auto:false用于由读者手动观察压缩,prune:true不等于已删除或完成未做任务。
本题本地命令
opencode debug config --pure3. 建立压缩前基线
在自己的授权OpenCode会话确认当前git diff、失败测试和禁止修改的routes.ts,再保存原始会话证据。
4. 执行手动压缩
在TUI执行/compact,等待该会话实际完成。本文没有调用该命令,不能用carry-forward.md冒充原生压缩输出。
5. 追问剩余工作
压缩后先问“还欠哪两个失败测试、允许改哪些文件”。与作者核对单逐项比,缺项应重新补充原证据。
6. 续做受限补丁
让Agent只处理shipping.ts及测试,检查未知地区与空篮子合同。压缩是上下文整理,不是自动放宽改动权限。
7. 保存前后对应
保留压缩前待办、真实压缩后回答、失败测试与git diff。核对单只定义目标,不证明压缩后的Agent已经记住全部要求。
怎样确认已经完成
- 未完成项可找回
- 禁止路径未变
- 不得以摘要字数证明任务保持
- 已通过OpenCode原生debug config回读auto:false/prune:true;未执行模型长会话或/compact,压缩后核对单是作者预设合同。
常见问题
OpenCode 会话太长怎么压缩又不丢待办?
压缩后先让Agent复述未完成测试、约束和文件范围,再对照压缩前证据。本文提供原生配置回读和作者核对单,未执行模型压缩。
Compact 以后 Agent 还记得哪些文件不能改吗?
不应假定会自动保留全部内容。把边界、待做项和当前失败用例明确记下,压缩后逐条确认,再继续修改。
哪些功能已经实际执行?
已通过OpenCode原生debug config回读auto:false/prune:true;未执行模型长会话或/compact,压缩后核对单是作者预设合同。





