一个小字符串是怎么打爆 OMP 自动压缩的
太长不看
OMP 是一个 AI 编程助手。你跟它聊得越久,对话越长。AI 一次能处理的文字有上限,所以到了一定长度,OMP 会自动把旧对话压缩成一段摘要,继续聊。
压缩的过程是让 AI 重新读一遍旧对话,写个总结。问题出在 OMP 怎么排版旧对话:它用了一种叫 Harmony 的格式来序列化,其中 AI 之前的思考内容被包上了 <|channel|>analysis 这样的标记。这个标记是 OMP 自己加的格式,不是 AI 写的,也不是对话里本来就有的。
GitHub Copilot 的 gpt-5.6 系列模型拒绝处理包含这个标记的请求。为什么只有 gpt-5.6 系列拦、其他模型不拦,没有从官方得到确认。从行为看,它可能把这个标记识别为不该出现在用户输入里的内部协议符号。哪怕请求里只有这一个字符串、什么都没有,也会被拒。
结果就是压缩失败,会话卡住,用户得手动换模型或清空历史才能继续。
十几个字符的字符串,直接让 OMP compaction 400 了。
字符串是这个:
1 | <|channel|>analysis |
场景是 OMP 的自动压缩。会话太长以后,OMP 会把历史对话压成一份摘要,继续塞回上下文里。正常情况下,这件事不该惊动用户。结果这次直接炸了:
1 | Compaction failed: Summarization failed: 400 |
一开始看起来像凭证问题。再看 raw request,味道不对。

.witvkcf9b.webp)

