initial real project snapshot
This commit is contained in:
commit
b49b9cf1e7
18 files changed
+53739
No files matched your search
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
宿主层多 agent 编排示例:这层开源 core 里没有,得自己写。
|
||||
|
||||
做法不是让一个 thread 内部无限派生,而是宿主并行开多个 thread,
|
||||
每个 thread 一个独立工作目录(最好是 git worktree,互不污染),
|
||||
最后由宿主收集各 thread 的 turn 结果再汇总。桌面版“多线程指挥台”
|
||||
的感觉,核心就是这一层,而不是 app-server 本身。
|
||||
|
||||
用法:
|
||||
python3 run_parallel.py --jobs jobs.json
|
||||
jobs.json 格式:
|
||||
[{"cwd": "/tmp/job-a", "prompt": "检查 a 模块的安全问题,只读,不要改代码"},
|
||||
{"cwd": "/tmp/job-b", "prompt": "检查 b 模块的测试覆盖,只读,不要改代码"}]
|
||||
每个 job 默认 sandbox=read-only、approval-policy=never,只做并行审查;
|
||||
要并行改代码时,把 cwd 换成各自的 worktree,并把下面的参数改成
|
||||
workspace-write,且事后逐个 review diff 再合并,冲突仍需人工处理。
|
||||
"""
|
||||
import argparse
|
||||
import json
|
||||
import subprocess
|
||||
import sys
|
||||
import os
|
||||
|
||||
HERE = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
|
||||
def main():
|
||||
ap = argparse.ArgumentParser()
|
||||
ap.add_argument("--jobs", required=True)
|
||||
ap.add_argument("--codex-home", default=None)
|
||||
args = ap.parse_args()
|
||||
jobs = json.load(open(args.jobs))
|
||||
procs = []
|
||||
for i, job in enumerate(jobs):
|
||||
cwd = job["cwd"]
|
||||
if not os.path.isabs(cwd):
|
||||
cwd = os.path.join(HERE, cwd)
|
||||
cmd = [sys.executable, os.path.join(HERE, "client.py"),
|
||||
"--prompt", job["prompt"],
|
||||
"--cwd", cwd,
|
||||
"--sandbox", job.get("sandbox", "read-only"),
|
||||
"--approval-policy", "never"]
|
||||
if args.codex_home:
|
||||
cmd += ["--codex-home", args.codex_home]
|
||||
print(f"[job {i}] cwd={job['cwd']} prompt={job['prompt'][:60]}")
|
||||
procs.append((i, subprocess.Popen(cmd)))
|
||||
failed = 0
|
||||
for i, p in procs:
|
||||
rc = p.wait()
|
||||
print(f"[job {i}] exit={rc}")
|
||||
failed += rc != 0
|
||||
print(f"完成:{len(procs) - failed}/{len(procs)} 成功")
|
||||
return 1 if failed else 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in new issue
Block a user