Files
cs-note/claude-code-best/docs/features/workflow-scripts.md
T

105 lines
4.5 KiB
Markdown
Raw Normal View History

2026-06-09 23:15:17 +08:00
---
tags: [workflow, 自动化, YAML, 多agent, feature-flag]
create time: 2026-06-09 22:30
---
2026-06-08 23:08:57 +08:00
# WORKFLOW_SCRIPTS — 工作流自动化
2026-06-09 23:15:17 +08:00
## 概述
WORKFLOW_SCRIPTS 实现基于文件的多步自动化工作流。用户可以定义 YAML/JSON 格式的工作流描述文件,系统将其解析为可执行的多 agent 步骤序列。提供 `/workflows` 命令管理和触发工作流。
> [!info]
2026-06-08 23:08:57 +08:00
> Feature Flag: `FEATURE_WORKFLOW_SCRIPTS=1`
> 实现状态:全部 Stub(7 个文件),布线完整
2026-06-09 23:15:17 +08:00
## 正文
2026-06-08 23:08:57 +08:00
2026-06-09 23:15:17 +08:00
### 实现架构
2026-06-08 23:08:57 +08:00
2026-06-09 23:15:17 +08:00
#### 模块状态
2026-06-08 23:08:57 +08:00
| 模块 | 文件 | 状态 |
|------|------|------|
| WorkflowTool | `packages/builtin-tools/src/tools/WorkflowTool/WorkflowTool.ts` | **部分实现** — tool schema + 渲染完整,call 返回运行时缺失提示 |
| Workflow 权限 | `packages/builtin-tools/src/tools/WorkflowTool/WorkflowPermissionRequest.tsx` | **部分实现** — 权限请求组件 |
| 常量 | `packages/builtin-tools/src/tools/WorkflowTool/constants.ts` | **实现** — 工具名 + 目录名 + 文件扩展名常量 |
| 命令创建 | `packages/builtin-tools/src/tools/WorkflowTool/createWorkflowCommand.ts` | **实现** — 扫描 .claude/workflows/ 目录创建 Command 对象 |
| 捆绑工作流 | `packages/builtin-tools/src/tools/WorkflowTool/bundled/index.ts` | **实现** — 内置工作流初始化 |
| 本地工作流任务 | `src/tasks/LocalWorkflowTask/LocalWorkflowTask.ts` | **Stub** — 类型 + 空操作 |
| UI 任务组件 | `src/components/tasks/src/tasks/LocalWorkflowTask/` | **Stub** — 空导出 |
| 详情对话框 | `src/components/tasks/WorkflowDetailDialog.ts` | **Stub** — 返回 null |
| 任务注册 | `src/tasks.ts` | **布线** — 动态加载 |
2026-06-09 23:15:17 +08:00
| 工具注册 | `src/tools.ts` | **布线** — 动态加载 + bundled 工作流初始化 |
| 命令注册 | `src/commands.ts` | **布线** — `/workflows` 命令 |
#### 预期数据流
```mermaid
flowchart TD
A["用户定义工作流 YAML/JSON 文件"] --> B["/workflows 命令发现工作流文件"]
B --> C["createWorkflowCommand() 解析为 Command 对象 需要实现"]
C --> D["WorkflowTool 执行工作流 需要实现"]
D --> E["步骤 1: Agent({ task: '...' })"]
D --> F["步骤 2: Agent({ task: '...' })"]
D --> G["步骤 N: Agent({ task: '...' })"]
E --> H["LocalWorkflowTask 协调步骤执行 需要实现"]
F --> H
G --> H
H --> I["WorkflowDetailDialog 显示进度 需要实现"]
2026-06-08 23:08:57 +08:00
```
2026-06-09 23:15:17 +08:00
#### 预期工作流 DSL
2026-06-08 23:08:57 +08:00
2026-06-09 23:15:17 +08:00
```yaml
2026-06-08 23:08:57 +08:00
# workflow.yaml(预期格式,需要设计)
name: "代码审查工作流"
steps:
- name: "静态分析"
agent: { type: "general-purpose", prompt: "运行 lint 和类型检查" }
- name: "测试"
agent: { type: "general-purpose", prompt: "运行测试套件" }
- name: "综合报告"
agent: { type: "general-purpose", prompt: "综合分析结果写报告" }
```
2026-06-09 23:15:17 +08:00
### 需要补全的内容
2026-06-08 23:08:57 +08:00
| 优先级 | 模块 | 工作量 | 说明 |
|--------|------|--------|------|
| 1 | `WorkflowTool.ts` call 方法 | 中 | 实际工作流执行逻辑(当前返回运行时缺失提示) |
| 2 | `LocalWorkflowTask.ts` | 大 | 步骤协调、kill/skip/retry |
| 3 | `WorkflowDetailDialog.ts` | 中 | 进度详情 UI |
2026-06-09 23:15:17 +08:00
### 关键设计决策
2026-06-08 23:08:57 +08:00
1. **基于文件的 DSL**:工作流定义为文件(YAML/JSON),版本控制友好
2. **多 Agent 步骤**:每个步骤是独立的 agent 任务,支持并行/串行
3. **内置工作流**:`bundled/` 目录提供开箱即用的常用工作流
4. **/workflows 命令**:统一的发现和触发入口
2026-06-09 23:15:17 +08:00
### 使用方式
2026-06-08 23:08:57 +08:00
```bash
# 启用 feature(需要补全后才能真正使用)
FEATURE_WORKFLOW_SCRIPTS=1 bun run dev
```
2026-06-09 23:15:17 +08:00
### 文件索引
2026-06-08 23:08:57 +08:00
| 文件 | 职责 |
|------|------|
| `packages/builtin-tools/src/tools/WorkflowTool/WorkflowTool.ts` | 工具定义(部分实现) |
| `packages/builtin-tools/src/tools/WorkflowTool/WorkflowPermissionRequest.tsx` | 权限请求组件 |
| `packages/builtin-tools/src/tools/WorkflowTool/constants.ts` | 常量定义 |
| `packages/builtin-tools/src/tools/WorkflowTool/createWorkflowCommand.ts` | 命令创建(已实现) |
| `packages/builtin-tools/src/tools/WorkflowTool/bundled/index.ts` | 内置工作流初始化 |
| `src/tasks/LocalWorkflowTask/LocalWorkflowTask.ts` | 任务协调(stub) |
| `src/components/tasks/WorkflowDetailDialog.ts` | 详情对话框(stub) |
| `src/tools.ts:131-134,235` | 工具注册 |
| `src/commands.ts:93-95,395,460` | 命令注册 |
2026-06-09 23:15:17 +08:00
## 关联笔记
- [[claude-code-best/docs/features/coordinator-mode]]