@vima_tech/flywheel 1.0.0 → 1.1.1
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/bin/flywheel.js +235 -34
- package/package.json +8 -1
- package/scripts/available.json +10 -0
- package/scripts/flywheel-install.sh +21 -1
- package/.claude/commands/flywheel.md +0 -42
- package/.claude/commands/skill.md +0 -36
- package/.claude/settings.local.json +0 -13
- package/.distill-needed/.gitkeep +0 -0
- package/CLAUDE.md +0 -178
- package/agents.md +0 -59
- package/docs/Flywheel_Poster.html +0 -1059
- package/docs/Flywheel_Poster.png +0 -0
- package/episodic-logs/.gitkeep +0 -0
- package/install.sh +0 -194
- package/memory/industry/.gitkeep +0 -0
- package/projects/.gitkeep +0 -0
- package/skills/req-mining/artifacts.md +0 -185
- package/skills/req-mining/domain.md +0 -243
- package/skills/req-mining/feedback-questions.sh +0 -9
- package/skills/req-mining/industry/erp.md +0 -108
- package/skills/req-mining/industry/retail.md +0 -24
- package/skills/req-mining/memory/failure-patterns.md +0 -84
- package/skills/req-mining/skill.yaml +0 -41
package/docs/Flywheel_Poster.png
DELETED
|
Binary file
|
package/episodic-logs/.gitkeep
DELETED
|
File without changes
|
package/install.sh
DELETED
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Flywheel — 自成长 AI Agent 飞轮框架
|
|
3
|
-
#
|
|
4
|
-
# 一键安装(GitHub 下载方式):
|
|
5
|
-
# curl -sSL https://raw.githubusercontent.com/renmengkai/flywheel/main/install.sh | bash
|
|
6
|
-
#
|
|
7
|
-
# 一键安装(npm 方式):
|
|
8
|
-
# npm install -g @vima_tech/flywheel
|
|
9
|
-
#
|
|
10
|
-
# 安装并指定 skill(仅限 GitHub 方式):
|
|
11
|
-
# curl -sSL https://raw.githubusercontent.com/renmengkai/flywheel/main/install.sh | bash -s req-mining
|
|
12
|
-
|
|
13
|
-
set -e
|
|
14
|
-
|
|
15
|
-
REPO="renmengkai/flywheel"
|
|
16
|
-
BRANCH="main"
|
|
17
|
-
BASE_URL="https://raw.githubusercontent.com/$REPO/$BRANCH"
|
|
18
|
-
INSTALL_DIR="${FLYWHEEL_DIR:-.}"
|
|
19
|
-
SKILLS=()
|
|
20
|
-
|
|
21
|
-
# ── 解析参数 ───────────────────────────────────────────────────
|
|
22
|
-
for arg in "$@"; do
|
|
23
|
-
case "$arg" in
|
|
24
|
-
--list)
|
|
25
|
-
echo "可用 skill 包(通过 PR 添加更多):"
|
|
26
|
-
echo " req-mining 需求挖掘与落地(内置)"
|
|
27
|
-
exit 0
|
|
28
|
-
;;
|
|
29
|
-
--help|-h)
|
|
30
|
-
echo "用法:curl -sSL .../install.sh | bash -s [skill-name...]"
|
|
31
|
-
echo " bash install.sh [--list] [skill-name...]"
|
|
32
|
-
exit 0
|
|
33
|
-
;;
|
|
34
|
-
*) SKILLS+=("$arg") ;;
|
|
35
|
-
esac
|
|
36
|
-
done
|
|
37
|
-
|
|
38
|
-
[ ${#SKILLS[@]} -eq 0 ] && SKILLS=("req-mining")
|
|
39
|
-
|
|
40
|
-
# ── 环境检查 ───────────────────────────────────────────────────
|
|
41
|
-
check_deps() {
|
|
42
|
-
local missing=()
|
|
43
|
-
command -v curl &>/dev/null || missing+=("curl")
|
|
44
|
-
command -v git &>/dev/null || missing+=("git")
|
|
45
|
-
command -v python3 &>/dev/null || missing+=("python3")
|
|
46
|
-
if [ ${#missing[@]} -gt 0 ]; then
|
|
47
|
-
echo "❌ 缺少依赖:${missing[*]}"
|
|
48
|
-
echo " 请先安装后重试"
|
|
49
|
-
exit 1
|
|
50
|
-
fi
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
# ── 文件下载工具 ───────────────────────────────────────────────
|
|
54
|
-
download() {
|
|
55
|
-
local src="$1" # 相对于仓库根的路径
|
|
56
|
-
local dst="$2" # 目标路径(相对于 INSTALL_DIR)
|
|
57
|
-
local full_dst="$INSTALL_DIR/$dst"
|
|
58
|
-
mkdir -p "$(dirname "$full_dst")"
|
|
59
|
-
curl -fsSL "$BASE_URL/$src" -o "$full_dst"
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
# ── 下载内核文件 ───────────────────────────────────────────────
|
|
63
|
-
install_kernel() {
|
|
64
|
-
echo "📦 安装 Flywheel 内核..."
|
|
65
|
-
|
|
66
|
-
local kernel_files=(
|
|
67
|
-
"CLAUDE.md"
|
|
68
|
-
".gitignore"
|
|
69
|
-
".claude/commands/flywheel.md"
|
|
70
|
-
".claude/commands/skill.md"
|
|
71
|
-
"scripts/auto-distill.sh"
|
|
72
|
-
"scripts/feedback-hook.sh"
|
|
73
|
-
"scripts/bridge-to-coder.sh"
|
|
74
|
-
"scripts/flywheel-install.sh"
|
|
75
|
-
"templates/state.json"
|
|
76
|
-
"skills/_kernel/distillation.md"
|
|
77
|
-
"skills/_template/skill.yaml"
|
|
78
|
-
"skills/_template/domain.md"
|
|
79
|
-
"skills/_template/feedback-questions.sh"
|
|
80
|
-
)
|
|
81
|
-
|
|
82
|
-
for f in "${kernel_files[@]}"; do
|
|
83
|
-
download "$f" "$f"
|
|
84
|
-
echo " ✓ $f"
|
|
85
|
-
done
|
|
86
|
-
|
|
87
|
-
# 初始化运行时目录(gitignore 内容)
|
|
88
|
-
mkdir -p "$INSTALL_DIR"/{.distill-needed,episodic-logs,projects,memory}
|
|
89
|
-
touch "$INSTALL_DIR/.distill-needed/.gitkeep"
|
|
90
|
-
touch "$INSTALL_DIR/episodic-logs/.gitkeep"
|
|
91
|
-
touch "$INSTALL_DIR/projects/.gitkeep"
|
|
92
|
-
touch "$INSTALL_DIR/memory/.gitkeep"
|
|
93
|
-
|
|
94
|
-
chmod +x "$INSTALL_DIR"/scripts/*.sh
|
|
95
|
-
echo " ✓ 内核安装完成"
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
# ── 下载 skill 包 ──────────────────────────────────────────────
|
|
99
|
-
install_skill() {
|
|
100
|
-
local skill="$1"
|
|
101
|
-
echo ""
|
|
102
|
-
echo "🎯 安装 skill:$skill"
|
|
103
|
-
|
|
104
|
-
# 读取 skill.yaml 获取文件列表
|
|
105
|
-
local yaml_url="$BASE_URL/skills/$skill/skill.yaml"
|
|
106
|
-
if ! curl -fsSL "$yaml_url" -o /dev/null 2>/dev/null; then
|
|
107
|
-
echo " ❌ skill '$skill' 不存在,可用列表:bash install.sh --list"
|
|
108
|
-
return 1
|
|
109
|
-
fi
|
|
110
|
-
|
|
111
|
-
# 下载核心文件
|
|
112
|
-
local skill_files=(
|
|
113
|
-
"skills/$skill/skill.yaml"
|
|
114
|
-
"skills/$skill/domain.md"
|
|
115
|
-
"skills/$skill/feedback-questions.sh"
|
|
116
|
-
)
|
|
117
|
-
|
|
118
|
-
# 可选文件(不存在则跳过)
|
|
119
|
-
local optional_files=(
|
|
120
|
-
"skills/$skill/artifacts.md"
|
|
121
|
-
"skills/$skill/bridge.sh"
|
|
122
|
-
"skills/$skill/memory/failure-patterns.md"
|
|
123
|
-
"skills/$skill/industry/erp.md"
|
|
124
|
-
)
|
|
125
|
-
|
|
126
|
-
for f in "${skill_files[@]}"; do
|
|
127
|
-
download "$f" "$f" && echo " ✓ $f" || echo " ⚠ 跳过 $f"
|
|
128
|
-
done
|
|
129
|
-
|
|
130
|
-
for f in "${optional_files[@]}"; do
|
|
131
|
-
curl -fsSL "$BASE_URL/$f" -o "$INSTALL_DIR/$f" 2>/dev/null \
|
|
132
|
-
&& echo " ✓ $f" \
|
|
133
|
-
|| true # 可选文件不报错
|
|
134
|
-
done
|
|
135
|
-
|
|
136
|
-
echo " ✓ skill '$skill' 安装完成"
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
# ── 更新 .gitignore ────────────────────────────────────────────
|
|
140
|
-
setup_gitignore() {
|
|
141
|
-
local marker="# flywheel-managed"
|
|
142
|
-
local gitignore="$INSTALL_DIR/.gitignore"
|
|
143
|
-
|
|
144
|
-
# 如果已经有 flywheel 标记则跳过
|
|
145
|
-
grep -q "$marker" "$gitignore" 2>/dev/null && return
|
|
146
|
-
|
|
147
|
-
cat >> "$gitignore" << 'EOF'
|
|
148
|
-
|
|
149
|
-
# flywheel-managed
|
|
150
|
-
projects/*/
|
|
151
|
-
episodic-logs/
|
|
152
|
-
.distill-needed/*
|
|
153
|
-
!.distill-needed/.gitkeep
|
|
154
|
-
memory/.gitkeep
|
|
155
|
-
*.log
|
|
156
|
-
EOF
|
|
157
|
-
echo " ✓ .gitignore 已更新"
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
# ── 主流程 ─────────────────────────────────────────────────────
|
|
161
|
-
main() {
|
|
162
|
-
echo ""
|
|
163
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
164
|
-
echo " Flywheel 安装器 v1.0"
|
|
165
|
-
echo " 自成长 AI Agent 飞轮框架"
|
|
166
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
167
|
-
echo ""
|
|
168
|
-
echo "安装目录:$(realpath "$INSTALL_DIR")"
|
|
169
|
-
echo "Skills:${SKILLS[*]}"
|
|
170
|
-
echo ""
|
|
171
|
-
|
|
172
|
-
check_deps
|
|
173
|
-
install_kernel
|
|
174
|
-
setup_gitignore
|
|
175
|
-
|
|
176
|
-
for skill in "${SKILLS[@]}"; do
|
|
177
|
-
install_skill "$skill"
|
|
178
|
-
done
|
|
179
|
-
|
|
180
|
-
echo ""
|
|
181
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
182
|
-
echo " ✅ 安装完成!"
|
|
183
|
-
echo ""
|
|
184
|
-
echo " 启动方式:"
|
|
185
|
-
echo " cd $(realpath "$INSTALL_DIR") && claude"
|
|
186
|
-
echo " 输入 /flywheel 或 sfw 激活飞轮"
|
|
187
|
-
echo ""
|
|
188
|
-
echo " npm 安装用户可运行:flywheel list"
|
|
189
|
-
echo " 查看可用 skill:bash install.sh --list"
|
|
190
|
-
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
191
|
-
echo ""
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
main
|
package/memory/industry/.gitkeep
DELETED
|
File without changes
|
package/projects/.gitkeep
DELETED
|
File without changes
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: req-miner-artifacts
|
|
3
|
-
skill_id: req_miner_artifacts
|
|
4
|
-
version: 2.0
|
|
5
|
-
description: >
|
|
6
|
-
需求挖掘产物生成规格。仅在阶段四退出条件全部满足后加载。
|
|
7
|
-
定义三份产物的完整结构:需求澄清报告 + AI 执行文档 + 可视化原型规格。
|
|
8
|
-
is_required: false
|
|
9
|
-
hard_dep: [req_miner_core]
|
|
10
|
-
soft_dep: []
|
|
11
|
-
estimated_tokens: 1000
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
# 产物生成规格
|
|
15
|
-
|
|
16
|
-
阶段四退出条件全部满足后,依次生成以下三份产物。
|
|
17
|
-
**三份产物信息来源完全一致,出现不一致 = 需求对话有遗漏,必须修正后再输出。**
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## 输出前自检(必须执行,任一未通过则补充对话)
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
□ 业务流程是否完整?(销售/采购/库存/财务四条链条无断点)
|
|
25
|
-
□ MoSCoW 是否明确区分 Must / Should / Won't?
|
|
26
|
-
□ 是否有成本核算方法定义?
|
|
27
|
-
□ 是否有应收应付账款管理?
|
|
28
|
-
□ 是否有退货/售后流程?
|
|
29
|
-
□ 是否有数据备份和导出策略?
|
|
30
|
-
□ 验收标准是否包含性能指标(具体数字)?
|
|
31
|
-
□ 验收标准是否包含安全/权限要求?
|
|
32
|
-
□ Parking Lot 是否清零?
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
## 产物 1:需求澄清报告
|
|
38
|
-
|
|
39
|
-
**面向:** 甲方决策人(人话描述,客户签字确认)
|
|
40
|
-
|
|
41
|
-
```
|
|
42
|
-
1. 项目背景
|
|
43
|
-
项目名称 | 调研时间 | 客户行业 | 核心目标用户
|
|
44
|
-
|
|
45
|
-
2. 真实目标 vs 表达目标
|
|
46
|
-
甲方原话:[引用] → 真实目标:[澄清后] → 验证方式:[如何判断达成]
|
|
47
|
-
|
|
48
|
-
3. 功能范围(MoSCoW)
|
|
49
|
-
Must Have(本期必须):[列表]
|
|
50
|
-
Should Have(本期应该):[列表]
|
|
51
|
-
Won't Have(本期不做,原因):[列表]
|
|
52
|
-
|
|
53
|
-
4. 使用角色与场景
|
|
54
|
-
角色:[角色名] | 使用频率 | 核心任务
|
|
55
|
-
场景:至少 2 个完整端到端场景描述
|
|
56
|
-
|
|
57
|
-
5. 约束与边界
|
|
58
|
-
预算:[范围 + 决策链] | 时间:[期望上线 + 硬截止] | 部署:[方式]
|
|
59
|
-
技术:[已有系统/需对接/偏好] | 合规:[数据安全/等保要求]
|
|
60
|
-
|
|
61
|
-
6. 业务流程完整性说明
|
|
62
|
-
[描述销售/采购/库存/财务完整链条,标注本期覆盖范围]
|
|
63
|
-
|
|
64
|
-
7. 数据安全需求
|
|
65
|
-
权限模型 | 数据隔离级别 | 审计日志策略 | 合规要求
|
|
66
|
-
|
|
67
|
-
8. 非功能性需求
|
|
68
|
-
性能(具体数字)| 可用性(SLA)| 备份策略 | 导出格式 | 打印需求
|
|
69
|
-
|
|
70
|
-
9. 集成需求
|
|
71
|
-
[第三方系统] + [对接方式] + [数据格式]
|
|
72
|
-
|
|
73
|
-
10. 隐含假设清单
|
|
74
|
-
[假设内容] → 已确认 / 待确认 / 存在风险
|
|
75
|
-
|
|
76
|
-
11. Parking Lot(未解决问题)
|
|
77
|
-
[问题] | 风险级别 | 必须解决时间节点
|
|
78
|
-
|
|
79
|
-
12. 落地风险评估
|
|
80
|
-
[风险描述] | 可能性 | 影响 | 建议处理方式
|
|
81
|
-
|
|
82
|
-
13. 验收标准(≥5条,含功能性/非功能性/安全)
|
|
83
|
-
每条格式:[主语] + [操作] + [可测试结果]
|
|
84
|
-
|
|
85
|
-
14. 本期明确不做的功能(显式列出,防止后期扯皮)
|
|
86
|
-
|
|
87
|
-
15. 甲方确认签字栏
|
|
88
|
-
客户签字:____ | 分析师:____ | 日期:____
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
---
|
|
92
|
-
|
|
93
|
-
## 产物 2:AI 执行文档
|
|
94
|
-
|
|
95
|
-
**面向:** 执行 AI(无歧义技术规格)
|
|
96
|
-
**禁止出现:** 可能、也许、适当、合理、尽量、一般情况下
|
|
97
|
-
|
|
98
|
-
```
|
|
99
|
-
1. 系统概述
|
|
100
|
-
一段话:系统是什么,服务谁,核心特性,技术栈建议,部署架构
|
|
101
|
-
|
|
102
|
-
2. 技术约束(必须是具体数字)
|
|
103
|
-
并发用户数 | 页面加载时间 | 数据量级 | 响应时间 | 可用性 SLA
|
|
104
|
-
|
|
105
|
-
3. 权限模型(RBAC)
|
|
106
|
-
角色定义 | 权限矩阵 | 数据隔离级别 | API 鉴权方案 | 敏感操作二次确认清单
|
|
107
|
-
|
|
108
|
-
4. 数据模型
|
|
109
|
-
每个实体:表名 | 字段名 | 类型 | 约束 | 索引 | 外键 | 枚举值定义
|
|
110
|
-
|
|
111
|
-
5. 数据字典
|
|
112
|
-
所有枚举字段的完整取值定义(如订单状态、付款状态、角色类型)
|
|
113
|
-
|
|
114
|
-
6. 功能规格(每个 Must Have 功能点)
|
|
115
|
-
触发条件 | 输入(字段+验证规则)| 处理逻辑(步骤,无歧义)| 输出 | 异常处理 | 边界情况
|
|
116
|
-
|
|
117
|
-
7. 状态机定义
|
|
118
|
-
订单状态机 | 库存状态 | 支付状态(含每个状态的触发条件和转移规则)
|
|
119
|
-
|
|
120
|
-
8. 安全设计
|
|
121
|
-
密码加密方案 | 传输加密 | SQL 注入防护 | XSS 防护 | 审计日志字段定义
|
|
122
|
-
|
|
123
|
-
9. 数据库策略
|
|
124
|
-
索引设计 | 迁移策略 | 并发控制(乐观锁/悲观锁)| 备份方案
|
|
125
|
-
|
|
126
|
-
10. 验收测试用例
|
|
127
|
-
每个功能点:正向用例 + 异常用例 + 边界用例
|
|
128
|
-
|
|
129
|
-
11. 未覆盖情况处理规则
|
|
130
|
-
"遇到本文档未说明的情况,必须停止并记录,不得自行决定"
|
|
131
|
-
[列出已知高风险歧义场景及标准处理方式]
|
|
132
|
-
|
|
133
|
-
12. 变更记录
|
|
134
|
-
版本 | 日期 | 变更内容 | 确认人
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
## 产物 3:可视化原型规格
|
|
140
|
-
|
|
141
|
-
**按已锁定的保真度等级输出(A/B/C,不可更改)**
|
|
142
|
-
|
|
143
|
-
**标注规范(所有等级通用):**
|
|
144
|
-
- 🔴 需要特别确认的业务逻辑
|
|
145
|
-
- 🟡 存在不确定性,待甲方说明
|
|
146
|
-
- 🟢 已确认,无需讨论
|
|
147
|
-
- ⚪ 本期范围外
|
|
148
|
-
|
|
149
|
-
**所有等级必须覆盖:**
|
|
150
|
-
|
|
151
|
-
```
|
|
152
|
-
□ 所有 Must Have 功能的页面/流程
|
|
153
|
-
□ 每个页面的边界情况(空状态 / 加载状态 / 错误状态)
|
|
154
|
-
□ 每个页面与验收标准的对应关系
|
|
155
|
-
□ 订单/库存状态机可视化流转图
|
|
156
|
-
□ 批量操作交互设计(批量导入/导出/修改)
|
|
157
|
-
□ 导出功能 UI 入口(Excel/PDF 导出按钮位置和进度提示)
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
**A. 流程图额外要求:**
|
|
161
|
-
- 页面节点 + 跳转逻辑 + 触发条件
|
|
162
|
-
- 每个节点的关键字段列表(文字说明)
|
|
163
|
-
|
|
164
|
-
**B. 线框图额外要求(在 A 基础上):**
|
|
165
|
-
- 完整字段标注(字段名、类型、是否必填)
|
|
166
|
-
- 关键交互标注(点击跳转目标)
|
|
167
|
-
- 打印样式设计(报价单/发票/出库单的打印布局)
|
|
168
|
-
|
|
169
|
-
**C. 中保真额外要求(在 B 基础上):**
|
|
170
|
-
- 基本配色方案(与客户品牌相符)
|
|
171
|
-
- 主要页面的视觉风格(字体、间距、卡片样式)
|
|
172
|
-
- 关键操作按钮样式
|
|
173
|
-
|
|
174
|
-
---
|
|
175
|
-
|
|
176
|
-
## 产物输出后操作
|
|
177
|
-
|
|
178
|
-
```
|
|
179
|
-
1. 更新 state.json → current_phase: "completed"
|
|
180
|
-
2. 归档本次会话日志(追加到 episodic-logs/{project_id}.jsonl)
|
|
181
|
-
3. 输出摘要:
|
|
182
|
-
"三份产物已生成。
|
|
183
|
-
本次对话:[N] 轮 | Parking Lot 解决:[N] 项 | 未覆盖决策:[N] 项
|
|
184
|
-
建议专家审查后发送给客户确认。"
|
|
185
|
-
```
|
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: auto-req
|
|
3
|
-
skill_id: auto_req
|
|
4
|
-
version: 1.0
|
|
5
|
-
description: >
|
|
6
|
-
自驱需求分析 Skill。无需人类实时对话,从输入文档(需求文档、邮件线程、
|
|
7
|
-
Jira tickets、会议记录)中自主运行四阶段框架,提取需求并生成三份产物。
|
|
8
|
-
是飞轮架构的 Ring 1 自驱化核心。
|
|
9
|
-
is_required: false
|
|
10
|
-
hard_dep: [req_miner_core]
|
|
11
|
-
soft_dep: []
|
|
12
|
-
estimated_tokens: 1200
|
|
13
|
-
trigger_phrases:
|
|
14
|
-
- "分析这份文档"
|
|
15
|
-
- "从文档提取需求"
|
|
16
|
-
- "无对话模式"
|
|
17
|
-
- "自动分析"
|
|
18
|
-
- "headless模式"
|
|
19
|
-
- "批量需求"
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
# 自驱需求分析协议
|
|
23
|
-
|
|
24
|
-
**使用场景:** 客户已提供书面材料(需求文档、邮件、会议纪要、竞品截图),
|
|
25
|
-
无法实时对话,但需要结构化需求产物。
|
|
26
|
-
|
|
27
|
-
**与普通模式的区别:**
|
|
28
|
-
- 普通模式:与人类实时对话提炼需求
|
|
29
|
-
- 自驱模式:从文档推断需求,用 `⚠️ 假设` 标注所有不确定点,不阻塞流程
|
|
30
|
-
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
## Step 0:接收输入材料
|
|
34
|
-
|
|
35
|
-
用户提供以下任意格式:
|
|
36
|
-
- 直接粘贴文本
|
|
37
|
-
- 文件路径(读取内容)
|
|
38
|
-
- URL(抓取内容)
|
|
39
|
-
- 多份材料(合并分析)
|
|
40
|
-
|
|
41
|
-
**确认输入后,询问项目基本信息(一次性询问):**
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
已收到材料(约 XXX 字)。
|
|
45
|
-
|
|
46
|
-
请确认以下信息(可全部省略,我会从文档推断):
|
|
47
|
-
1. 项目名称:
|
|
48
|
-
2. 客户行业:
|
|
49
|
-
3. 分析侧重点(功能 / 约束 / 验收标准):
|
|
50
|
-
4. 缺失信息处理方式:
|
|
51
|
-
A. 标注假设,继续分析(推荐)
|
|
52
|
-
B. 列出问题,等待补充后再分析
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## Step 1:材料扫描与信息提取
|
|
58
|
-
|
|
59
|
-
**读取所有材料,提取以下维度(静默执行,不逐条输出):**
|
|
60
|
-
|
|
61
|
-
```
|
|
62
|
-
维度 1:业务目标信号
|
|
63
|
-
- 明确陈述的目标
|
|
64
|
-
- 隐含目标(从"痛点"、"现在的问题"、"希望"等词推断)
|
|
65
|
-
- 利益相关者提及的关键词
|
|
66
|
-
|
|
67
|
-
维度 2:功能需求信号
|
|
68
|
-
- 动词短语("能够"、"支持"、"允许"、"需要")
|
|
69
|
-
- 角色 + 操作 + 对象 的句式
|
|
70
|
-
- 列表/表格中的功能点
|
|
71
|
-
|
|
72
|
-
维度 3:约束信号
|
|
73
|
-
- 数字(预算、时间、用户量、性能指标)
|
|
74
|
-
- 技术栈提及
|
|
75
|
-
- 安全/合规要求
|
|
76
|
-
- "不能"、"禁止"、"限制"等否定约束
|
|
77
|
-
|
|
78
|
-
维度 4:验收信号
|
|
79
|
-
- "验收"、"上线标准"、"测试"、"通过"等词周围的内容
|
|
80
|
-
- KPI、指标、可量化结果
|
|
81
|
-
|
|
82
|
-
维度 5:矛盾信号
|
|
83
|
-
- 同一实体在不同位置有不同描述
|
|
84
|
-
- 需求数量与预算/时间明显不匹配
|
|
85
|
-
- 技术限制与功能要求相冲突
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
## Step 2:四维度分析输出
|
|
91
|
-
|
|
92
|
-
**输出格式:**
|
|
93
|
-
|
|
94
|
-
```
|
|
95
|
-
━━━ 自驱分析结果 | 项目:{name} | 材料:{N}份 ━━━
|
|
96
|
-
|
|
97
|
-
## 一、目标层
|
|
98
|
-
|
|
99
|
-
真实目标(推断):[描述]
|
|
100
|
-
表达目标(材料原话):[引用]
|
|
101
|
-
推断依据:[关键词/段落]
|
|
102
|
-
⚠️ 假设 A1:[不确定点],假设为 [推断值],如有误请纠正
|
|
103
|
-
|
|
104
|
-
## 二、功能层
|
|
105
|
-
|
|
106
|
-
Must Have(明确提及 ≥2 处或被标注为核心):
|
|
107
|
-
• [功能1](来源:[段落标识])
|
|
108
|
-
• [功能2]
|
|
109
|
-
|
|
110
|
-
Should Have(明确提及 1 处):
|
|
111
|
-
• [功能3]
|
|
112
|
-
|
|
113
|
-
⚠️ 假设 F1:材料中提及"[X功能]"但未说明优先级,暂归为 Should Have
|
|
114
|
-
|
|
115
|
-
Won't Have(材料明确排除,或超出范围):
|
|
116
|
-
• [功能4](来源:[原话])
|
|
117
|
-
|
|
118
|
-
## 三、约束层
|
|
119
|
-
|
|
120
|
-
预算:[数值或"未提及,⚠️ 假设 C1:按中型项目估算 10-30万"]
|
|
121
|
-
时间:[数值或推断]
|
|
122
|
-
部署方式:[私有化/SaaS/未知]
|
|
123
|
-
用户规模:[数值或推断]
|
|
124
|
-
技术约束:[列表]
|
|
125
|
-
|
|
126
|
-
## 四、验收层
|
|
127
|
-
|
|
128
|
-
明确验收标准:
|
|
129
|
-
• [标准1](来源:[原话])
|
|
130
|
-
推断验收标准(从功能反推):
|
|
131
|
-
• [标准2](⚠️ 假设 V1:推断)
|
|
132
|
-
|
|
133
|
-
## 五、矛盾与风险
|
|
134
|
-
|
|
135
|
-
⚠️ 矛盾 M1:材料第3段说"[A]",第7段说"[B]",需确认
|
|
136
|
-
🔴 高风险:[需求规模与时间/预算明显不匹配 等]
|
|
137
|
-
|
|
138
|
-
## 六、信息缺口清单
|
|
139
|
-
|
|
140
|
-
以下信息材料中无法推断,需人工确认:
|
|
141
|
-
□ [问题1](影响:影响功能规格,阻塞产物2生成)
|
|
142
|
-
□ [问题2](影响:影响验收标准定义)
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
---
|
|
146
|
-
|
|
147
|
-
## Step 3:生成方式选择
|
|
148
|
-
|
|
149
|
-
**分析完成后,询问:**
|
|
150
|
-
|
|
151
|
-
```
|
|
152
|
-
━━━ 自驱分析完成 ━━━
|
|
153
|
-
|
|
154
|
-
发现信息缺口 {N} 处,其中:
|
|
155
|
-
- 阻塞级(必须确认才能输出):{M} 处
|
|
156
|
-
- 非阻塞级(可用假设替代):{N-M} 处
|
|
157
|
-
|
|
158
|
-
如何继续?
|
|
159
|
-
A. 立即生成三份产物(用假设填充缺口,产物中标注⚠️)
|
|
160
|
-
B. 先补充 {M} 处关键信息,再生成
|
|
161
|
-
C. 导出信息缺口清单,人工填写后继续
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
---
|
|
165
|
-
|
|
166
|
-
## Step 4:生成三份产物
|
|
167
|
-
|
|
168
|
-
收到用户选择后,加载 `skills/artifacts/req-miner-artifacts.md`,
|
|
169
|
-
按规格生成三份产物。
|
|
170
|
-
|
|
171
|
-
**自驱模式特殊标注规则:**
|
|
172
|
-
|
|
173
|
-
- 所有通过推断而非明确确认的内容,加 `⚠️[假设:A1]` 标注
|
|
174
|
-
- 产物首页增加"假设清单"章节,汇总所有假设
|
|
175
|
-
- 验收标准中推断类标准,标注"待客户确认"
|
|
176
|
-
|
|
177
|
-
---
|
|
178
|
-
|
|
179
|
-
## Step 5:写入状态与日志
|
|
180
|
-
|
|
181
|
-
```python
|
|
182
|
-
# 更新 state.json
|
|
183
|
-
state["auto_req_mode"] = True
|
|
184
|
-
state["assumptions_count"] = N
|
|
185
|
-
state["info_gaps"] = [gap_list]
|
|
186
|
-
state["artifacts_generated"] = True
|
|
187
|
-
|
|
188
|
-
# 追加事件日志
|
|
189
|
-
event = {
|
|
190
|
-
"event_id": "evt_auto_req_001",
|
|
191
|
-
"type": "auto_req_completed",
|
|
192
|
-
"assumptions_count": N,
|
|
193
|
-
"info_gap_blocking": M,
|
|
194
|
-
"distillation_candidate": True
|
|
195
|
-
}
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
---
|
|
199
|
-
|
|
200
|
-
## Step 6:自动启动 Ring 2(飞轮衔接)
|
|
201
|
-
|
|
202
|
-
产物写入完成后,**直接通过 Bash 工具调用桥接脚本**,无需用户手动执行:
|
|
203
|
-
|
|
204
|
-
```bash
|
|
205
|
-
./scripts/bridge-to-coder.sh {project_id} {tool}
|
|
206
|
-
# tool 默认 claude;若用户指定了其他工具则使用用户指定的
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
输出提示:
|
|
210
|
-
```
|
|
211
|
-
━━━ Ring 1 完成,自动启动 Ring 2 ━━━
|
|
212
|
-
正在调用:./scripts/bridge-to-coder.sh {project_id} {tool}
|
|
213
|
-
编程工具退出后将自动收集反馈,满足条件时自动触发蒸馏
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
**注意:** bridge-to-coder.sh 会启动一个交互式编程工具会话(如 claude),
|
|
217
|
-
此时当前 AI 会话暂时挂起,等待编程工具退出后继续。
|
|
218
|
-
|
|
219
|
-
---
|
|
220
|
-
|
|
221
|
-
## 自驱模式与飞轮的配合
|
|
222
|
-
|
|
223
|
-
```
|
|
224
|
-
输入文档
|
|
225
|
-
│
|
|
226
|
-
▼
|
|
227
|
-
自驱分析(本 Skill)
|
|
228
|
-
│ 生成三份产物 + 假设清单
|
|
229
|
-
▼
|
|
230
|
-
bridge-to-coder.sh → 编程工具实现
|
|
231
|
-
│ 实现过程中确认/否定假设
|
|
232
|
-
▼
|
|
233
|
-
feedback-hook.sh → 写入假设验证结果
|
|
234
|
-
│ 哪些假设对了,哪些错了
|
|
235
|
-
▼
|
|
236
|
-
蒸馏 → 更新"自驱推断规则"
|
|
237
|
-
│ 下次同类文档推断更准确
|
|
238
|
-
▼
|
|
239
|
-
更好的自驱分析
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
**关键:每次假设被确认或否定,都是一次学习信号。**
|
|
243
|
-
积累足够多的假设验证后,自驱推断的准确率会持续提高。
|