claude-pangu 2.2.7 → 2.2.9
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-plugin/plugin.json +1 -1
- package/README.md +1 -1
- package/agents/bianque-high.md +318 -0
- package/agents/build-fixer.md +199 -0
- package/agents/huoshen.md +514 -0
- package/agents/mozi-high.md +245 -0
- package/agents/mozi.md +127 -16
- package/commands/deepwork.md +13 -0
- package/commands/dw.md +13 -0
- package/commands/error.md +1 -1
- package/commands/huoshen.md +192 -0
- package/commands/xuetu.md +185 -22
- package/dist/lib/plugin-installer.d.ts.map +1 -1
- package/dist/lib/plugin-installer.js +53 -25
- package/dist/lib/plugin-installer.js.map +1 -1
- package/hooks/keyword-detector.sh +22 -0
- package/hooks/ralph-loop.sh +3 -0
- package/hooks/todo-continuation.sh +3 -0
- package/package.json +1 -1
- package/scripts/install.sh +97 -15
- package/skills/continuous-learning/skill.md +426 -0
- package/skills/deepwork/skill.md +479 -0
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: continuous-learning
|
|
3
|
+
description: |
|
|
4
|
+
持续学习技能 - 自动从会话中提取可复用模式并保存为学习成果。
|
|
5
|
+
灵感来自 ECC (Enhanced Claude Code) 的持续学习机制。
|
|
6
|
+
|
|
7
|
+
核心功能:
|
|
8
|
+
- 自动识别会话中的可复用模式
|
|
9
|
+
- 保存学习成果到 .claude/learned-patterns/
|
|
10
|
+
- 支持手动触发学习 (/xuetu)
|
|
11
|
+
- 通过 Stop hook 自动触发
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# 持续学习技能 (Continuous Learning)
|
|
15
|
+
|
|
16
|
+
基于 ECC 的持续学习机制,自动从开发会话中提取可复用的模式和经验。
|
|
17
|
+
|
|
18
|
+
## 核心理念
|
|
19
|
+
|
|
20
|
+
> **"学而时习之,不亦说乎"** —— 《论语》
|
|
21
|
+
>
|
|
22
|
+
> 从每次会话中学习,积累经验,持续进步。
|
|
23
|
+
|
|
24
|
+
## 工作原理
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
┌─────────────────────────────────────────────────┐
|
|
28
|
+
│ 持续学习工作流程 │
|
|
29
|
+
├─────────────────────────────────────────────────┤
|
|
30
|
+
│ │
|
|
31
|
+
│ 会话进行中 │
|
|
32
|
+
│ │ │
|
|
33
|
+
│ ▼ │
|
|
34
|
+
│ ┌──────────────┐ │
|
|
35
|
+
│ │ 模式识别 │ │
|
|
36
|
+
│ │ - 代码模式 │ │
|
|
37
|
+
│ │ - 解决方案 │ │
|
|
38
|
+
│ │ - 最佳实践 │ │
|
|
39
|
+
│ └──────┬───────┘ │
|
|
40
|
+
│ │ │
|
|
41
|
+
│ ▼ │
|
|
42
|
+
│ ┌──────────────┐ │
|
|
43
|
+
│ │ 价值评估 │ │
|
|
44
|
+
│ │ - 可复用性 │ │
|
|
45
|
+
│ │ - 通用性 │ │
|
|
46
|
+
│ │ - 正确性 │ │
|
|
47
|
+
│ └──────┬───────┘ │
|
|
48
|
+
│ │ │
|
|
49
|
+
│ ▼ │
|
|
50
|
+
│ ┌──────────────┐ │
|
|
51
|
+
│ │ 保存学习 │ │
|
|
52
|
+
│ │ → .claude/ │ │
|
|
53
|
+
│ │ learned- │ │
|
|
54
|
+
│ │ patterns/ │ │
|
|
55
|
+
│ └──────────────┘ │
|
|
56
|
+
│ │
|
|
57
|
+
└─────────────────────────────────────────────────┘
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## 学习内容分类
|
|
61
|
+
|
|
62
|
+
### 1. 代码模式 (Code Patterns)
|
|
63
|
+
|
|
64
|
+
从实现中提取可复用的代码模式:
|
|
65
|
+
|
|
66
|
+
```markdown
|
|
67
|
+
## 模式:React 表单验证
|
|
68
|
+
|
|
69
|
+
### 触发条件
|
|
70
|
+
- 实现表单验证逻辑
|
|
71
|
+
- 使用 react-hook-form
|
|
72
|
+
|
|
73
|
+
### 模式代码
|
|
74
|
+
\`\`\`typescript
|
|
75
|
+
import { useForm } from 'react-hook-form';
|
|
76
|
+
import { zodResolver } from '@hookform/resolvers/zod';
|
|
77
|
+
import { z } from 'zod';
|
|
78
|
+
|
|
79
|
+
const schema = z.object({
|
|
80
|
+
email: z.string().email('请输入有效邮箱'),
|
|
81
|
+
password: z.string().min(8, '密码至少8位'),
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
type FormData = z.infer<typeof schema>;
|
|
85
|
+
|
|
86
|
+
export function LoginForm() {
|
|
87
|
+
const { register, handleSubmit, formState: { errors } } = useForm<FormData>({
|
|
88
|
+
resolver: zodResolver(schema),
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
const onSubmit = (data: FormData) => {
|
|
92
|
+
// 处理提交
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
return (
|
|
96
|
+
<form onSubmit={handleSubmit(onSubmit)}>
|
|
97
|
+
{/* 表单字段 */}
|
|
98
|
+
</form>
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
\`\`\`
|
|
102
|
+
|
|
103
|
+
### 学习来源
|
|
104
|
+
- 会话: 2026-02-03-login-form
|
|
105
|
+
- 项目: my-app
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### 2. 问题解决方案 (Solutions)
|
|
109
|
+
|
|
110
|
+
记录遇到的问题和解决方案:
|
|
111
|
+
|
|
112
|
+
```markdown
|
|
113
|
+
## 解决方案:Next.js 13+ 中 cookies 在服务端组件中不可用
|
|
114
|
+
|
|
115
|
+
### 问题描述
|
|
116
|
+
在 Next.js 13+ 的服务端组件中尝试使用 cookies() 时报错:
|
|
117
|
+
"cookies can only be called in a Server Component or a Route Handler"
|
|
118
|
+
|
|
119
|
+
### 根本原因
|
|
120
|
+
cookies() 需要在异步上下文中调用,且只能在特定位置使用。
|
|
121
|
+
|
|
122
|
+
### 解决方案
|
|
123
|
+
\`\`\`typescript
|
|
124
|
+
// 1. 在 Server Component 中使用
|
|
125
|
+
import { cookies } from 'next/headers';
|
|
126
|
+
|
|
127
|
+
export default async function Page() {
|
|
128
|
+
const cookieStore = await cookies();
|
|
129
|
+
const token = cookieStore.get('token');
|
|
130
|
+
// ...
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// 2. 或在 Route Handler 中使用
|
|
134
|
+
import { cookies } from 'next/headers';
|
|
135
|
+
|
|
136
|
+
export async function GET() {
|
|
137
|
+
const cookieStore = await cookies();
|
|
138
|
+
// ...
|
|
139
|
+
}
|
|
140
|
+
\`\`\`
|
|
141
|
+
|
|
142
|
+
### 学习来源
|
|
143
|
+
- 会话: 2026-02-03-auth-fix
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### 3. 项目特定知识 (Project Knowledge)
|
|
147
|
+
|
|
148
|
+
记录项目特定的约定和知识:
|
|
149
|
+
|
|
150
|
+
```markdown
|
|
151
|
+
## 项目知识:API 响应格式
|
|
152
|
+
|
|
153
|
+
### 项目
|
|
154
|
+
my-saas-app
|
|
155
|
+
|
|
156
|
+
### 约定
|
|
157
|
+
所有 API 响应遵循统一格式:
|
|
158
|
+
|
|
159
|
+
\`\`\`typescript
|
|
160
|
+
interface ApiResponse<T> {
|
|
161
|
+
success: boolean;
|
|
162
|
+
data?: T;
|
|
163
|
+
error?: {
|
|
164
|
+
code: string;
|
|
165
|
+
message: string;
|
|
166
|
+
};
|
|
167
|
+
meta?: {
|
|
168
|
+
page?: number;
|
|
169
|
+
total?: number;
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
\`\`\`
|
|
173
|
+
|
|
174
|
+
### 示例
|
|
175
|
+
\`\`\`typescript
|
|
176
|
+
// 成功响应
|
|
177
|
+
{
|
|
178
|
+
"success": true,
|
|
179
|
+
"data": { "id": 1, "name": "John" },
|
|
180
|
+
"meta": { "page": 1, "total": 100 }
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// 错误响应
|
|
184
|
+
{
|
|
185
|
+
"success": false,
|
|
186
|
+
"error": {
|
|
187
|
+
"code": "VALIDATION_ERROR",
|
|
188
|
+
"message": "邮箱格式不正确"
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
\`\`\`
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### 4. 最佳实践 (Best Practices)
|
|
195
|
+
|
|
196
|
+
记录发现的最佳实践:
|
|
197
|
+
|
|
198
|
+
```markdown
|
|
199
|
+
## 最佳实践:数据库事务处理
|
|
200
|
+
|
|
201
|
+
### 场景
|
|
202
|
+
多表操作需要保证原子性
|
|
203
|
+
|
|
204
|
+
### 推荐做法
|
|
205
|
+
\`\`\`typescript
|
|
206
|
+
// 使用 Prisma 事务
|
|
207
|
+
const result = await prisma.$transaction(async (tx) => {
|
|
208
|
+
const user = await tx.user.create({ data: userData });
|
|
209
|
+
const profile = await tx.profile.create({
|
|
210
|
+
data: { ...profileData, userId: user.id }
|
|
211
|
+
});
|
|
212
|
+
return { user, profile };
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
// 使用 try-catch 处理事务失败
|
|
216
|
+
try {
|
|
217
|
+
const result = await prisma.$transaction([
|
|
218
|
+
prisma.user.create({ data: userData }),
|
|
219
|
+
prisma.order.create({ data: orderData }),
|
|
220
|
+
]);
|
|
221
|
+
} catch (error) {
|
|
222
|
+
// 事务自动回滚
|
|
223
|
+
console.error('事务失败:', error);
|
|
224
|
+
throw error;
|
|
225
|
+
}
|
|
226
|
+
\`\`\`
|
|
227
|
+
|
|
228
|
+
### 避免
|
|
229
|
+
- 手动管理事务状态
|
|
230
|
+
- 在事务中进行外部 API 调用
|
|
231
|
+
- 事务粒度过大
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## 存储结构
|
|
235
|
+
|
|
236
|
+
学习成果存储在 `.claude/learned-patterns/` 目录:
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
.claude/
|
|
240
|
+
└── learned-patterns/
|
|
241
|
+
├── index.json # 学习索引
|
|
242
|
+
├── code-patterns/ # 代码模式
|
|
243
|
+
│ ├── react-form.md
|
|
244
|
+
│ └── api-error-handling.md
|
|
245
|
+
├── solutions/ # 问题解决方案
|
|
246
|
+
│ ├── nextjs-cookies.md
|
|
247
|
+
│ └── prisma-connection.md
|
|
248
|
+
├── project-knowledge/ # 项目知识
|
|
249
|
+
│ └── api-conventions.md
|
|
250
|
+
└── best-practices/ # 最佳实践
|
|
251
|
+
├── database-transactions.md
|
|
252
|
+
└── error-handling.md
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### 索引文件格式
|
|
256
|
+
|
|
257
|
+
```json
|
|
258
|
+
{
|
|
259
|
+
"version": "1.0",
|
|
260
|
+
"lastUpdated": "2026-02-03T10:30:00Z",
|
|
261
|
+
"patterns": [
|
|
262
|
+
{
|
|
263
|
+
"id": "react-form-validation",
|
|
264
|
+
"category": "code-patterns",
|
|
265
|
+
"title": "React 表单验证",
|
|
266
|
+
"tags": ["react", "form", "validation", "zod"],
|
|
267
|
+
"file": "code-patterns/react-form.md",
|
|
268
|
+
"createdAt": "2026-02-03T10:30:00Z",
|
|
269
|
+
"usageCount": 3
|
|
270
|
+
}
|
|
271
|
+
]
|
|
272
|
+
}
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
## 触发方式
|
|
276
|
+
|
|
277
|
+
### 1. 手动触发
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
# 从当前会话学习
|
|
281
|
+
/xuetu
|
|
282
|
+
|
|
283
|
+
# 查看已学习的模式
|
|
284
|
+
/xuetu list
|
|
285
|
+
|
|
286
|
+
# 搜索学习成果
|
|
287
|
+
/xuetu search "form validation"
|
|
288
|
+
|
|
289
|
+
# 应用学习成果
|
|
290
|
+
/xuetu apply react-form-validation
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
### 2. 自动触发 (Stop Hook)
|
|
294
|
+
|
|
295
|
+
会话结束时自动分析并提取有价值的模式。
|
|
296
|
+
|
|
297
|
+
配置 `.claude/settings.json`:
|
|
298
|
+
|
|
299
|
+
```json
|
|
300
|
+
{
|
|
301
|
+
"omc": {
|
|
302
|
+
"continuousLearning": {
|
|
303
|
+
"enabled": true,
|
|
304
|
+
"autoLearn": true,
|
|
305
|
+
"minSessionLength": 10,
|
|
306
|
+
"categories": ["code-patterns", "solutions", "best-practices"]
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
## 学习评估标准
|
|
313
|
+
|
|
314
|
+
### 值得学习的内容
|
|
315
|
+
|
|
316
|
+
| 标准 | 权重 | 说明 |
|
|
317
|
+
|------|------|------|
|
|
318
|
+
| 可复用性 | 40% | 在其他场景能否复用 |
|
|
319
|
+
| 通用性 | 30% | 是否适用于多种项目 |
|
|
320
|
+
| 正确性 | 20% | 是否是正确的做法 |
|
|
321
|
+
| 复杂度 | 10% | 是否值得记录(过于简单的不记录) |
|
|
322
|
+
|
|
323
|
+
### 不学习的内容
|
|
324
|
+
|
|
325
|
+
- 项目特定的业务逻辑(除非明确标记)
|
|
326
|
+
- 临时的调试代码
|
|
327
|
+
- 明显的错误尝试
|
|
328
|
+
- 敏感信息(API key、密码等)
|
|
329
|
+
|
|
330
|
+
## 学习模式识别
|
|
331
|
+
|
|
332
|
+
### 自动识别信号
|
|
333
|
+
|
|
334
|
+
```
|
|
335
|
+
可学习内容的信号:
|
|
336
|
+
├── 重复出现的代码模式
|
|
337
|
+
├── 解决了特定问题的代码
|
|
338
|
+
├── 用户明确表示"这个方案好"
|
|
339
|
+
├── 通过测试验证的实现
|
|
340
|
+
└── 遵循最佳实践的代码
|
|
341
|
+
|
|
342
|
+
应跳过的信号:
|
|
343
|
+
├── 调试代码 (console.log, debugger)
|
|
344
|
+
├── TODO/FIXME 注释
|
|
345
|
+
├── 被删除或回滚的代码
|
|
346
|
+
├── 明确标记为临时的代码
|
|
347
|
+
└── 包含硬编码敏感信息的代码
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
## 与其他功能集成
|
|
351
|
+
|
|
352
|
+
### 与 /learn 集成
|
|
353
|
+
|
|
354
|
+
`/learn` 生成项目画像,`/xuetu` 积累个人/团队经验:
|
|
355
|
+
|
|
356
|
+
```
|
|
357
|
+
/learn → 项目级知识(结构、技术栈、规范)
|
|
358
|
+
/xuetu → 个人级知识(解决方案、模式、经验)
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
### 与 /yishan 集成
|
|
362
|
+
|
|
363
|
+
愚公在执行任务时会参考学习成果:
|
|
364
|
+
|
|
365
|
+
```
|
|
366
|
+
🏔️ 愚公
|
|
367
|
+
|
|
368
|
+
检测到相关学习成果:
|
|
369
|
+
- react-form-validation: React 表单验证模式
|
|
370
|
+
- api-error-handling: API 错误处理最佳实践
|
|
371
|
+
|
|
372
|
+
将参考这些模式进行实现...
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
### 与 Agent 集成
|
|
376
|
+
|
|
377
|
+
所有 Agent 都能访问学习成果:
|
|
378
|
+
|
|
379
|
+
- 🔧 鲁班: 参考代码模式
|
|
380
|
+
- 🎯 诸葛: 参考架构决策
|
|
381
|
+
- 📝 司马迁: 参考文档模板
|
|
382
|
+
|
|
383
|
+
## 使用示例
|
|
384
|
+
|
|
385
|
+
### 示例 1: 学习表单验证模式
|
|
386
|
+
|
|
387
|
+
```bash
|
|
388
|
+
# 会话中实现了一个表单验证
|
|
389
|
+
# Claude 自动识别这是一个可复用模式
|
|
390
|
+
|
|
391
|
+
/xuetu save "React 表单验证" --category code-patterns --tags react,form,zod
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
### 示例 2: 搜索学习成果
|
|
395
|
+
|
|
396
|
+
```bash
|
|
397
|
+
/xuetu search "authentication"
|
|
398
|
+
|
|
399
|
+
# 输出:
|
|
400
|
+
# 找到 3 个相关学习成果:
|
|
401
|
+
# 1. [solution] JWT 刷新令牌实现
|
|
402
|
+
# 2. [code-pattern] NextAuth 配置模式
|
|
403
|
+
# 3. [best-practice] 安全认证最佳实践
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
### 示例 3: 应用学习成果
|
|
407
|
+
|
|
408
|
+
```bash
|
|
409
|
+
/xuetu apply jwt-refresh-token
|
|
410
|
+
|
|
411
|
+
# Claude 会读取学习成果并应用到当前上下文
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
## 最佳实践
|
|
415
|
+
|
|
416
|
+
1. **定期回顾** - 每周回顾学习成果,清理过时的内容
|
|
417
|
+
2. **标签管理** - 使用一致的标签便于搜索
|
|
418
|
+
3. **团队共享** - 将 learned-patterns 目录加入版本控制与团队共享
|
|
419
|
+
4. **质量控制** - 只保存验证过的、正确的模式
|
|
420
|
+
|
|
421
|
+
## 隐私说明
|
|
422
|
+
|
|
423
|
+
- 学习成果存储在本地 `.claude/` 目录
|
|
424
|
+
- 不会自动上传到任何服务器
|
|
425
|
+
- 可通过 `.gitignore` 排除敏感内容
|
|
426
|
+
- 敏感信息会被自动过滤
|