新闻详情

新闻详情

首页 / 资讯中心 / 详情

Codex Autoresearch 后台控制器拆解:controller 如何调度 codex exec worker 实现无人值守

发布时间:2026/10/1 15:27:33来源:尧图网络
Codex Autoresearch 后台控制器拆解:controller 如何调度 codex exec worker 实现无人值守
Codex Autoresearch 后台控制器拆解controller 如何调度 codex exec worker 实现无人值守【免费下载链接】codex-autoresearchCodex Autoresearch Skill — A self-directed iterative system for Codex that continuously cycles through: modify, verify, retain or discard, and repeat indefinitely. Inspired by Karpathy’s autoresearch concept.项目地址: https://gitcode.com/gh_mirrors/co/codex-autoresearchCodex Autoresearch 后台控制器拆解controller 如何调度 codex exec worker 实现无人值守Codex Autoresearch是一个让 Codex 自主循环修改 → 验证 → 保留或回滚 → 重复的技能。它的前台模式依赖 Codex Goal 续跑而真正让人设好就睡觉的是它的后台模式一个分离的 Python 控制器controller循环拉起一个个一次性的codex execworker每个 worker 只做一轮实验控制器负责验证契约、记录状态、处理停止与恢复。本文带你拆解这条无人值守链路的关键机制。一、整体架构启动器、控制器、worker 三层分工后台运行的进程关系可以用一行文字概括来自 references/background.mdCodex TUI - detached controller - worker 1 - worker 2 - ... - terminal event角色职责生命周期启动器launch命令初始化基线、写运行配置、拉起控制器后退出一次性控制器detached controller循环读取事件日志逐个拉起/等待/校验 worker一次完整运行workercodex exec只做恰好一轮实验然后退出每个迭代一次这种短命 worker 长命控制器的设计是理解整个系统的钥匙worker 不需要跨轮记忆所有状态都落在磁盘上控制器每轮都从权威状态重新推导。二、控制器如何启动detached 进程 就绪校验入口是 scripts/autoresearch.py 中的launch_background先执行initialize_run完成基线测量与配置落盘再调用 spawn_controller。spawn_controller做了三件关键小事防重入如果 autoresearch-results/runtime.json 里记录的控制器 PID 还活着直接报错杜绝双控制器分离启动以start_new_sessionLinux方式拉起python3 autoresearch.py _controller --repo repo标准输入输出全部丢弃父进程退出后它继续存活5 秒就绪窗口启动器会轮询直到控制器把runtime.json写成running且 PID 匹配否则判为启动失败并清理进程。也就是说launch返回时你能拿到 run id、基线值、控制器 PID 和结果目录——之后就可以放心离开终端了。三、控制器主循环每个迭代只起一个 worker核心逻辑在 run_controller。每一轮循环重读状态重新加载run.json与完整的 events.jsonl确认状态为active、仓库干净、HEAD 与分支未漂移消费停止请求检查stop-request.json是否存在这是stop命令留下的便条构造 worker 命令controller_command 拼出codex exec -C repo --ephemeral --json --output-last-message file [-]其中--ephemeral保证 worker 不留下任何会话状态执行策略二选一默认的danger-full-access对应--dangerously-bypass-approvals-and-sandbox因为finish需要写 Git 提交和回滚或用户明确选择的--sandbox workspace-write注入提示词worker_prompt 把已确认的目标、当前指标、目标值、允许修改的路径和验证命令写进 stdin并明确规则——只允许改 scope 内的文件、不许自己 commit/revert、不许编辑autoresearch-results/、恰好调用一次finish后退出等待与记录worker 的全部 JSON 输出追加到autoresearch-results/logs/worker-XXXX.jsonl控制器每 0.1 秒轮询一次以便及时响应停止请求被请求停止时用 terminate_process_tree 整树终止先 SIGTERM 宽限再 SIGKILL 兜底校验契约worker 正常退出后控制器只接受恰好新增一条iteration事件外加可能的complete/stopped这类合法模式否则记为worker_contract_violation并写入error事件——这就是防止静默提前退出、防止无限重启循环的保险丝。四、状态与可观测性runtime.json / runtime.log / events.jsonl后台运行期间所有诊断信息都在目标仓库的autoresearch-results/下该目录始终不入库路径作用run.json不可变的确认配置目标、scope、指标命令、目标值events.jsonl追加式事件史baseline / iteration / blocked / complete / error / stopped / resumedruntime.json控制器与 worker 的实时 PID 和状态starting/running/stopping/stopped/errorruntime.log控制器生命周期事件流controller_started、worker_started、worker_finished 等logs/每次验证、守护命令与每个 worker 的完整输出任何异常——worker 非零退出、事件缺失、控制器死亡——都只会变成error或orphaned绝不会被当成进度。这是长时无人值守可被信任的前提。五、无人值守期间用户怎么控制控制器只认三类信号全部通过同一个技能入口$codex-autoresearch下发status校验完整事件史报告当前指标、迭代数、控制器/worker PID以及仓库是否与记录一致stopstop_background 不直接杀进程而是写入stop-request.json由控制器自己在下一个安全点worker 边界终止 worker 并记录stopped事件若控制器已失联orphaned则拒绝操作并提示人工处理resume --note ...resume_run 先拒绝已完成 / 有未回滚试验提交 / 孤儿 worker 还活着等危险场景校验通过才追加resumed事件并重新拉起一个新控制器。运行结束后一句generate an HTML report就能生成自包含的可视化报告 report.html六、小结无人值守 短命 worker 状态外置 严格契约 回头看这条链路没有花哨技术靠的是三个朴素决定worker 无状态每轮全新codex exec提示词里携带全部必要信息做完一轮立即退出状态外置且只追加events.jsonl是唯一事实来源控制器每次循环都完整重放校验绝不猜测契约不可违反一个 worker 恰好一个实验越界即error宁可停下等人也不静默自愈。想动手体验的话先阅读 SKILL.md 的完整技能约定、references/workflow.md 的新建运行流程再按 docs/INSTALL.md 安装用一个可重复计分的任务如测试失败数、覆盖率发起一次 background 运行然后就可以真的去睡觉了。【免费下载链接】codex-autoresearchCodex Autoresearch Skill — A self-directed iterative system for Codex that continuously cycles through: modify, verify, retain or discard, and repeat indefinitely. Inspired by Karpathy’s autoresearch concept.项目地址: https://gitcode.com/gh_mirrors/co/codex-autoresearch创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

