fix: G10 断点续跑透传 model_provider(sub2api 续跑失败修法)

断点续跑容器不带 --model-provider 时 Server 的 provider 表里
没有 sub2api,thread/resume 报 provider not found(probe15 实弹)。
Docker/Local 断点方法加可选 model_provider 并转发,worker 两处
调用点传 gateway_provider;补单测断言断点命令含
--model-provider sub2api(旧代码下两新测试 1 失败 1 报错)。
This commit is contained in:
host committed 2026-10-29 11:28:39 +08:00
1 parent 0ef896c317
commit a19b1567bb
3 files changed
+96 -8

No files matched your search

+17 -6
View File
@@ -494,7 +494,8 @@ class LocalExecutor(Executor):
return self._goal_result_from_runner(
task["id"], self._run_local(cmd, extra_env))
def goal_resume_breakpoint_task(self, task) -> dict:
def goal_resume_breakpoint_task(self, task,
model_provider=None) -> dict:
"""G10:调 host.py goal-resume(无 --goal-text)断点续跑。
命令:host.py goal-resume --task <host 名>。不传
@@ -502,14 +503,18 @@ class LocalExecutor(Executor):
goal/verify_command/goal_max_rounds,从
goal_rounds_done 的下一轮接着跑同一循环,不开新循环、
不新建 worktree、不重置轮次。结论解析与 goal_task 同款。
(worker 只以 (task) 一个参数调本地断点方法,与 Docker
断点方法的签名不同,不要顺手统一。)
model_provider 可选但 worker 必须传:首轮 thread 在该
provider 下创建,续跑不带同一 --model-provider 时
thread/resume 报 provider not found(与 Docker 断点
方法同 bug,2026-10-29 probe15 实弹)。(task) 单参
调用仍可用;与 Docker 断点方法的签名不同,不要顺手统一。
"""
if not isinstance(task, dict) or task.get("id") is None:
raise ValueError("任务缺少 id")
cmd = self._base_command(model=task.get("model"),
effort=task.get("effort"),
approval=task.get("approval"))
approval=task.get("approval"),
model_provider=model_provider)
cmd += ["goal-resume", "--task", self._host_name(task)]
return self._goal_result_from_runner(
task["id"], self.runner(cmd))
@@ -1424,19 +1429,25 @@ class DockerExecutor(Executor):
def goal_resume_breakpoint_task(self, task, timeout=None,
extra_mounts=None, network=None,
extra_env=None) -> dict:
extra_env=None,
model_provider=None) -> dict:
"""G10:容器内调 host.py goal-resume(无 --goal-text)
断点续跑,与 LocalExecutor.goal_resume_breakpoint_task
同语义(从 goal_rounds_done 下一轮接着跑,不开新循环)。
解析与容器内 goal_resume_task 同款;真 Docker 实弹
未做,命令形状由单测覆盖。
model_provider 必须透传:首轮 thread 在该 provider 下
创建,续跑容器不带同一 --model-provider 时 Server 的
provider 表里没有它,thread/resume 报 provider not found
(2026-10-29 probe15 实弹)。
"""
if not isinstance(task, dict) or task.get("id") is None:
raise ValueError("任务缺少 id")
inner = self._inner_host_command(
"goal-resume", "--task", self._host_name(task),
model=task.get("model"), effort=task.get("effort"),
approval=task.get("approval"))
approval=task.get("approval"),
model_provider=model_provider)
cmd = self.build_run_command(task, inner,
extra_mounts=extra_mounts,
network=network,