sillyspec 3.9.1 → 3.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/sillyspec-commit/SKILL.md +1 -1
- package/.claude/skills/sillyspec-continue/SKILL.md +1 -1
- package/.claude/skills/sillyspec-explore/SKILL.md +9 -0
- package/.claude/skills/sillyspec-plan/SKILL.md +0 -35
- package/.claude/skills/sillyspec-workspace/SKILL.md +1 -1
- package/README.md +7 -6
- package/SKILL.md +15 -10
- package/package.json +1 -1
- package/packages/dashboard/dist/assets/index-BcM2J-hv.css +1 -0
- package/packages/dashboard/dist/assets/{index-RsLVPAy7.js → index-DpLHK4jv.js} +974 -974
- package/packages/dashboard/dist/index.html +16 -17
- package/packages/dashboard/dist/prototype-dashboard.html +836 -0
- package/packages/dashboard/dist/prototype-overview.html +256 -0
- package/packages/dashboard/public/prototype-dashboard.html +836 -0
- package/packages/dashboard/public/prototype-overview.html +256 -0
- package/packages/dashboard/server/index.js +18 -13
- package/packages/dashboard/server/parser.js +109 -1
- package/packages/dashboard/server/watcher.js +14 -6
- package/packages/dashboard/src/App.vue +414 -186
- package/packages/dashboard/src/components/ActionBar.vue +10 -1
- package/packages/dashboard/src/components/CommandPalette.vue +5 -1
- package/packages/dashboard/src/components/DocPreview.vue +105 -8
- package/packages/dashboard/src/components/DocTree.vue +75 -19
- package/packages/dashboard/src/components/HResizeHandle.vue +48 -0
- package/packages/dashboard/src/components/PipelineView.vue +23 -4
- package/packages/dashboard/src/components/ProjectCard.vue +187 -0
- package/packages/dashboard/src/components/ProjectOverview.vue +113 -139
- package/packages/dashboard/src/components/VResizeHandle.vue +61 -0
- package/packages/dashboard/src/composables/useDashboard.js +28 -0
- package/packages/dashboard/src/composables/useLayout.js +131 -0
- package/src/index.js +7 -0
- package/src/init.js +17 -10
- package/src/migrate.js +5 -5
- package/src/progress.js +2 -1
- package/src/run.js +72 -61
- package/src/stages/brainstorm.js +28 -3
- package/src/stages/execute.js +52 -27
- package/src/stages/explore.js +34 -0
- package/src/stages/index.js +3 -1
- package/src/stages/plan.js +86 -14
- package/src/stages/scan.js +11 -11
- package/src/stages/status.js +1 -1
- package/.sillyspec/changes/archive/2026-04-08-derive-state/design.md +0 -97
- package/.sillyspec/changes/archive/2026-04-08-derive-state/plan.md +0 -51
- package/.sillyspec/changes/archive/2026-04-08-derive-state/proposal.md +0 -29
- package/.sillyspec/changes/archive/2026-04-08-derive-state/requirements.md +0 -34
- package/.sillyspec/changes/archive/2026-04-08-derive-state/tasks.md +0 -13
- package/.sillyspec/changes/archive/2026-04-08-derive-state/verify-result.md +0 -43
- package/.sillyspec/changes/auto-mode/design.md +0 -50
- package/.sillyspec/changes/auto-mode/proposal.md +0 -19
- package/.sillyspec/changes/auto-mode/requirements.md +0 -21
- package/.sillyspec/changes/auto-mode/tasks.md +0 -7
- package/.sillyspec/changes/brainstorm-archive/2026-04-05-dashboard-design.md +0 -206
- package/.sillyspec/changes/brainstorm-archive/2026-04-05-unified-docs-design.md +0 -199
- package/.sillyspec/changes/dashboard/design.md +0 -219
- package/.sillyspec/changes/dashboard/design.md.braindraft +0 -206
- package/.sillyspec/changes/run-command-design/design.md +0 -1230
- package/.sillyspec/changes/unified-docs-design/design.md +0 -199
- package/.sillyspec/docs/sillyspec/scan/.gitkeep +0 -0
- package/.sillyspec/knowledge/INDEX.md +0 -8
- package/.sillyspec/knowledge/uncategorized.md +0 -3
- package/.sillyspec/plans/2026-04-05-dashboard.md +0 -737
- package/.sillyspec/projects/sillyspec.yaml +0 -3
- package/packages/dashboard/dist/assets/index-CntACGUN.css +0 -1
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
# deriveState 状态推导
|
|
2
|
-
|
|
3
|
-
author: qinyi
|
|
4
|
-
created_at: 2026-04-08 07:10:00
|
|
5
|
-
|
|
6
|
-
## 背景
|
|
7
|
-
|
|
8
|
-
当前 sillyspec 的状态管理依赖 `progress.json` 作为唯一数据源。如果 AI 崩溃或异常中断,progress.json 可能与实际产出不一致(如 artifacts 文件已生成但步骤未标记完成)。
|
|
9
|
-
|
|
10
|
-
借鉴 GSD v2 的 deriveState 架构,从文件系统反推状态,与 progress.json 交叉校验。
|
|
11
|
-
|
|
12
|
-
## 需求
|
|
13
|
-
|
|
14
|
-
1. `--done` 完成步骤时轻量校验当前步骤
|
|
15
|
-
2. `doctor` 自检时全量扫描所有阶段
|
|
16
|
-
3. `progress validate --deep` 支持手动触发全量校验
|
|
17
|
-
4. 安全修复策略:明显正确的情况自动修复,有歧义的不动
|
|
18
|
-
|
|
19
|
-
## 设计
|
|
20
|
-
|
|
21
|
-
### 新增文件:`src/derive.js`
|
|
22
|
-
|
|
23
|
-
纯函数模块,零外部依赖(仅 fs/path)。
|
|
24
|
-
|
|
25
|
-
```js
|
|
26
|
-
export function deriveState(cwd, options = {}) {
|
|
27
|
-
// options.mode: 'light' | 'full'(默认 light)
|
|
28
|
-
// options.fix: boolean(默认 false,只报告不修复)
|
|
29
|
-
// 返回 { issues: [{type, severity, step, artifact, suggestion}], fixed: number }
|
|
30
|
-
}
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
#### 扫描逻辑
|
|
34
|
-
|
|
35
|
-
1. 读取 progress.json,获取所有阶段步骤状态
|
|
36
|
-
2. 扫描 `.sillyspec/.runtime/artifacts/` 目录
|
|
37
|
-
3. 文件名格式:`{stage}-step{N}-{timestamp}.txt`
|
|
38
|
-
4. 解析文件名提取 stage、stepIndex 信息
|
|
39
|
-
5. 对比规则:
|
|
40
|
-
|
|
41
|
-
| 情况 | 严重度 | 自动修复 |
|
|
42
|
-
|------|--------|----------|
|
|
43
|
-
| artifacts 有文件但 progress 标记未完成 | issue | ✅ 标记为 done |
|
|
44
|
-
| progress 标记已完成但 artifacts 无文件 | warning | ❌ 可能被手动清理 |
|
|
45
|
-
| artifacts 有 step5 但 progress 只到 step3 | issue | ✅ 补齐中间步骤 |
|
|
46
|
-
|
|
47
|
-
#### 模式
|
|
48
|
-
|
|
49
|
-
- **light**:只检查 currentStage 的当前步骤和前一步
|
|
50
|
-
- **full**:检查所有阶段所有步骤
|
|
51
|
-
|
|
52
|
-
### 集成方式
|
|
53
|
-
|
|
54
|
-
#### 1. run.js — `--done` 轻量校验
|
|
55
|
-
|
|
56
|
-
在 `completeStep` 末尾:
|
|
57
|
-
```js
|
|
58
|
-
import { deriveState } from './derive.js';
|
|
59
|
-
const result = deriveState(cwd, { mode: 'light', fix: true });
|
|
60
|
-
if (result.fixed > 0) {
|
|
61
|
-
console.log(`⚠️ 状态修复:${result.fixed} 个步骤已从 artifacts 恢复`);
|
|
62
|
-
}
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
#### 2. doctor.js — 全量扫描
|
|
66
|
-
|
|
67
|
-
第一步(SillySpec 内部检查)调用:
|
|
68
|
-
```js
|
|
69
|
-
const result = deriveState(cwd, { mode: 'full', fix: false });
|
|
70
|
-
// 将 issues 加入自检报告
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
#### 3. progress.js — `validate --deep`
|
|
74
|
-
|
|
75
|
-
validate 方法支持 deep 参数:
|
|
76
|
-
```js
|
|
77
|
-
validate(cwd, deep = false) {
|
|
78
|
-
// ...现有校验逻辑...
|
|
79
|
-
if (deep) {
|
|
80
|
-
const result = deriveState(cwd, { mode: 'full', fix: true });
|
|
81
|
-
// 输出校验结果
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
CLI:`sillyspec progress validate --deep`
|
|
87
|
-
|
|
88
|
-
## 改动范围
|
|
89
|
-
|
|
90
|
-
- 新增:`src/derive.js`(~80 行)
|
|
91
|
-
- 修改:`src/run.js`(2 行)、`src/stages/doctor.js`(3 行)、`src/progress.js`(5 行)、`src/index.js`(parse --deep)
|
|
92
|
-
|
|
93
|
-
## 不做的事
|
|
94
|
-
|
|
95
|
-
- 不引入 SQLite 或其他新依赖
|
|
96
|
-
- 不改变 progress.json 的数据结构
|
|
97
|
-
- 不自动删除 progress 中有但 artifacts 无的步骤(可能被手动清理)
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
# deriveState 状态推导 — 实现计划
|
|
2
|
-
|
|
3
|
-
author: qinyi
|
|
4
|
-
created_at: 2026-04-08 07:12:00
|
|
5
|
-
|
|
6
|
-
## Wave 1(核心,无依赖)
|
|
7
|
-
|
|
8
|
-
- [ ] 实现 derive.js 核心函数
|
|
9
|
-
- 新增: `src/derive.js`
|
|
10
|
-
- 步骤:
|
|
11
|
-
1. 实现 `deriveState(cwd, options)` 纯函数
|
|
12
|
-
2. 实现 artifacts 文件名解析(`{stage}-step{N}-{timestamp}.txt`)
|
|
13
|
-
3. 实现 light/full 模式扫描逻辑
|
|
14
|
-
4. 实现安全修复策略(issues 分类 + fix 逻辑)
|
|
15
|
-
5. 验证: 在 sillyspec 项目上手动创建测试 artifacts,运行 `node -e "import('./src/derive.js').then(m => console.log(m.deriveState(process.cwd(), {mode:'full'})))"` 确认输出
|
|
16
|
-
|
|
17
|
-
## Wave 2(集成,依赖 Wave 1)
|
|
18
|
-
|
|
19
|
-
- [ ] 集成 run.js --done 轻量校验
|
|
20
|
-
- 修改: `src/run.js`
|
|
21
|
-
- 参考: `completeStep` 函数末尾
|
|
22
|
-
- 步骤:
|
|
23
|
-
1. 在 completeStep 末尾 import 并调用 deriveState(cwd, {mode:'light', fix:true})
|
|
24
|
-
2. 有修复时输出警告信息
|
|
25
|
-
3. 验证: 运行 brainstorm 完成 --done,确认无报错
|
|
26
|
-
|
|
27
|
-
- [ ] 扩展 validate 支持 --deep
|
|
28
|
-
- 修改: `src/progress.js`
|
|
29
|
-
- 参考: `validate()` 方法
|
|
30
|
-
- 步骤:
|
|
31
|
-
1. validate 方法加 deep 参数
|
|
32
|
-
2. deep=true 时调用 deriveState(cwd, {mode:'full', fix:true})
|
|
33
|
-
3. 验证: `sillyspec progress validate --deep` 确认输出校验结果
|
|
34
|
-
|
|
35
|
-
- [ ] CLI parse --deep 参数
|
|
36
|
-
- 修改: `src/index.js`
|
|
37
|
-
- 参考: progress 子命令的参数解析
|
|
38
|
-
- 步骤:
|
|
39
|
-
1. 在 progress validate 命令中解析 --deep flag
|
|
40
|
-
2. 传递给 validate 方法
|
|
41
|
-
3. 验证: `sillyspec progress validate --deep` 确认 flag 生效
|
|
42
|
-
|
|
43
|
-
## Wave 3(集成,依赖 Wave 1)
|
|
44
|
-
|
|
45
|
-
- [ ] 集成 doctor.js 全量扫描
|
|
46
|
-
- 修改: `src/stages/doctor.js`
|
|
47
|
-
- 参考: doctor 第一步(SillySpec 内部检查)的 prompt
|
|
48
|
-
- 步骤:
|
|
49
|
-
1. 在第一步 prompt 中加入 deriveState 全量扫描指令
|
|
50
|
-
2. 将 issues 列表纳入自检报告
|
|
51
|
-
3. 验证: `sillyspec run doctor` 确认第一步输出包含状态一致性检查
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# deriveState 状态推导 — 提案
|
|
2
|
-
|
|
3
|
-
author: qinyi
|
|
4
|
-
created_at: 2026-04-08 07:11:00
|
|
5
|
-
|
|
6
|
-
## 动机
|
|
7
|
-
|
|
8
|
-
当前 progress.json 是 sillyspec 唯一的状态数据源。AI 崩溃或异常中断时,progress.json 可能与实际产出不一致(artifacts 已生成但步骤未标记完成)。需要从文件系统反推状态,交叉校验。
|
|
9
|
-
|
|
10
|
-
## 变更范围
|
|
11
|
-
|
|
12
|
-
- 新增 `src/derive.js`(状态推导纯函数)
|
|
13
|
-
- 修改 `src/run.js`(--done 轻量校验)
|
|
14
|
-
- 修改 `src/stages/doctor.js`(全量扫描)
|
|
15
|
-
- 修改 `src/progress.js`(validate --deep)
|
|
16
|
-
- 修改 `src/index.js`(parse --deep 参数)
|
|
17
|
-
|
|
18
|
-
## 不在范围内
|
|
19
|
-
|
|
20
|
-
- 不改 progress.json 数据结构
|
|
21
|
-
- 不引入新依赖
|
|
22
|
-
- 不自动删除 progress 中有但 artifacts 无的步骤
|
|
23
|
-
|
|
24
|
-
## 成功标准
|
|
25
|
-
|
|
26
|
-
1. `--done` 完成步骤时自动校验并修复当前步骤
|
|
27
|
-
2. `doctor` 输出全量状态一致性报告
|
|
28
|
-
3. `sillyspec progress validate --deep` 可手动触发全量校验
|
|
29
|
-
4. 所有校验通过现有测试
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# deriveState 状态推导 — 需求
|
|
2
|
-
|
|
3
|
-
author: qinyi
|
|
4
|
-
created_at: 2026-04-08 07:11:00
|
|
5
|
-
|
|
6
|
-
## 功能需求
|
|
7
|
-
|
|
8
|
-
### FR1: deriveState 核心函数
|
|
9
|
-
- 从 artifacts 目录扫描文件,解析 `{stage}-step{N}-{timestamp}.txt` 格式
|
|
10
|
-
- 与 progress.json 步骤状态对比
|
|
11
|
-
- 返回 issues 列表和修复计数
|
|
12
|
-
|
|
13
|
-
### FR2: 轻量模式(light)
|
|
14
|
-
- 只检查 currentStage 的当前步骤和前一步
|
|
15
|
-
- 用于 `--done` 完成时
|
|
16
|
-
|
|
17
|
-
### FR3: 全量模式(full)
|
|
18
|
-
- 检查所有阶段所有步骤
|
|
19
|
-
- 用于 doctor 和 validate --deep
|
|
20
|
-
|
|
21
|
-
### FR4: 安全修复策略
|
|
22
|
-
- artifacts 有但 progress 漏记 → 自动修复为 done
|
|
23
|
-
- artifacts 有 step5 但 progress 只到 step3 → 自动补齐
|
|
24
|
-
- progress 有但 artifacts 无 → 只警告,不修复
|
|
25
|
-
|
|
26
|
-
### FR5: CLI 集成
|
|
27
|
-
- `--done` 时静默调用轻量校验,有修复才输出
|
|
28
|
-
- `doctor` 第一步输出全量报告
|
|
29
|
-
- `sillyspec progress validate --deep` 手动触发
|
|
30
|
-
|
|
31
|
-
## 非功能需求
|
|
32
|
-
- 零外部依赖(仅 fs/path)
|
|
33
|
-
- 纯函数,易于测试
|
|
34
|
-
- 不改变现有 API 行为
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# deriveState 状态推导 — 任务
|
|
2
|
-
|
|
3
|
-
author: qinyi
|
|
4
|
-
created_at: 2026-04-08 07:11:00
|
|
5
|
-
|
|
6
|
-
## 任务列表
|
|
7
|
-
|
|
8
|
-
- [x] 实现 derive.js 核心函数 — `src/derive.js`
|
|
9
|
-
- [x] 集成 run.js --done 轻量校验 — `src/run.js`
|
|
10
|
-
- [x] 集成 doctor.js 全量扫描 — `src/stages/doctor.js`
|
|
11
|
-
- [x] 扩展 validate 支持 --deep — `src/progress.js`
|
|
12
|
-
- [x] CLI parse --deep 参数 — `src/index.js`
|
|
13
|
-
- [ ] 测试验证
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# derive-state 验证报告
|
|
2
|
-
|
|
3
|
-
author: qinyi
|
|
4
|
-
created_at: 2026-04-08 07:21:00
|
|
5
|
-
|
|
6
|
-
## 结论:✅ PASS
|
|
7
|
-
|
|
8
|
-
## 检查结果
|
|
9
|
-
|
|
10
|
-
### 1. 规范文件加载
|
|
11
|
-
- ✅ design.md
|
|
12
|
-
- ✅ proposal.md
|
|
13
|
-
- ✅ requirements.md
|
|
14
|
-
- ✅ tasks.md
|
|
15
|
-
- ✅ plan.md
|
|
16
|
-
|
|
17
|
-
### 2. 任务完成度:5/6 (83%)
|
|
18
|
-
- ✅ 实现 derive.js 核心函数
|
|
19
|
-
- ✅ 集成 run.js --done 轻量校验
|
|
20
|
-
- ✅ 集成 doctor.js 全量扫描
|
|
21
|
-
- ✅ 扩展 validate 支持 --deep
|
|
22
|
-
- ✅ CLI parse --deep 参数
|
|
23
|
-
- ⬜ 测试验证(本项目无自动化测试套件,通过手动验证替代)
|
|
24
|
-
|
|
25
|
-
### 3. 设计一致性
|
|
26
|
-
- ✅ derive.js 纯函数模块,零外部依赖(仅 fs/path)
|
|
27
|
-
- ✅ light/full 模式
|
|
28
|
-
- ✅ fix 参数 + 安全修复策略
|
|
29
|
-
- ✅ run.js --done 轻量校验集成
|
|
30
|
-
- ✅ doctor.js 全量扫描集成
|
|
31
|
-
- ✅ progress.js validate --deep 支持
|
|
32
|
-
- ✅ index.js CLI --deep 参数
|
|
33
|
-
- ✅ 改动文件范围与 design.md 一致
|
|
34
|
-
|
|
35
|
-
### 4. 测试和质量
|
|
36
|
-
- ✅ derive.js 模块导入正常
|
|
37
|
-
- ✅ sillyspec progress validate --deep 通过
|
|
38
|
-
- ✅ 无 TODO/FIXME/HACK/XXX 技术债务
|
|
39
|
-
- ✅ sillyspec run quick --status 正常
|
|
40
|
-
- ✅ sillyspec run doctor --status 正常
|
|
41
|
-
|
|
42
|
-
## 下一步
|
|
43
|
-
sillyspec run archive
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
# auto mode — 设计文档
|
|
2
|
-
|
|
3
|
-
author: qinyi
|
|
4
|
-
created_at: 2026-04-08 07:28:00
|
|
5
|
-
|
|
6
|
-
## 背景
|
|
7
|
-
|
|
8
|
-
当前 sillyspec 的每个阶段(brainstorm → plan → execute → verify)需要用户手动执行 `sillyspec run <stage>` 和 `sillyspec run <stage> --done`。用户希望一个自动模式,从 brainstorm 一路推进到 verify 完成。
|
|
9
|
-
|
|
10
|
-
## 需求
|
|
11
|
-
|
|
12
|
-
1. 用户启动一次,AI 自动循环所有阶段和步骤
|
|
13
|
-
2. 步骤内部的用户确认点保留不变
|
|
14
|
-
3. 不修改 CLI 代码,纯 skill 文件实现
|
|
15
|
-
|
|
16
|
-
## 设计
|
|
17
|
-
|
|
18
|
-
### 新增文件:`.claude/skills/sillyspec-auto/SKILL.md`
|
|
19
|
-
|
|
20
|
-
**核心逻辑:**
|
|
21
|
-
|
|
22
|
-
1. 读 `$ARGUMENTS` 作为用户需求
|
|
23
|
-
2. 阶段循环(brainstorm → plan → execute → verify)
|
|
24
|
-
3. 每个阶段内步骤循环:
|
|
25
|
-
- `sillyspec run <stage> --input "需求"` → 读 step prompt
|
|
26
|
-
- 执行 prompt 中的操作
|
|
27
|
-
- 需要用户确认的步骤 → 暂停等回复
|
|
28
|
-
- 完成后自动 `sillyspec run <stage> --done --output "摘要"`
|
|
29
|
-
- 读下一步 prompt,继续
|
|
30
|
-
4. 当前阶段全部完成 → 自动进入下一阶段
|
|
31
|
-
5. verify 完成 → 输出总结,停止
|
|
32
|
-
6. 命令失败 → 暂停,等用户介入
|
|
33
|
-
|
|
34
|
-
**确认点保留规则:**
|
|
35
|
-
- prompt 中有"请用户选择""等待用户回答""展示给用户"等字样 → 暂停
|
|
36
|
-
- prompt 中有"自审""检查"等纯内部操作 → 自动完成
|
|
37
|
-
|
|
38
|
-
### 同步到 npm 包
|
|
39
|
-
|
|
40
|
-
init.js 已有逻辑复制 `sillyspec-*` skills 到项目 `.claude/skills/`,新 skill 自动生效。
|
|
41
|
-
|
|
42
|
-
## 改动范围
|
|
43
|
-
|
|
44
|
-
- 新增:`.claude/skills/sillyspec-auto/SKILL.md`(~60 行)
|
|
45
|
-
|
|
46
|
-
## 不做的事
|
|
47
|
-
|
|
48
|
-
- 不修改任何 JS 源码
|
|
49
|
-
- 不改变现有阶段流程
|
|
50
|
-
- 不自动 commit 或发布
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# auto mode — 提案
|
|
2
|
-
|
|
3
|
-
author: qinyi
|
|
4
|
-
created_at: 2026-04-08 07:29:00
|
|
5
|
-
|
|
6
|
-
## 动机
|
|
7
|
-
用户希望一次启动就自动完成 brainstorm → plan → execute → verify 全流程,不需要手动输入 `sillyspec run <stage>` 和 `--done`。
|
|
8
|
-
|
|
9
|
-
## 变更范围
|
|
10
|
-
新增 `.claude/skills/sillyspec-auto/SKILL.md`
|
|
11
|
-
|
|
12
|
-
## 不在范围内
|
|
13
|
-
- 不修改 JS 源码
|
|
14
|
-
- 不改变阶段流程
|
|
15
|
-
|
|
16
|
-
## 成功标准
|
|
17
|
-
1. `/sillyspec:auto "需求"` 能自动推进全流程
|
|
18
|
-
2. 步骤内部确认点正常暂停
|
|
19
|
-
3. 异常时暂停等用户介入
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# auto mode — 需求
|
|
2
|
-
|
|
3
|
-
author: qinyi
|
|
4
|
-
created_at: 2026-04-08 07:29:00
|
|
5
|
-
|
|
6
|
-
## 功能需求
|
|
7
|
-
|
|
8
|
-
### FR1: 阶段自动推进
|
|
9
|
-
- 按 brainstorm → plan → execute → verify 顺序自动执行
|
|
10
|
-
- 当前阶段完成后自动进入下一阶段
|
|
11
|
-
|
|
12
|
-
### FR2: 步骤自动循环
|
|
13
|
-
- 每个步骤:读 prompt → 执行 → 自动 --done → 读下一步
|
|
14
|
-
- 不需要用户手动触发 --done
|
|
15
|
-
|
|
16
|
-
### FR3: 确认点保留
|
|
17
|
-
- prompt 中有用户确认要求时暂停等回复
|
|
18
|
-
- 纯内部操作步骤自动完成
|
|
19
|
-
|
|
20
|
-
### FR4: 异常处理
|
|
21
|
-
- 命令失败时暂停,展示错误,等用户介入
|
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
# SillySpec Dashboard 设计
|
|
2
|
-
|
|
3
|
-
## 概述
|
|
4
|
-
|
|
5
|
-
为 SillySpec CLI 工具添加可视化仪表盘(`sillyspec dashboard`),用户通过浏览器直观查看和管理项目进度、阶段流程、任务详情和实时日志。
|
|
6
|
-
|
|
7
|
-
## 目标用户
|
|
8
|
-
|
|
9
|
-
SillySpec 全部用户(官方功能,随 npm 包发布)。
|
|
10
|
-
|
|
11
|
-
## 分期计划
|
|
12
|
-
|
|
13
|
-
### 一期(MVP)
|
|
14
|
-
|
|
15
|
-
可视化仪表盘 + CLI 命令执行 + 实时日志流。
|
|
16
|
-
|
|
17
|
-
### 二期(进阶)
|
|
18
|
-
|
|
19
|
-
Web Terminal(xterm.js)+ 自定义命令 + AI 交互(视需求而定)。
|
|
20
|
-
|
|
21
|
-
## 架构
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
sillyspec dashboard
|
|
25
|
-
│
|
|
26
|
-
▼
|
|
27
|
-
Node.js HTTP Server (localhost:3456)
|
|
28
|
-
│
|
|
29
|
-
├─ chokidar: watch .sillyspec/ 目录
|
|
30
|
-
├─ WebSocket: 实时推送状态变更
|
|
31
|
-
└─ REST API: 项目列表、状态、日志、CLI 执行
|
|
32
|
-
│
|
|
33
|
-
▼
|
|
34
|
-
Vue 3 SPA (浏览器)
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### 文件结构
|
|
38
|
-
|
|
39
|
-
```
|
|
40
|
-
sillyspec/packages/dashboard/
|
|
41
|
-
├── server/
|
|
42
|
-
│ ├── index.js # HTTP + WebSocket 服务启动
|
|
43
|
-
│ ├── watcher.js # chokidar 文件监听 + 增量解析
|
|
44
|
-
│ └── api.js # REST 路由
|
|
45
|
-
├── src/
|
|
46
|
-
│ ├── App.vue
|
|
47
|
-
│ ├── components/
|
|
48
|
-
│ │ ├── ProjectList.vue # 左栏:项目列表
|
|
49
|
-
│ │ ├── PipelineView.vue # 中栏:阶段 pipeline
|
|
50
|
-
│ │ ├── StepCard.vue # 步骤卡片(可展开折叠)
|
|
51
|
-
│ │ ├── DetailPanel.vue # 右栏:详情 + 日志
|
|
52
|
-
│ │ ├── LogStream.vue # 终端风格日志流
|
|
53
|
-
│ │ ├── CommandPalette.vue # Cmd+K 命令面板
|
|
54
|
-
│ │ └── StageBadge.vue # 阶段状态标签
|
|
55
|
-
│ ├── composables/
|
|
56
|
-
│ │ ├── useWebSocket.js # WebSocket 连接管理
|
|
57
|
-
│ │ └── useKeyboard.js # 键盘快捷键
|
|
58
|
-
│ └── styles/
|
|
59
|
-
│ └── theme.css # 深色主题变量
|
|
60
|
-
├── package.json
|
|
61
|
-
└── vite.config.js
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
## 核心页面设计
|
|
65
|
-
|
|
66
|
-
### 三栏布局
|
|
67
|
-
|
|
68
|
-
```
|
|
69
|
-
┌──────────┬─────────────────────────┬──────────────────┐
|
|
70
|
-
│ 项目列表 │ Pipeline 视图(中) │ 详情+日志(右) │
|
|
71
|
-
│ (200px) │ (flex-1) │ (320px,可收起) │
|
|
72
|
-
│ │ │ │
|
|
73
|
-
│ 📁 proj1 │ ✅ brainstorm │ Step 3 详情 │
|
|
74
|
-
│ 📁 proj2 │ ⏳ plan ← 当前 │ 结论:选择React │
|
|
75
|
-
│ 📁 proj3 │ ⬜ execute │ 决策:... │
|
|
76
|
-
│ │ ⬜ verify │ 📋 实时日志 │
|
|
77
|
-
└──────────┴─────────────────────────┴──────────────────┘
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### 信息分层(三级密度)
|
|
81
|
-
|
|
82
|
-
1. **低密度(默认)**:阶段名 + 状态图标
|
|
83
|
-
2. **中密度(hover)**:步骤摘要(1-2 句话)
|
|
84
|
-
3. **高密度(点击)**:右侧面板展开完整详情 + 日志
|
|
85
|
-
|
|
86
|
-
### 异常高亮
|
|
87
|
-
|
|
88
|
-
失败/阻塞/超时步骤自动标红,视觉上突出,不需用户手动查找。
|
|
89
|
-
|
|
90
|
-
## 数据源与同步
|
|
91
|
-
|
|
92
|
-
### 数据文件
|
|
93
|
-
|
|
94
|
-
| 文件 | 用途 |
|
|
95
|
-
|---|---|
|
|
96
|
-
| `STATE.md` | 当前阶段、状态、下一步命令 |
|
|
97
|
-
| `.runtime/progress.json` | 步骤进度、摘要、时间戳 |
|
|
98
|
-
| `.runtime/user-inputs.md` | 用户输入记录 |
|
|
99
|
-
| `specs/*.md` | 设计文档 |
|
|
100
|
-
| `changes/*/design.md` | 技术方案 |
|
|
101
|
-
|
|
102
|
-
### 同步方案
|
|
103
|
-
|
|
104
|
-
- **启动时**:全量读取 `.sillyspec/` 目录,构建初始状态
|
|
105
|
-
- **运行时**:chokidar watch 文件变化 → 解析 → WebSocket 增量推送
|
|
106
|
-
- **不轮询,不做 diff**,文件变化直接读取推送
|
|
107
|
-
|
|
108
|
-
### CLI 命令执行(一期)
|
|
109
|
-
|
|
110
|
-
后端通过 `child_process.spawn` 执行 CLI 命令:
|
|
111
|
-
- "下一步"按钮 → `sillyspec next`
|
|
112
|
-
- 阶段切换按钮 → `sillyspec plan` / `sillyspec execute` 等
|
|
113
|
-
- 执行结果通过 WebSocket 实时推送到前端日志面板
|
|
114
|
-
|
|
115
|
-
## 交互设计
|
|
116
|
-
|
|
117
|
-
### 键盘快捷键
|
|
118
|
-
|
|
119
|
-
| 快捷键 | 功能 |
|
|
120
|
-
|---|---|
|
|
121
|
-
| `j/k` | 上下切换步骤 |
|
|
122
|
-
| `Enter` | 展开详情 |
|
|
123
|
-
| `Escape` | 收起面板 |
|
|
124
|
-
| `/` | 搜索日志 |
|
|
125
|
-
| `Cmd/Ctrl+K` | 命令面板 |
|
|
126
|
-
|
|
127
|
-
### 命令面板功能
|
|
128
|
-
|
|
129
|
-
- 搜索项目名
|
|
130
|
-
- 跳转到指定阶段
|
|
131
|
-
- 切换深色/浅色主题
|
|
132
|
-
|
|
133
|
-
### CLI 命令
|
|
134
|
-
|
|
135
|
-
```bash
|
|
136
|
-
sillyspec dashboard # 启动 + 自动开浏览器
|
|
137
|
-
sillyspec dashboard --port 8080 # 自定义端口
|
|
138
|
-
sillyspec dashboard --no-open # 不自动打开浏览器
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
## 视觉设计
|
|
142
|
-
|
|
143
|
-
### 配色
|
|
144
|
-
|
|
145
|
-
| 用途 | 色值 |
|
|
146
|
-
|---|---|
|
|
147
|
-
| 背景 | `#0D1117` |
|
|
148
|
-
| 主色(进行中) | `#00D4AA` |
|
|
149
|
-
| 阻塞 | `#F59E0B` |
|
|
150
|
-
| 失败 | `#F87171` |
|
|
151
|
-
| 未开始 | `#6B7280` |
|
|
152
|
-
|
|
153
|
-
### 动效
|
|
154
|
-
|
|
155
|
-
- 阶段完成:脉冲光效(CSS animation,200ms)
|
|
156
|
-
- 日志新行:淡入
|
|
157
|
-
- hover 过渡:100ms
|
|
158
|
-
- 进度条:弹性缓动
|
|
159
|
-
|
|
160
|
-
## 技术选型
|
|
161
|
-
|
|
162
|
-
| 层 | 技术 |
|
|
163
|
-
|---|---|
|
|
164
|
-
| 前端框架 | Vue 3 |
|
|
165
|
-
| 构建工具 | Vite |
|
|
166
|
-
| CSS | Tailwind CSS |
|
|
167
|
-
| 后端 | Node.js 原生 http + ws |
|
|
168
|
-
| 文件监听 | chokidar |
|
|
169
|
-
| 数据库 | 无,纯文件系统 |
|
|
170
|
-
|
|
171
|
-
## 约束和假设
|
|
172
|
-
|
|
173
|
-
- 用户本地已有 Node.js(SillySpec 前置依赖)
|
|
174
|
-
- 仪表盘为本地工具,不考虑多用户并发
|
|
175
|
-
- 前端构建产物嵌入 npm 包,无需额外 build
|
|
176
|
-
- 不引入 Express、数据库等重依赖
|
|
177
|
-
|
|
178
|
-
## 状态历史时间线
|
|
179
|
-
|
|
180
|
-
Pipeline 视图下方展示时间线,记录每个步骤的:
|
|
181
|
-
- 开始时间 / 结束时间 / 耗时
|
|
182
|
-
- 状态变化(进行中 → 完成/阻塞/失败)
|
|
183
|
-
- 可按时间排序,快速定位耗时最长或异常步骤
|
|
184
|
-
|
|
185
|
-
数据来源:`progress.json` 中的 `summaries` 和时间戳。
|
|
186
|
-
|
|
187
|
-
## 不在范围内(一期)
|
|
188
|
-
|
|
189
|
-
- 用户认证/权限
|
|
190
|
-
- 多人协作
|
|
191
|
-
- 数据持久化(纯文件系统)
|
|
192
|
-
- AI 对话交互(二期)
|
|
193
|
-
- Web Terminal(二期)
|
|
194
|
-
|
|
195
|
-
## 验收标准
|
|
196
|
-
|
|
197
|
-
- [ ] `sillyspec dashboard` 一键启动,自动打开浏览器
|
|
198
|
-
- [ ] 三栏布局正确渲染,响应式适配
|
|
199
|
-
- [ ] 文件变化后前端实时更新(<1s 延迟)
|
|
200
|
-
- [ ] 步骤卡片三级信息分层(默认/hover/点击)
|
|
201
|
-
- [ ] 实时日志流正常显示,可搜索可过滤
|
|
202
|
-
- [ ] 键盘快捷键可用(j/k/Enter/Escape/Cmd+K)
|
|
203
|
-
- [ ] 命令面板可搜索项目名和阶段
|
|
204
|
-
- [ ] CLI 命令执行按钮可用,结果实时显示
|
|
205
|
-
- [ ] 异常步骤自动高亮
|
|
206
|
-
- [ ] 深色/浅色主题切换
|