Repository navigation
fix(ego): resume authorized tasks from live browser control - #7626
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · reasoning_effort=max
Request changes conclusion (author-owned PR; GitHub blocks formal self-review)
动机 / Motivation
继续已获授权浏览器任务的 Agent 与被重复询问控制权的使用者。历史停止记录可能在后续轮次持续制造无必要的确认与等待。旧 STOP 留在任务历史里,而同一任务的实时控制已回到 Agent;新指引要求先读取一次实时清单,再直接续接该任务。 同任务已经由 Ego 恢复 Agent 控制时可直接续接;明确暂停及未解决的用户步骤仍阻止操作。本次不改变 Ego 权限、不安装或升级浏览器,也不证明任意模型都会遵循指引。
改动思路 / Approach
复用 workflow-skills --install → reconcile_ego_browser_skill → _reconcile → 已安装 SKILL.md。交付器继续负责受管理副本、内容摘要和原子发布;Agent 从当前任务取得授权与暂停事实;Ego 负责原生控制检查。动态 ego-browser skill 仍提供版本匹配的 API,新增文字明确它不会覆盖已安装的同任务续接规则。一个旧 STOP 既不是新接管证据,也不是绕过新停止的理由。较小且足够的修复就在原指导语中,没有增加第二份控制权状态或后台轮询。
具体改动 / Changes
评审头:be2c23e1ac4c6daee57c714bfe7729f63f7c9b66;完整范围为 4 个文件、+136/-3。先读的既有规范是 docs/integrations/ego-source-reader.md,不可变版本 ce4c78088ea464cb31231513882bed6bb6933156;以下标签对应其原有未编号条款:same-task-continuation、current-user-stop、managed-skill-delivery 均已实现。它们分别对应同任务实时身份核对、当前用户停止仍有效,以及沿既有安装器交付并保留自定义文件。
关键代码讲解
_POLICY的实时判断与示例:先读一次清单、核对 numeric id 与 taskId,再检查明确暂停、未解决用户步骤和正常交还来源。已经 Agent-owned 时直接解析原空间,不领取;符合既有交还条件时仅允许一次原生尝试,拒绝即停止。_reconcile的摘要刷新:新指导语通过已有policy_sha256生效,不依赖版本号变化。剔除_POLICY后的整个模块 AST,以及 workflow installer、Windows installer、可选 source reader 的 blob 与基线相同;没有另加原生权限解释器。- 新测试执行真正交付的示例,覆盖历史 STOP、明确暂停、用户步骤、错误任务、拒绝后的停止及失去旧 Page 标签。两份引用文档区分直接交互 CLI 与原有只读来源 provider,不把它们合成新的控制权 owner。
对主干的风险 / Risks
未证实新增产品逻辑缺陷;当前阻塞是必需的安装 canary 超时,原因仍未归因。PASS:技能交付、workflow 安装和来源 reader 共 287 项;2 项 Windows/PowerShell 用例在本机跳过,未冒称该平台通过。Ruff、diff 检查与语义增量 advisory 通过,后者零候选仅说明支持的载体未增加,指导语已另外逐条比较。基线/当前版本的 12 次同输入示例运行保留合法调用序列,当前示例还把原本由周围文字约束的暂停/用户步骤前提显式放到 handle 之前。
实际 Ego 0.6.0.16 中,同任务实时 Agent 控制下的旧 STOP 续接成功,明确暂停只读取清单便拒绝。正常 handOff() 分支返回 agentDelegatedToUser 后,一次 claimTaskSpace 被原生拒绝;已停止,未重试、换空间或换浏览器,因此没有把它记作原生恢复成功。该 API 调用与基线相同。模拟领取成功只能验证示例分支,不能证明原生允许领取,更不能证明真人接管竞态或所有模型的遵循性。
必需本地门:canary premerge --from-git-diff --git-diff-base origin/main --tier quick 的 6 项直接检查通过,packaged install、update 与公共边界检查通过;python3 examples/install-local-smoke.py 在 120 秒窗口超时(包含清理共 125.465 秒,未返回 stdout/stderr)。随后保持同一命令和 120 秒上限,基线、当前头分别于 112.638 秒、88.859 秒通过。这个有限的绿灯组合不能说明原并发或冷启动条件中的失败原因,也不能改写原失败。最小补证是定位原窗口内尚未产出安装日志的等待点,按可比条件验证;若独立证据确认是既有或环境问题,单独保留集成门处理,不要求本 PR 修改无关代码。
我的整体评价 / Verdict
REQUEST_CHANGES,原因是当前必需验证仍有未归因的超时;指导修正本身范围明确且已验证。长期任务的原空间、停止与授权边界保持;当前 Agent 控制分支少一次重复确认,模型采用与完整成本收益仍未取得资格。它复用原生词汇和安装 owner,没有新增通用状态协议,未安装/自定义副本与可选 provider 的行为保持。当前交付边界是指导与示例的修正,原生被拒绝的交还流程仍按既有停止规则处理。本结论不授予合并、升级、安装或清除其他评审的权限。
English verdict: REQUEST_CHANGES pending attribution of the required installer-canary timeout; no new product-logic defect is asserted.
同一已授权的浏览器任务在控制权恢复后,CLI Agent 仍可能把历史 STOP 当成持续的确认要求。只读 Ego source provider 已经逐次检查实时控制权;这次修复它与直接 CLI 技能指导之间的衔接。
ego-browser skill动态指南提供原生 API 用法,同时保留 LoopX 已安装的同任务接续规则。历史错误和摘要不证明发生了新的用户接管。通过既有 workflow-skills 交付,未新增 capability、provider 或 Core 状态。配套更新安装诊断及 source-reader 路线说明;已有安装版本号不变时,原 policy digest 刷新机制仍会交付改动。
验证:技能及安装器测试 67 passed、2 skipped(本机无原生 PowerShell);最终技能测试 35 passed;既有 provider 控制测试 13 passed。新增测试执行实际安装副本中的 JS 恢复示例,覆盖 10 组正反例,包括历史 STOP、仍在用户控制、暂停、任务不符、原生拒绝和 Page 标签恢复。Ruff、diff 检查和四文件公开边界扫描通过。
另在实际 Ego Lite 0.6.0.16 中验证同一任务正常交还后接回、下一轮直接继续及最终 handback,保留用户标签页;本机共享技能副本已按现有 owner 更新并读回幂等。该验证不等于真实人机抢占的完整测试,也不证明模型普遍遵从;原生浏览器权限机制未改。没有界面布局变更。
范围复核:修复放在现有技能交付 owner,复用当前只读 provider 的实时状态语义;无需新增浏览器生命周期或另一套权限判断。