Agent 工作目录

Agent 执行任务时,需要进入一个工作目录。默认工作目录是 Agent 的运行设置,用来决定 Runtime 在哪份代码上工作。它不是空间 Git 仓库,也不会替代 Agent 或空间的仓库配置。

配置入口:打开 Agent 设置,进入 运行设置,再修改 默认工作目录。

和 Agent 对话时,还可以为这一次对话覆盖工作目录,而不改 Agent 的默认设置。详见 与 Agent 对话。

模式适合场景
创建临时目录多数代码任务、需要并行、希望每个任务有独立工作区。
指定已有目录代码已经在本机、有特殊依赖或缓存、或需要复用现有目录。

一般建议优先选择 创建临时目录。只有需要复用本机环境时,再选择 指定已有目录。

完整的任务派发和状态变化见 Agent 如何执行任务。仓库从哪里来见 连接代码库。

创建临时目录

每个任务都会单独创建一个临时目录,并通过 Git worktree 准备一份独立代码工作区。任务之间不会写进同一个工作区,适合并行处理同一套代码。

例如,一个 Agent 在修复登录问题,另一个 Agent 在补充测试。它们可以分别使用自己的 worktree,修改不同文件、运行各自命令,而不需要先协调同一个脏目录。

任务完成后,你可以 review 这个任务对应 worktree 里的改动,再决定保留、合并或丢弃。

指定已有目录

Agent 会使用电脑上已有的绝对路径。适合代码已经在本机、目录里有特殊依赖或缓存,或不希望每次任务都重新准备代码工作区的场景。

保存 Git 目录时,会出现 如何使用这个目录:

  • Worktree 隔离运行(并行):每个任务独立 checkout 一个 git worktree,不修改原目录;可并行;结果提交到 <产品>-agent/<Agent 名称>/<任务编号> 分支,例如 hifox-agent/thor/HF-3341。Agent 名称里的中文会转成拼音,空格换成 _。只支持设置一个目录,选择后不显示「添加路径」。
  • 直接在该目录运行(串行):直接读写该目录;人和 Agent 可在同一目录协作。不支持多任务并行,同一目录一次只能跑一个任务,其余排队。可以选择后再「添加路径」。

选择 Worktree 隔离运行时,可以额外填写基线分支。任务会先尝试从远程 origin 获取该分支;获取失败时仍会使用本地已有的对应引用。留空则按字面 HEAD 创建 worktree,不会自动获取远程分支。

不是 Git 目录时,只能直接运行。确认按钮是 确定。如果同时添加了 Git 工作区和非 Git 目录,保存后所有目录都会直接运行。保存路径时,界面会说明无法使用隔离 worktree 的原因。

选择直接运行时,可以为一个 Agent 添加多个目录。新任务会先选择空闲目录;没有空闲目录时,任务会排队,等目录释放后再继续。隔离运行只支持一个目录,不要再按多目录设置来理解。

同一任务或对话会继续使用原来的目录。即使该路径后来从默认列表里移除,只要目录仍然可用,这次任务或对话也不会切换到其他路径。

隔离还是原地运行是这个 Agent 的一项设置。修改设置后,已绑定旧目录的任务或对话仍按原规则继续。

选择隔离运行时,如果 worktree 没有准备成功(例如仓库太大),任务会在改动原目录之前停下。失败说明里会给出原因和 一键切换,可以直接改为 直接该目录运行(串行);切换成功后会自动重试这次运行。原始的 Git 错误仍可展开查看,便于排查。这个引导只在隔离运行的准备失败时出现,其他执行失败不会提示切换;没有权限修改该 Agent 设置时,需要由 Agent 所有者或对话发起人切换。

常见问题

修改默认工作目录后,已有任务会换目录吗?

不会。同一任务或对话会继续使用原来的目录,直到目录不可用。新的任务和对话才使用新的默认工作目录。

指定已有目录会修改原目录吗?

取决于隔离设置。选择 Worktree 隔离运行(并行) 时,原目录保持不变,结果通过任务分支交付;选择 直接在该目录运行(串行) 时,任务会直接修改原目录。

为什么任务在排队?

直接在该目录运行时,同一目录一次只能跑一个任务。目录正被其他任务占用时,后来的任务会排队,等它释放后再继续。

可以同时添加 Git 和非 Git 目录吗?

可以,但这些目录无法使用隔离 worktree,任务会直接在所选目录中运行。保存设置时,界面会提示这一变化。

工作目录和代码库配置是什么关系?

工作目录只决定 Agent 在哪里工作,不等于代码库配置。Git 仓库来源仍由 Agent 和空间配置决定,详见 连接代码库。