← 返回信息流
Agent SkillLINUX DO · AI·1 小时前

CPA插件cpa-continue-thinking解决Codex截断问题

原标题:「开源推广」cpa-continue-thinking:给 CPA 的 Codex 继续思考插件

速览

cpa-continue-thinking是基于neteroster的CodexCont方案开发的CPA插件,用于解决Codex在长推理任务中因516截断导致的降智问题。插件在CPA路由层拦截SSE流,检测到截断模式时自动追加加密推理标记并请求下一轮,支持多种协议和可配置参数。它不收集敏感数据,失败时尽量透传,降低了开发者维护独立代理的成本。

AI 深度解读

背景

近期,使用 OpenAI Codex 的深度推理任务(如长链思考、复杂代码生成)时,用户频繁遇到模型在推理 token 达到 516 附近时被截断或“降智”的问题。具体表现为:模型的输出在某个 token 位置戛然而止,只返回部分推理结果,后续内容缺失,导致任务无法完成。

社区用户 @neteroster 提出了一个名为 CodexCont 的解决方案,其核心思路是:当 Codex 的推理 token 数量命中疑似截断形态 518*n - 2 时,将当前轮次未完成的 reasoning item 重新拼接回输入,让模型继续思考,然后将多轮对话的结果合并为一次正常的流式响应。这一方案不需要修改模型本身,而是通过中间件或代理层实现。

核心内容

本文介绍的开源项目 cpa-continue-thinking 是一个针对 CLIProxyAPI(CPA)的插件,它实现了 CodexCont 的继续思考逻辑,但无需单独运行一个独立的代理服务。CPA 本身是一个通用的 API 路由代理,支持多种后端协议(如 OpenAI Responses、Chat Completions、Claude Messages、Gemini、Interactions 以及原生 Codex 等)。该插件以 Go 动态链接库(.so)的形式加载到 CPA 中,作为中间件工作。

工作流程

  1. CPA 将请求路由到该插件后,插件会代理 Codex 的 SSE 流响应。
  2. 插件会缓存每个 response.completed 事件。
  3. 当检测到当前输出 token 数命中截断公式 518*n - 2 时,插件会自动:
    • 从缓存的完成事件中提取加密的 reasoning 和 hidden commentary marker。
    • 将这部分内容追加到下一次请求的输入中。
    • 删除上一次请求的 previous_response_id(避免链路错误)。
    • 发起新一轮请求,让模型继续推理。
  4. 如果未命中截断公式,则直接透传原始响应,不做任何修改。
  5. 最终,插件将多轮得到的响应合并为一次完整的流式输出,返回给客户端。

主要特性

  • 支持多种 CPA 下游协议:包括 OpenAI Responses / Chat Completions / Claude Messages / Gemini / Interactions / 原生 Codex 等,覆盖常见推理场景。
  • 可配置参数:用户可配置 max-continue(最大继续轮数)、truncation-step(截断步长)、min-n / max-n(推理 token 范围)、model-prefixes(针对特定模型生效)等,灵活适应不同模型和任务。
  • fail-open 机制:当继续思考过程失败时(如 API 错误、超时),插件会尽量将当前已获得的完成事件吐回给客户端,而不是直接中断流,保证服务不崩溃。
  • 内置内存指标面板:只记录聚合数据(如继续次数、继续率、停止原因、推理 token 分布),不收集任何 prompt、response、API key、账号信息,保护用户隐私。
  • 测试通过:仓库内已包含 go test ./... 测试,确保基本功能正确。
  • 构建方式:需要 Go 1.26+ 和 zig CC 交叉编译工具链,生成 .so 文件供 CPA 加载。

关键要点

  • 解决 Codex 截断/降智问题:通过识别截断公式并自动追加继续请求,让模型完成长推理任务,避免因 token 限制导致输出中断。
  • 作为 CPA 插件运行:无需额外部署独立的代理服务,只需在 CPA 配置中加载该插件,即可为所有经过 CPA 的 Codex 请求启用继续思考能力。
  • 兼容多种下游协议:不仅支持 OpenAI 原生接口,还支持 Claude、Gemini、以及自定义的 Interactions 协议,适用于多模型混合环境。
  • 高度可配置:允许用户根据具体模型和任务调整继续策略(如最大轮数、截断步长、token 范围),兼顾性能与效果。
  • fail-open 设计:即使继续过程失败,也能最大程度保留已完成的推理结果,避免客户端空等或报错。
  • 隐私保护:内置指标面板仅聚合统计信息,不记录任何敏感数据,适合生产环境使用。
  • 社区协作:项目参考了 @neteroster 的 CodexCont 原方案,以及 @shinorochi 在相关帖子中的 commentary phase 改进思路,体现了开源社区的互助精神。

意义与影响

cpa-continue-thinking 插件的出现,为 Codex 长推理任务中遇到的截断问题提供了一个轻量、可插拔的解决方案。其意义主要体现在:

  • 提升推理连贯性:通过自动继续思考,让模型能够输出完整的长链推理结果,显著改善复杂代码生成、数学推导等场景的表现。
  • 降低部署复杂度:将继续思考能力集成到 CPA 插件层,用户无需维护额外服务,只需升级 CPA 配置即可获得该功能,降低了运维成本。
  • 增强兼容性:支持多种主流模型协议,使得该插件可以作为一个通用组件,服务于混合模型架构的团队。
  • 推动社区创新:项目基于社区已有的思路(CodexCont)进行改进,并开源共享,鼓励更多开发者在此基础上进一步优化,形成良性循环。
  • 保护隐私与安全性:指标面板不收集敏感信息,符合企业级安全要求,打消了用户对数据泄露的顾虑。

总的来说,该插件不仅解决了当前 Codex 用户的痛点,还为 CPA 生态增添了一个有价值的功能模块,展现了开源社区在解决实际工程问题中的敏捷性和创造力。

查看原文 →linux.do