You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
📌 背景与问题
在使用
@deepseek-ai/dsh-llm-pi-ai接入第三方 OpenAI 兼容网关(如 Google Gemini 兼容端点、火山引擎豆包、Kimi 等)及复杂多轮会话时,发现了两个较为关键的底层问题:多轮历史重构时的空指针崩溃(
replay.ts):source元数据的辅助 Assistant 消息时,toPiAssistant和foreignAssistant直接访问message.source.kind会触发未捕获的TypeError: Cannot read properties of undefined (reading 'kind'),导致会话直接中断。自定义
compat配置被静默丢弃(catalog.ts):resolveModelCompat()目前仅提取了思考链相关的参数,将用户在settings.yaml中配置的其它兼容性参数(如supportsDeveloperRole: false、supportsStore: false、maxTokensField)全部丢弃。store: false报 400,火山引擎端点收到developer角色报 400)时,用户即便在配置文件中声明了关闭开关也无法生效。🛠️ 解决方案与代码实现
已在个人 Fork 分支中完成修复并完成了实机测试,代码链接如下:
🔗 Commit:
sprainJinyu/deepseek-harness@0359397🔗 Branch:
fix/gemini-openai-compat-and-replay核心修改点:
packages/llm/llm-pi-ai/src/replay.ts:toPiAssistant和foreignAssistant中加入可选链安全访问(message.source?.kind),在缺失 source 时安全回退至 neutral foreign 模式。packages/llm/llm-pi-ai/src/catalog.ts:resolveModelCompat传入baseUrl;route.compat和entry.compat中配置的全部兼容性开关;googleapis.com等 Google 官方 OpenAI 兼容端点的自动识别与开箱即用默认值(默认关闭supportsStore和supportsDeveloperRole,maxTokensField设为max_tokens)。✅ 验证结果
glob)与流式输出的多轮复杂会话中进行了实测,多轮交互全程畅通;source消息)下的安全性,彻底消除了 TypeError 崩溃;希望能为社区和官方后续的主线合并提供参考!
All reactions