大模型训练迁移实战:MindSpore transformer_config 配置解析与字段映射 2026/10/1 18:45:25

大模型训练迁移实战:MindSpore transformer_config 配置解析与字段映射

1. 大模型训练迁移这件事,为什么绕不开 transformer_config做过大模型训练的人都有一个共识:模型代码本身往往不是最难的,真正让人头疼的是配置体系。你从一套框架迁移到另一套框架,模型结构可以照着论文一行行抄,训练…

阅读更多 →
需求价格弹性:从降价决策到总收益的微观经济学指南 2026/10/1 18:45:25

需求价格弹性:从降价决策到总收益的微观经济学指南

你负责一款销量正在下滑的商品,老板把你叫过去:降价能不能把利润拉回来?你说能,因为便宜了买的人会多;但老板追问:会多多少?如果只多了一点点,降价反而亏。这个问题,就是…

阅读更多 →
Spring Boot微信小程序电子书阅读器:全栈设计与实现解析 2026/10/1 18:45:24

Spring Boot微信小程序电子书阅读器:全栈设计与实现解析

每年到了做毕业设计的季节,搜索框里关于“springboot 微信小程序 电子书”的提问就会扎堆出现。这个题目看着熟悉,模板代码也到处都有,但真正能把阅读类项目和普通商城类小程序区分开的,反而不是CRUD,而是阅读器渲染、…

阅读更多 →
开源AI故障诊断助手:像老师傅一样修电脑 2026/10/1 18:45:24

开源AI故障诊断助手:像老师傅一样修电脑

电脑出问题别再瞎折腾了,这个开源项目让AI像老师傅一样帮你修最近身边好几个朋友跟我吐槽,说家里电脑越用越卡,又不敢乱弄,怕把系统搞崩。还有人拿着蓝屏代码满网搜,搜半天也没看懂在说什么。这场景太熟悉了&#xff0…

阅读更多 →
从TypeScript到Java:异步编程与并发模型的思维切换与线程实践 2026/10/1 18:45:23

从TypeScript到Java:异步编程与并发模型的思维切换与线程实践

1. 先搞清楚:异步、并发、并行到底差在哪 很多人从 TypeScript 转向 Java,第一反应是"Java 里也有 async/await 吗?有 Promise.all 吗?"。这个思路其实从一开始就跑偏了。TypeScript 世界里你天然接受单线程事件循环&am…

阅读更多 →
Rust所有权详解:Move、Borrow与Lifetime图解 2026/10/1 18:45:03

Rust所有权详解:Move、Borrow与Lifetime图解

刚接触 Rust 的人,十有八九第一道坎就是所有权。我记得自己第一次遇到borrow of moved value这个错误时,整个人是懵的:我明明只是把一个变量赋值给了另一个变量,凭啥原来那个就不能用了?后来又陆续被借用检查器教育了无…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