67 lines
2.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""dispatch-agent-task CLI:装配见 muse.flow.dispatch,执行见 runtime。"""
from __future__ import annotations
import argparse
import json
import sys
from pathlib import Path
PROJECT_ROOT = next(
parent
for parent in (Path(__file__).resolve().parent, *Path(__file__).resolve().parents)
if (parent / "AGENTS.md").is_file() and (parent / ".git").exists()
)
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
from framework.adapters.pi.runner import DEFAULT_PI_BIN, ExecutionPolicy # noqa: E402
from muse.flow.dispatch import ( # noqa: E402
DEFAULT_RUN_DIR_ROOT,
EXIT_EVIDENCE_FAILED,
EXIT_FRAMEWORK_FAILED,
EXIT_OK,
EXIT_OUTPUT_INVALID,
EXIT_SPEC_INVALID,
run_dispatch,
)
def main(argv: list[str] | None = None) -> int:
parser = argparse.ArgumentParser(description="把冻结任务包派发给 Agent 框架子代理并自动留痕")
parser.add_argument("--spec", required=True, help="AgentTaskSpec JSON 文件路径")
parser.add_argument("--provider", required=True, help="显式框架 provider")
parser.add_argument("--model", required=True, help="显式框架模型")
parser.add_argument("--thinking", default=None, help="思考等级 off/low/medium/high")
parser.add_argument("--pi-bin", default=DEFAULT_PI_BIN, help="框架二进制(默认 pi)")
parser.add_argument("--repo-root", default=".", help="仓库根(解析 .agent/agents 角色文件)")
parser.add_argument("--run-id", default=None, help="指定 run_id(默认自动生成)")
parser.add_argument("--run-dir", default=None, help="运行目录(默认 /tmp/muse-agent-runs/<run_id>)")
parser.add_argument("--trigger-source", default="user", choices=["user", "replay_eval", "diagnostic"])
parser.add_argument("--session-id", default=None, help="框架会话 ID(复用=继续原会话,缺省=一次性会话)")
parser.add_argument("--session-dir", default=None, help="框架会话目录(与 --session-id 同给)")
parser.add_argument("--enable-read-tools", action="store_true", help="启用只读探索工具 server")
args = parser.parse_args(argv)
policy = ExecutionPolicy(
provider=args.provider, model=args.model, thinking=args.thinking, pi_bin=args.pi_bin
)
receipt, code = run_dispatch(
args.spec,
repo_root=args.repo_root,
policy=policy,
run_id=args.run_id,
run_dir=args.run_dir,
trigger_source=args.trigger_source,
session_id=args.session_id,
session_dir=args.session_dir,
enable_read_tools=args.enable_read_tools,
)
print(json.dumps(receipt, ensure_ascii=False, indent=2))
return code
if __name__ == "__main__":
raise SystemExit(main())