feat: release 2.4.0 with original cases and automatic human review

This commit is contained in:
chenmingxuan committed 2026-10-28 17:25:08 +08:00
1 parent baf069854b
commit 4dc2057d43
66 files changed
+1390 -206

No files matched your search

+1 -1
View File
@@ -781,7 +781,7 @@ class FlashRunner:
action_dict["normalized_start_coordinates"] = norm_start
action_dict["normalized_end_coordinates"] = norm_end
action_dict.update(metadata.get("target_semantics") or {})
for key in ("input_verification", "execution", "side_effect"):
for key in ("input_verification", "execution", "side_effect", "source"):
if key in metadata:
action_dict[key] = metadata[key]
if metadata.get("plugin_id"):
+1
View File
@@ -412,6 +412,7 @@ class VisualStepSummarizer(StepMemoryService):
engine,
response,
source=f"lens:visual_transition:{self._model_name}",
model=self._model_name,
update_last_prompt=False,
)
+13 -2
View File
@@ -303,8 +303,19 @@ class PlannerNode:
screen = await UnifiedMobileController(self.ctx).get_screen_data()
human_message_content.append({"type": "text", "text": screen.observation_text})
plugins = getattr(self.ctx, "plugins", None)
if plugins:
human_message_content.append({"type": "text", "text": plugins.prompt()})
plugin_catalog = plugins.prompt() if plugins else ""
if plugin_catalog:
human_message_content.append(
{
"type": "text",
"text": "规划与执行的工具分工:规划器只使用本阶段绑定的笔记工具制定计划;"
"下列插件清单描述执行器获授权的能力。执行器可以调用 plugin_load 加载插件。"
"规划器当前工具列表里没有 plugin_load 或设备动作,不表示执行器缺少这些能力。"
"将需要的插件、待观察的目标和验收条件写入计划,由执行器根据实际加载与操作回执"
"确认可用性;未取得回执时保留待确认,不预先记录为插件不可用或要求用户补授权。",
}
)
human_message_content.append({"type": "text", "text": plugin_catalog})
if screenshot_b64:
human_message_content.append(
{
@@ -92,6 +92,11 @@ async def exec_action(
return False, str(e)
try:
from artemis.data_engine.evidence_sources import android_action_source
source = android_action_source(getattr(getattr(ctx, "device", None), "device_id", None))
if source:
action_item["source"] = source
res = await session.call(tool_name, wire_args)
except Exception as e:
action_item.update(execution="unknown", side_effect="possible")