feat: support folder-based workflow layout (foo/index.yaml) #583

Closed
opened 2026-05-31 04:04:32 +00:00 by xiaomo · 0 comments
Owner

Summary

除了 foo.yaml 表达 name 为 foo 的 workflow,也应该支持 foo/index.yaml 形式。

Motivation

当使用 !include 引用外部文件时,workflow 相关文件自然形成一个目录结构:

.workflow/
  solve-issue/
    index.yaml          # workflow 定义
    roles/
      analyst.md        # system prompt
      developer.md
    schemas/
      analyst.json      # output schema

这比把所有东西挤在一个 YAML 文件里更清晰。

Proposed Solution

在 workflow 发现逻辑中,按以下优先级查找 name 为 foo 的 workflow:

  1. foo.yaml / foo.yml(现有行为,优先)
  2. foo/index.yaml / foo/index.yml(新增)

影响的代码:

  • discoverProjectWorkflows() — 扫描 .workflows/ 目录
  • findWorkflowInDir() — 在给定目录中查找 workflow
  • workflowNameFromPath() — 从路径推导 workflow name
  • checkWorkflowFilenameConsistency() — 文件名与 name 字段一致性检查
## Summary 除了 `foo.yaml` 表达 name 为 `foo` 的 workflow,也应该支持 `foo/index.yaml` 形式。 ## Motivation 当使用 `!include` 引用外部文件时,workflow 相关文件自然形成一个目录结构: ``` .workflow/ solve-issue/ index.yaml # workflow 定义 roles/ analyst.md # system prompt developer.md schemas/ analyst.json # output schema ``` 这比把所有东西挤在一个 YAML 文件里更清晰。 ## Proposed Solution 在 workflow 发现逻辑中,按以下优先级查找 name 为 `foo` 的 workflow: 1. `foo.yaml` / `foo.yml`(现有行为,优先) 2. `foo/index.yaml` / `foo/index.yml`(新增) 影响的代码: - `discoverProjectWorkflows()` — 扫描 `.workflows/` 目录 - `findWorkflowInDir()` — 在给定目录中查找 workflow - `workflowNameFromPath()` — 从路径推导 workflow name - `checkWorkflowFilenameConsistency()` — 文件名与 name 字段一致性检查
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/workflow#583