AIGC标识 如何彻底关闭 WorkBuddy 的自动更新

正文

结论先说,因为这个问题下多数答案是错的:

设置界面没有关闭自动更新的开关;配置文件里有,键名是 startupForceAutoUpdate。但它不在 settings.json 里,在 ~/.workbuddy/app/app-config.json 里。

网上流传的 "autoUpdate": false 和 "checkForUpdates": false 两种写法,写进 settings.json 不会报错,也不会生效——我两种都试过。

测试环境:WorkBuddy 5.9.3 / Windows 11 / 2026 年 11 月,两轮实测,附日志。


一、为什么网上的写法无效

常见的教程会让你在 ~/.workbuddy/settings.json 里写入:

{
  "autoUpdate": false,
  "checkForUpdates": false
}

这个写法的问题在于"看起来对"。

客户端主程序(Electron 打包的 app.asar)中,autoUpdate 字段的实际语义是插件市场的自动更新,出现在 marketplace 配置里,与客户端版本更新无关。而 checkForUpdates 全部以方法名或菜单命令 ID 的形式出现,没有任何一处是从配置文件读取它来决定是否检查更新。

更关键的是文件本身:这两个键即使有效,放错了文件也不会被读到。settings.json 存的是沙箱规则、插件启用状态这类会话级/代理级配置;更新开关属于应用级配置,存在 app-config.json。两套配置各走各的通道。

怎么证明? 看日志。

更新服务每次启动都会把开关判定结果写进 ~/.workbuddy/logs/update/update-YYYYMMDD.log。如果你只改了 settings.json,日志会是这样:

[INFO] Startup force auto-update: inputs userSetting=<unset>, remoteFeature=<unset>, cachedSystemDefault=<unset>, productBase=true
[INFO] Startup force auto-update: enabled=true source=product-base

userSetting=<unset> —— 没读到。source=product-base —— 用的是产品出厂默认值,更新照常。


二、更新逻辑的三层结构

搞清结构才知道该关哪一层。

层级 触发时机 行为 是否受用户设置控制
常规检查 启动 30 秒后,之后定时 请求版本接口,静默比对版本号 否
必须升级检查 启动 10 秒后 判断当前版本是否被标记为必须升级 否
启动强制自动更新 启动时 下载、安装,下次启动生效 是

前两层只发请求,不下载、不打断你。导致"界面变了""设置被重置"的是第三层——它完成了下载和安装。

第三层的判定逻辑如下(app.asar 中的 resolveStartupForceAutoPreference):

function resolveStartupForceAutoPreference(e) {
  return typeof e.userSetting === 'boolean'
    ? { enabled: e.userSetting, source: 'user-setting', ... }
    : typeof e.remoteFeature === 'boolean'
      ? { enabled: e.remoteFeature, source: 'remote-feature', ... }
      : typeof e.cachedSystemDefault === 'boolean'
        ? { enabled: e.cachedSystemDefault, source: ... }
        : { enabled: productBase, source: 'product-base', ... }
}

优先级:用户设置 > 服务端下发 > 系统默认缓存 > 产品基础配置。

userSetting 排在最前面,只要你在配置文件里写了布尔值,就能压过服务端下发和产品默认——这是官方预留的配置项,不是绕过机制。

而它的入口函数读的是这个文件:

function resolveEarlyStartupForceAutoEnabled() {
  let e = readAppConfigFileCache(path.join(runtimeContext(), `app-config.json`)),
      n = resolve({ userSetting: readBoolean(e[`startupForceAutoUpdate`]), ... })
}

app-config.json,不是 settings.json。


三、操作步骤

第 1 步:定位文件

  • Windows:C:\Users\<用户名>\.workbuddy\app\app-config.json
  • macOS:~/.workbuddy/app/app-config.json

第 2 步:合并写入,保留原有键

app-config.json 里通常已有 locale 和 defaultWorkspacePath 两项,都属于基础配置,不能丢。

在 defaultWorkspacePath 后面追加:

