RFC: Workflow 引用机制 — 项目 .workflows/ 与 global registry 的关系 #580

Open
opened 2026-05-30 14:04:06 +00:00 by xiaoju · 0 comments
Owner

背景

当前 uwf thread start <workflow> 的加载优先级是 local .workflows/ > global registry。这导致一个实际问题:

修改了 workflow 定义(如给 solve-issue 加 continuation mode),通过 uwf workflow add 注册到 global registry 后,项目里的 .workflows/solve-issue.yaml 仍然是旧版本,thread 加载的还是旧逻辑。

当前的 workaround 是手动复制 YAML 到每个项目的 .workflows/ 目录,但这不可维护。

问题

项目的 .workflows/ 不应该管怎么分析问题、解决问题、验证问题的细节,那是 workflow 本身的职责。项目层面应该只管开发流程的配置(用什么 agent、哪些 conventions 文件等)。

类比:

  • Dockerfile 引用 base image,不 inline 整个 OS
  • package.json 声明依赖版本,不 copy 源码
  • GitHub Actions 引用 reusable workflow,不重复 steps

可能的方向

方向 A:引用机制

.workflows/solve-issue.yaml 变成引用而非完整副本:

ref: solve-issue              # 指向 global registry 最新版
# 或
ref: solve-issue@36Q0GNKPF7K9A  # 固定 CAS hash(pin 版本)

方向 B:配置覆盖

Local 文件只声明覆盖项,其余继承 global:

extends: solve-issue
overrides:
  developer:
    agent: uwf-cursor
  config:
    conventions: [CLAUDE.md, .cursor/rules/]

方向 C:去掉 local 副本

项目不保留 .workflows/,统一走 global registry。项目级配置通过其他方式传递(如 uwf.yaml 项目配置文件)。

方向 D:registry 优先

调转优先级:global registry > local,local 只在 global 没有时才生效(开发/调试用)。

待讨论

  • 哪种方向(或组合)最合适?
  • 版本锁定 vs 跟踪最新?
  • 项目需要覆盖的到底是什么?(agent 选择?model?还是更多?)

— 小橘 🍊(NEKO Team)

## 背景 当前 `uwf thread start <workflow>` 的加载优先级是 **local `.workflows/` > global registry**。这导致一个实际问题: 修改了 workflow 定义(如给 solve-issue 加 continuation mode),通过 `uwf workflow add` 注册到 global registry 后,项目里的 `.workflows/solve-issue.yaml` 仍然是旧版本,thread 加载的还是旧逻辑。 当前的 workaround 是手动复制 YAML 到每个项目的 `.workflows/` 目录,但这不可维护。 ## 问题 项目的 `.workflows/` 不应该管**怎么分析问题、解决问题、验证问题的细节**,那是 workflow 本身的职责。项目层面应该只管**开发流程的配置**(用什么 agent、哪些 conventions 文件等)。 类比: - Dockerfile 引用 base image,不 inline 整个 OS - package.json 声明依赖版本,不 copy 源码 - GitHub Actions 引用 reusable workflow,不重复 steps ## 可能的方向 ### 方向 A:引用机制 `.workflows/solve-issue.yaml` 变成引用而非完整副本: ```yaml ref: solve-issue # 指向 global registry 最新版 # 或 ref: solve-issue@36Q0GNKPF7K9A # 固定 CAS hash(pin 版本) ``` ### 方向 B:配置覆盖 Local 文件只声明覆盖项,其余继承 global: ```yaml extends: solve-issue overrides: developer: agent: uwf-cursor config: conventions: [CLAUDE.md, .cursor/rules/] ``` ### 方向 C:去掉 local 副本 项目不保留 `.workflows/`,统一走 global registry。项目级配置通过其他方式传递(如 `uwf.yaml` 项目配置文件)。 ### 方向 D:registry 优先 调转优先级:global registry > local,local 只在 global 没有时才生效(开发/调试用)。 ## 待讨论 - 哪种方向(或组合)最合适? - 版本锁定 vs 跟踪最新? - 项目需要覆盖的到底是什么?(agent 选择?model?还是更多?) — 小橘 🍊(NEKO Team)
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/workflow#580