Skip to content
FunCoding

Search

Search docs, Skills and MCP

工作区注册与运行边界

管理多个工作区的生命周期、信任和容量,并识别 daemon 共享的权限边界。

This page has not been translated into English yet. The original Chinese version is shown below.

一个 daemon 可以管理多个不重叠的注册工作区,每个有自己的 cwd、环境覆盖、服务、ACP bridge、渠道 worker 和工作区资源。listener、认证、HTTP 限流、全局会话容量、指标、关闭与进程故障范围仍共享。

显式与动态注册

qwen serve \
  --workspace /absolute/path/project-a \
  --workspace /absolute/path/project-b

路径必须为绝对路径,首个为 primary。请求省略 cwd 时使用 primary,指定路径规范化后若不属于注册集合,返回 workspace_mismatch。

运行时可 POST /workspaces 注册动态 secondary;persist: true 写入用户级注册存储,供下次启动恢复。primary 和显式启动的静态工作区必须重启才能移除。动态及持久恢复的 secondary 可移除,正常移除拒绝忙碌运行时,强制移除请求终止资源并在持久提交后完成逻辑移除。

同一路径重新添加前先完成逻辑移除。提交点之后的清理有时间边界、尽力完成,失败写日志,不会把已移除运行时重新加入。

信任与子进程

生产启动尝试预热可信 primary 的 ACP,失败后首次使用可再尝试;可信 secondary 首次运行型命令或会话时才启动自己的子进程。未信任 secondary 不启动 ACP。

未信任工作区仍可展示诊断、有限文件读取、持久会话目录,以及具备 capability 时的受限 transcript 读取;不能据此执行任务、恢复会话、修改或完整导出。Web Shell 将其标为 untrusted/read-only。需要执行时先建立信任并重启 daemon。

工作区信任是执行门禁,不是 ACL。共享 bearer 的客户端能访问该 daemon 对所有注册工作区开放的路由。需要独立 token、配额、审计或系统权限的用户应分开 daemon;同一 UID 的 Shell 能力也不受工作区环境覆盖隔离保护。

注册容量

默认最多注册 256 个工作区,包含 primary、secondary 和用户创建的 scratch,内部 Conversations runtime 不计入。可通过启动环境降低:

QWEN_SERVE_MAX_WORKSPACES=25 qwen serve --workspace /absolute/path/project

合法范围是十进制整数 1–256,非法值导致启动失败。项目 .env 或 settings.env 不能改变它;嵌入式 ServeOptions.maxRegisteredWorkspaces 优先于启动环境。

达到容量时动态注册返回 409 workspace_limit_reached,capabilities 和 daemon/status 在 limits.maxRegisteredWorkspaces 公布有效值。渠道控制另最多 25 个拥有 worker 的工作区,恢复过程中保留的 owner 也占容量;超限返回 channel_control_workspace_limit_reached。

持久存储和降级

注册文件 schemaVersion 仍为 1,最多 255 个 secondary 原始记录、8 MiB。旧别名等原始记录也占位,直到明确忘记。有效启动集合超出配置容量时,启动失败但不改文件。

降低容量前,先以原容量启动并移除足够注册,再减少显式 workspace 参数。降级旧二进制前备份存储,并用新版本将其缩至不超过 24 个 secondary、256 KiB;旧版本否则可能拒绝存储、只用显式工作区,且不能成功改写旧存储。

项目记忆分区

daemon 默认 memory-project-scope 为 workspace,按注册目录分区;git-root 是兼容旧记忆的选择。这个启动值对全部运行时冻结,项目环境不能单独覆盖。默认改变不会自动迁移旧的 Git 根记忆,独立 TUI 仍默认 git-root。

存储键会把非字母数字字符替换为连字符,因此 feature_1 与 feature-1 等目录仍可能碰撞,不能把工作区命名视为绝对记忆隔离。CLI 值区分大小写,环境 QWEN_CODE_MEMORY_PROJECT_SCOPE 会 trim 并转小写;无效非空环境值告警并保留旧 git-root 行为。