{
  "locale": "zh-CN",
  "defaultWorkspacePath": "D:\\你的工作空间路径",
  "startupForceAutoUpdate": false
}

注意事项:

  • 逗号必须是 ASCII 的 ,
  • 最后一个键后面不能有逗号(严格 JSON 不允许尾逗号)
  • defaultWorkspacePath 的值保持原样,改错会导致工作空间路径异常

第 3 步:完全退出进程

关闭窗口不够。WorkBuddy 关窗后驻留系统托盘,配置不会重新加载。

托盘图标右键退出 → 确认进程清空 → 重新启动。

第 4 步:验证

打开 ~/.workbuddy/logs/update/update-YYYYMMDD.log,搜索 Startup force auto-update。成功的日志:

[INFO ] [early-silent-startup-update] enabled=false source=user-setting

[INFO ] Startup force auto-update: inputs userSetting=false, remoteFeature=<unset>, cachedSystemDefault=<unset>, productBase=true
[INFO ] Startup force auto-update: enabled=false source=user-setting

注意 productBase=true 但 enabled=false——产品默认是开,用户设置把它压住了。这一行同时验证了优先级链路和配置读取。

判定标准:

日志内容 含义
userSetting=false + source=user-setting 配置已生效
userSetting=<unset> + source=product-base 配置未被读取,检查文件路径是否正确
完全没有新记录 进程未完全退出,或日志写入了旧文件

排查顺序:文件路径是否为 app/ 子目录 → JSON 语法是否合法(用在线校验器过一遍)→ 进程是否退干净。


四、能力边界

必须说明:它不会让客户端停止检查更新。

startupForceAutoUpdate 只控制"启动时的自动下载与安装"。常规版本检查由其他路径触发,条件判断只涉及架构是否匹配,不读这个设置。

关闭后的实际表现:

[INFO ] State changed: checking
[INFO ] [win32] Checking for updates: ...&version=5.9.3
[INFO ] [win32] No update available (HTTP 204)

日志里依然会出现 checking——这是正常的。区别在于它只问不装。

对绝大多数人来说,这就是想要的效果:不被打断,而不是绝对不联网。

如果确实想连检查请求都断掉,更新接口是 https://www.workbuddy.cn/v2/update,可以用 hosts 或防火墙拦截,但该域名同时承载其他服务,按域名阻断可能影响登录或在线功能,不建议为这点需求动它。


五、代价与回退

关闭后的实际成本:

  • 安全修复滞后。涉及权限、沙箱的修复不会自动获取
  • 插件兼容性风险。插件市场按最新版适配,版本压太久可能装不上或行为异常
  • 降低求助效率。官方排查以最新版为基准

更合理的策略是降低频率而不是永久关闭:保留 startupForceAutoUpdate: false,每 1–2 个月主动更新一次。主动更新能选时机,被动更新不能。

回退方式:删除 "startupForceAutoUpdate": false 这一行,同时删除上一行末尾因它而加的逗号,保存,完全退出重启。


六、补充:另外两个建议改的默认项

开机自启动——默认开启。设置 → 通用 → 开机自动启动,关闭。这是官方图形开关,无需改配置。

工作空间存储路径——默认落在 C 盘。设置 → 数据管理 → 存储 → 默认工作空间存储路径 → 更改。

需要澄清:这里改的是新建任务与新建工作空间的存放位置,已有数据不会自动迁移。同页上方的"系统缓存目录"仅提供"打开目录",没有修改入口。


小结

  • 键名是 startupForceAutoUpdate,文件是 app-config.json,不是 settings.json
  • 优先级最高,能压过服务端下发,属于官方预留配置项
  • 用日志验证,别靠猜:搜 source=user-setting
  • 它关的是"自动下载安装",不是"完全不检查"
  • 建议降低频率而非永久关闭

如果你在自己的版本上跑出了不同结果,欢迎在评论区贴日志里的那两行。版本、系统、日志原文,比任何主观描述都有用。

posted @ 2026-11-01 18:04  紫曜花  阅读(103)  评论(0)    收藏  举报