NovaScale
NovaScale 菜单

常见问题

与官方 Tailscale 客户端有何不同?

NovaScale 使用的是改造版 libtailscale,并在应用进程内直接建立 Tailnet 通信,因此在该场景下不需要申请 iOS 系统 VPN 权限。

参考:https://tailscale.com/kb/1112/userspace-networking

为什么某些情况下 iOS 将 NovaScale 放到后台后 SSH 会话还能恢复?
NovaScale 在某些场景依赖 userspace 网络行为和内存中的会话状态。若 iOS 因内存压力终止进程,当前会话将无法恢复。
升级到 NovaScale 1.6.0 后为什么提示 SSH 主机密钥不匹配?

NovaScale 1.6.0 重构了 SSH 通信基础。NovaScale 1.5.0 保存的部分已信任主机密钥使用较旧的表示格式,因此升级后首次重新连接时,1.6.0 可能会将未发生变化的主机密钥显示为不匹配。在 1.6.0 中首次信任的主机不受影响。

移除已保存的主机密钥前,请先确认连接的确实是预期主机,并与从服务器本机或管理员处获取的指纹进行核对。然后前往 更多 > 主机密钥,找到受影响的主机,向左滑动并选择 移除。重新连接后,请核对新显示的指纹,确认一致后再信任。通常只需移除受影响的条目,无需使用 清除全部。

为何在开启某些 VPN 客户端后 NovaScale 无法加载主机列表?

部分 VPN 客户端会开启 FakeIP 功能,对 DNS 查询返回保留 IP 空间中的地址。NovaScale 的底层基于 Tailscale 内核组网,会直接绑定到用户的非 VPN 接口(如 5G 或 Wi‑Fi)并从该接口发起请求。

NovaScale 1.6.0 已针对这些 VPN App 常用的 FakeIP 地址范围增加缓解措施。大多数用户不再需要修改 VPN 配置。如果开启 VPN 时 NovaScale 能正常加载主机,无需进行任何操作。

部分 VPN App 允许使用不同或自定义的 FakeIP 地址范围。如果该范围未被 NovaScale 识别,Tailscale 相关域名或自建 Headscale 认证域名仍可能返回 FakeIP,导致请求失败。此时需要在 VPN App 中将这些域名配置为返回真实 IP。

以 Surge 为例,如果使用官方 Tailnet 认证端点,可在 [General] 中增加:

[General]
always-real-ip = *.tailscale.com

如果使用自建 Headscale 控制服务器,还需加入其认证域名。其他 VPN App 中对应的设置可能叫作“真实 IP”“FakeIP 过滤”或“排除 FakeIP”。修改后请重新连接 VPN,并重新启动 NovaScale。

NovaScale、Codex CLI 与 Codex 桌面应用之间会共享哪些 Codex 状态?

这些客户端可以读取主机上由 Codex 管理的同一份状态。线程标识与名称、对话记录和已完成回合、最新模型与思考强度,以及 Goal 状态会由 Codex 持久化,并可由其他客户端恢复。

实时状态的边界不同。正在运行的回合、待处理的批准、当前权限选择、沙盒与批准策略可能仅属于发起它们的 Codex 运行时。NovaScale 无法始终从独立的 CLI 或桌面应用运行时接管这些工作。在 NovaScale 中选择的权限仅适用于从 NovaScale 发起的回合,不会改变其他客户端的当前会话。

NovaScale Pro 的 iCloud 同步会在你的 Apple 设备之间同步 NovaScale 的 Codex 主机条目。Codex 对话记录、源代码或工作区数据不会上传到 iCloud;这些数据仍保留在 Codex 主机上。

为什么 Codex 的模型与思考强度通常能在不同客户端之间保持一致?

Codex 会将最新模型与思考强度持久化为线程元数据。当 NovaScale、Codex CLI 或其他 app-server 客户端在没有显式覆盖设置的情况下恢复线程时,Codex 会还原这些值。客户端也可以主动选择其他值,此时显式设置优先。

NovaScale 不维护固定的模型列表,而是从该主机上的 Codex app-server 获取可用模型与思考强度。因此,选项可能随 Codex 版本、账户、服务端灰度发布和主机配置而变化。如果更新 Codex CLI 后仍未出现新模型,请使用 NovaScale 的主机维护诊断,并按提示重新启动或更新 NovaScale Codex 主机服务。

参考:https://learn.chatgpt.com/docs/app-server

为什么 Codex 0.147 提示该线程已有活跃写入方?

Codex 会将每个线程保存在持久化的 rollout 文件中。Codex 0.147 对该文件应用单写入方保护:如果 Codex CLI、Codex 桌面应用或其他 app-server 运行时仍拥有该线程,NovaScale 可以读取其已持久化的历史,但发送新回合可能会被阻止。即使另一个客户端的最新回合已经完成,只要该会话仍打开着线程,也可能出现此情况。

NovaScale 不会强制接管,也不会直接修改 rollout 文件。出现冲突时,NovaScale 提供以下选择:

  • 退出或关闭当前拥有该线程的会话,然后在 NovaScale 中选择重试。
  • 等待所有权过期后重试。对 Codex 0.147 的测试中,未继续写入的所有权会在约 30 分钟后释放;如果原客户端又发起新回合,则会重新开始一轮等待周期。
  • 选择新会话,在同一工作区中独立开始。
  • 选择分叉线程,保留现有历史并在独立线程中继续。

app-server 协议仍处于实验阶段,因此后续 Codex 版本可能调整具体的所有权超时时间。

参考:https://learn.chatgpt.com/docs/app-server