fix(agent): make browser observation outcomes explicit

This commit is contained in:
jxxghp
2026-09-12 12:57:51 +08:00
parent 88506b5a4a
commit 67f0fe3d40
2 changed files with 8 additions and 4 deletions

View File

@@ -435,11 +435,12 @@ class BrowseWebpageTool(MoviePilotTool):
)
elif browser_action == BrowserAction.SNAPSHOT:
snapshot = BrowserSessionHelper.build_snapshot(
page,
max_text_chars=MAX_CONTENT_LENGTH,
)
return self._json_response(
BrowserSessionHelper.build_snapshot(
page,
max_text_chars=MAX_CONTENT_LENGTH,
)
{"success": True, **snapshot}
)
elif browser_action == BrowserAction.GET_CONTENT:
@@ -565,6 +566,7 @@ class BrowseWebpageTool(MoviePilotTool):
status=status,
max_text_chars=MAX_CONTENT_LENGTH,
)
result["success"] = True
return BrowseWebpageTool._json_response(result)
@staticmethod
@@ -582,6 +584,7 @@ class BrowseWebpageTool(MoviePilotTool):
content = content[:MAX_CONTENT_LENGTH] + "\n\n...(内容已截断)"
result = {
"success": True,
"url": page_url,
"title": title,
"content_type": content_type,

View File

@@ -113,4 +113,5 @@ uv run --locked --no-sync python -m scripts.evaluation \
- 生产工具错误合同阶段:`MoviePilotTool` 统一入口现在将浏览器、文件读写和 Shell 等旧工具返回的裸错误转换为 `execution_outcome=failed`、脱敏错误和恢复提示;子代理控制器对失败批次和失败任务同样返回结构化状态及“修正任务描述/参数、不要重复在途任务”的恢复路径。该阶段覆盖 108 项浏览器、文件、Shell、子代理和工具结果回归,下一轮真实场景应验证模型是否利用这些提示完成纠错。
- Shell 会话恢复阶段:一次性命令和后台会话的失败、未知、作用域拒绝、输出游标错误现在都返回对应恢复动作;未知退出状态优先要求读取现有 session,失败命令要求检查 `output/exit_code` 后修正,避免把输出文字当成功或重复启动副作用命令。文件工具的行号与版本冲突保护已在上一阶段验证;本阶段相关回归共 122 项通过。
- 浏览器与子代理状态阶段:浏览器所有成功/失败 JSON 统一带 `execution_outcome`;子代理任务的 running/cancelled 状态带明确的 `pending/failed` 语义和继续观察、取消后重新派发的恢复建议。当前阶段与文件、Shell、浏览器回归共 112 项通过;真实浏览器仍受用户保存权限限制,子代理终端共享仍需原生句柄闭环。
- 浏览器观察回执阶段:`goto`、`snapshot`、`get_content` 及交互动作统一显式返回 `success`,从而稳定映射为 `execution_outcome=succeeded/failed`;页面内容为空与浏览器执行失败可以区分。当前跨浏览器、文件、Shell、子代理回归共 125 项通过。
- 浏览器环境复核:启动本机 Chrome 后用同一官方 OAuth 配置重跑 `/tmp/moviepilot-agent-round-luna-oauth-native-browser-chrome-20260912.json`,原生已加载 Browser plugin、node_repl 并选择 Chrome;真实回环导航仍被保存的浏览器权限拒绝。该结果排除了“CLI 未登录或未启动 Chrome”的解释,下一次只有在用户允许对应回环地址后才继续导航、点击和 oracle 配对。