背景
在将 main 分支同步到最新版本(v0.2 @ 4c66392)后,对当前所有 open bug issues 进行了代码级根因分析。以下 issue 的问题根源在 v0.2 代码中仍然存在,在相同场景下会稳定复现。
它们不是环境/配置/第三方 provider 的问题,而是 open-codesign 自身代码层面的缺陷。本 issue 作为汇总跟踪单,链接到各具体 issue,便于集中关注。
核心缺陷清单(v0.2 已确认)
1. 导出格式内容/样式严重丢失
Issue : [Bug]: 导出功能存在多格式内容/样式丢失问题 #284
影响 : PPTX → 只剩标题+项目符号;Markdown → 丢失表格/布局;HTML → 离线不可用;ZIP → 不收集本地资源;PDF → 无页眉页脚
根因 : packages/exporters/ 各导出器仅做简单正则提取,未做资源内联/渲染保留
状态 : 未修复,v0.2 代码与之前完全一致
2. DeepSeek V4 Pro reasoning_content 回传失败
3. 非 reasoning 模型被错误发送 role: developer(Kimi / MiniMax)
4. Agent verify/edit 循环无上限,大量消耗 token
Issue : [Bug]: Model reasoning in loop burning all tokens #251
影响 : 简单任务运行 10+ 分钟、消耗 $2+,agent 在 "reasoning → editing → reasoning" 中无限循环
根因 : agent.ts 没有代码级 max-round 硬上限。verifier 只收集 3s 内 console 错误,若无反馈 agent 无方向自修正。done tool 提示词中 "3 rounds" vs "5 rounds" 冲突
状态 : 未修复,循环仍可能无限进行
5. 未 onboarding 时 UI 暴露 design system 入口导致报错
Issue : [Bug]: RENDERER_ERROR (fp: 213f47a1) #249
影响 : 新用户在 onboarding 完成前点击 "Link design system",弹出 Cannot save a design system before onboarding has completed
根因 : apps/desktop/src/main/ipc/picker.ts:44 的 setDesignSystem() 有 onboarding 守卫,但 AddMenu.tsx 在 UI 层未做前置检查
状态 : 未修复,入口仍暴露
6. Chat 显示 "design.html delivered" 但 Files 面板为空
7. 生成失败只显示 CodesignError: terminated,缺乏具体错误信息
8. 测试连接通过但实际生成报 403,诊断提示不准
日志新发现缺陷(v0.2 日志分析)
9. Workspace path 绑定冲突,多个设计无法共享工作区
10. Windows 文件监视器 EPERM 权限错误
11. Scaffold manifest 校验失败 — iphone-frame.source 缺失
12. 自动更新器每次启动都报 404 — Cannot find latest.yml
修复优先级建议
优先级
Issue
理由
P0
#284
导出是核心用户流程,当前几乎不可用
P0
#257 / #234
阻断多个主流模型(Kimi、MiniMax)的使用
P1
#251
直接影响用户成本(token 燃烧)
P1
#260 / #252
阻断 DeepSeek V4 用户使用
P1
#248
用户看到"已交付"但找不到文件,体验极差
P1
#286
工作区绑定冲突阻断多设计工作流
P2
#189
提升可诊断性,减少 support 成本
P2
#124
测试与生成一致性
P2
#249
新用户 onboarding 体验
P2
#287
Windows 文件监视器稳定性
P2
#288
脚手架 manifest 校验
P2
#289
启动日志噪音,影响可读性
如何验证修复
每个 issue 的复现步骤都在其原始 issue 中详细描述。修复后可用以下方式验证:
[Bug]: 导出功能存在多格式内容/样式丢失问题 #284 : 生成一个带图片/卡片的 HTML → 分别导出 PPTX/Markdown/HTML/ZIP/PDF → 检查内容/样式保留度
[Bug]: Kimi-K2.6 and other models incorrectly receives role: developer, causing 422 from Azure AI Foundry #257 /[Bug]: GENERATION_FAILED (fp: ebd4e21f) #234 : 配置 Kimi-K2.6 或 MiniMax-M2.7 → 发送任意 prompt → 不应再收到 422/400 developer role 错误
[Bug]: Model reasoning in loop burning all tokens #251 : 发送一个简单 prompt(如"生成一个博客页面")→ 观察生成时间和 token 消耗,不应超过 3 分钟/$0.5
[Bug]: GENERATION_FAILED (fp: b27a1f89) #260 /[Bug]: GENERATION_FAILED (fp: b27a1f89) #252 : 使用 DeepSeek V4 Pro 做多轮编辑 → done/verify 不应报 reasoning_content 错误
[Bug]: sidebar chat window showing "design.html delivered" but cannot see in the files app #248 : 不绑定工作区直接生成 → Chat 显示交付后 Files 面板应能看到虚拟 FS 中的文件
bug: 生成失败只显示 'CodesignError: terminated',缺乏具体错误信息 #189 : 断开网络/配置错误 baseUrl → 生成失败提示应具体指出"网络中断"/"代理超时"等
正常对话时报 403 错误:Error invoking remote method 'codesign:v1:generate' #124 : 配置一个 /models 可访问但生成端点 403 的网关 → Test Connection 应同步失败或给出 403 提示
[Bug]: RENDERER_ERROR (fp: 213f47a1) #249 : 在未 onboarding 状态下点击 Link design system → 应给出友好引导而非 raw error
bug: Workspace path binding conflict prevents multiple designs from sharing workspace #286 : 创建两个设计绑定同一工作区路径 → 应允许共享或给出明确解除绑定引导
bug: EPERM file watcher error on Windows when watching workspace files #287 : 在 Windows 上修改工作区中的文件 → 文件监视器不应报 EPERM,应正常检测变更
bug: Scaffold manifest validation fails — 'iphone-frame.source must be a non-empty string' #288 : 启动应用 → 日志中不应再出现 iphone-frame.source must be a non-empty string
bug: Auto-updater fails with 'Cannot find latest.yml' 404 on every startup #289 : 启动应用 → 不应再出现 Cannot find latest.yml 404 错误日志
本 issue 仅用于汇总跟踪。具体讨论和修复请移步各子 issue。
背景
在将
main分支同步到最新版本(v0.2 @4c66392)后,对当前所有 open bug issues 进行了代码级根因分析。以下 issue 的问题根源在 v0.2 代码中仍然存在,在相同场景下会稳定复现。它们不是环境/配置/第三方 provider 的问题,而是 open-codesign 自身代码层面的缺陷。本 issue 作为汇总跟踪单,链接到各具体 issue,便于集中关注。
核心缺陷清单(v0.2 已确认)
1. 导出格式内容/样式严重丢失
packages/exporters/各导出器仅做简单正则提取,未做资源内联/渲染保留2. DeepSeek V4 Pro reasoning_content 回传失败
400 The reasoning_content in the thinking mode must be passed back to the APIagent.ts:674-675设置thinkingLevel,但 pi-ai agent 路径在多轮对话中没有将上一轮 model 返回的reasoning_content正确回传3. 非 reasoning 模型被错误发送
role: developer(Kimi / MiniMax)role: developer, causing 422 from Azure AI Foundry #257 / [Bug]: GENERATION_FAILED (fp: ebd4e21f) #234developerrole,被第三方网关拒绝(422/400)packages/providers/src/index.ts:202-211的REASONING_MODEL_ID_PATTERN包含(^|/)claude-(?:opus|sonnet)-4和^minimax/minimax-m\d,将这些非 reasoning 模型误判为 reasoning,pi-ai 因此发送developerrole4. Agent verify/edit 循环无上限,大量消耗 token
agent.ts没有代码级 max-round 硬上限。verifier 只收集 3s 内 console 错误,若无反馈 agent 无方向自修正。donetool 提示词中 "3 rounds" vs "5 rounds" 冲突5. 未 onboarding 时 UI 暴露 design system 入口导致报错
Cannot save a design system before onboarding has completedapps/desktop/src/main/ipc/picker.ts:44的setDesignSystem()有 onboarding 守卫,但AddMenu.tsx在 UI 层未做前置检查6. Chat 显示 "design.html delivered" 但 Files 面板为空
workspacePath === null时useDesignFiles.ts:54-56返回空数组。chat 的artifact_delivered和 Files 是两个独立路径7. 生成失败只显示
CodesignError: terminated,缺乏具体错误信息applyGenerateError直接透传err.message,没有对terminated/aborted/premature close等做分类映射8. 测试连接通过但实际生成报 403,诊断提示不准
/models端点,生成走真实推理请求,两条路径被网关/反代区别对待。diagnostics.ts:61将 403 归为keyInvalid,WAF/网关拦截场景没有独立提示日志新发现缺陷(v0.2 日志分析)
9. Workspace path 绑定冲突,多个设计无法共享工作区
Workspace path is already bound to another design,阻断操作main.log2026-05-04 出现 5 次10. Windows 文件监视器 EPERM 权限错误
files.watch在 Windows 上抛出EPERM: operation not permitted, watch,导致文件变更检测中断main.log2026-05-04 出现11. Scaffold manifest 校验失败 — iphone-frame.source 缺失
manifest.scaffolds.iphone-frame.source must be a non-empty string,iphone-frame 脚手架不可用iphone-frame的source字段为空或缺失,schema 要求非空字符串main.log在 4/23、4/24、4/25、5/04 各出现 1 次,共 4 次12. 自动更新器每次启动都报 404 — Cannot find latest.yml
electron-updater每次启动检查更新均因latest.yml不存在(404)而失败,产生 error 级别日志main.log每次启动均出现修复优先级建议
如何验证修复
每个 issue 的复现步骤都在其原始 issue 中详细描述。修复后可用以下方式验证:
role: developer, causing 422 from Azure AI Foundry #257/[Bug]: GENERATION_FAILED (fp: ebd4e21f) #234: 配置 Kimi-K2.6 或 MiniMax-M2.7 → 发送任意 prompt → 不应再收到 422/400 developer role 错误/models可访问但生成端点 403 的网关 → Test Connection 应同步失败或给出 403 提示iphone-frame.source must be a non-empty stringCannot find latest.yml404 错误日志本 issue 仅用于汇总跟踪。具体讨论和修复请移步各子 issue。