Skip to content

[v0.2] dev/v0.2 分支 Bug 清单 — 2026-04-29 审计 #254

@Sun-sunshine06

Description

@Sun-sunshine06

分支: dev/v0.2 (commit 7bec35b)
审计日期: 2026-04-29
审计环境: Windows 11, Node v24.11.0, pnpm 9.15.0


CI 检查总览

检查项 状态 详情
类型检查 (pnpm typecheck) ✅ 通过 10/10 包成功
Lint (pnpm lint) ✅ 通过 Biome 2.4.13, 459 文件, 0 问题
单元测试 (pnpm test) ⚠️ 部分失败 7/10 包通过,3 包因环境问题失败

测试失败详情(非代码缺陷,环境相关)

  • @open-codesign/exporterspdf.test.ts 3/50 测试超时,Puppeteer/Chrome 发现在 Windows 上较慢(5s limit)
  • @open-codesign/ui — Vitest forks worker 启动失败([vitest-pool]: Failed to start forks worker

通过的包

artifacts (19/19) · templates (8/8) · shared · runtime · providers · desktop · core


Bug 清单

Bug #1 [高] 生成任务长时间运行后 terminated 错误

  • 严重度: 高(功能缺陷,影响长时间生成任务)
  • 现象: 生成任务运行约 12 分钟后,UI 弹出错误 Error invoking remote method 'codesign:v1:generate': CodesignError: terminated
  • 复现: 使用 mimo-v2.5-pro 模型生成复杂设计(如落地页),任务超过 12 分钟后触发
  • 日志:
    [error] (main:ipc) generate.fail {
      runId: 'moiv5277-9bhpl6',
      ms: 731061,                                    // ≈12.2 分钟
      provider: 'claude-code-imported',
      modelId: 'mimo-v2.5-pro',
      baseUrl: 'https://token-plan-ams.xiaomimimo.com/anthropic',
      message: 'terminated',
      code: 'PROVIDER_ERROR'
    }
    
  • 执行数据: 总运行时间 ~12.2 分钟, ~50 agent 轮次, 上下文 20MB → 11MB (修剪后)
  • 根因: 代理服务器处理长时间请求后中断连接。terminated 是 Anthropic API 错误响应,表示服务端主动终止
  • 影响范围: 所有使用自定义代理服务器且超时较短的场景
  • 相关代码: packages/core/src/agent.ts (generateViaAgent)
  • 附加: 同一任务中还出现了 aborted 错误(ms: 375699, code: 'PROVIDER_ABORTED'),可能是用户取消或客户端超时
  • 建议修复:
    1. 在 agent.ts 中增加代理服务器超时检测和重试逻辑
    2. 增加可配置的生成超时,超时前主动优雅终止
    3. terminated 错误增加重试(resume from last turn)而非直接报错
    4. 增加上下文大小检查,超过阈值时提前警告用户

Bug #2 [中] 测试链接(Test Connection)对自定义代理服务器失败

  • 严重度: 中(功能缺陷)
  • 位置: 设置页面 → Provider 卡片 → 更多操作 → 测试链接
  • 现象: 点击"测试链接"弹出错误 toast "连接失败,请检查配置",但实际生成功能正常
  • 原因: 测试探针使用 GET /v1/models,自定义代理服务器未实现该端点
    • 实际使用(POST /v1/messages)正常
    • 测试链接(GET /v1/models)返回 404
  • 影响范围: 所有未实现 /v1/models 端点的代理服务器/网关
  • 相关代码: apps/desktop/src/main/connection-ipc.ts:219-221 (buildEndpointForWire)
  • 建议修复: 增加降级探针:GET /v1/models 404 时,尝试 HEAD /v1/messages 或直接标记"探针不支持"而非报错

Bug #3 [中] 设置页存储路径修改后工作区未同步

  • 严重度: 中(用户困惑,设置不生效)
  • 位置: 设置 → 存储(StorageTab)
  • 现象: 用户在设置中修改"数据"存储路径后,期望设计的工作区文件指向新路径,但实际未变化
  • 根因: 存储路径(config/logs/data)和设计工作区绑定是两个独立概念:
    • 存储路径:控制全局配置、日志、数据目录(storage-settings.ts),SQLite 数据库始终在 app.getPath('userData')/designs.db
    • 工作区绑定:每个设计独立绑定一个工作区目录(design.workspacePath),通过文件面板的"设置工作区"按钮操作
    • 修改存储路径不会自动更新任何设计的 workspacePath
  • 相关代码:
    • apps/desktop/src/main/onboarding/storage.tsrunChooseStorageFolder
    • apps/desktop/src/main/design-workspace.tsbindWorkspace
    • apps/desktop/src/renderer/src/components/FilesPanel.tsx:74-79
  • 建议修复:
    1. 在 StorageTab 中增加提示说明存储路径与工作区绑定的区别
    2. 新建设计时若全局存在默认工作区目录,自动绑定

Bug #4 [中] 工作区切换后预览可能出错

  • 严重度: 中(功能缺陷)
  • 位置: apps/desktop/src/renderer/src/preview/workspace-source.tsresolveWorkspacePreviewSource
  • 现象: 切换工作区后预览区域显示错误 toast "Design is not bound to a workspace"
  • 触发条件:
    1. 设计初始无工作区(workspacePath === null
    2. Agent 生成了 HTML 并设置 previewHtml,其中包含 workspace source reference
    3. 快照持久化时 chat.ts:208 调用 resolveWorkspacePreviewSourcefiles.read → 异常
    4. 用户随后绑定工作区,但若选择"仅切换"(不复制文件),新工作区目录为空,files.read 找不到引用文件
  • 相关代码:
    • apps/desktop/src/renderer/src/preview/workspace-source.ts:50-70
    • apps/desktop/src/renderer/src/store/slices/chat.ts:208-222
  • 建议修复:
    1. files:read 增加与 files:list 一致的降级逻辑(workspacePath 为 null 时返回空而非抛异常)
    2. 工作区切换"仅切换"时,若目标目录为空,给出明确警告

Bug #5 [低] workspace 未绑定时文件读取错误

  • 严重度: 低(list 端点已降级,但 read 端点抛异常污染日志)
  • 日志: Error occurred in handler for 'codesign:files:v1:read': CodesignError: Design is not bound to a workspace
  • 位置: apps/desktop/src/main/snapshots-ipc.ts:723-724 (codesign:files:v1:read handler)
  • 原因: 设计创建后 workspacePath === null,预览或快照持久化时调用 files.read 触发异常
  • 对比: 同模块的 codesign:files:v1:list(line 696)已正确降级——workspacePath === null 时返回 [] 而非抛异常
  • 触发路径:
    1. chat.ts:208resolveWorkspacePreviewSourcefiles.read → 异常
    2. generation.ts:755resolveWorkspacePreviewSourcefiles.read → 异常(导出时)
  • 建议修复: codesign:files:v1:read handler 中 workspacePath 为 null 时返回空内容或特定错误码(对齐 files:list 的降级行为)

Bug #6 [低] i18n 翻译键缺失 — settings.providers.noModel

  • 严重度: 低(视觉/UX)
  • 位置: 设置页面 → Provider 配置区域
  • 日志: [warn] [i18n] missing translation key "settings.providers.noModel" in namespace "translation" for locale "en"
  • 复现: 打开设置页面,查看已配置的 provider 卡片
  • 建议修复: 在 en.json / zh-CN.json 中补充 settings.providers.noModel 翻译键

Bug #7 [低] pdf.test.ts 在 Windows 上超时

  • 严重度: 低(测试环境问题,非代码缺陷)
  • 文件: packages/exporters/src/pdf.test.ts
  • 失败数: 3/50 测试
  • 原因: Puppeteer/Chrome 发现超时(5s limit),Windows 上浏览器发现较慢
  • 建议修复: 增加 Windows CI 的超时配置或跳过条件

Bug #8 [低] VitePress v1 与 rolldown-vite 不兼容

  • 严重度: 低(不影响桌面端功能)
  • 日志: VitePress v1 is not compatible with rolldown-vite. Use VitePress v2 instead.
  • 原因: workspace 中 Vite 升级到 v8(rolldown-vite),但 website 包仍用 VitePress v1
  • 建议修复: 升级到 VitePress v2 或锁定 Vite 版本

Bug #9 [极低] 动态导入优化警告

  • 严重度: 极低(构建警告,不影响功能)
  • 日志: [INEFFECTIVE_DYNAMIC_IMPORT] Warning ×4
  • 涉及文件:
    • packages/providers/src/index.ts (by agent.ts)
    • packages/exporters/src/markdown.ts (by exporters/src/index.ts)
    • packages/core/src/skills/loader.ts (by agent.ts)
    • node_modules/.pnpm/smol-toml@1.6.1 (by codex-config.ts)
  • 建议修复: 清理动态导入逻辑或在构建配置中忽略

环境注意事项

  • 切换到 dev/v0.2 后需要执行 pnpm install 同步依赖(zod 3→4, Biome 1.9→2.4, TS 5.9→6.0)
  • 依赖版本已在 pnpm-lock.yaml 中正确锁定,本机首次使用需同步

修复优先级排序

优先级 Bug 预估工作量
#1 生成 terminated 错误 中-大
#2 测试链接对代理服务器失败
#3 工作区设置不生效
#4 工作区切换后预览出错
#5 文件读取降级缺失
#6 i18n 翻译键缺失
#7 pdf.test.ts 超时
#8 VitePress 兼容性
极低 #9 动态导入警告

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions