跳到主要内容

设备产物规则:撤回自动迁移及版本兼容边界

公共 Ghost/default/wegent-wework 的提示词自动更新已经撤回。本功能不要求改写生产数据库的 Ghost,也不通过迁移回滚管理员配置。

保留的交付规则​

  • 默认 YAML 保留新版产物声明规则,只用于创建尚不存在的资源。
  • Claude Code(启用工具时)及 Codex 在每轮执行时注入声明规则;已有 Ghost 可以保留旧提示词。
  • 文件仍保存在执行设备。声明只保存元数据,成功完成后对话显示产物卡片,点击时读取原来源。
  • 不运行旧的提示词预检或配置替换脚本;旧预检脚本已删除。

网页完成事件与恢复快照都更新对应 assistant 消息的产物 contexts。快照未提供 contexts 时保留已知值,显式空列表则清空;浏览器断网期间完成的文件也能在同一页面恢复后出现,无需重载。

执行工作区权限边界​

执行器在 Claude Code 或 Codex 启动前,从已准备的真实 cwd 建立不可改写的 Task/轮次工作区绑定,保存在执行器自己的状态目录。绑定使用 Task Token 的 SHA-256 指纹区分执行上下文,不保存原始 Token。

声明接口通过原执行器的认证通道查询绑定的 canonical 工作目录,拒绝与请求中 workspace_root 不一致的根目录,只保存经过验证的来源。设备 RPC 与 HTTP 下载都重新校验原绑定、Task/轮次和已捕获的根,再执行原有的越界符号链接与大小检查;任务改派不会使下载转向新执行器。

续跑时可以通过新的、已验证的原生绑定更新凭据,但执行器、命名空间和 canonical 根目录必须与原声明一致;凭据更新不能改变产物的物理来源。

Backend 与执行器需同时升级。旧版本声明但缺少绑定的产物会明确拒绝下载,需要在升级后的新轮次中重新生成、声明;不会把旧元数据中的根目录当作权限证明,也不通过数据迁移补录。

不保留迁移版本节点​

本功能已删除 a9c4e7b2d610,既不保留自动数据迁移,也不保留空操作 revision。当前迁移链以 f3a7c9e1b2d4 为 head;本功能不新增 Alembic 节点,不自动修改版本记录。

已有状态更新代码后的行为
仍在前置 revision正常识别已有版本,不修改旧 Ghost。
已记录 a9c4e7b2d610Alembic 明确报缺失 revision,部署前必须单独处理版本兼容。
旧迁移曾改写提示词当前业务配置不被自动恢复;版本兼容处理与业务配置恢复是两项独立操作。
Ghost 已被管理员定制配置保持不变。

已记录旧版本环境的部署边界​

环境负责人必须先在该环境当前部署的、仍能识别旧 revision 的代码中检查版本及实现,使用已批准的连接;连接口令不得写入命令或日志:

cd backend
uv run alembic current
uv run alembic heads

若已记录 a9c4e7b2d610,不得直接部署删除节点后的代码再运行迁移。应先为该环境制定并批准版本兼容步骤。历史提交 aaa7da6f973605fbd6913fcddf5f41270ca57725 中的该节点已经是空操作;只有核对正在使用的代码确实包含这份空操作实现后,降级至 f3a7c9e1b2d4 才只调整 Alembic 版本记录,不改 Ghost。更早的自动数据迁移实现不具有这个回退边界,不得直接执行其 downgrade。

本 PR 不执行这些环境操作,不提供自动 stamp、版本重映射或配置替换;不能直接删除版本表或盲目 stamp head。本次代码修复不连接或修改生产数据库。

移除 revision 和版本兼容操作均不会恢复早期迁移改写过的 Ghost。恢复业务配置必须另获批准,并使用受控备份逐项核对。

回归测试使用连接隔离的临时表,覆盖前置版本正常识别、已记录旧版本明确拒绝且版本记录不变,以及旧/已迁移/定制/新配置原样保留。Web E2E 使用旧 Ghost 提示词验证 Claude Code 和 Codex 的运行时注入、真实声明、即时卡片及下载,不改写公共内置资源。