Skip to content

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

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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions