@winspan/claude-forge 0.1.1 → 0.1.2

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/README.md CHANGED
@@ -7,13 +7,15 @@ SDLC 智能编排引擎 — 透明旁听 Claude Code 对话,让 Claude 越用
7
7
  ## 核心功能
8
8
 
9
9
  - **意图识别**:自动分析每条指令的复杂度,决定走直接执行还是多阶段编排
10
+ - **Pattern 工作流**:AI 语义匹配用户意图,按预定义多阶段 Pattern 注入结构化执行指令
10
11
  - **技能编排**:根据意图自动匹配并注入高质量技能(TDD、调试、重构、代码审查等)
11
- - **Team 模式**:复杂任务自动启动并行 Agent 分解——需求分析、代码搜索、方案规划三路并发,再汇总执行
12
+ - **Team 模式**:复杂任务自动启动并行 Agent 分解——需求分析、代码搜索、方案规划三路并发
12
13
  - **Pipeline 编排**:复杂任务自动拆解为 analyze → design → code → test → review 五阶段
13
14
  - **质量门禁**:Pipeline 模式下每次代码修改后自动触发 AI 审查
15
+ - **项目规范(Convention)**:根据项目技术栈 + 已安装规范自动蒸馏项目级自定义规范,注入 CLAUDE.md
14
16
  - **会话蒸馏**:将对话中的决策和时间线自动提炼为 `decisions.md` 和 `timeline.md`
15
17
  - **上下文续接**:会话中断后,下次打开自动恢复上次工作状态
16
- - **结构化事件日志**:所有 Hook 事件按项目分类写入 `events.jsonl`,支持 `claude-forge logs` 实时查看
18
+ - **结构化事件日志**:所有 Hook 事件按项目分类写入 `events.jsonl`,支持 `cf logs` 实时查看
17
19
  - **CLAUDE.md 优化**:根据积累的决策日志自动优化项目规范文件,支持多语言生态子模块扫描
18
20
  - **用户画像**:根据行为自适应调整干预深度(guided / balanced / autonomous)
19
21
 
@@ -30,18 +32,19 @@ SDLC 智能编排引擎 — 透明旁听 Claude Code 对话,让 Claude 越用
30
32
  ### 安装
31
33
 
32
34
  ```bash
33
- cd claude-forge
34
- npm install
35
- npm run build
35
+ # 从 npm 安装(推荐)
36
+ npm install -g @winspan/claude-forge
36
37
 
37
- # 可选:全局链接,之后可直接使用 claude-forge 命令
38
- npm link
38
+ # 或从源码构建
39
+ git clone <repo>
40
+ cd claude-forge
41
+ npm install && npm run build && npm link
39
42
  ```
40
43
 
41
44
  ### 初始化
42
45
 
43
46
  ```bash
44
- claude-forge init
47
+ cf init
45
48
  ```
46
49
 
47
50
  `init` 会完成:
@@ -54,34 +57,12 @@ claude-forge init
54
57
 
55
58
  ### 启动守护进程
56
59
 
57
- #### 方式一:交互式菜单(推荐)
58
-
59
60
  ```bash
60
- ./forge
61
- ```
61
+ # 交互式 TUI 菜单(无子命令时自动启动)
62
+ cf
62
63
 
63
- 首次运行自动引导初始化,之后显示交互式菜单。也可以直接传参数:
64
-
65
- ```bash
66
- ./forge start # 启动
67
- ./forge stop # 停止
68
- ./forge restart # 重启
69
- ./forge status # 查看状态
70
- ./forge logs # 查看日志
71
- ./forge sessions # 查看会话
72
- ./forge distill # 手动蒸馏
73
- ./forge backup # 备份数据
74
- ./forge config # 配置 API
75
- ```
76
-
77
- #### 方式二:CLI 命令
78
-
79
- ```bash
80
- claude-forge daemon start # 后台启动
81
- claude-forge daemon start --foreground # 前台启动(调试用)
82
- claude-forge daemon stop
83
- claude-forge daemon status
84
- claude-forge daemon restart
64
+ # 或直接启动守护进程
65
+ cf daemon start
85
66
  ```
86
67
 
87
68
  ### 验证运行
@@ -97,12 +78,6 @@ claude-forge daemon restart
97
78
  ┗━━━━━━━━━━━━━━━━━━━━
98
79
  ```
99
80
 
100
- 也可以实时查看日志:
101
-
102
- ```bash
103
- tail -f ~/.claude-forge/daemon.log | grep "\[Forge:"
104
- ```
105
-
106
81
  ---
107
82
 
108
83
  ## API Key 配置
@@ -111,16 +86,19 @@ Forge 自动从以下位置获取 API Key(优先级从高到低):
111
86
 
112
87
  1. 环境变量 `ANTHROPIC_AUTH_TOKEN`
113
88
  2. 环境变量 `ANTHROPIC_API_KEY`
114
- 3. 配置文件 `~/.claude-forge/config.yaml` 中的 `distill.api_key`(已废弃,存在泄露风险)
89
+ 3. 配置文件 `~/.claude-forge/config.yaml` 中的 `distill.api_key`
115
90
 
116
- **推荐做法**:通过 shell profile 设置环境变量,避免明文写入配置文件:
91
+ **推荐做法**:通过 shell profile 设置环境变量:
117
92
 
118
93
  ```bash
119
- # 添加到 ~/.zshrc 或 ~/.bashrc
120
94
  export ANTHROPIC_API_KEY="sk-ant-..."
121
95
  ```
122
96
 
123
- 如果你的环境已经配置了 Claude Code,API Key 会自动生效。如需使用自定义 API 端点(如代理服务),通过 `./forge config` 配置 `base_url`。
97
+ 如需使用自定义 API 端点(如代理服务):
98
+
99
+ ```bash
100
+ cf config set distill.base_url https://your-proxy.example.com
101
+ ```
124
102
 
125
103
  ---
126
104
 
@@ -135,7 +113,7 @@ Hook 脚本(bash)发送 JSON 事件到 Unix Socket
135
113
 
136
114
  守护进程接收 → 解析 → 分发到对应 Handler → 写入 events.jsonl
137
115
 
138
- UserPromptHandler → 意图分析 + 技能关键词更新 + Team 模式注入
116
+ UserPromptHandler → 意图分析 + Pattern 路由 + 知识注入 + Pipeline 建议
139
117
  PreToolUseHandler → 技能推荐注入 + Pipeline 阶段指令
140
118
  PostToolUseHandler → 质量门禁 + Pipeline 进度跟踪 + 命中率记录
141
119
  StopHandler → 蒸馏 + 续接快照 + 技能进化 + CLAUDE.md 自动更新
@@ -153,166 +131,169 @@ Claude 读取 additionalContext,按指令执行
153
131
  | `~/.claude-forge/data.db` | SQLite 数据库 |
154
132
  | `~/.claude-forge/config.yaml` | 配置文件 |
155
133
  | `~/.claude-forge/daemon.log` | 守护进程日志 |
156
- | `~/.claude-forge/events.jsonl` | 结构化事件日志(JSONL 格式,按项目分类) |
134
+ | `~/.claude-forge/events.jsonl` | 结构化事件日志(JSONL,按项目分类) |
157
135
  | `~/.claude-forge/orchestration-config.json` | 技能编排关键词映射 |
158
- | `~/.claude-forge/knowledge/` | 知识库文件 |
136
+ | `~/.claude-forge/patterns/` | Pattern 工作流定义(YAML) |
159
137
  | `{project}/.claude-forge/decisions.md` | 项目决策日志 |
160
138
  | `{project}/.claude-forge/timeline.md` | 项目时间线 |
161
- | `{project}/.claude/CLAUDE.md` | 续接上下文注入点 |
162
-
163
- ### 日志标签
164
-
165
- | 标签 | 模块 |
166
- |------|------|
167
- | `[Forge:意图]` | 意图分析 |
168
- | `[Forge:知识库]` | 知识库搜索 |
169
- | `[Forge:Pipeline]` | Pipeline 编排 |
170
- | `[Forge:处理器]` | 通用 Handler |
171
- | `[Forge:编排]` | 技能编排匹配 |
172
- | `[Forge:技能]` | 技能推荐 |
173
- | `[Forge:质量门禁]` | 质量门禁审查 |
174
- | `[Forge:蒸馏]` | 蒸馏触发 |
175
- | `[Forge:画像]` | 用户画像 |
176
- | `[Forge:团队]` | Team 模式并行 Agent 分解 |
177
- | `[Forge:决策]` | 决策历史注入与去重 |
178
- | `[Forge:预算]` | 上下文预算分配 |
179
- | `[进化器]` | 技能进化 |
139
+ | `{project}/.claude-forge/custom-convention.yaml` | 项目级自定义规范 |
180
140
 
181
141
  ---
182
142
 
183
143
  ## CLI 命令参考
184
144
 
145
+ CLI 入口:`claude-forge`(完整命令)或 `cf`(别名)。无子命令时自动启动交互式 TUI 菜单。
146
+
185
147
  ### daemon — 守护进程管理
186
148
 
187
149
  ```bash
188
- claude-forge daemon start [-f] # 启动(-f 前台模式)
189
- claude-forge daemon stop # 停止
190
- claude-forge daemon status # 查看状态
191
- claude-forge daemon restart # 重启
150
+ cf daemon start [-f] # 启动(-f 前台模式)
151
+ cf daemon stop # 停止
152
+ cf daemon status # 查看状态
153
+ cf daemon restart # 重启
154
+ ```
155
+
156
+ ### convention — 项目规范管理
157
+
158
+ Convention 系统根据项目技术栈和已安装的源规范,自动蒸馏生成项目级自定义规范,并注入 CLAUDE.md。
159
+
160
+ ```bash
161
+ cf convention list # 列出所有已安装的源规范
162
+ cf convention show <id> # 查看规范详情
163
+ cf convention add <url|path> # 安装源规范(自动触发蒸馏)
164
+ cf convention distill # 将已安装规范蒸馏为项目自定义规范
165
+ cf convention status # 查看当前项目规范绑定状态
166
+ cf convention evolve # AI 自进化自定义规范(基于决策日志)
192
167
  ```
193
168
 
169
+ **蒸馏逻辑**:
170
+ - 无源规范时:根据项目技术栈自动生成规范
171
+ - 有源规范时:融合所有源规范的核心优势,冲突维度生成"视场景而定"的折中原则
172
+ - 已有自定义规范时:增量合并,不删除现有内容
173
+
174
+ **自动初始化**:在未初始化的项目中打开 Claude Code 时,Forge 会自动提示是否初始化,确认后自动执行 `cf convention distill`。
175
+
176
+ ### pattern — Pattern 工作流
177
+
178
+ Pattern 是多阶段工作流定义,存储在 `~/.claude-forge/patterns/*.yaml`。Forge 根据用户意图 AI 语义匹配最合适的 Pattern,并按阶段注入结构化执行指令。
179
+
180
+ ```bash
181
+ cf pattern list # 列出所有已安装的 Pattern
182
+ cf pattern show <id> # 查看 Pattern 详情
183
+ cf pattern evolve [id] # AI 自进化(基于执行历史优化 YAML)
184
+ ```
185
+
186
+ **内置 Pattern**:
187
+ - `bmad` — BMad 敏捷开发模式(产品分析 → 架构设计 → 编码实现 → 代码审查)
188
+ - `harness-engineering` — 安全重构模式(理解 → 织网 → 修改 → 验证)
189
+ - `spec-driven` — 规格驱动开发
190
+
194
191
  ### skill — 技能管理
195
192
 
196
193
  ```bash
197
- claude-forge skill list # 列出所有技能
198
- claude-forge skill search <query> # 搜索技能
199
- claude-forge skill install <url> # 从 URL 安装技能
200
- claude-forge skill evolve # 触发技能进化(淘汰低质量、生成项目专属)
194
+ cf skill list # 列出所有技能
195
+ cf skill search <query> # 搜索技能
196
+ cf skill install <url> # 从 URL 安装技能
197
+ cf skill evolve # 触发技能进化(淘汰低质量、生成项目专属)
198
+ cf skill distill # 手动触发社区蒸馏
199
+ cf skill orchestration list # 查看编排关键词映射(含命中率统计)
200
+ ```
201
+
202
+ ### pipeline — Pipeline 编排
203
+
204
+ ```bash
205
+ cf pipeline list # 查看活跃 Pipeline
206
+ cf pipeline close --expired # 关闭过期 Pipeline(>2小时未更新)
207
+ cf pipeline close --all # 关闭全部 Pipeline
208
+ cf pipeline close <id> # 关闭指定 Pipeline
201
209
  ```
202
210
 
203
211
  ### profile — 用户画像
204
212
 
205
213
  ```bash
206
- claude-forge profile show # 查看当前画像
207
- claude-forge profile init # 冷启动初始化(从现有数据推断)
208
- claude-forge profile set # 更新画像字段
209
- claude-forge profile reset # 重置为默认值
210
- claude-forge profile export # 导出画像文件
211
- claude-forge profile evolve # AI 分析行为日志,自动进化画像
214
+ cf profile show # 查看当前画像
215
+ cf profile init [--infer] # 初始化(--infer 从现有数据推断)
216
+ cf profile set # 更新画像字段
217
+ cf profile reset # 重置为默认值
218
+ cf profile export # 导出画像文件
219
+ cf profile evolve # AI 分析行为日志,自动进化画像
212
220
  ```
213
221
 
214
- `profile init` / `profile set` 支持的选项:
222
+ `profile set` 支持的选项:
215
223
 
216
224
  | 选项 | 说明 |
217
225
  |------|------|
218
- | `--role <role>` | 角色(如 backend / frontend / fullstack) |
226
+ | `--role <role>` | 角色(backend / frontend / fullstack) |
219
227
  | `--level <level>` | 经验水平(junior / mid / senior) |
220
228
  | `--style <style>` | 工作风格(guided / balanced / autonomous) |
221
229
  | `--stack <stack>` | 技术栈(逗号分隔) |
222
- | `--infer`(仅 init)| 从现有数据自动推断 |
223
230
 
224
- ### distill手动蒸馏
231
+ ### claudemdCLAUDE.md 管理
225
232
 
226
233
  ```bash
227
- claude-forge distill # 立即蒸馏
228
- claude-forge distill -s <session-id> # 蒸馏指定会话
229
- claude-forge distill -p <project-path> # 蒸馏指定项目
234
+ cf claudemd detect # 检测项目技术栈(无需 API)
235
+ cf claudemd init # 生成项目级 CLAUDE.md
236
+ cf claudemd init -m # 生成模块级 CLAUDE.md(继承父项目规范)
237
+ cf claudemd init -f # 强制重新生成(覆盖已有)
238
+ cf claudemd scan # 扫描并批量生成所有子模块的 CLAUDE.md
239
+ cf claudemd refine # 基于蒸馏数据手动触发 CLAUDE.md 细化
240
+ cf claudemd show # 查看当前 CLAUDE.md 内容
241
+ cf claudemd modules show # 查看业务模块配置
242
+ cf claudemd modules add-root <dir> # 将目录下每个子目录视为独立模块
243
+ cf claudemd modules add-dir <path> # 将具体路径注册为独立模块
244
+ cf claudemd modules skip <dir> # 扫描时跳过该目录
230
245
  ```
231
246
 
232
247
  ### logs — 事件日志查看
233
248
 
234
249
  ```bash
235
- claude-forge logs # 查看最近事件
236
- claude-forge logs -p <name> # 按项目名过滤
237
- claude-forge logs -n <N> # 只看最后 N 条
238
- claude-forge logs -l <level> # 按日志级别过滤
239
- claude-forge logs -e <event-type> # 按事件类型过滤
240
- claude-forge logs --since <time> # 查看指定时间之后的日志
241
- claude-forge logs -f # 实时跟踪(follow)
242
- claude-forge logs --daemon # 只看守护进程日志
243
- claude-forge logs --compact # 紧凑格式
244
- claude-forge logs --raw # 原始 JSON 输出
245
- claude-forge logs --projects # 列出所有有日志的项目名
250
+ cf logs # 查看最近事件(过滤 PreToolUse/PostToolUse 噪音)
251
+ cf logs --verbose # 查看所有事件(含 PreToolUse/PostToolUse)
252
+ cf logs -p <name> # 按项目名过滤
253
+ cf logs -n <N> # 只看最后 N 条
254
+ cf logs -f # 实时跟踪(follow)
255
+ cf logs --daemon # 只看守护进程日志
256
+ cf logs --projects # 列出所有有日志的项目名
246
257
  ```
247
258
 
248
- ### query数据查询
259
+ ### distill手动蒸馏
249
260
 
250
261
  ```bash
251
- claude-forge query stats # 统计信息
252
- claude-forge query sessions # 会话列表(支持 -p / -s / -l)
253
- claude-forge query events # 事件列表(支持 -s / -t / --from / --to / -l)
262
+ cf distill # 立即蒸馏
263
+ cf distill -s <session-id> # 蒸馏指定会话
264
+ cf distill -p <project-path> # 蒸馏指定项目
254
265
  ```
255
266
 
256
267
  ### config — 配置管理
257
268
 
258
269
  ```bash
259
- claude-forge config show # 查看当前配置
260
- claude-forge config set <key> <value> # 设置配置项(支持嵌套键,如 distill.api_key
261
- claude-forge config reset # 重置为默认值
270
+ cf config show # 查看当前配置
271
+ cf config set <key> <value> # 设置配置项(支持嵌套键,如 distill.base_url
272
+ cf config reset # 重置为默认值
262
273
  ```
263
274
 
264
275
  ### backup — 备份与恢复
265
276
 
266
277
  ```bash
267
- claude-forge backup # 创建备份
268
- claude-forge backup -e # 加密备份
269
- claude-forge backup -o <path> # 指定输出路径
270
- claude-forge restore <file> # 从备份恢复(默认策略:merge)
271
- claude-forge restore <file> -s overwrite # 覆盖恢复
272
- claude-forge export -p <project> # 导出指定项目数据
273
- ```
274
-
275
- ### claudemd — CLAUDE.md 管理
276
-
277
- ```bash
278
- claude-forge claudemd detect # 检测项目技术栈(无需 API)
279
- claude-forge claudemd init # 生成项目级 CLAUDE.md
280
- claude-forge claudemd init -m # 生成模块级 CLAUDE.md(继承父项目规范)
281
- claude-forge claudemd init -f # 强制重新生成(覆盖已有)
282
- claude-forge claudemd init -f --reset # 完全重置(丢弃用户内容)
283
- claude-forge claudemd scan # 扫描并批量生成所有子模块的 CLAUDE.md
284
- claude-forge claudemd refine # 基于蒸馏数据手动触发 CLAUDE.md 细化
285
- claude-forge claudemd show # 查看当前 CLAUDE.md 内容
286
- ```
287
-
288
- 所有子命令支持 `-p, --project <path>` 指定项目路径(默认 `cwd`)。
289
-
290
- #### 业务模块配置(.forge-modules.yaml)
291
-
292
- `claudemd scan` 默认通过语言标记文件(`package.json`、`go.mod` 等)自动识别子模块。对于没有构建系统的业务功能模块(如 `services/user`、`modules/payment`),可以用 `claudemd modules` 手动配置:
293
-
294
- ```bash
295
- claude-forge claudemd modules show # 查看当前配置
296
- claude-forge claudemd modules add-root services # services/ 下每个子目录视为独立模块
297
- claude-forge claudemd modules add-dir infrastructure/k8s # 将具体路径注册为独立模块
298
- claude-forge claudemd modules skip legacy # 扫描时跳过该目录
299
- claude-forge claudemd modules remove root services # 移除配置项(root | dir | skip)
278
+ cf backup # 创建备份
279
+ cf restore <file> # 从备份恢复
280
+ cf export -p <project> # 导出指定项目数据
300
281
  ```
301
282
 
302
- 配置写入项目根目录的 `.forge-modules.yaml`,`claudemd scan` 自动读取,三类配置结果自动去重合并。
303
-
304
283
  ### 其他
305
284
 
306
285
  ```bash
307
- claude-forge init # 初始化(注册 Hook)
308
- claude-forge uninit # 卸载(移除 Hook,数据保留)
286
+ cf init # 初始化(注册 Hook)
287
+ cf uninit # 卸载(移除 Hook,数据保留)
288
+ cf query stats # 统计信息
289
+ cf query sessions # 会话列表
309
290
  ```
310
291
 
311
292
  ---
312
293
 
313
294
  ## 配置说明
314
295
 
315
- 配置文件位于 `~/.claude-forge/config.yaml`,所有选项均可通过 `CLAUDE_FORGE_*` 环境变量覆盖。
296
+ 配置文件位于 `~/.claude-forge/config.yaml`。
316
297
 
317
298
  ```yaml
318
299
  # 存储
@@ -335,11 +316,6 @@ resume:
335
316
  timeout_minutes: 10
336
317
  max_age_days: 7
337
318
 
338
- # 备份
339
- backup:
340
- include_profile: false
341
- encrypt_by_default: false
342
-
343
319
  # CLAUDE.md 自动生成
344
320
  claudemd:
345
321
  auto_generate: true
@@ -353,9 +329,15 @@ autopilot:
353
329
  knowledge_search: true
354
330
  quality_gate: true
355
331
  quality_review_interval: 3 # 每 N 次代码修改触发一次审查
356
- knowledge_max_age_days: 90
357
332
  auto_start_pipeline: true
358
333
  pipeline_confirm_mode: prompt # prompt | auto | preview
334
+
335
+ # Pattern 引擎
336
+ pattern_engine:
337
+ enabled: true
338
+ route_timeout_ms: 60000
339
+ evolve_interval_days: 7
340
+ evolve_min_executions: 20
359
341
  ```
360
342
 
361
343
  ### pipeline_confirm_mode 说明
@@ -368,19 +350,25 @@ autopilot:
368
350
 
369
351
  ---
370
352
 
371
- ## 意图识别
353
+ ## 意图识别与编排
372
354
 
373
- | 复杂度 | 条件 | 是否走 Pipeline |
374
- |--------|------|----------------|
375
- | simple | 查询、git 操作、无代码改动 | 否 |
376
- | moderate | 1-5 个文件改动、范围明确 | 否 |
377
- | complex | 6+ 文件、架构变更、范围不清 | 是 |
355
+ ### 复杂度分级
378
356
 
379
- ---
357
+ | 复杂度 | 条件 | 执行路径 |
358
+ |--------|------|---------|
359
+ | `simple` | 查询、git 操作、无代码改动 | 直接放行 |
360
+ | `moderate` | 1-5 个文件改动、范围明确 | 注入技能提示 |
361
+ | `complex` | 6+ 文件、架构变更、范围不清 | Pattern 路由 → Pipeline |
362
+
363
+ ### Pattern 路由优先级
380
364
 
381
- ## Pipeline 编排
365
+ 1. **Pattern 路由**(AI 语义匹配)— 命中则按 Pattern 阶段执行
366
+ 2. **Pipeline 编排**(复杂度 complex)— 未命中 Pattern 时启动
367
+ 3. **技能注入**(moderate)— 直接注入相关技能提示
382
368
 
383
- 意图分析判断为 `complex` 时,Forge 展示三种方案:
369
+ ### Pipeline 方案
370
+
371
+ 意图分析判断为 `complex` 且未命中 Pattern 时,Forge 展示三种方案:
384
372
 
385
373
  ```
386
374
  A. 完整编排(推荐)— analyze → design → code → test → review
@@ -388,24 +376,16 @@ B. 快速编排 — design → code → test
388
376
  C. 手动控制 — 不使用自动编排
389
377
  ```
390
378
 
391
- Pipeline 运行期间,每次代码修改后自动触发质量门禁审查(spec / security / quality / test / performance)。
392
-
393
- ---
394
-
395
- ## Team 模式
379
+ ### Team 模式
396
380
 
397
381
  同时满足以下条件时自动启用:复杂度为 `complex`、预估文件 > 5、需要 Pipeline。
398
382
 
399
- 启用后要求 Claude 并行启动三个子 Agent:
400
-
401
383
  | 子 Agent | 职责 |
402
384
  |----------|------|
403
385
  | Agent A — 需求分析 | 分析核心功能点、边界条件、验收标准 |
404
386
  | Agent B — 代码库搜索 | 定位相关文件、测试和可复用组件 |
405
387
  | Agent C — 方案规划 | 制定文件改动清单和分阶段实现步骤 |
406
388
 
407
- > Team 模式仅在 `pipeline_confirm_mode: auto` 或 `interventionLevel: auto` 时触发。
408
-
409
389
  ---
410
390
 
411
391
  ## 用户画像
@@ -417,7 +397,7 @@ Pipeline 运行期间,每次代码修改后自动触发质量门禁审查(sp
417
397
  | `autonomous` | 静默模式,不注入任何上下文 |
418
398
 
419
399
  ```bash
420
- claude-forge profile set --style autonomous
400
+ cf profile set --style autonomous
421
401
  ```
422
402
 
423
403
  ---
@@ -461,8 +441,8 @@ npm rebuild better-sqlite3
461
441
  **Q: 如何查看 Forge 是否在工作?**
462
442
 
463
443
  ```bash
464
- claude-forge daemon status
465
- tail -f ~/.claude-forge/daemon.log | grep "\[Forge:"
444
+ cf daemon status
445
+ cf logs -f
466
446
  ```
467
447
 
468
448
  **Q: 重装 Node.js 后守护进程启动失败?**
@@ -480,7 +460,7 @@ autopilot:
480
460
  quality_gate: false
481
461
  ```
482
462
 
483
- 重启守护进程生效:`claude-forge daemon restart`
463
+ 重启守护进程生效:`cf daemon restart`
484
464
 
485
465
  **Q: decisions.md 和 timeline.md 在哪里?**
486
466
 
@@ -488,14 +468,15 @@ autopilot:
488
468
  your-project/
489
469
  └── .claude-forge/
490
470
  ├── decisions.md
491
- └── timeline.md
471
+ ├── timeline.md
472
+ └── custom-convention.yaml
492
473
  ```
493
474
 
494
475
  **Q: 如何完全卸载?**
495
476
 
496
477
  ```bash
497
- claude-forge uninit # 移除 Hook(保留数据)
498
- rm -rf ~/.claude-forge # 彻底清除数据
478
+ cf uninit # 移除 Hook(保留数据)
479
+ rm -rf ~/.claude-forge # 彻底清除数据
499
480
  ```
500
481
 
501
482
  ---
@@ -1 +1 @@
1
- {"version":3,"file":"pre-tool-use-handler.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/pre-tool-use-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKpD,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;gBAE3C,GAAG,EAAE,cAAc;IAIzB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IA6C7D,OAAO,CAAC,mBAAmB;CAkB5B"}
1
+ {"version":3,"file":"pre-tool-use-handler.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/pre-tool-use-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAKpD,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;gBAE3C,GAAG,EAAE,cAAc;IAIzB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IA8C7D,OAAO,CAAC,mBAAmB;CAkB5B"}
@@ -21,7 +21,8 @@ export class PreToolUseHandler extends BaseHookHandler {
21
21
  // 2. Skill 推荐注入
22
22
  const skillRec = await skillRegistry.processEvent(event);
23
23
  if (skillRec) {
24
- logger.info(`[Forge:技能] 已注入推荐:${event.tool_name}`);
24
+ const preview = skillRec.replace(/\[Forge 自动编排\]\s*/, '').split('\n')[0].substring(0, 80);
25
+ logger.info(`[Forge:技能] 已注入推荐(触发工具:${event.tool_name}):${preview}`);
25
26
  decision = this.appendContext(decision, ForgeFormatter.formatModuleNotification('skill', skillRec));
26
27
  }
27
28
  // 3. Pipeline 阶段指令注入
@@ -1 +1 @@
1
- {"version":3,"file":"pre-tool-use-handler.js","sourceRoot":"","sources":["../../../src/daemon/handlers/pre-tool-use-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pre-tool-use-handler.js","sourceRoot":"","sources":["../../../src/daemon/handlers/pre-tool-use-handler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,OAAO,iBAAkB,SAAQ,eAAe;IACnC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;IAEvD,YAAY,GAAmB;QAC7B,KAAK,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAiB;QAC5B,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;QAEzG,IAAI,QAAQ,GAAwB,IAAI,CAAC;QAEzC,0BAA0B;QAC1B,IAAI,aAAa,EAAE,CAAC;YAClB,QAAQ,GAAG,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC,oBAAoB,KAAK,CAAC,SAAS,aAAa,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC/E,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QAED,gBAAgB;QAChB,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1F,MAAM,CAAC,IAAI,CAAC,yBAAyB,KAAK,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC,CAAC;YACpE,QAAQ,GAAG,IAAI,CAAC,aAAa,CAC3B,QAAQ,EACR,cAAc,CAAC,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAC3D,CAAC;QACJ,CAAC;QAED,qBAAqB;QACrB,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,mBAAmB,GAAG,MAAM,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACzE,IAAI,mBAAmB,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,4BAA4B,mBAAmB,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;gBACnF,QAAQ,GAAG,IAAI,CAAC,aAAa,CAC3B,QAAQ,EACR,cAAc,CAAC,wBAAwB,CAAC,UAAU,EAAE,mBAAmB,CAAC,CACzE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7C,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACxC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAC5F,CAAC;QAED,OAAO,QAAQ,IAAI,SAAS,CAAC;IAC/B,CAAC;IAEO,mBAAmB,CACzB,WAAmB,EACnB,YAAqB,EACrB,YAA4C;QAE5C,CAAC,KAAK,IAAI,EAAE;YACV,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC;oBACH,MAAM,YAAY,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;gBACjD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@winspan/claude-forge",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "description": "SDLC intelligent orchestration engine for Claude Code",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",