运行时

工作目录与清理

说明 Agent 任务工作目录、Worktree 的退出清理与定期 GC 的边界。

工作目录与清理

Daemon 在 MOPHEUS_WORKDIR 下为 Agent 任务准备工作目录。任务目录可包含 Provider 状态、skills、运行时配置、事件与用量队列,以及通过 mopheus repo checkout 创建的 Git worktree。

工作目录会在两条独立路径上被清理:任务退出时的即时清理,以及按 TTL 运行的定期 GC。

任务退出清理

任务退出时,Daemon 按阶段释放资源:

阶段适用结果内容
强制清理所有退出协议、进程、临时配置、Provider home、skills、注入的 runtime config marker。
成功清理服务端确认 Completed=true可选的 Worktree 删除。
最终释放所有退出environment 与仓库引用。

失败、取消、中断和未确认完成不会触发 Worktree 清理,保留现场以供重试或排查。Pending=true 会继续同会话交互;既非 Completed 也非 Pending 的响应保留终态记录,等待后续确认。

成功后的 Worktree 清理

默认不在任务成功后立即删除 Worktree。启用以下环境变量后,Daemon 仅在服务端确认成功时执行强制删除:

MOPHEUS_AGENT_TASK_CLEANUP_WORKTREE=true

该开关接受 true1。删除使用显式强制授权,可能丢弃 Worktree 中的未提交、未跟踪或未推送修改。仅在确认这些本地修改可丢弃时启用。

实际删除成功后,Daemon 才会从任务 GC 元数据中移除对应 Worktree 路径;删除失败时元数据会保留。

定期 GC

当配置了 MOPHEUS_WORKDIR 时,Daemon 自动启用工作目录 GC。首次扫描在启动 90 秒后开始,之后按间隔执行。可使用 mopheus daemon disk-usage 查看当前磁盘占用。

环境变量默认值说明
MOPHEUS_GC_INTERVAL4 小时扫描频率。
MOPHEUS_GC_TTL7 天Ticket 保持 donecancelledarchived 超过该时长后,GC 会强制删除其整个任务目录。
MOPHEUS_GC_ORPHAN_TTL72 小时无元数据或服务端不可达目录的保留时长。
MOPHEUS_GC_ARTIFACT_TTL12 小时node_modules.next.turbo 等可再生目录的清理延迟;0 禁用。
MOPHEUS_GC_ARTIFACT_PATTERNSnode_modules,.next,.turbo可再生 artifact 目录 basename,逗号分隔。

GC 会保留未终态的 Ticket 以及状态为 failed 的 Ticket,也会保护仍有待上报终态记录的任务目录。TTL 到期清理是破坏性的整目录删除,包括目录中残留的 Worktree 内容。它是容量回收机制,不是任务退出即时清理的替代品。启用成功后的 Worktree 清理也不会改变 GC 的 TTL、扫描频率或 orphan 策略。

本地 worktree 注册表

daemon 会将每个受管 worktree 原子记录到 <bare>.git.metadata/worktrees/,与现有的 <bare>.git.codegraph-cache/ 并列,绝不会移动缓存。列表和清理只使用本地记录及 Git 状态,因此数据库记录或 task 目录删除后仍可工作。

可使用 mopheus repo worktree list --ticket <uuid>--task <uuid>,或 --untracked --repo <url>。记录会归并为 activemissingdrifteduntracked 状态。受管记录使用 ticket/task selector 清理;untracked 清理必须指定 --repo 和显式 --force。有本地改动、未推送提交或分支漂移的 worktree 默认受保护,强制模式才会删除。多个工作区存在同一 URL 时用 --workspace <uuid> 缩小范围;否则 prune 会拒绝歧义且不修改。-o table 是表格,-o json 是纯 JSON。删除 bare repo 会同时删除 .git.git.metadata.git.codegraph-cache