feat: 任务列表显示 turn_id 与 root_turn_id
host.py dispatch 打印补 turn_id/root_turn_id;执行器解析(local/Docker)透传;worker 写回 tasks 新列(新值非空才覆盖);server 迁移与接口字段;控制台任务列表新增 turn/root turn 两列(短显+悬停全文);新单测 9 个。
This commit is contained in:
1 parent
559a7dcb9f
commit
dbcc8e641a
7 files changed
+252
-11
No files matched your search
@@ -227,6 +227,8 @@ class LocalExecutor(Executor):
|
||||
status = "failed"
|
||||
usage = None
|
||||
task_messages = []
|
||||
turn_id = None
|
||||
root_turn_id = None
|
||||
if returncode == 0:
|
||||
status = "completed"
|
||||
# JSON 解析必须用完整 stdout:截头后的前 2000 字在
|
||||
@@ -245,6 +247,13 @@ class LocalExecutor(Executor):
|
||||
# 原样透传给 worker 记 actual;脏数据由
|
||||
# _clean_usage 挡掉,不进 actual。
|
||||
usage = _clean_usage(parsed.get("usage"))
|
||||
# 任务列表显示 turn 用:本轮回合的 turn_id 与
|
||||
# root_turn_id(dispatch 打印里带,run 打印整
|
||||
# 个 result 所以也有);取不到时保持 None,
|
||||
# worker 写回时不覆盖旧值(见 worker 的
|
||||
# _write_execution_result)。
|
||||
turn_id = parsed.get("turn_id")
|
||||
root_turn_id = parsed.get("root_turn_id")
|
||||
# 互发消息标记块:从完整解析出的 text 里提取(截头
|
||||
# 版 text 尾部的块会丢),worker 在 completed 轮次
|
||||
# 后投递;goal 路径不走这里,goal 任务只收不发。
|
||||
@@ -266,6 +275,8 @@ class LocalExecutor(Executor):
|
||||
"stderr": _truncate_stdout(getattr(result, "stderr", "")),
|
||||
"usage": usage,
|
||||
"task_messages": task_messages,
|
||||
"turn_id": turn_id,
|
||||
"root_turn_id": root_turn_id,
|
||||
}
|
||||
|
||||
def _host_name(self, task):
|
||||
@@ -1240,6 +1251,8 @@ def _parse_host_result(task_id, fake):
|
||||
host_status = None
|
||||
usage = None
|
||||
task_messages = []
|
||||
turn_id = None
|
||||
root_turn_id = None
|
||||
if returncode == 0:
|
||||
status = "completed"
|
||||
# 与 _result_from_runner 同理:JSON 解析用完整 stdout,
|
||||
@@ -1256,6 +1269,10 @@ def _parse_host_result(task_id, fake):
|
||||
else "failed")
|
||||
usage = _clean_usage(parsed.get("usage"))
|
||||
task_messages = _extract_peer_messages(parsed.get("text"))
|
||||
# 任务列表显示 turn 用:与 Local 版同款语义,取不到
|
||||
# 时保持 None,worker 写回时不覆盖旧值。
|
||||
turn_id = parsed.get("turn_id")
|
||||
root_turn_id = parsed.get("root_turn_id")
|
||||
return {
|
||||
"executor": "docker",
|
||||
"task_id": task_id,
|
||||
@@ -1266,6 +1283,8 @@ def _parse_host_result(task_id, fake):
|
||||
"stderr": _truncate_stdout(getattr(fake, "stderr", "")),
|
||||
"usage": usage,
|
||||
"task_messages": task_messages,
|
||||
"turn_id": turn_id,
|
||||
"root_turn_id": root_turn_id,
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user