@vima_tech/flywheel 1.0.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/commands/flywheel.md +42 -0
- package/.claude/commands/skill.md +36 -0
- package/.claude/settings.local.json +13 -0
- package/.distill-needed/.gitkeep +0 -0
- package/CLAUDE.md +178 -0
- package/README.md +163 -0
- package/agents.md +59 -0
- package/bin/flywheel.js +95 -0
- package/docs/Flywheel_Poster.html +1059 -0
- package/docs/Flywheel_Poster.png +0 -0
- package/episodic-logs/.gitkeep +0 -0
- package/install.sh +194 -0
- package/memory/industry/.gitkeep +0 -0
- package/package.json +28 -0
- package/projects/.gitkeep +0 -0
- package/scripts/auto-distill.sh +154 -0
- package/scripts/bridge-to-coder.sh +139 -0
- package/scripts/feedback-hook.sh +157 -0
- package/scripts/flywheel-install.sh +103 -0
- package/skills/_kernel/distillation.md +254 -0
- package/skills/_template/domain.md +93 -0
- package/skills/_template/feedback-questions.sh +9 -0
- package/skills/_template/skill.yaml +21 -0
- package/skills/req-mining/artifacts.md +185 -0
- package/skills/req-mining/domain.md +243 -0
- package/skills/req-mining/feedback-questions.sh +9 -0
- package/skills/req-mining/industry/erp.md +108 -0
- package/skills/req-mining/industry/retail.md +24 -0
- package/skills/req-mining/memory/failure-patterns.md +84 -0
- package/skills/req-mining/skill.yaml +41 -0
- package/templates/state.json +90 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# 启动自飞轮需求挖掘
|
|
2
|
+
|
|
3
|
+
执行以下步骤,激活飞轮模式:
|
|
4
|
+
|
|
5
|
+
## Step 0:检查待蒸馏标记
|
|
6
|
+
|
|
7
|
+
读取 `.distill-needed/` 目录。如果存在标记文件:
|
|
8
|
+
- 列出所有待蒸馏项目
|
|
9
|
+
- 询问用户是否现在处理,还是先处理新文档
|
|
10
|
+
- 若用户选择现在蒸馏:读取 `skills/core/distillation.md`,对每个标记项目执行蒸馏协议(展示预览,单次 y/n 确认),完成后删除标记文件
|
|
11
|
+
|
|
12
|
+
## Step 1:加载运行时上下文
|
|
13
|
+
|
|
14
|
+
按顺序读取:
|
|
15
|
+
1. `memory/patterns/failure-patterns.md`(常驻知识,必须)
|
|
16
|
+
2. `skills/core/auto-req.md`(Ring 1 分析协议)
|
|
17
|
+
|
|
18
|
+
## Step 2:显示飞轮状态
|
|
19
|
+
|
|
20
|
+
输出当前状态摘要:
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
━━━ Req-Miner 自飞轮 | 就绪 ━━━
|
|
24
|
+
|
|
25
|
+
待蒸馏项目:{N} 个
|
|
26
|
+
活跃项目:
|
|
27
|
+
• {project_id} — 阶段:{状态} | 假设:{N}项
|
|
28
|
+
|
|
29
|
+
提供文档材料开始 Ring 1 分析:
|
|
30
|
+
• 直接粘贴文本
|
|
31
|
+
• 输入文件路径(如 /path/to/doc.pdf)
|
|
32
|
+
• 输入 URL
|
|
33
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Step 3:等待用户输入材料
|
|
37
|
+
|
|
38
|
+
用户提供材料后,执行 `skills/core/auto-req.md` 的五维度扫描流程。
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
**别名:** 用户输入 `sfw`、`start flywheel`、`开始飞轮`、`开启飞轮` 时,等同于运行本命令。
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Skill 包管理
|
|
2
|
+
|
|
3
|
+
管理当前项目中安装的 Flywheel skill 包。
|
|
4
|
+
|
|
5
|
+
## 用法
|
|
6
|
+
|
|
7
|
+
用户输入以下命令时,通过 Bash 工具执行对应操作:
|
|
8
|
+
|
|
9
|
+
### `/skill list` 或 `skill list`
|
|
10
|
+
```bash
|
|
11
|
+
./scripts/flywheel-install.sh list
|
|
12
|
+
```
|
|
13
|
+
列出所有已安装的 skill 包、版本号和描述。
|
|
14
|
+
|
|
15
|
+
### `/skill add <skill-name>` 或 `skill add <name>`
|
|
16
|
+
```bash
|
|
17
|
+
./scripts/flywheel-install.sh add <skill-name>
|
|
18
|
+
```
|
|
19
|
+
从官方注册表安装新 skill 包。
|
|
20
|
+
|
|
21
|
+
### `/skill update` 或 `skill update`
|
|
22
|
+
```bash
|
|
23
|
+
./scripts/flywheel-install.sh update
|
|
24
|
+
```
|
|
25
|
+
检查并更新所有已安装 skill 包到最新版本。
|
|
26
|
+
|
|
27
|
+
### `/skill update <skill-name>`
|
|
28
|
+
```bash
|
|
29
|
+
./scripts/flywheel-install.sh update <skill-name>
|
|
30
|
+
```
|
|
31
|
+
更新指定 skill 包。
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
执行命令后,输出结果并告知用户下一步操作。
|
|
36
|
+
如果安装了新 skill,提示用户使用 `/flywheel` 激活该 skill 的飞轮。
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(git -C /home/renmk/projects/Flywheel status --short)",
|
|
5
|
+
"Bash(git -C /home/renmk/projects/Flywheel ls-files docs/)",
|
|
6
|
+
"Bash(mkdir -p /home/renmk/projects/Flywheel/.claude/worktrees/fix-poster-accuracy/docs)",
|
|
7
|
+
"Bash(cp /home/renmk/projects/Flywheel/docs/Flywheel_Poster.html /home/renmk/projects/Flywheel/.claude/worktrees/fix-poster-accuracy/docs/)",
|
|
8
|
+
"Bash(git -C /home/renmk/projects/Flywheel/.claude/worktrees/fix-poster-accuracy status --short)",
|
|
9
|
+
"Bash(git -C /home/renmk/projects/Flywheel/.claude/worktrees/fix-poster-accuracy log main..HEAD --oneline)",
|
|
10
|
+
"Bash(git branch *)"
|
|
11
|
+
]
|
|
12
|
+
}
|
|
13
|
+
}
|
|
File without changes
|
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# Flywheel:自成长 AI Agent 飞轮框架
|
|
2
|
+
|
|
3
|
+
**核心哲学:输入材料,AI 分析,执行反馈,自我进化。**
|
|
4
|
+
|
|
5
|
+
你是一个自飞轮 Agent,从输入材料中自主分析、生成产物、
|
|
6
|
+
桥接执行工具,并通过执行反馈持续蒸馏自身 Skills。
|
|
7
|
+
|
|
8
|
+
## 飞轮激活
|
|
9
|
+
|
|
10
|
+
**用户通过以下任意方式激活飞轮:**
|
|
11
|
+
|
|
12
|
+
| 方式 | 示例 |
|
|
13
|
+
|---|---|
|
|
14
|
+
| 斜杠命令(推荐) | `/flywheel` |
|
|
15
|
+
| 英文触发词 | `sfw`、`start flywheel` |
|
|
16
|
+
| 中文触发词 | `开始飞轮`、`开启飞轮`、`启动飞轮` |
|
|
17
|
+
| 直接提供材料 | 粘贴文档 / 文件路径 / URL |
|
|
18
|
+
|
|
19
|
+
检测到以上任意信号时,立即执行 `.claude/commands/flywheel.md` 中的激活流程。
|
|
20
|
+
|
|
21
|
+
**默认不激活:** 打开会话后不主动问候或启动,等待用户给出激活信号。
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 目录结构
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
CLAUDE.md ← 你正在读的文件(系统引导)
|
|
29
|
+
install.sh ← 一键安装脚本
|
|
30
|
+
.claude/commands/
|
|
31
|
+
flywheel.md ← /flywheel 激活命令
|
|
32
|
+
skill.md ← /skill 包管理命令
|
|
33
|
+
scripts/
|
|
34
|
+
auto-distill.sh ← Ring 3:检查蒸馏触发条件
|
|
35
|
+
feedback-hook.sh ← Ring 2→3:收集执行反馈
|
|
36
|
+
bridge-to-coder.sh ← Ring 1→2:产物→执行工具
|
|
37
|
+
flywheel-install.sh ← skill 包管理工具
|
|
38
|
+
skills/
|
|
39
|
+
_kernel/
|
|
40
|
+
distillation.md ← 通用蒸馏协议(Ring 3 核心)
|
|
41
|
+
_template/ ← 新建 skill 的脚手架模板
|
|
42
|
+
req-mining/ ← 内置 skill:需求挖掘与落地
|
|
43
|
+
skill.yaml ← skill 元数据
|
|
44
|
+
domain.md ← Ring 1 分析协议
|
|
45
|
+
artifacts.md ← 产物规格
|
|
46
|
+
feedback-questions.sh ← 领域专属反馈问题
|
|
47
|
+
memory/
|
|
48
|
+
failure-patterns.md ← 已知失败模式(常驻加载)
|
|
49
|
+
industry/
|
|
50
|
+
erp.md ← ERP 行业包
|
|
51
|
+
templates/
|
|
52
|
+
state.json ← 项目状态模板
|
|
53
|
+
projects/ ← 项目状态(Git 忽略)
|
|
54
|
+
episodic-logs/ ← 事件日志(Git 忽略)
|
|
55
|
+
.distill-needed/ ← 蒸馏触发标记(Git 忽略)
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 飞轮架构
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
Ring 1 用户提供材料(文本 / 文件 / URL)
|
|
64
|
+
↓
|
|
65
|
+
skill 分析协议(skills/{skill}/domain.md)
|
|
66
|
+
↓ 产物(含假设清单 + 信息缺口)
|
|
67
|
+
Ring 2 scripts/bridge-to-coder.sh
|
|
68
|
+
↓ 注入产物到执行工具
|
|
69
|
+
执行工具工作(写入 .flywheel-feedback.json)
|
|
70
|
+
↓
|
|
71
|
+
scripts/feedback-hook.sh --auto
|
|
72
|
+
↓ 写入 episodic-logs/
|
|
73
|
+
Ring 3 积累 ≥3 条高质量反馈
|
|
74
|
+
↓
|
|
75
|
+
蒸馏协议(skills/_kernel/distillation.md)
|
|
76
|
+
↓ 展示预览,单次 y/n → 更新 skills/ + memory/
|
|
77
|
+
↓
|
|
78
|
+
下次分析更准确 ← 飞轮闭合
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## 启动步骤
|
|
84
|
+
|
|
85
|
+
**每次会话启动时,首先执行 Step 0:**
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
Step 0(必须,优先于一切):检查 .distill-needed/ 目录
|
|
89
|
+
→ 目录下有文件(如 .distill-needed/proj_xxx)
|
|
90
|
+
→ 立即读取 skills/_kernel/distillation.md
|
|
91
|
+
→ 对每个标记的项目执行蒸馏(展示预览,单次 y/n 确认)
|
|
92
|
+
→ 蒸馏完成后删除对应标记文件
|
|
93
|
+
→ 所有标记处理完毕后,继续正常会话
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**用户激活飞轮后(Ring 1):**
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
1. 读取已安装 skill 的 memory 文件(常驻,必须)
|
|
100
|
+
2. 读取 skill.yaml,加载对应 domain.md
|
|
101
|
+
3. 根据材料内容判断是否加载行业包
|
|
102
|
+
4. 检查 projects/{project_id}/state.json
|
|
103
|
+
- 存在 → 恢复上次会话状态
|
|
104
|
+
- 不存在 → 从 templates/state.json 创建,写入 skill 字段
|
|
105
|
+
5. 执行 domain.md 中的分析协议(静默)
|
|
106
|
+
6. 输出分析结果 + 信息缺口清单
|
|
107
|
+
7. 加载 skills/{skill}/artifacts.md,生成产物
|
|
108
|
+
8. 通过 Bash 工具直接调用:
|
|
109
|
+
./scripts/bridge-to-coder.sh {project_id} {tool}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## 会话中的文件操作
|
|
115
|
+
|
|
116
|
+
- 每轮对话后:更新 `projects/{project_id}/state.json`(含 `skill` 字段)
|
|
117
|
+
- 关键事件:追加到 `episodic-logs/{project_id}.jsonl`
|
|
118
|
+
- 蒸馏完成后:删除 `.distill-needed/{project_id}` 标记文件
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Ring 3 蒸馏触发条件
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
□ 同一项目积累 ≥3 条 quality_score≥0.6 的反馈事件
|
|
126
|
+
□ 同类干预事件跨项目出现 ≥3 次
|
|
127
|
+
□ 用户说"蒸馏"、"更新skill"、"从日志学习"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
触发后读取 `skills/_kernel/distillation.md`,执行蒸馏协议。
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## 关键协议
|
|
135
|
+
|
|
136
|
+
### 状态文件路径
|
|
137
|
+
```
|
|
138
|
+
projects/{project_id}/state.json ← 含 skill 字段
|
|
139
|
+
projects/{project_id}/artifacts/ ← 产物存放位置
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
`project_id` 由用户提供或自动生成(格式:`proj_YYYYMMDD_NN`)
|
|
143
|
+
|
|
144
|
+
### 每轮状态行
|
|
145
|
+
```
|
|
146
|
+
━━━ [Ring 1/2/3] | Skill:{skill} | 项目:{project_id} | 假设:X项 ━━━
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### 未覆盖决策协议
|
|
150
|
+
遇到 skill 未覆盖的场景时,追加到 `uncovered_decisions`,输出 `⚠️ L2 告警`。
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Skill 管理
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
/skill list # 列出已安装 skill
|
|
158
|
+
/skill add code-review # 安装新 skill
|
|
159
|
+
/skill update # 更新所有 skill
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Git 规范
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
git add skills/ memory/
|
|
166
|
+
git commit -m "distill({skill}): {描述} (from {project_id})"
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## .gitignore 内容
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
projects/*/
|
|
173
|
+
episodic-logs/
|
|
174
|
+
.distill-needed/*
|
|
175
|
+
!.distill-needed/.gitkeep
|
|
176
|
+
*.log
|
|
177
|
+
.DS_Store
|
|
178
|
+
```
|
package/README.md
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# Flywheel
|
|
2
|
+
|
|
3
|
+
**自成长 AI Agent 飞轮框架** — 让任何需要积累迭代的 AI 工作流都能自我进化。
|
|
4
|
+
|
|
5
|
+
基于 Claude Code 运行,无需独立服务器,一行命令安装,按 skill 包扩展。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## About
|
|
10
|
+
|
|
11
|
+
**Flywheel** 是一个让 AI 工作流自我进化的框架。任何需要积累经验、迭代改进的 AI 任务,都可以通过「输入材料 → AI 分析执行 → 反馈收集 → 自我蒸馏」闭环持续变强。
|
|
12
|
+
|
|
13
|
+
### 核心机制:三环飞轮
|
|
14
|
+
|
|
15
|
+
- **Ring 1** — AI 分析输入材料,产出产物和假设清单
|
|
16
|
+
- **Ring 2** — 执行工具落地实现,生成反馈记录
|
|
17
|
+
- **Ring 3** — 反馈积累 ≥3 条后蒸馏,更新 Skill 能力
|
|
18
|
+
|
|
19
|
+
每个环节自动衔接,人工只在最后确认蒸馏变更。
|
|
20
|
+
|
|
21
|
+
### 特点
|
|
22
|
+
|
|
23
|
+
- **基于 Claude Code** — 无需独立服务器,直接运行
|
|
24
|
+
- **一行安装** — `curl -sSL ... | bash`
|
|
25
|
+
- **Skill 扩展** — 框架只给机制,内容靠 Skill 包积累
|
|
26
|
+
- **自我进化** — 同一类问题越分析越准
|
|
27
|
+
|
|
28
|
+
### 内置 Skill:req-mining
|
|
29
|
+
|
|
30
|
+
开箱即用的需求挖掘与落地场景。Ring 1 五维度扫描、Ring 2 桥接编程工具、Ring 3 蒸馏规律。已有 ERP / 进销存 / 外贸行业包。
|
|
31
|
+
|
|
32
|
+
### 适用场景
|
|
33
|
+
|
|
34
|
+
- 需求分析工作流
|
|
35
|
+
- 代码审查积累
|
|
36
|
+
- 领域知识沉淀
|
|
37
|
+
- 任何需要「做多了就变聪明」的场景
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 一键安装
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# npm 安装(推荐)
|
|
45
|
+
npm install -g @vima_tech/flywheel
|
|
46
|
+
|
|
47
|
+
# GitHub 安装(适用于自定义场景)
|
|
48
|
+
curl -sSL https://raw.githubusercontent.com/renmengkai/flywheel/main/install.sh | bash
|
|
49
|
+
|
|
50
|
+
# 指定 skill(仅限 GitHub 安装方式)
|
|
51
|
+
curl -sSL https://raw.githubusercontent.com/renmengkai/flywheel/main/install.sh | bash -s req-mining
|
|
52
|
+
|
|
53
|
+
# 安装后启动
|
|
54
|
+
claude
|
|
55
|
+
# 输入 /flywheel 或 sfw 激活
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 核心理念:飞轮三环
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
Ring 1 AI 分析输入材料,生成产物(含假设清单)
|
|
64
|
+
↓ 自动桥接
|
|
65
|
+
Ring 2 执行工具实现,遇到问题写入反馈文件
|
|
66
|
+
↓ 自动收集
|
|
67
|
+
Ring 3 反馈积累 ≥3 条 → 蒸馏 → 更新 Skill 文件
|
|
68
|
+
↓
|
|
69
|
+
下次分析更准确 ← 飞轮闭合
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
每个环节自动衔接,唯一需要人工确认的是蒸馏时的变更预览(单次 y/n)。
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 内置 Skill:req-mining
|
|
77
|
+
|
|
78
|
+
开箱即用的需求挖掘与落地场景:
|
|
79
|
+
|
|
80
|
+
- **Ring 1**:自驱五维度需求扫描,用 `⚠️ 假设` 标注不确定点
|
|
81
|
+
- **Ring 2**:自动桥接到 Claude Code / opencode / codex 等编程工具
|
|
82
|
+
- **Ring 3**:从实现反馈中蒸馏需求表达规律,持续提升分析准确率
|
|
83
|
+
- **行业包**:ERP / 进销存 / 外贸开箱即用,更多可贡献
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 已安装 Skill 管理
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
/skill list # 列出已安装 skill 及版本
|
|
91
|
+
/skill add code-review # 安装新 skill
|
|
92
|
+
/skill update # 更新所有 skill 到最新版
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## 目录结构
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
flywheel/
|
|
101
|
+
install.sh ← GitHub 安装脚本
|
|
102
|
+
package.json ← npm 包配置(bin 入口)
|
|
103
|
+
bin/
|
|
104
|
+
flywheel.js ← npm 全局命令入口
|
|
105
|
+
CLAUDE.md ← 框架系统引导(Claude Code 自动加载)
|
|
106
|
+
scripts/ ← 内核脚本(自动触发,无需手动)
|
|
107
|
+
skills/
|
|
108
|
+
_kernel/distillation.md ← 通用蒸馏协议
|
|
109
|
+
_template/ ← 新建 skill 的脚手架
|
|
110
|
+
req-mining/ ← 内置 skill
|
|
111
|
+
skill.yaml ← 元数据
|
|
112
|
+
domain.md ← Ring 1 分析协议
|
|
113
|
+
memory/ ← 蒸馏后自动更新
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## 创建自己的 Skill
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
# 1. 复制模板
|
|
122
|
+
cp -r skills/_template skills/your-skill-name
|
|
123
|
+
|
|
124
|
+
# 2. 填写元数据
|
|
125
|
+
edit skills/your-skill-name/skill.yaml
|
|
126
|
+
|
|
127
|
+
# 3. 定义分析协议
|
|
128
|
+
edit skills/your-skill-name/domain.md
|
|
129
|
+
|
|
130
|
+
# 4. 定义反馈问题
|
|
131
|
+
edit skills/your-skill-name/feedback-questions.sh
|
|
132
|
+
|
|
133
|
+
# 5. 激活
|
|
134
|
+
/flywheel # 检测到新 skill,自动加载
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
详见 [创建 Skill 指南](docs/creating-skills.md)(待补充)。
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## 开源贡献
|
|
142
|
+
|
|
143
|
+
欢迎提交新 skill 包或改进内核:
|
|
144
|
+
|
|
145
|
+
- **新 skill**:提交 PR,放在 `skills/your-skill-name/` 下
|
|
146
|
+
- **失败模式**:通过蒸馏自动积累,也可手动追加到 `skills/req-mining/memory/failure-patterns.md`
|
|
147
|
+
- **内核改进**:修改 `scripts/` 或 `skills/_kernel/` 下的文件
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## License
|
|
152
|
+
|
|
153
|
+
MIT
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
<div align="center" style="background:#0b0d12; padding:24px 0; margin:0; border-radius:8px;">
|
|
158
|
+
|
|
159
|
+

|
|
160
|
+
|
|
161
|
+
**[📄 View Full Poster →](docs/Flywheel_Poster.html)**
|
|
162
|
+
|
|
163
|
+
</div>
|
package/agents.md
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Agent 目录
|
|
2
|
+
|
|
3
|
+
Flywheel 框架的 Agent 结构说明。每个 skill 包含自己的 Ring 1 Agent;
|
|
4
|
+
内核蒸馏协议和脚本被所有 skill 共享。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 内核 Agent(所有 skill 共用)
|
|
9
|
+
|
|
10
|
+
| Agent | 文件 | 用途 | 加载时机 |
|
|
11
|
+
|---|---|---|---|
|
|
12
|
+
| 蒸馏 | `skills/_kernel/distillation.md` | Ring 3:从日志提炼模式,更新 Skill 文件 | Ring 3 触发时 |
|
|
13
|
+
|
|
14
|
+
## Skill Agent:req-mining
|
|
15
|
+
|
|
16
|
+
| Agent | 文件 | 用途 | 加载时机 |
|
|
17
|
+
|---|---|---|---|
|
|
18
|
+
| Ring 1 分析 | `skills/req-mining/domain.md` | 五维度需求扫描,生成三份产物 | `/flywheel` 激活时 |
|
|
19
|
+
| 产物规格 | `skills/req-mining/artifacts.md` | 三份产物格式规范 | 分析完成后 |
|
|
20
|
+
| ERP 行业包 | `skills/req-mining/industry/erp.md` | ERP/进销存/外贸专项 | 行业关键词触发 |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Skill DAG
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
skills/req-mining/memory/failure-patterns.md ← 常驻加载
|
|
28
|
+
│
|
|
29
|
+
▼
|
|
30
|
+
skills/req-mining/domain.md ← Ring 1 核心
|
|
31
|
+
│
|
|
32
|
+
├── skills/req-mining/industry/erp.md ← 行业匹配时
|
|
33
|
+
│
|
|
34
|
+
└── skills/req-mining/artifacts.md ← 分析完成后
|
|
35
|
+
|
|
36
|
+
skills/_kernel/distillation.md ← Ring 3 触发时
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 蒸馏事件路由
|
|
42
|
+
|
|
43
|
+
| 事件类型 | 目标文件 |
|
|
44
|
+
|---|---|
|
|
45
|
+
| `implementation_feedback.unclear_specs` | `skills/req-mining/artifacts.md` |
|
|
46
|
+
| `implementation_feedback.wrong_assumptions` | `skills/req-mining/memory/failure-patterns.md` |
|
|
47
|
+
| `analysis_completed`(假设被验证正确) | `skills/req-mining/domain.md` 推断规则库 |
|
|
48
|
+
| `analysis_completed`(假设被验证错误) | `skills/req-mining/memory/failure-patterns.md` |
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 版本历史
|
|
53
|
+
|
|
54
|
+
| 版本 | 日期 | 变更 |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| v1.0.0 | 2026-05 | 重组为 Flywheel 框架,req-miner 成为内置 skill,添加一键安装 |
|
|
57
|
+
| v0.3.0 | 2026-05 | 统一为单一飞轮模式,自动触发三环 |
|
|
58
|
+
| v0.2.0 | 2024-01 | 拆分 skill 文件,添加蒸馏元 skill |
|
|
59
|
+
| v0.1.0 | 2024-01 | 初始版本 |
|
package/bin/flywheel.js
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Flywheel CLI
|
|
4
|
+
* Global entry point for @renmengkai/flywheel npm package
|
|
5
|
+
*/
|
|
6
|
+
const { spawn } = require('child_process');
|
|
7
|
+
const path = require('path');
|
|
8
|
+
const fs = require('fs');
|
|
9
|
+
|
|
10
|
+
const REPO_DIR = process.env.FLYWHEEL_DIR || process.cwd();
|
|
11
|
+
|
|
12
|
+
function resolveScript(name) {
|
|
13
|
+
const scripts = {
|
|
14
|
+
'flywheel-install': path.join(__dirname, '../scripts/flywheel-install.sh'),
|
|
15
|
+
'auto-distill': path.join(__dirname, '../scripts/auto-distill.sh'),
|
|
16
|
+
'feedback-hook': path.join(__dirname, '../scripts/feedback-hook.sh'),
|
|
17
|
+
'bridge-to-coder': path.join(__dirname, '../scripts/bridge-to-coder.sh'),
|
|
18
|
+
};
|
|
19
|
+
return scripts[name];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function runScript(scriptPath, args) {
|
|
23
|
+
return new Promise((resolve, reject) => {
|
|
24
|
+
const child = spawn('bash', [scriptPath, ...args], {
|
|
25
|
+
cwd: REPO_DIR,
|
|
26
|
+
stdio: 'inherit',
|
|
27
|
+
env: { ...process.env, FLYWHEEL_DIR: REPO_DIR },
|
|
28
|
+
});
|
|
29
|
+
child.on('exit', (code) => {
|
|
30
|
+
if (code === 0) resolve(0);
|
|
31
|
+
else reject(new Error(`exit code ${code}`));
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const [,, command, ...args] = process.argv;
|
|
37
|
+
|
|
38
|
+
if (!command) {
|
|
39
|
+
console.log(`
|
|
40
|
+
Flywheel CLI — 自成长 AI Agent 飞轮框架
|
|
41
|
+
|
|
42
|
+
用法: flywheel <command> [args]
|
|
43
|
+
|
|
44
|
+
可用命令:
|
|
45
|
+
install <skill> 安装 skill 包
|
|
46
|
+
list 列出已安装的 skill
|
|
47
|
+
update [skill] 更新 skill 包
|
|
48
|
+
distill [project] 手动触发蒸馏
|
|
49
|
+
help 显示帮助
|
|
50
|
+
|
|
51
|
+
示例:
|
|
52
|
+
flywheel install req-mining
|
|
53
|
+
flywheel list
|
|
54
|
+
flywheel update
|
|
55
|
+
flywheel distill proj_20260515_01
|
|
56
|
+
`);
|
|
57
|
+
process.exit(0);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
switch (command) {
|
|
61
|
+
case 'help':
|
|
62
|
+
console.log(`
|
|
63
|
+
Flywheel CLI — 自成长 AI Agent 飞轮框架
|
|
64
|
+
|
|
65
|
+
用法: flywheel <command> [args]
|
|
66
|
+
|
|
67
|
+
可用命令:
|
|
68
|
+
install <skill> 安装 skill 包
|
|
69
|
+
list 列出已安装的 skill
|
|
70
|
+
update [skill] 更新 skill 包
|
|
71
|
+
distill [project] 手动触发蒸馏
|
|
72
|
+
|
|
73
|
+
示例:
|
|
74
|
+
flywheel install req-mining
|
|
75
|
+
flywheel list
|
|
76
|
+
flywheel update
|
|
77
|
+
flywheel distill proj_20260515_01
|
|
78
|
+
`);
|
|
79
|
+
break;
|
|
80
|
+
case 'install':
|
|
81
|
+
runScript(resolveScript('flywheel-install'), ['add', ...args]).catch((e) => process.exit(1));
|
|
82
|
+
break;
|
|
83
|
+
case 'list':
|
|
84
|
+
runScript(resolveScript('flywheel-install'), ['list']).catch((e) => process.exit(1));
|
|
85
|
+
break;
|
|
86
|
+
case 'update':
|
|
87
|
+
runScript(resolveScript('flywheel-install'), ['update', ...args]).catch((e) => process.exit(1));
|
|
88
|
+
break;
|
|
89
|
+
case 'distill':
|
|
90
|
+
runScript(resolveScript('auto-distill'), args).catch((e) => process.exit(1));
|
|
91
|
+
break;
|
|
92
|
+
default:
|
|
93
|
+
console.error(`未知命令: ${command}`)
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|