Skip to content

Latest commit

 

History

History
152 lines (119 loc) · 9.76 KB

File metadata and controls

152 lines (119 loc) · 9.76 KB

KitStudio Progress

2026-04-14

DevTools 导航减噪

  • 目标:把 Network / Files / Tasks 从默认一级导航里降下来,避免低频宿主工具和高频核心调试入口抢第一排。
  • 结果:
    • DevTools 顶部现在只保留 Inspector / Storage / AI 作为核心入口。
    • Network / Files / Tasks 改为 Host Tools 按需展开;默认收起,只有手动展开或当前正在查看工具面板时才展开。
    • Host Tools 会给出总计数,Network / Files / Tasks 各自也会带记录数 badge,低频时不占位,有事时也不至于完全藏起来。
    • 切回核心面板时,工具带会自动收起,避免调试器长期停留在“工具全展开”的噪音状态。

AI Request 可控录制 / 编辑 / 回放

  • 目标:把本地 AI mock 从“宿主随手吐 demo”收紧成开发者可控的 ai.request 调试工作流,同时避免把普通请求和复杂网络层一起卷进去。
  • 结果:
    • DevTools 新增 AI 面板,支持 demo / replay / real 三种模式。
    • replay 只作用于 ai.request,普通 network.fetch / files.* / tasks.* / kits.* 继续走原有 Host Simulator / Fixture 链路,不做全局网络层劫持。
    • real 模式不再依赖 Remote Attach 占位,而是通过本地 POST /api/ai/request 直连最小 openai-compatible provider;provider 配置仅保存在当前浏览器。
    • 录制逻辑现在会保存最近一次 ai.request -> ai.response capture;当来源是 real 时,同时保留 provider request/response,后续可保存为 replay record。
    • replay record 支持在面板里直接编辑 output.text / output.json、名称、备注、启用状态,并支持导入 / 导出。
    • 工作区导出现在会带上 aiMock.mode + records,导入后可直接恢复当前 AI 开发状态。
    • replay 改为按显式 match 命中:当前至少包含 kitId + requestType + taskTitle + responseType + route.kind + contentSignature,并把 match 条件和命中来源直接显示在 UI 中,因此并发下不会因为顺序漂移串线。
    • real / replay 未命中或失败时都会显式报错,不会静默回退到 demo。
    • 现有 Fixture 仍可做整段会话回放,但对 ai.request 明确让位给 AI 面板,避免两套机制互相抢控制权。

AI Real E2E 收口

  • 目标:把 real -> save replay -> replay hit 从一次性手工验证收口成可重复执行的 agent-browser 回归入口。
  • 结果:
    • 新增 scripts/e2e-ai-real.ps1,覆盖 runtime-lab 的真实 provider smoke。
    • scripts/e2e.ps1 新增 -AiRealOnly-IncludeAiReal:前者只跑 AI smoke,后者在常规 UI E2E 之后追加 AI smoke。
    • package.json 新增 npm run e2e / e2e:headed / e2e:ai-real / e2e:full-plus-ai / e2e:ai-real-direct
    • README.md 补充了 env 约定:KITSTUDIO_E2E_AI_BASE_URL / KITSTUDIO_E2E_AI_API_KEY / KITSTUDIO_E2E_AI_MODEL
    • 修正了 AI smoke 脚本在 Windows PowerShell 下用中文状态文本做匹配的假失败问题,改为基于存储配置和 mode 的 ASCII/布尔条件判断。

本次采用的设计准则

  • Scope control:不把 AI mock 问题升级成“全局网络层接管”问题,避免把普通请求也变成黑盒。
  • Determinism:回放按请求内容命中,不按时间顺序和队列位置猜。
  • Progressive control:先提供稳定的 demo / replay / real 闭环,再考虑更复杂的场景选择和多版本样例。
  • Explainability:当前模式、命中来源、录制资产都在 UI 中显式可见,而不是隐式 fallback。

入口文件

  • web/index.html
  • web/app.js
  • web/styles.src.css
  • web/styles.css
  • docs/ARCHITECTURE.md
  • TODO.md

2026-04-08

Host Input + UI 收敛

  • 目标:把“功能存在但开发者感觉不可用”的问题收敛成一条可发现、可验证的主流程。
  • 结果:
    • 左侧首屏改为 Workspace + Host Input Lab,其余低频能力折叠到 PermissionsContextPackages / CatalogRemote Attach
    • 顶栏把低频工作区动作收进 工作区工具 下拉,减少第一屏按钮噪音。
    • targetInput 现在会对 focusblurinputselectEnter 更新宿主状态;关键输入事件会发 host.state.update,方便在 Inspector 里直接看到“打字到底有没有触发宿主链路”。
    • send.intercept.ime_action 已注册时,Enter 会直接触发 IME intent,Shift+Enter 保留换行。
    • composerobserveinterceptnetwork 都在首屏做摘要和状态提示,减少开发者在多个区域来回找状态。
    • context.sync 的 best-effort 观察现在会带上 preeditText=composer.text,更接近真实宿主输入上下文。

