mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-05 01:50:27 +08:00
- Implemented loop control tasks in JSON format for testing. - Created comprehensive test scripts for loop flow and standalone tests. - Developed a shell script to automate the testing of the entire loop system flow, including mock endpoints and state transitions. - Added error handling and execution history tests to ensure robustness. - Established variable substitution and success condition evaluations in tests. - Set up cleanup and workspace management for test environments.
201 lines
4.6 KiB
Markdown
201 lines
4.6 KiB
Markdown
# Action: Initialize
|
|
|
|
初始化 CCW Loop 会话,创建目录结构和初始状态。
|
|
|
|
## Purpose
|
|
|
|
- 创建会话目录结构
|
|
- 初始化状态文件
|
|
- 分析任务描述生成初始任务列表
|
|
- 准备执行环境
|
|
|
|
## Preconditions
|
|
|
|
- [ ] state.status === 'pending'
|
|
- [ ] state.initialized === false
|
|
|
|
## Execution
|
|
|
|
### Step 1: 创建目录结构
|
|
|
|
```javascript
|
|
const getUtc8ISOString = () => new Date(Date.now() + 8 * 60 * 60 * 1000).toISOString()
|
|
|
|
const taskSlug = state.task_description.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 30)
|
|
const dateStr = getUtc8ISOString().substring(0, 10)
|
|
const sessionId = `LOOP-${taskSlug}-${dateStr}`
|
|
const sessionFolder = `.workflow/.loop/${sessionId}`
|
|
|
|
Bash(`mkdir -p "${sessionFolder}/develop"`)
|
|
Bash(`mkdir -p "${sessionFolder}/debug"`)
|
|
Bash(`mkdir -p "${sessionFolder}/validate"`)
|
|
|
|
console.log(`Session created: ${sessionId}`)
|
|
console.log(`Location: ${sessionFolder}`)
|
|
```
|
|
|
|
### Step 2: 创建元数据文件
|
|
|
|
```javascript
|
|
const meta = {
|
|
session_id: sessionId,
|
|
task_description: state.task_description,
|
|
created_at: getUtc8ISOString(),
|
|
mode: state.mode || 'interactive'
|
|
}
|
|
|
|
Write(`${sessionFolder}/meta.json`, JSON.stringify(meta, null, 2))
|
|
```
|
|
|
|
### Step 3: 分析任务生成开发任务列表
|
|
|
|
```javascript
|
|
// 使用 Gemini 分析任务描述
|
|
console.log('\n分析任务描述...')
|
|
|
|
const analysisPrompt = `
|
|
PURPOSE: 分析开发任务并分解为可执行步骤
|
|
Success: 生成 3-7 个具体、可验证的子任务
|
|
|
|
TASK:
|
|
• 分析任务描述: ${state.task_description}
|
|
• 识别关键功能点
|
|
• 分解为独立子任务
|
|
• 为每个子任务指定工具和模式
|
|
|
|
MODE: analysis
|
|
|
|
CONTEXT: @package.json @src/**/*.ts (如存在)
|
|
|
|
EXPECTED:
|
|
JSON 格式:
|
|
{
|
|
"tasks": [
|
|
{
|
|
"id": "task-001",
|
|
"description": "任务描述",
|
|
"tool": "gemini",
|
|
"mode": "write",
|
|
"priority": 1
|
|
}
|
|
],
|
|
"estimated_complexity": "low|medium|high",
|
|
"key_files": ["file1.ts", "file2.ts"]
|
|
}
|
|
|
|
CONSTRAINTS: 生成实际可执行的任务
|
|
`
|
|
|
|
const result = await Bash({
|
|
command: `ccw cli -p "${analysisPrompt}" --tool gemini --mode analysis --rule planning-breakdown-task-steps`,
|
|
run_in_background: false
|
|
})
|
|
|
|
const analysis = JSON.parse(result.stdout)
|
|
const tasks = analysis.tasks.map((t, i) => ({
|
|
...t,
|
|
id: t.id || `task-${String(i + 1).padStart(3, '0')}`,
|
|
status: 'pending',
|
|
created_at: getUtc8ISOString(),
|
|
completed_at: null,
|
|
files_changed: []
|
|
}))
|
|
|
|
// 保存任务列表
|
|
Write(`${sessionFolder}/develop/tasks.json`, JSON.stringify(tasks, null, 2))
|
|
```
|
|
|
|
### Step 4: 初始化进度文档
|
|
|
|
```javascript
|
|
const progressInitial = `# Development Progress
|
|
|
|
**Session ID**: ${sessionId}
|
|
**Task**: ${state.task_description}
|
|
**Started**: ${getUtc8ISOString()}
|
|
**Estimated Complexity**: ${analysis.estimated_complexity}
|
|
|
|
---
|
|
|
|
## Task List
|
|
|
|
${tasks.map((t, i) => `${i + 1}. [ ] ${t.description}`).join('\n')}
|
|
|
|
## Key Files
|
|
|
|
${analysis.key_files?.map(f => `- \`${f}\``).join('\n') || '- To be determined'}
|
|
|
|
---
|
|
|
|
## Progress Timeline
|
|
|
|
`
|
|
|
|
Write(`${sessionFolder}/develop/progress.md`, progressInitial)
|
|
```
|
|
|
|
### Step 5: 显示初始化结果
|
|
|
|
```javascript
|
|
console.log(`\n✅ 会话初始化完成`)
|
|
console.log(`\n任务列表 (${tasks.length} 项):`)
|
|
tasks.forEach((t, i) => {
|
|
console.log(` ${i + 1}. ${t.description} [${t.tool}/${t.mode}]`)
|
|
})
|
|
console.log(`\n预估复杂度: ${analysis.estimated_complexity}`)
|
|
console.log(`\n执行 'develop' 开始开发,或 'menu' 查看更多选项`)
|
|
```
|
|
|
|
## State Updates
|
|
|
|
```javascript
|
|
return {
|
|
stateUpdates: {
|
|
session_id: sessionId,
|
|
status: 'running',
|
|
initialized: true,
|
|
develop: {
|
|
tasks: tasks,
|
|
current_task_id: null,
|
|
completed_count: 0,
|
|
total_count: tasks.length,
|
|
last_progress_at: null
|
|
},
|
|
debug: {
|
|
current_bug: null,
|
|
hypotheses: [],
|
|
confirmed_hypothesis: null,
|
|
iteration: 0,
|
|
last_analysis_at: null,
|
|
understanding_updated: false
|
|
},
|
|
validate: {
|
|
test_results: [],
|
|
coverage: null,
|
|
passed: false,
|
|
failed_tests: [],
|
|
last_run_at: null
|
|
},
|
|
context: {
|
|
estimated_complexity: analysis.estimated_complexity,
|
|
key_files: analysis.key_files
|
|
}
|
|
},
|
|
continue: true,
|
|
message: `会话 ${sessionId} 已初始化\n${tasks.length} 个开发任务待执行`
|
|
}
|
|
```
|
|
|
|
## Error Handling
|
|
|
|
| Error Type | Recovery |
|
|
|------------|----------|
|
|
| 目录创建失败 | 检查权限,重试 |
|
|
| Gemini 分析失败 | 提示用户手动输入任务 |
|
|
| 任务解析失败 | 使用默认任务列表 |
|
|
|
|
## Next Actions
|
|
|
|
- 成功: `action-menu` (显示操作菜单) 或 `action-develop-with-file` (直接开始开发)
|
|
- 失败: 报错退出
|