Skip to content

Issues Summary.zh CN

phinn edited this page Jul 31, 2026 · 1 revision

🌐 Language: English | 中文

已知问题与经验教训

本页总结 KinetAios 开发中的反复问题模式(v1.0.0 → v1.6.0,116 个 fix commit)。帮助贡献者避免重蹈覆辙。

数据概览

类别 修复次数 严重度
CSS / 布局 ~30 🔴 最高
插件系统 ~18 🔴 最高
截图 / 语音 / 媒体 ~10 🟡 中
功能交互 / 逻辑 ~10 🟡 中
模型 / API 配置 ~8 🟡 中
安全 / 健壮性 ~6 🟠 中高
Visual Inspector 4 🟡 中
i18n ~4 🟢 低
CI / 打包 ~5 🟢 低

五大反复问题

1. 设置页 tab 切换宽度跳变(7 轮!)

症状:设置页切换 tab 时面板宽度跳变。

根因:#settings-view 和 #settings 两层都设了 overflow-y: auto。外层滚动条根据内容长度出现/消失,导致宽度变化。scrollbar-gutter: stable 只在内层。

修复:外层 #settings-view → overflow: hidden;只让内层 #settings 滚动 + scrollbar-gutter: stable。

教训:一条滚动链上只用一层 overflow-y: auto。 永远不要嵌套两个 overflow-y: auto。

2. Town panel 定位(5 轮)

症状:面板位置不对,chat 区域被压缩。

根因:#town-view 的 display: flex 覆盖了 .view { display: none }。#town-panel 在 #main(flex column)内,虽然有 position: fixed 仍干扰布局。

修复:把 #town-panel 和 #town-backdrop 从 #main 移到 #app 层。#town-view 遵循通用 .view display 规则。

教训:position: fixed 元素仍应放在 flex 容器之外,避免渲染边界问题。

3. brainstorm 插件(5 轮)

症状:插件面板空白,loading 永久卡住,元素不可见。

根因:轮询字段名不匹配、Excalidraw 元素 schema 不匹配、CDN 加载失败、CSP 阻止脚本。

修复:轮询改事件推送,用 convertToExcalidrawElements,iframe 隔离解决 CSP。

教训:逐个集成点独立测试。不要假设第三方 API 能正常工作。

4. Visual Inspector(4 轮)

症状:点击无响应,IPC 延迟,AI 无响应。

根因:renderer 和 main 之间的 IPC 往返对实时交互不可靠。

修复:overlay 移到 renderer 层,直接用 webview.executeJavaScript,绕过主进程 IPC。

教训:实时 UI 交互应留在 renderer 进程。延迟敏感操作避免走 IPC。

5. 侧边栏频道文字居中(3 轮)

症状:频道文字显示为居中而非左对齐。

根因:#conv-list > li:not(.sb-proj) 缺少 flex-direction: row,父规则的 align-items: center 导致水平居中。

修复:显式加 flex-direction: column。

教训:调试对齐问题时检查继承的 flex 属性。flex 属性会级联。

问题模式

模式 1:"彻底修复"后再次修复

多个 commit 声称"彻底修复",下个 commit 又修同一问题。说明验证不足。

改进:在运行中的 app 里验证后再声称修复完成。不要在 commit message 里写"彻底修复"。

模式 2:CSS 布局知识薄弱

30+ 个修复是 CSS 布局问题:flex 嵌套、overflow 嵌套、position: fixed 与 flex 干扰、scrollbar-gutter。

改进:建立标准"滚动容器"模式——每条滚动链一层 overflow-y: auto + scrollbar-gutter: stable。文档化布局规则。

模式 3:补丁式安全修复

每次安全审查都发现新问题:SSRF、计时攻击、监听器泄漏、参数注入、正则注入。

改进:设计阶段就考虑安全。不要依赖事后审计。

模式 4:IPC 通信架构反复

Visual Inspector、brainstorm 插件、远程任务按钮都需要 IPC 通信重写。

改进:编码前先设计"谁发、谁收、谁兜底"的流程。不要先写再推翻。

完整列表

见 repo 根目录的 ISSUES_SUMMARY.md 获取完整 116 个 fix 的分类明细。

Clone this wiki locally