本次采用的 UI/UX 准则

  • Accessibility:保留现有按钮语义和表单控件,不把关键操作藏到 hover-only 交互里。
  • Information hierarchy:把高频主任务前置,把低频能力折叠,避免“所有功能同时抢注意力”。
  • Touch & Interaction:维持现有按钮尺寸和焦点环,新增的 summary/折叠区仍可键盘访问。
  • Layout & Responsive:左栏采用摘要卡 + 折叠区,避免中等宽度下长列表把主流程挤出首屏。

入口文件

  • web/index.html
  • web/app.js
  • web/styles.src.css
  • web/styles.css

视觉 E2E 回归

  • 问题:agent-browser 脚本在 Packages 卡住,但根因不是页面等待条件,而是默认挂载路径指到了不存在的 ../function-kits / ../function-kit-runtime-sdk,导致 Runner 报 ENOENT、Packages 为空。
  • 修复:
    • kitstudio.config.json 默认挂载改为 ../../../function-kits../../../function-kit-runtime-sdk
    • scripts/e2e.ps1 新增折叠区/顶栏菜单辅助函数,让视觉 E2E 能适配新的 details 结构
  • 第二轮补强:
    • scripts/e2e.ps1 新增 Get-HostInputLabProbe,直接读取 Workspace / Host Input Lab 摘要,而不是只盯 kit 内文案
    • ime-hooks observe 场景现在会等待 targetInput.input · 14 charsObserve on pill、workspaceSummary 出现 ime-hooks
    • ime-hooks intercept 场景现在会等待 ime_action.commit_textIntercept ready pill,以及 Enter 会触发 IME intent 提示
  • 验证:
    • powershell -ExecutionPolicy Bypass -File .\scripts\e2e.ps1
    • 输出截图:e2e/screenshots/kitstudio-e2e-99-annotated.png
    • 关键场景截图:
      • e2e/screenshots/kitstudio-e2e-04a-host-input-observe.png
      • e2e/screenshots/kitstudio-e2e-04-ime-hooks-observe.png
      • e2e/screenshots/kitstudio-e2e-05a-host-input-intercept.png
      • e2e/screenshots/kitstudio-e2e-05-ime-hooks-intercept.png
      • e2e/screenshots/kitstudio-e2e-02i-topbar-actions.png

追加入口文件

  • kitstudio.config.json
  • scripts/e2e.ps1
  • README.md

路线收缩:Remote Attach 降级为 Experimental

  • 目标:停止让 Remote Attach 继续占据主流程心智,把 KitStudio 明确收敛到 local-first
  • 结果:
    • Workspace 概览里的 Remote 改为 Experimental,默认文案变成 Remote Attach · off by default
    • 左侧 Remote Attach 区块明确标记 Experimental,并补上“先跑通本地 Host Simulator / Host Input Lab”的说明
    • Remote Attach 的状态文案和 mode hint 全部改为实验特性口径,不再暗示它是日常开发必经路径
    • 新增本地优先缺口清单:LOCAL_FIRST_GAPS.md

本次采用的 UI/UX 准则(路线收缩)

  • Information hierarchy:把实验能力降级,避免继续和高频本地开发动作抢第一屏注意力。
  • Progressive disclosure:Remote Attach 继续保留在折叠区,但通过 Experimental 标记和 warning copy 明确它不是默认路径。
  • Accessibility:保留原有 details/summary 结构和可聚焦控件,不通过隐藏交互去“假装删除”能力。
  • Style consistency:沿用现有 token / pill 语言,只做降权和说明,不再引入新的视觉系统。

2026-04-09

Host Input Lab 本地输入链路补强

  • 目标:把 Host Input Lab 从“原始调试字段”提升成开发者一眼能读懂的本地输入反馈面板。
  • 结果:
    • 新增动态状态条:明确显示当前是就绪、输入中、选中已生效、本地换行,还是 IME action 已生效。
    • Input / Observe / Enter / Composer 四个摘要改成更直白的人话状态,不再只暴露原始 event name。
    • Host snapshot 现在同时展示 targetInputcomposer,包含 selectedTextPreviewlastDetails,不用只靠 Inspector 猜测。
    • Host Input Lab 标题与按钮文案同步改成更本地优先的表达:突出 selection、Enter / Shift+Enter 与 IME action 的差异。

视觉 E2E 补强(本地输入)

  • scripts/e2e.ps1 现在新增两段 agent-browser 视觉断言:
    • selection:选中 hello-from-e2e 的前 5 个字符,并校验 UI 显示 selected 5 charsselectedText
    • Shift+Enter:在 intercept 已注册时,先验证 Shift+Enter 只做本地换行,再验证真正的 IME action
  • 新增截图:
    • e2e/screenshots/kitstudio-e2e-04b-host-input-selection.png
    • e2e/screenshots/kitstudio-e2e-05b-host-input-shift-enter.png
  • 验证:
    • node --check web/app.js
    • npm run css:build
    • powershell -ExecutionPolicy Bypass -File .\scripts\e2e.ps1

本次采用的 UI/UX 准则(本地输入)

  • Forms & Feedback:空态、选中态、换行态和 IME action 态都给出近场反馈,不让开发者只靠日志猜。
  • Information hierarchy:保留 4 个核心摘要块,把更细的原始细节下沉到 Host snapshot
  • Accessibility:状态条使用 aria-live="polite",仍保留按钮与 textarea 的标准焦点路径。
  • Layout & Responsive:只增加一条状态条和一个轻量 eyebrow,不把左侧卡片重新堆回杂乱状态。