- 目标:把
Network / Files / Tasks从默认一级导航里降下来,避免低频宿主工具和高频核心调试入口抢第一排。 - 结果:
- DevTools 顶部现在只保留
Inspector / Storage / AI作为核心入口。 Network / Files / Tasks改为Host Tools按需展开;默认收起,只有手动展开或当前正在查看工具面板时才展开。Host Tools会给出总计数,Network / Files / Tasks各自也会带记录数 badge,低频时不占位,有事时也不至于完全藏起来。- 切回核心面板时,工具带会自动收起,避免调试器长期停留在“工具全展开”的噪音状态。
- DevTools 顶部现在只保留
- 目标:把本地 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-compatibleprovider;provider 配置仅保存在当前浏览器。- 录制逻辑现在会保存最近一次
ai.request -> ai.responsecapture;当来源是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面板,避免两套机制互相抢控制权。
- DevTools 新增
- 目标:把
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.htmlweb/app.jsweb/styles.src.cssweb/styles.cssdocs/ARCHITECTURE.mdTODO.md
- 目标:把“功能存在但开发者感觉不可用”的问题收敛成一条可发现、可验证的主流程。
- 结果:
- 左侧首屏改为
Workspace+Host Input Lab,其余低频能力折叠到Permissions、Context、Packages / Catalog、Remote Attach。 - 顶栏把低频工作区动作收进
工作区工具下拉,减少第一屏按钮噪音。 targetInput现在会对focus、blur、input、select、Enter更新宿主状态;关键输入事件会发host.state.update,方便在 Inspector 里直接看到“打字到底有没有触发宿主链路”。send.intercept.ime_action已注册时,Enter会直接触发 IME intent,Shift+Enter保留换行。composer、observe、intercept、network都在首屏做摘要和状态提示,减少开发者在多个区域来回找状态。context.sync的 best-effort 观察现在会带上preeditText=composer.text,更接近真实宿主输入上下文。
- 左侧首屏改为
- Accessibility:保留现有按钮语义和表单控件,不把关键操作藏到 hover-only 交互里。
- Information hierarchy:把高频主任务前置,把低频能力折叠,避免“所有功能同时抢注意力”。
- Touch & Interaction:维持现有按钮尺寸和焦点环,新增的
summary/折叠区仍可键盘访问。 - Layout & Responsive:左栏采用摘要卡 + 折叠区,避免中等宽度下长列表把主流程挤出首屏。
web/index.htmlweb/app.jsweb/styles.src.cssweb/styles.css
- 问题:
agent-browser脚本在Packages卡住,但根因不是页面等待条件,而是默认挂载路径指到了不存在的../function-kits/../function-kit-runtime-sdk,导致 Runner 报ENOENT、Packages 为空。 - 修复:
kitstudio.config.json默认挂载改为../../../function-kits与../../../function-kit-runtime-sdkscripts/e2e.ps1新增折叠区/顶栏菜单辅助函数,让视觉 E2E 能适配新的details结构
- 第二轮补强:
scripts/e2e.ps1新增Get-HostInputLabProbe,直接读取Workspace/Host Input Lab摘要,而不是只盯 kit 内文案ime-hooks observe场景现在会等待targetInput.input · 14 chars、Observe onpill、workspaceSummary出现ime-hooksime-hooks intercept场景现在会等待ime_action.commit_text、Intercept readypill,以及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.pnge2e/screenshots/kitstudio-e2e-04-ime-hooks-observe.pnge2e/screenshots/kitstudio-e2e-05a-host-input-intercept.pnge2e/screenshots/kitstudio-e2e-05-ime-hooks-intercept.pnge2e/screenshots/kitstudio-e2e-02i-topbar-actions.png
kitstudio.config.jsonscripts/e2e.ps1README.md
- 目标:停止让
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
- Information hierarchy:把实验能力降级,避免继续和高频本地开发动作抢第一屏注意力。
- Progressive disclosure:Remote Attach 继续保留在折叠区,但通过
Experimental标记和 warning copy 明确它不是默认路径。 - Accessibility:保留原有
details/summary结构和可聚焦控件,不通过隐藏交互去“假装删除”能力。 - Style consistency:沿用现有 token / pill 语言,只做降权和说明,不再引入新的视觉系统。
- 目标:把
Host Input Lab从“原始调试字段”提升成开发者一眼能读懂的本地输入反馈面板。 - 结果:
- 新增动态状态条:明确显示当前是就绪、输入中、选中已生效、本地换行,还是 IME action 已生效。
Input / Observe / Enter / Composer四个摘要改成更直白的人话状态,不再只暴露原始 event name。Host snapshot现在同时展示targetInput和composer,包含selectedTextPreview与lastDetails,不用只靠 Inspector 猜测。Host Input Lab标题与按钮文案同步改成更本地优先的表达:突出 selection、Enter / Shift+Enter 与 IME action 的差异。
scripts/e2e.ps1现在新增两段agent-browser视觉断言:- selection:选中
hello-from-e2e的前 5 个字符,并校验 UI 显示selected 5 chars、selectedText - Shift+Enter:在 intercept 已注册时,先验证
Shift+Enter只做本地换行,再验证真正的 IME action
- selection:选中
- 新增截图:
e2e/screenshots/kitstudio-e2e-04b-host-input-selection.pnge2e/screenshots/kitstudio-e2e-05b-host-input-shift-enter.png
- 验证:
node --check web/app.jsnpm run css:buildpowershell -ExecutionPolicy Bypass -File .\scripts\e2e.ps1
- Forms & Feedback:空态、选中态、换行态和 IME action 态都给出近场反馈,不让开发者只靠日志猜。
- Information hierarchy:保留 4 个核心摘要块,把更细的原始细节下沉到
Host snapshot。 - Accessibility:状态条使用
aria-live="polite",仍保留按钮与 textarea 的标准焦点路径。 - Layout & Responsive:只增加一条状态条和一个轻量 eyebrow,不把左侧卡片重新堆回杂乱状态。