尧图精选

Maka WorkHub Host 选择交互深度解析:从 renderer 等待流程到 Host 生命周期与真实模型验收

🕒 发布时间:2026/9/18 12:28:15 📁 来源:尧图网络
Maka WorkHub Host 选择交互深度解析从 renderer 等待流程到 Host 生命周期与真实模型验收【免费下载链接】makaApache Maka (Incubating) is a high-performance agent workspace that keeps a complete record of everything it did.项目地址: https://gitcode.com/GitHub_Trending/mak/maka本指南以 Apache MakaIncubating仓库中的 WorkHub Host 选择交互验收记录 为主体系统讲解 Maka 如何将「目标 work 选择」从发送前的 renderer 等待流程迁入 Runtime Host 既有交互生命周期并附带真实模型deepseek-v4-flash与原生 Electron 应用的逐项验收结果。读完本文你将理解tasks.select_and_delegate工具契约、持久化单选 Form 的交互身份与重放语义、Action Gate 的最终裁决地位以及 Main/renderer 职责切分的完整落地方式并掌握一套可复制的真实模型验收方法论。背景为什么要把目标选择迁入 Host 交互生命周期在 Maka 的 WorkHub 场景中用户可能创建多个同名 work例如两个都叫「架构验收」的 work。当模型需要把任务派发到其中一个 work 时必须让用户先选择精确目标再执行——否则会出现「模型自行猜测目标、派发到错误 work」的歧义。旧实现的问题在于目标选择发生在「发送前」由 renderer 侧等待流程完成模型需要解释用户的回答并二次选择目标这一过程既容易出错又把交互展示逻辑与桌面 UI 状态深度耦合。本轮架构变更的核心决策是不再新增实验性路由模型也不改变生产默认路由策略——workHubRoutingModel仅在 execution-composition.ts 中以可选注入点形式存在readonly workHubRoutingModel?: HostWorkHubRoutingModel生产装配默认不注入它路由决定保持不可变immutable。目标选择被整体「搬进」 Runtime Host 已有的交互生命周期复用既有的 Form、Action Gate 与交互关闭规则。实现边界新选择交互的架构骨架验收文档将本轮变更的实现边界归纳为六条下面逐条结合源码展开。1.tasks.select_and_delegate新的工具契约新流程以tasks.select_and_delegate为入口。从 hosted-execution-tool-profile.ts 中的工具提示词可以看到它的精确定位Use AskUserQuestion for preferences or requirements. For an ambiguous existing task target on an unbound Turn, use tasks select_and_delegate with candidate references from discovery. The Host selector records the user choice and delegates directly; do not follow it with another delegation. A question answer cannot substitute a Host-bound target.该提示词明确了三条边界AskUserQuestion 只用于偏好或需求类提问不能替代 Host 绑定的目标选择面对「unbound Turn 上存在歧义的既有任务目标」时模型应基于 discovery 得到的候选引用candidate references调用select_and_delegateHost 选择器记录用户选择后直接派发delegates directly模型不得在之后再次跟一次派发——避免模型二次解释答案造成漂移。流程上tasks.select_and_delegate接受候选引用和任务内容Host 从已接收的 Coordination Turn 读取原始用户请求发布一个持久化的单选 Form协议层面对应form_request交互类型见 agent-graph.ts 中permission_request | user_question_request | form_request的判别联合。2. opaque value 绑定与 Action Gate 裁决选项的 opaque value不透明值不是简单文本而是绑定候选引用、Session 与 workspace的复合标识。Host 收到用户选中的确切选项后直接把解析结果交给 Action Gateworkhub-coordination-action-gate.ts由 Gate 完成目标 admission 与动作校验。这带来一个关键性质模型不再解释答案并二次选目标。用户按下数字键/方向键选中的选项是机器可验证的引用而非自然语言描述任何action_conflict之类的失败都以WorkHubActionGateFailure显式抛出而不是让模型「猜」。同文件中的提示词也强调「Host-bound routing decision ... grants no authority by itself. The Action Gate remains authoritative」——路由决定只是输入Action Gate 始终是最终权威。3. 交互身份Turn、Run、完整操作输入与原始用户内容为避免重复请求/回应导致状态错乱交互请求身份identity包含四要素Turn、Run、完整操作输入、原始用户内容。由此得到两个可验证的行为重复请求/回应复用同一交互不新建 Form已派发的动作重放既有结果不重复执行。这一语义在 interaction-coordinator.test.ts 中有对应的form_request测试覆盖测试用identity/bindRun/continuation构造交互并验证其生命周期。4. 目标不可用时的拒绝派发选择期间其他 work 的更新如重命名、状态变化不改变已选定身份——用户选中的就是那个引用不因并发变化而悄悄改道。但反过来如果选中的 work 被移除、归档或移动则拒绝派发。最后一次校验发生在现有目标 admission 锁内完成保证「校验」与「派发」之间没有时间窗口错位。5. Cancel / Stop / 关闭 / 重启的既有规则复用Cancel、Stop、Host 关闭全部走已有交互关闭规则不新增旁路逻辑重启关闭「孤立的等待」进程退出时仍未完成的等待请求并且不重建已丢失的本地 continuation——避免在数据不一致的状态上盲目续跑。6. Main 迁移与 renderer 职责收窄本轮把「完成进度浮窗」到「对话窗」的迁移做完整了Main 进程负责完整的进度展示renderer 只报告「交互展示需求」。配套规则包括新发送/明确拒绝后的重试触发「提交可见性规则」unknown reconcile 与只读刷新保持独立互不干扰删除旧targetSelection返回值、renderer Promise、Root admission 重载和旧专用 selector 组件保留普通提问、现有 Form、Action Gate 与不可变路由决定。从 renderer 目录搜索targetSelection已无任何残留印证了旧代码的彻底移除。真实模型与原生应用验收这是本验收文档最具说服力的部分不使用MAKA_E2E、模型替身、候选注入或窗口状态替身而是在macOS、构建后的 Electron/preload/Main/Runtime Host全链路下运行真实deepseek-v4-flash模型。验收环境细节独立 profile/private/tmp/maka-workhub-host-selection-20260913只复用本机连接配置测试数据目录/private/tmp/workhub-host-selection-acceptance应用在验收结束后已关闭不留后台进程。用例结果总览用例结果可核查事实默认生产策略触发 Host 选择器通过模型先发现两个同名 work再调用select_and_delegateHost 发布form_requestrenderer 重载保留选择请求通过重载前后 request id 均为8707240dd7f79c9d2f1650fa771783afd499e2127b3782cb2cc422b768b870d3快捷键选择并执行精确目标通过1、Enter 选择 betabeta 的文件内容为HOST_SELECTION_20260913alpha 文件不存在原生进度窗展开显示选择器通过主窗口离开 WorkHub 后control observe 触发进度展示待选 Form 显示时浮窗为 520×720、visibletrue、focusedfalse浮窗中重载通过request ide68fbe45f2d9e25b4568db985b655641baaa3b1860124211442232a738474e4e保持不变Esc 取消后不派发通过模型收到 cancelled 后结束alpha、beta 均没有native-cancelled.txt第一条真实输入与证据链第一条真实输入原文继续「架构验收」这个 work在选中的工作目录创建 architecture-acceptance.txt内容严格为 HOST_SELECTION_20260913。现在有两个同名 work请先让我选择目标确认后只在选定的 work 中执行。可核查的结果事实目标 beta 的 Session 为ef15d125-5b12-46fc-adb9-70d2ba5cd30b未选中的 alpha 为154b395e-ede3-46d7-b424-b8797c88e1c9生成的architecture-acceptance.txt为23 字节没有尾随换行内容严格匹配HOST_SELECTION_20260913这同时验证了「只派发到选定 work」的硬约束alpha 目录中没有该文件。窗口/取消输入与 Esc 边界第二条输入用于验证「只读窗口 取消不派发」这是一项只读窗口验收。先使用 control observe 观察 Maka不修改界面。然后准备在「架构验收」 work 中创建 native-cancelled.txt内容为 SHOULD_NOT_EXIST两个同名 work 必须先让我选择。选择前绝对不要创建文件。如果我取消选择就结束这次请求不要重新提问或派发。配合该用例的还有一张真实运行截图——真实浮窗中的 Host 选择交互见下展示选择 Form 在原生进度浮窗中的呈现形态。关于工具调用错误的诚实记录值得注意的诚实之处这两次真实模型运行也出现了可恢复的工具调用错误——第一次给tasks额外传了status参数第二次把control与tasks并发调用。工具边界Tool Boundary拒绝后模型按正确 schema/顺序重试成功。验收记录明确不把这两次「错误后重试成功」粉饰成「所有模型工具调用一次通过」这种记录方式本身也是验收报告的可靠性保证。Rebase 后复验保证合并后的行为一致最终实现被重放到 maina9f5f6790dc72253ffa3c0d1282f38b2fd58453a保留了 main 的 Side Conversation 临时消息分组与模型配置变更协议 epoch 为 151原有逐轮修复历史保存在本地备份分支PR 整理为最终实现。复验使用同一独立 profile 与真实模型输入继续「架构验收」这个 work在选中的目录创建 rebase-acceptance.txt内容严格为 HOST_SELECTION_REBASED。两个同名 work 必须先让我选择再只派发到选中的 work。派发成功后简短确认即可。复验结果默认生产路径再次发布 Host 单选 Form按2、Enter 选择alphaalpha 的rebase-acceptance.txt内容严格为HOST_SELECTION_REBASEDbeta 同名文件不存在模型确认派发后结束测试另行读取实际文件验证执行结果证据保存在本地验收目录的rebase-result.json与rebase-transcript.txt。合并后全量质量门禁全部通过Desktop typecheck、Desktop 2,584 项测试、UI 438 项测试、Host 199 项相关测试、WorkHub Storybook 交互、六项原生 Electron 用例。期间唯一处理的测试竞争问题是Host 既有 Resume/Stop 测试在并行构建时出现「目标先完成」的竞争测试后端改为等待显式 Stop保留stop_delivered和终态断言——没有修改生产停止逻辑也没有增加超时。自动化保护把验收固化为回归测试验收结论不是一次性手工结果而是被固化进了多层自动化保护Host 测试覆盖默认生产装配、同身份重放、候选变化、取消、Stop、伪造选项、并发请求以及「容量拒绝时所有等待者均结束」——最后一条保证了资源耗尽时不会出现悬挂等待共享 UI 测试覆盖初始 prompt 的状态投影WorkHub stories验证数字键/方向键/Enter/Esc 的键盘交互以及回应失败后的重试路径Main 测试验证「进度绘制先到 / 交互先到」两条竞态路径都收敛到同一窗口状态外加旧绘制确认、被动显示与用户隐藏Electron 用例继续验证 preload/Main、持久化重建及原生窗口/焦点边界本轮没有新增 Electron 测试声明——复用既有六项用例即覆盖了原生层。验收期间发现的问题也同步修复首条临时 prompt 状态遗漏已接入既有状态投影Form 的 Esc 文案改为「取消」一个使用固定 2026-09-13 日期的 scheduled-task 测试被冻结时钟避免机器时间漂移导致的失败——且没有改变其生产调度逻辑。总结本轮 WorkHub Host 选择交互架构变更把「目标选择」这一用户决策点从 renderer 发送前流程迁入 Runtime Host 交互生命周期以tasks.select_and_delegate为工具契约以持久化单选 Formform_request承载选择以 opaque value 绑定引用/Session/workspace以 Action Gate 作为最终权威完成派发裁决。真实deepseek-v4-flash模型在原生 Electron 应用中的六项用例与 Rebase 复验全部通过且整个行为通过 Host/UI/Main/Storybook/Electron 多层测试固化为回归保护。对于希望深入源码的读者建议按以下顺序阅读工具契约定义见 hosted-execution-tool-profile.ts动作裁决实现见 workhub-coordination-action-gate.tsform_request协议类型见 agent-graph.ts实验性路由模型注入点见 execution-composition.ts交互生命周期测试见 interaction-coordinator.test.ts。相关领域术语可参考 workhub-domain-language.md此前的原生验收基线见 workhub-native-acceptance-2026-09-12.zh-CN.md。【免费下载链接】makaApache Maka (Incubating) is a high-performance agent workspace that keeps a complete record of everything it did.项目地址: https://gitcode.com/GitHub_Trending/mak/maka创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →