Skip to content

feat(codex): migrate bridging to OS scheduler - #638

Open
xnne-bot wants to merge 8 commits into
NevaMind-AI:mainfrom
XnneHangLab-Mirror:feat/codex-os-scheduler
Open

feat(codex): migrate bridging to OS scheduler#638
xnne-bot wants to merge 8 commits into
NevaMind-AI:mainfrom
XnneHangLab-Mirror:feat/codex-os-scheduler

Conversation

@xnne-bot

@xnne-bot xnne-bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

📝 Pull Request Summary

将 Codex 的 memU bridging 从 ChatGPT/Codex native scheduled task 迁移到可确定管理的 OS scheduler:Windows 复用共享 Task Scheduler helper,macOS/Linux 使用 prompt file + wrapper + cron/launchd。旧 native task 必须先经 Codex Desktop 审计并移除,避免 native 与 OS 两套 scheduler 同时处理同一批 jobs。


✅ What does this PR do?

  • 将 Codex HostSpec.schedule_backendnative 改为 os,并接入共享 schedule CLI。
  • 固定无人值守调用为 codex exec --dangerously-bypass-approvals-and-sandbox --skip-git-repo-check {prompt};不使用 --ephemeral,保留 rollout 作为失败诊断记录。
  • Windows 复用已有 prompt-file PowerShell wrapper 与 canonical task \memU\memu-bridging-codex,支持 install / verify / status / uninstall
  • Unix 文档改为短 cron entry 调用 bridge.sh;wrapper 恢复 scheduler 所需 PATH、固定 working root、保留日志并用 lock 防止重叠运行。
  • 新增独立的 legacy native-task migration 段:
    • 以 Codex Desktop 的 task-management surface 为 source of truth;
    • 按 owner marker 或完整 legacy prompt signature 识别,不按名称猜测;
    • 未带 marker 的候选必须先展示并取得确认;
    • 枚举、分类、删除或复查失败时停止,不创建 OS task。
  • 同步更新 Codex install / uninstall 文档与 ADR 0015 的 scheduler 分级。
  • 增加回归测试,锁定 Codex flags、schedule wiring、prompt-file invocation、短 cron entry、canonical prompt 同步和 legacy migration 顺序。
  • 本 PR 不实现 Codex session-id mapping 或 self-session skip:session_id_env 保持为空,CodexTranscriptSource 不变;该调查与修复留给后续独立 PR。

🤔 Why is this change needed?

旧方案要求模型在 ChatGPT/Codex Desktop 中创建 native scheduled task,任务生命周期依赖模型是否正确识别并调用产品侧 task tool;codex-cli 本身也没有 native Scheduled 管理界面。迁移到 OS scheduler 后,安装、状态检查和卸载拥有 canonical identity,Windows 可由 CLI 确定性管理,Unix 也避免把约 1.2 KB prompt 塞进 cron line。

调研依据:

  • xnnehang.top#84:ChatGPT Work 与 Codex Desktop 共享 native task control plane;模型/tool 适配会影响 native task 创建。
  • xnnehang.top#85:旧 native task 应先审计、备份、按 task id 删除并复查;未完成清理时禁止建立 OS task。
  • xnnehang.top#86:跨平台 unattended Codex invocation、sandbox/approval 边界、scheduler 环境差异及无破坏 probe。

安全边界保持明确:--dangerously-bypass-approvals-and-sandbox 只移除 Codex 自身的 approval 与 sandbox,不会提权为 administrator/root,也不会绕过 S4U、cron sparse environment、macOS TCC/Keychain、代理/CA、防火墙、企业策略或 CLI 登录。wrapper 只运行由 package 固定的 bridging prompt,不接受任意用户 prompt。

@MrXnneHang

MrXnneHang commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

这个 PR 可以解决 schedule task 的一个 sandbox 问题,没法解决 codex 对话时 retrieve 就被拦住的问题。

可以先观望一下 codex desktop 会话内的 sandbox 如何解决再把这个接入。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants