OpenProgram Docs

分支命名

状态: 当前设计与实现参考

分支有名称时显示自身名称,否则显示短标识符。自动命名逐步完善,不得覆盖用户控制的名称。
规范实现位于 openprogram/store/session/session_store.py, openprogram/agent/dispatcher/titles.py, openprogram/agent/dispatcher/finalize.py,以及 apps/server/openprogram_server/_webui/ws_actions/branch.py.

1. 当前合同

  • 主干没有自动合成的 main 特殊名称。未命名分支使用短十六进制标识符;已命名分支使用自身名称。
  • 手动分支命名由分支 WebSocket 动作处理。未存储名称时回退到短标识符。
  • 自动命名是后台操作,在轮次结束时按配置阈值触发。它读取分支上下文,并在写入前重新检查锁。
  • 自动命名不得替换用户锁定的名称。存储的分支元数据不再符合操作前置条件时,丢弃过期后台结果。

2. 已实现路径

关注点当前源码证据
存储的分支名与回退openprogram/store/session/session_store.py读取分支元数据时不合成 main 名称;未命名条目回退到短 id。
渐进式 LLM 命名openprogram/agent/dispatcher/titles.pymaybe_auto_name_branch 执行阈值检查、后台生成和写回保护。
轮次结束触发openprogram/agent/dispatcher/finalize.py轮次结束收尾调用自动分支命名。
手动与 WebSocket 动作apps/server/openprogram_server/_webui/ws_actions/branch.py当前分支动作提供重命名、短 id 回退、锁处理和按需命名。
Composer 命令apps/web/components/chat/composer/slash/slash-commands.ts/branch 和 auto_name_branch 已注册为当前命令。

3. 命名策略

来源优先级自动命名可以覆盖吗?
用户重命名最高不可以;它会设置持久锁。
已有持久分支名存储值仅当本次自动操作通过锁检查和过期写入检查时可以。
LLM 自动结果后台完善分支被锁定或前置条件变化时不可以。
短标识符回退仅在有效名称保存后替换。

4. 状态与生命周期

  1. 创建分支时同时建立元数据;不存在名称时可以立即使用短 id 展示。
  2. 轮次收尾时,按渐进命名阈值检查该分支自身上下文和轮次数量。
  3. LLM 在后台生成。写入前重新读取分支/会话状态;发现手动锁或过期前置条件时放弃结果。
  4. WebSocket 消费者通过当前分支/会话更新路径收到分支变更;生成期间 UI 必须保留短 id 回退。

5. 边界

  • 本设计不增加第二套分支实体、命名存储或主干特殊名称。
  • 分支命名不改变会话标题合同或 DAG 父子关系。
  • 具体提示词和未来阈值变化属于实现细节;任何变化都必须同步更新规范 Markdown 与本可视化。
  • 本页不宣称实现跨函数命名协调、跨会话命名策略或旧分支元数据历史迁移。

6. 验证说明

上述实现证据说明源码路径合同,不代表每种浏览器状态或竞态均已穷尽测试。验证应覆盖手动重命名与并发自动结果、未命名主干回退、分叉分支的渐进命名,以及后台命名后的 WebSocket 更新。

Last updated · 2026-10-10