发布 Release 版本
将动态规格冻结为具备唯一内容哈希的不可变 Release 快照,作为外部编码 Agent 的权威实现基准。
执行版本发布操作,会将当前工作区的规格完整状态冻结为一个具备不可变特质、严格受版本控制的 Release 快照。这正是实现确定性工程交付的底层基石:外部编码 Agent 从一个完全固定的版本快照出发落地代码,绝不会受到人类后续动态调整工作区的影响。
在正式点击发布之前,请确保当前规格已达到足以交付给工程师实现的成熟状态,并确认你具备当前项目的管理权限。
Release 版本的技术内涵与核心资产
- 不可变的文件树快照:由严谨的**内容哈希(Content Hash)**唯一标识与寻址,发布后具备防篡改特质。
- 外部 Agent 读取的默认事实源:CLI 与 MCP 等接口默认始终返回最新发布的权威版本,杜绝未定稿草稿外泄。
- 自动化生成的公开 HTML 交互预览:当发布流水线执行完毕后,系统将自动构建并上传静态页面至:
https://spec.getoriginai.com/{projectId}/{hash}/ - 免登录的机器友好纯文本导出:与 HTML 预览并行生成并分发,专供各类大模型或编码 Agent 极速解析:
- 纯文本索引与文件清单:
…/{hash}/llm.txt - 全量规格拼接正文:
…/{hash}/llm-full.txt
- 纯文本索引与文件清单:
标准发布操作步骤
- 在控制台中进入目标项目工作台。
- 在顶部导航栏中切换至 版本(Releases) 选项卡。
- 可根据界面指引,填写本次版本的变更摘要或核心更新说明。
- 点击 Publish(发布) 按钮。
- 稍候片刻,确认版本历史记录列表中成功新增一行记录(附带全新的版本哈希)。
- 可选步骤:点击打开生成的公开预览链接进行最终视觉走查。
- 在版本面板中选择并复制对应的交付提示词,无缝注入给外部编码 Agent:
- 实现提示词(Implement):包含当前版本哈希的精准提示词,最适合搭配 CLI 或 MCP 协议使用。
- Markdown 提示词:直接引导 Agent 抓取已发布的
llm-full.txt完整导出链接(免登录,直接读取)。 - Visit URL / CLI / hash / get-diff:针对团队不同协作场景按需选择的其他交接模式。
成功发布的标志
- 版本历史记录中成功沉淀下一条记录,具有全局唯一的不可变内容哈希。
- 外部 Agent 运行
list-documents查询时,获取到的是该快照下的静态结构,而非人类正在编辑的动态工作区。 - 独立公开预览 URL 能够顺畅访问与交互(表明后台 HTML 构建流水线执行成功)。
- 对应的
llm.txt与llm-full.txt可被外部 Agent 直接通过 HTTP 协议免认证抓取。
常见排查与处理建议
| 现象 | 原因分析与应对方式 |
|---|---|
| 发布提示 "unchanged"(无变更) | 当前工作区的文件内容与上一次发布的快照完全一致,系统自动复用已有快照并跳过重复编译——说明无需发布新版本。 |
| Agent 仍然在按照旧版规格实现代码 | Agent 需要在本地运行 get-diff 重新检查差异;请确认本地 .origin.json 中的 release_hash 是否已对齐最新版本。 |
| 外部 Agent 无法直接写入工作区 | 此为发布后的标准安全保护机制——外部写入已自动转换为变更请求,等待人类审核。 |
| 无法打开 HTML 预览页面 | HTML 静态站点的渲染与上传是独立于数据库快照记录的异步阶段;请检查发布面板中是否有报错提示。 |
发布流水线底层原理解析(面向架构与运维)
在系统底层,一个完整的发布事务严格分为三个有序阶段:
- 前端通过 Mutation 调用 Supabase RPC 函数
publish_release,在数据库中写入不可变的快照记录并锁定内容哈希。 - 写入成功后,自动触发
publish-release-htmlEdge Function,在服务端极速渲染独立的自包含 HTML 站点并同步上传至 Cloudflare R2 存储桶。 - Cloudflare Worker
origin-preview在spec.getoriginai.com域名下提供边缘路由与全球加速访问。