Skip to content

fix: 保留定时 worker 的 PATH - #4

Merged
z2z23n0 merged 1 commit into
mainfrom
fix/scheduled-worker-path
Jul 16, 2026
Merged

fix: 保留定时 worker 的 PATH#4
z2z23n0 merged 1 commit into
mainfrom
fix/scheduled-worker-path

Conversation

@z2z23n0

@z2z23n0 z2z23n0 commented Jul 16, 2026

Copy link
Copy Markdown
Owner

Mainline Intent

Intent: int_df7c3992
Status: proposed
Title: 修复定时更新子进程缺少 PATH

What changed

让 launchd 和 systemd 调度配置持久化经过过滤和去重的可执行 PATH,并让 doctor 将缺少 PATH 的旧调度文件识别为 stale。

Why

定时 worker 虽能通过绝对路径启动 ToolTend,但后续解析和安装命令仍依赖 PATH;launchd 与 systemd 的默认环境可能缺少用户安装目录,导致交互式环境可用的更新任务在后台失败。

Decisions

  • 在哪一层恢复后台更新所需的命令查找环境: 在 scheduler 生成的 launchd plist 和 systemd service 中持久化 worker PATH (这同时覆盖 ToolTend driver 入口和内部 npm、git、gh、mainline 命令,并统一修复 macOS 与 Linux。)
    • Rejected: 只把 recipe 中的 tooltend 替换成绝对路径
    • Rejected: 只在 macOS launchd 配置中硬编码单个安装目录
  • 如何处理传入 PATH 的安全性和重复项: 仅保留绝对目录、按顺序去重,并强制加入 ToolTend 所在目录和系统兜底目录 (避免持久化相对路径带来的当前目录劫持,同时保留用户实际可用的 Homebrew 和本地命令目录。)
  • 如何迁移现有错误调度配置: 让 doctor 对缺少 PATH 的 plist/service fail closed 并生成 scheduler repair (无需数据库迁移,现有安装可通过受确认的 doctor repair 原子重写并重新注册调度器。)

Subsystems: scheduler, doctor

@z2z23n0
z2z23n0 marked this pull request as ready for review July 16, 2026 14:55
@z2z23n0
z2z23n0 merged commit d123628 into main Jul 16, 2026
3 of 4 checks passed
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.

1 participant