You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSTS私有代理构建时自动生成新仓库目录的原因与解决

问题解答:VSTS私有代理突然切换构建目录的原因与解决办法

嘿,我之前维护Azure DevOps(原VSTS)私有代理时也碰到过一模一样的问题,帮你拆解下背后的原因和可行的解决办法:

为什么会突然生成新的工作目录?

Azure DevOps私有代理_work下的数字编号目录,本质是和服务器分配的作业工作文件夹ID绑定的,以下几种情况都会触发新目录的生成:

  • 代理配置变动:如果最近重启过代理、重新注册了代理,或者修改了代理的settings.json配置文件,服务器会重新分配新的作业ID,导致生成新的子目录
  • 构建/流水线变更:比如你重新创建了构建定义、克隆了流水线,或者修改了流水线的源配置(比如调整了代码源分支、新增了源),为了避免新旧构建环境冲突,代理会自动使用新的工作目录
  • 源根映射调整:从你提供的源根映射截图来看,如果最近修改过源映射规则(比如新增了映射路径、调整了源关联),代理会为新的源组合创建独立工作目录,防止文件冲突
  • 缓存异常:如果代理_work目录下的元数据文件(比如记录作业ID的缓存文件)被意外删除或损坏,也会导致代理重新生成新的编号目录

怎么解决这个问题?

根据你的需求,这里提供几种不同场景的解决思路:

1. 强制固定构建目录(推荐)

如果你需要始终使用C:\agent\_work\13这个目录,可以在流水线中直接指定:

  • 打开你的构建定义,切换到「变量」选项卡
  • 添加一个新变量,名称填Agent.BuildDirectory,值填C:\agent\_work\13
  • 保存后重新运行构建,所有任务都会自动使用这个固定路径,不会再生成新目录

2. 重置代理回到原目录结构

如果想让代理自动回到原来的13目录,可以按以下步骤操作:

  1. 先停止私有代理服务:打开代理安装目录,运行RunAgent.cmd stop,或者在Windows服务管理器中找到Azure DevOps代理服务停止
  2. 进入代理的_work目录,删除除了_diag(日志目录)和_tasks(任务缓存目录)之外的所有子目录
  3. 重新启动代理服务,然后运行构建,代理会重新根据服务器分配的ID生成目录,如果你的构建定义没有变更,大概率会回到原来的13编号

3. 检查并恢复源根映射

如果是源根映射变更导致的问题:

  • 对比之前的源根映射配置,把误修改的规则改回原来的设置
  • 清理_work下的旧目录,重新运行构建,代理会使用原有的工作目录

4. 重新注册代理(兜底方案)

如果以上方法都无效,可能是代理的配置文件损坏了:

  1. 打开代理安装目录的config.cmd,执行config.cmd remove完成代理卸载
  2. 重新运行config.cmd configure,按照提示完成代理注册(注册时可以指定工作目录,默认就是_work)
  3. 注册完成后启动代理,再运行构建即可

内容的提问来源于stack exchange,提问作者tRuEsAtM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:08:01