DeepChat Computer Use 快照 PiP:从任务分解到验收标准的全链路实施解析

发布时间:2026/9/17 15:20:02
DeepChat Computer Use 快照 PiP:从任务分解到验收标准的全链路实施解析 DeepChat Computer Use 快照 PiP从任务分解到验收标准的全链路实施解析【免费下载链接】deepchatDeepChat - A smart assistant that connects powerful AI to your personal world项目地址: https://gitcode.com/GitHub_Trending/dee/deepchat本文基于 DeepChat 仓库中的功能任务清单 tasks.md完整梳理「Computer Use 快照画中画PiP」这一功能的 17 项实施任务、实施顺序与完成定义。读完本文你将掌握该功能如何在 MCP 工具执行链中注入运行标识、如何在进程级共享的 NativeKit 原生叠加层上实现 Browser 与 Computer Use 双来源仲裁、如何用有界图像管线消费get_window_state快照结果以及该功能在打包 QA 与性能预算上的验收口径并可对照仓库中已落地的源码实现逐项验证。一、功能定位与文档状态Computer Use 快照 PiP 的目标是当 Agent 通过 Computer UseCUA工具操控桌面应用时用户在 DeepChat 会话中无需切走窗口就能看到目标应用的最新状态。该表面是一个只读的「最新快照」PiP——它不引入轮询、不修改 CUA 运行时帧的唯一来源是成功的get_window_state内联图片结果外加一次合格的click成功后调度的一次私有快照刷新。任务清单开头给出的 Status 明确了当前进度实现、聚焦自动化验证和完整渲染器测试套件已完成完整主进程套件中仍保留一个与本功能无关的 provider 元数据预期失败性能度量和打包平台 QA仍处于 open 状态对应 T14、T15。设计层面的完整契约可行性评估、目标架构、类型化契约、图像管线参数、平台矩阵、失败行为表记录在同目录的 spec.md实施计划见 plan.md本文聚焦任务清单本身的执行视角。二、任务清单全解T01–T17任务清单按「身份与所有权 → 观察器与管线 → 渲染器契约 → 生命周期与回归 → 事件驱动刷新 → 度量与收口」推进。以下逐组继承原文档任务内容并给出源码佐证。阶段一运行标识与进程级共享所有权T01–T03这一阶段解决两个前置问题Agent 运行身份如何在 MCP 路径上到达工具执行层以及 NativeKit 唯一的进程级叠加层如何被两个来源安全共享。T01 — 通过 MCP 执行链路传播 Agent 运行身份已完成在内部接口McpServicePort、McpService和ToolManager的调用选项中新增runId由ToolService的 MCP 分支转发ToolCallOptions.runId确保该值不进入MCPToolCall序列化与 CUA 工具参数它只是执行元数据增加聚焦的传播测试与「参数未变化」测试。T02 — 抽取共享的进程级 PiP 协调器已完成将 NativeKit 生命周期、能力探测、宿主/显示器同步、展示所有权从 Browser 专用适配器中移出在应用组合根中只实例化一个协调器保持 Browser 原有 Native 与 Canvas 行为维持「同一时刻只有一个可见 PiP」的不变量。对应实现是 AgentPreviewCoordinator从源码看该类持有唯一的overlay、唯一的host、唯一的target并提供claim/dismiss/hide/present等所有权原语其toolbarOptions()在overlay.start()时按来源配置工具栏——Browser 为「Open in panel Close」Computer Use 只有「Close」这正是 T03 来源档案source profile的落地。T03 — 来源档案与仲裁已完成Browser 保留Open in panel与Close控件Computer Use 档案只有Close且忽略原生激活activationBrowser 工具活动与 CUA 快照调用开始各自「认领」claim其来源帧刷新不得抢占所有权后台宿主/会话的认领不得抢占前台会话增加共享的按 run 作用域的「关闭dismissal」语义。协调器内部的claims按会话的单调递增nextClaimSequence与dismissedRuns按会话的 run 级抑制表支撑了上述规则handleActivate仅在目标来源为browser时派发激活动作Computer Use 的激活被显式忽略。阶段二MCP 观察器与有界快照管线T04–T06T04 — 窄范围 Computer Use MCP 观察器已完成向ToolManager注入started、completed、failed回调使用解析后的ownerPluginId/sourceId、原始工具名和准备好的参数只观察权限解析之后的真实调用保持工具响应、中止、进度与错误语义不变。实现见 ToolManager 的 ComputerUsePreviewObserver 注入。从源码结构看createComputerUsePreviewCall会在缺少conversationId或runId、或 MCP 客户端不属于官方 CUA 插件时返回null即「无身份则调用照常执行但不具备预览资格」与任务约束一致。T05 — Computer Use 目标与运行状态已完成新增ComputerUsePreviewPresenter跟踪宿主、会话、run、工具调用、pid、windowId、epoch、claim 与 dismissal新 run 或新目标时移除此前的展示拒绝过期与乱序的终止结果。对应 ComputerUsePreviewPresenter 中的ComputerUsePreviewStateepoch在started()检测到 run 或(pid, windowId)变化时自增并清空frame/pendingSnapshotcompleted()在result.isError、dismissedRunId命中、runId/toolCallId/toolCallEpoch不匹配时直接丢弃结果。测试位于 ComputerUsePreviewPresenter.test.ts。T06 — 有界快照管线已完成只接受成功的get_window_state的 PNG/JPEG 内联图片校验 base64、输入大小、解码后尺寸与输出大小在 480 x 300 内等比缩放、不放大、编码 JPEG 质量 72同一时刻保持一个变换在途、一个最新待定结果latest-wins帧仅驻留内存日志不含像素。实现中的常量与任务约束逐一对应FRAME_MAX_WIDTH 480、FRAME_MAX_HEIGHT 300、FRAME_MAX_BYTES 512 * 1024、INPUT_MAX_BYTES 16 * 1024 * 102416 MiB 输入上限、INPUT_MAX_DIMENSION 8192、JPEG_QUALITY 72、SUPPORTED_MIME_TYPES {image/jpeg, image/png}ComputerUsePreviewPresenter.ts#L57-L66。decodeBase64额外校验 base64 长度、% 4 1非法长度与字符集enqueueSnapshot用transformActive标记实现「一个变换在途」变换期间新到的快照仅覆盖pendingSnapshot天然构成 latest-wins 且无无界队列。阶段三类型化契约与渲染端T07–T09aT07 — 类型化 Computer Use 预览契约已完成新增computerUse.setPreviewMode、computerUse.dismissPreview路由与仅 Canvas 使用的computerUse.preview.frame事件通过类型化 preload 客户端暴露主进程校验路由发送者与活跃会话。路由定义见 computerUse.routes.ts。T08 — 渲染器生命周期协同已完成在 Browser PiP 控制器旁挂载AgentComputerUsePiP.vue由ChatTabView.vue挂载见 ChatTabView.vue从既有 store/client 派生活跃会话、working 状态、路由与焦点发送eligible、suspended、stopped三态迁移Native 模式下该组件是无头headless的不接收任何图像事件。T09 — Canvas 回退 UI已完成渲染最新有效快照仅提供一个Close按钮非控件区域可拖拽但不向目标应用转发输入新帧完全解码前保留旧像素拒绝过期帧序列卸载时释放渲染器资源复用既有common.close文案不新增用户可见文案。T09a — NativeKit 不可用时禁用回退 UI已完成只在存在具体 Computer Use 目标时才加载 NativeKit进程级稳定失败加载失败后返回none不再订阅任何渲染器帧、不渲染任何 Computer Use PiPCUA 工具执行与结果完全不受影响。从源码看requestCurrentPresentation在协调器不可用且初始化失败后调用stopState并把 surface 置为none同时向渲染器广播computerUse.preview.surface.changed事件只携带身份与 surface 元数据从不携带图像字节渲染端据此彻底静默。阶段四生命周期、隐私与回归覆盖T10–T12T10 — 生命周期与隐私清理已完成宿主失焦/隐藏/最小化以及非活跃路由/会话时隐藏run/会话终止、目标变化、宿主关闭、应用退出时移除保证其他宿主/会话永远不会看到被保留的像素磁盘、设置、遥测、崩溃元数据与通用 MCP 事件存储中不出现任何帧字节。T11 — 主进程回归覆盖已完成覆盖范围包括共享协调器启停、工具栏切换、仲裁与关闭Browser 提取后的激活、关闭、捕获刷新与面板交接CUA 识别、权限路径、run 身份、目标变化与过期结果合法、畸形、不支持、超大、失败、中止的图像结果native/fallback 路由与 latest-wins 调度。任务清单确认协调器、Browser 提取、信任/权限/run 传播、native/fallback、PNG/JPEG、畸形/不支持/超大/尺寸校验、失败/中止调用、目标 epoch、关闭与 latest-wins 均已被覆盖。T12 — 渲染器回归覆盖已完成覆盖范围包括native 无头模式与「无帧订阅」断言Canvas 首帧、帧保留、序列拒绝、拖拽与关闭焦点、最小化、会话切换、终止态与卸载清理并验证 Computer Use不暴露任何展开/打开面板行为。任务清单确认native 无头、首帧、帧保留、epoch/序列拒绝、仅关闭控件、焦点暂停/恢复、终态清理、拖拽、会话切换、卸载与 Browser 抢占supersession均已被覆盖。阶段五仅 PiP 的点击后刷新T13T13 — PiP-only 点击后刷新已完成在一次合格的、精确的 CUAclick成功后异步调用一次私有的get_window_state({ pid, window_id })调用以「可信插件所有权、有效 session/run/target 身份、活跃 PiP、presenter 未被 dismissal」为门禁私有结果只经由预览观察器路由从不发布、不缓存、不返回给 Agent保持 click 的响应、时延、权限、中止与失败行为覆盖成功隔离以及失败、不可信、无效目标、非活跃预览各路径。实现位于 ToolManager.scheduleComputerUsePreviewAfterClick仅当工具名精确为click、响应非错误、get_window_state的工具策略判定为allow、且观察器shouldCaptureAfterClick同步返回真时才调度私有调用复用 clickCall 的身份但将toolCallId追加:pip-snapshot后缀随后以void异步执行captureComputerUsePreviewSnapshot不阻塞、不修改原始 click 响应。shouldCaptureAfterClick的完整门禁mode eligible、run/pid/windowId 全部匹配、dismissedRunId未命中在 ComputerUsePreviewPresenter.ts#L85-L108 中实现。阶段六度量、QA 与收口T14–T17openT14 — 验证性能预算未完成确认每次合格click至多一次私有捕获且空闲时零轮询确认一个变换在途、无无界队列以参考桌面为基准度量「有效结果到达 → 可见帧」的 p95 是否满足 150 ms 预算NativeKit 慢推警告阈值保持 25 ms与 Browser 基线一致源码常量SLOW_PUSH_WARNING_MS 25确认 native 模式向渲染器发送零图像字节。T15 — 打包平台 QA未完成验证一个 NativeKit 原生叠加运行时验证一个 native 不可用运行时验证 Browser 打开其既有侧面板、Computer Use 不显示 PiP演练宿主焦点/最小化/恢复与目标应用前台行为演练 Browser/Computer 来源切换与工具栏档案变化演练关闭、后续 run、路由/会话切换与应用退出。T16 — 仓库验证未完成部分完成运行pnpm run format、pnpm run i18n、pnpm run lint、pnpm run typecheck先跑聚焦的主进程与渲染器测试再跑完整受影响套件。清单记录的部分完成状态format、i18n、lint、typecheck、聚焦套件以及全部1,625 个渲染器测试通过主进程套件通过5,383 个测试唯一失败是ModelConfigHelper Configuration Priority uses provider metadata until a user config overrides it——该未改动的 provider 测试在单独运行时同样失败与本功能无关。T17 — 收口实现文档未完成部分完成更新提案状态并记录偏差用已实现的共享所有权契约更新 Browser NativeKit 架构文档只把已验证的任务标记为完成PR 中附 BEFORE/AFTER ASCII 布局与平台 QA 状态。部分完成状态实现状态、偏差、关联的 Browser 架构文档、已验证任务、ASCII 布局与未决 QA 均已记录PR 交接仍 open。三、实施顺序与依赖关系任务清单显式给出六步实施顺序它本身就是该功能的架构分层T01–T03建立运行身份与安全的进程级所有权没有runId传播快照结果无法归属到正确的 Agent run没有共享协调器两个来源会互相覆盖 NativeKit 全局配置T04–T06把可信的 CUA 结果接入有界的主进程快照管线T07–T09添加类型化的渲染端协同与回退 UIT10–T12加固生命周期、隐私与回归测试T13增加事件驱动的点击后刷新T14–T17度量、验证并收口文档。这一顺序保证了任何一层失效身份缺失、仲裁失败、帧过期都不会污染下一层的行为预览故障永远不改变 MCP 工具结果或 Agent 执行结果。四、完成定义Done Definition原文档的完成定义是验收该功能的完整口径逐条继承如下当前 run 一次成功的 CUAget_window_state图像能呈现一个最新快照 PiP一次合格的click成功可调度一次私有、仅 PiP 的刷新且无空闲轮询Browser 与 Computer Use 安全共享一个NativeKit 所有者并保留各自的来源专属控件Computer Use PiP 只有一个Close按钮只读且绝不影响 Agent 或目标应用run、target、session、host 与 epoch 校验防止过期像素泄露native 路径避免向渲染器传输图像流量不支持的运行时不暴露 Computer Use PiP图像工作内存态、有界、latest-wins且有聚焦测试覆盖Browser PiP 行为保持回归测试保护必需的检查通过且至少一次 native 加一次 native-unavailable 的打包 QA 运行通过。五、任务与源码实现的对照索引任务关键落地位置T01 runId 传播ToolManager 的调用选项与createComputerUsePreviewCallT02/T03 共享协调与仲裁AgentPreviewCoordinatorT04 MCP 观察器ComputerUsePreviewObserverT05 目标与运行状态ComputerUsePreviewPresenterT06 有界管线同文件 L57-L66 常量区与transformSnapshotT07 类型化契约computerUse.routes.tsT08 渲染端协同AgentComputerUsePiP.vue 挂载点T11/T12 回归覆盖ComputerUsePreviewPresenter.test.ts组合根装配composition.ts六、小结与当前边界这份任务清单的价值在于把「让 Agent 自动化过程对用户可见」这一模糊需求拆解为可逐项验证的 17 个任务身份传播、进程级所有权仲裁、有界图像管线、类型化 IPC 契约、隐私清理、事件驱动刷新与验收度量每个任务都附带明确的验证方式。截至清单记录T01–T13 及 T16/T17 的主体工作已完成并通过了 1,625 个渲染器测试与 5,383 个主进程测试一个与功能无关的既有失败剩余工作是 150 ms p95 结果-可见延迟的实测T14、native 与 native-unavailable 两种运行时的打包 QAT15以及 PR 交接收口T17。对读者而言若需要复用这套「MCP 结果 → 主进程有界管线 → 进程级单一叠加层」的模式可以直接沿本文第五节的对照索引进入源码逐层确认每一道门禁的实现细节。【免费下载链接】deepchatDeepChat - A smart assistant that connects powerful AI to your personal world项目地址: https://gitcode.com/GitHub_Trending/dee/deepchat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询