agent-configs 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.
Files changed (85) hide show
  1. package/README.md +223 -0
  2. package/agents/architect.md +211 -0
  3. package/agents/code-reviewer.md +104 -0
  4. package/agents/planner.md +119 -0
  5. package/agents/refactor-cleaner.md +306 -0
  6. package/agents/security-reviewer.md +545 -0
  7. package/agents/tdd-guide.md +280 -0
  8. package/bundles/bk-chat-bundle/README.md +48 -0
  9. package/bundles/bk-chat-bundle/manifest.json +10 -0
  10. package/bundles/continuous-learning/.claude/commands/evolve.md +190 -0
  11. package/bundles/continuous-learning/.claude/commands/instinct-status.md +64 -0
  12. package/bundles/continuous-learning/.claude/commands/learn.md +83 -0
  13. package/bundles/continuous-learning/.claude/hooks/learning-end.js +85 -0
  14. package/bundles/continuous-learning/.claude/hooks/observe.js +131 -0
  15. package/bundles/continuous-learning/.claude/lib/learning.js +559 -0
  16. package/bundles/continuous-learning/.claude/lib/utils.js +312 -0
  17. package/bundles/continuous-learning/.claude/skills/continuous-learning/SKILL.md +200 -0
  18. package/bundles/continuous-learning/.cursor/hooks/learning-end.js +102 -0
  19. package/bundles/continuous-learning/.cursor/rules/continuous-learning.mdc +34 -0
  20. package/bundles/continuous-learning/.cursor/skills/continuous-learning/SKILL.md +77 -0
  21. package/bundles/continuous-learning/README.md +159 -0
  22. package/bundles/continuous-learning/manifest.json +51 -0
  23. package/bundles/planning-bundle/README.md +34 -0
  24. package/bundles/planning-bundle/manifest.json +10 -0
  25. package/bundles/review-bundle/README.md +43 -0
  26. package/bundles/review-bundle/manifest.json +11 -0
  27. package/bundles/shared-memory/.claude/commands/list-sessions.md +124 -0
  28. package/bundles/shared-memory/.claude/commands/load-session.md +169 -0
  29. package/bundles/shared-memory/.claude/commands/save-session.md +137 -0
  30. package/bundles/shared-memory/.claude/hooks/memory-compact.js +43 -0
  31. package/bundles/shared-memory/.claude/hooks/memory-end.js +42 -0
  32. package/bundles/shared-memory/.claude/hooks/memory-start.js +59 -0
  33. package/bundles/shared-memory/.claude/lib/memory.js +416 -0
  34. package/bundles/shared-memory/.claude/lib/utils.js +209 -0
  35. package/bundles/shared-memory/.claude/skills/shared-memory/SKILL.md +183 -0
  36. package/bundles/shared-memory/.cursor/hooks/memory-start.js +42 -0
  37. package/bundles/shared-memory/.cursor/rules/shared-memory.mdc +37 -0
  38. package/bundles/shared-memory/.cursor/skills/shared-memory/SKILL.md +183 -0
  39. package/bundles/tdd-bundle/README.md +33 -0
  40. package/bundles/tdd-bundle/manifest.json +10 -0
  41. package/cli.js +978 -0
  42. package/commands/build-fix.md +29 -0
  43. package/commands/code-review.md +40 -0
  44. package/commands/e2e.md +363 -0
  45. package/commands/learn.md +114 -0
  46. package/commands/plan.md +113 -0
  47. package/commands/refactor-clean.md +28 -0
  48. package/commands/tdd.md +326 -0
  49. package/commands/test-coverage.md +27 -0
  50. package/commands/update-codemaps.md +17 -0
  51. package/commands/update-docs.md +31 -0
  52. package/configs.json +158 -0
  53. package/hooks/hooks.json +101 -0
  54. package/package.json +58 -0
  55. package/rules/agents.md +49 -0
  56. package/rules/coding-style.md +70 -0
  57. package/rules/git-workflow.md +45 -0
  58. package/rules/hooks.md +46 -0
  59. package/rules/patterns.md +55 -0
  60. package/rules/performance.md +47 -0
  61. package/rules/security.md +36 -0
  62. package/rules/testing.md +30 -0
  63. package/skills/ai-config-architect/SKILL.md +59 -0
  64. package/skills/ai-config-architect/references/agents.md +77 -0
  65. package/skills/ai-config-architect/references/commands.md +66 -0
  66. package/skills/ai-config-architect/references/hooks.md +70 -0
  67. package/skills/ai-config-architect/references/patterns.md +66 -0
  68. package/skills/ai-config-architect/references/platforms.md +82 -0
  69. package/skills/ai-config-architect/references/rules.md +66 -0
  70. package/skills/ai-config-architect/references/skills.md +67 -0
  71. package/skills/bk-chat-helper/SKILL.md +398 -0
  72. package/skills/bk-chat-helper/references/api-reference.md +606 -0
  73. package/skills/bk-chat-helper/references/examples.md +789 -0
  74. package/skills/bk-chat-helper/references/integration-guide.md +583 -0
  75. package/skills/bk-chat-x/SKILL.md +400 -0
  76. package/skills/bk-chat-x/references/components-api.md +340 -0
  77. package/skills/bk-chat-x/references/examples.md +386 -0
  78. package/skills/bk-chat-x/references/shortcuts-guide.md +375 -0
  79. package/skills/coding-standards/SKILL.md +523 -0
  80. package/skills/security-review/SKILL.md +497 -0
  81. package/skills/security-review/references/cloud-infrastructure-security.md +361 -0
  82. package/skills/strategic-compact/SKILL.md +66 -0
  83. package/skills/strategic-compact/scripts/suggest-compact.sh +52 -0
  84. package/skills/tdd-workflow/SKILL.md +412 -0
  85. package/skills/verification-loop/SKILL.md +128 -0
@@ -0,0 +1,398 @@
1
+ ---
2
+ name: bk-chat-helper
3
+ description: 蓝鲸智云 AI Chat Helper SDK 使用指南,提供 AI 对话的业务逻辑层(会话管理、消息管理、流式响应、Agent 集成)。**必须与 bk-chat-x skill 配合使用**:chat-x 负责 UI 渲染,chat-helper 负责状态和 API。当用户开发 AI 小鲸、智能体、AI 聊天功能时,应同时参考这两个 skill。
4
+ metadata:
5
+ author: blueking
6
+ version: "1.0"
7
+ ---
8
+
9
+ # @blueking/chat-helper SDK 使用指南
10
+
11
+ ## 快速开始
12
+
13
+ ### 安装
14
+
15
+ ```bash
16
+ pnpm add @blueking/chat-helper
17
+ ```
18
+
19
+ ### 基础配置
20
+
21
+ ```typescript
22
+ import { useChatHelper, AGUIProtocol } from '@blueking/chat-helper';
23
+
24
+ const chatHelper = useChatHelper({
25
+ requestData: {
26
+ urlPrefix: 'https://your-api.com/api/',
27
+ headers: () => ({
28
+ Authorization: `Bearer ${getToken()}`,
29
+ }),
30
+ data: () => ({
31
+ app_id: 'your-app-id',
32
+ }),
33
+ },
34
+ protocol: new AGUIProtocol({
35
+ onStart: () => console.log('开始响应'),
36
+ onDone: () => console.log('响应完成'),
37
+ onError: (error) => console.error('错误:', error),
38
+ }),
39
+ });
40
+
41
+ // 解构模块
42
+ const { agent, session, message, http } = chatHelper;
43
+ ```
44
+
45
+ ## 核心架构
46
+
47
+ `chat-helper` 采用**中介者模式**协调模块通信,核心模块:
48
+
49
+ | 模块 | 职责 | 响应式数据 |
50
+ |------|------|-----------|
51
+ | agent | AI 代理管理、聊天发送 | `info`, `isInfoLoading`, `isChatting` |
52
+ | session | 会话 CRUD、切换 | `list`, `current`, `isXxxLoading` |
53
+ | message | 消息 CRUD、状态管理 | `list`, `isListLoading` |
54
+ | http | 底层 HTTP 请求 | - |
55
+
56
+ **数据流向**:
57
+ ```
58
+ 用户操作 → Agent/Session/Message → Mediator → HTTP → 后端 API
59
+ ↑ ↓
60
+ ←────────── 流式事件/响应数据 ←─────────
61
+ ```
62
+
63
+ ## 模块 API 速查
64
+
65
+ ### Agent 模块
66
+
67
+ ```typescript
68
+ // 响应式数据
69
+ agent.info // Ref<IAgentInfo | null>
70
+ agent.isInfoLoading // Ref<boolean>
71
+ agent.isChatting // Ref<boolean>
72
+
73
+ // 方法
74
+ agent.getAgentInfo() // 获取 Agent 信息
75
+ agent.chat(userInput, sessionCode, url?, config?) // 发送消息
76
+ agent.stopChat() // 停止聊天
77
+ agent.resumeStreamingChat(sessionCode) // 恢复流式聊天
78
+ ```
79
+
80
+ ### Session 模块
81
+
82
+ ```typescript
83
+ // 响应式数据
84
+ session.list // Ref<ISession[]>
85
+ session.current // Ref<ISession | null>
86
+ session.isListLoading // Ref<boolean>
87
+
88
+ // 方法
89
+ session.getSessions() // 获取会话列表
90
+ session.chooseSession(sessionCode) // 选择会话(自动加载消息)
91
+ session.createSession(session) // 创建会话
92
+ session.updateSession(session) // 更新会话
93
+ session.deleteSession(sessionCode) // 删除会话
94
+ session.renameSession(sessionCode) // AI 重命名会话
95
+ session.postSessionFeedback(feedback) // 提交会话反馈
96
+ ```
97
+
98
+ ### Message 模块
99
+
100
+ ```typescript
101
+ // 响应式数据
102
+ message.list // Ref<IMessage[]>
103
+ message.isListLoading // Ref<boolean>
104
+ message.isDeleteLoading // Ref<boolean>
105
+
106
+ // 方法
107
+ message.getMessages(sessionCode) // 获取消息列表
108
+ message.plusMessage(message) // 添加消息(本地)
109
+ message.createAndPlusMessage(message) // 创建并添加消息(调用接口)
110
+ message.modifyMessage(message) // 修改消息(本地)
111
+ message.deleteMessages(messages) // 批量删除消息
112
+ message.getCurrentLoadingMessage() // 获取当前加载中的消息
113
+ message.getMessageByMessageId(id) // 根据 ID 获取消息
114
+ ```
115
+
116
+ ## 与 chat-x 组件集成
117
+
118
+ ### 完整集成示例
119
+
120
+ ```vue
121
+ <template>
122
+ <div class="chat-app">
123
+ <!-- 消息容器 -->
124
+ <MessageContainer
125
+ :messages="message.list.value"
126
+ :message-status="messageStatus"
127
+ :on-agent-action="handleAgentAction"
128
+ @stop-streaming="handleStop"
129
+ />
130
+
131
+ <!-- 输入框 -->
132
+ <ChatInput
133
+ v-model="userInput"
134
+ :message-status="messageStatus"
135
+ :shortcuts="shortcuts"
136
+ :on-send-message="handleSend"
137
+ :on-stop-sending="handleStop"
138
+ />
139
+ </div>
140
+ </template>
141
+
142
+ <script setup lang="ts">
143
+ import { ref, computed, onMounted, onUnmounted } from 'vue';
144
+ import { ChatInput, MessageContainer, MessageStatus } from '@blueking/chat-x';
145
+ import { useChatHelper, AGUIProtocol } from '@blueking/chat-helper';
146
+
147
+ const userInput = ref('');
148
+ const isStreaming = ref(false);
149
+
150
+ // 创建 chatHelper 实例
151
+ const chatHelper = useChatHelper({
152
+ requestData: {
153
+ urlPrefix: '/api/',
154
+ headers: () => ({ Authorization: `Bearer ${getToken()}` }),
155
+ },
156
+ protocol: new AGUIProtocol({
157
+ onStart: () => { isStreaming.value = true; },
158
+ onDone: () => { isStreaming.value = false; },
159
+ onError: () => { isStreaming.value = false; },
160
+ }),
161
+ });
162
+
163
+ const { agent, session, message } = chatHelper;
164
+
165
+ // 消息状态映射
166
+ const messageStatus = computed(() =>
167
+ isStreaming.value ? MessageStatus.Streaming : MessageStatus.Complete
168
+ );
169
+
170
+ // 初始化
171
+ onMounted(async () => {
172
+ await agent.getAgentInfo();
173
+ await session.getSessions();
174
+ if (session.list.value.length > 0) {
175
+ await session.chooseSession(session.list.value[0].sessionCode);
176
+ }
177
+ });
178
+
179
+ // 清理
180
+ onUnmounted(() => {
181
+ agent.stopChat();
182
+ });
183
+
184
+ // 发送消息
185
+ const handleSend = async (value: string) => {
186
+ if (!session.current.value?.sessionCode) return;
187
+ userInput.value = '';
188
+ await agent.chat(value, session.current.value.sessionCode);
189
+ };
190
+
191
+ // 停止
192
+ const handleStop = () => {
193
+ agent.stopChat();
194
+ };
195
+
196
+ // AI 消息操作
197
+ const handleAgentAction = async (tool) => {
198
+ if (tool.id === 'like') return ['回答准确', '信息全面'];
199
+ if (tool.id === 'unlike') return ['信息错误', '回答不相关'];
200
+ };
201
+ </script>
202
+ ```
203
+
204
+ ### 状态映射
205
+
206
+ | chatHelper 状态 | chat-x MessageStatus | 场景 |
207
+ |----------------|---------------------|------|
208
+ | `agent.isChatting = true` | `Streaming` | 流式响应中 |
209
+ | `agent.isChatting = false` | `Complete` | 响应完成 |
210
+ | 消息 `status = 'error'` | `Error` | 发生错误 |
211
+ | 消息 `status = 'stop'` | `Stop` | 用户停止 |
212
+
213
+ ## AGUIProtocol 事件系统
214
+
215
+ ### 生命周期钩子
216
+
217
+ ```typescript
218
+ const protocol = new AGUIProtocol({
219
+ onStart: () => { /* 流式开始 */ },
220
+ onMessage: (event) => { /* 每个事件 */ },
221
+ onDone: () => { /* 流式完成 */ },
222
+ onError: (error) => { /* 发生错误 */ },
223
+ });
224
+ ```
225
+
226
+ ### 核心事件类型
227
+
228
+ | 事件 | 说明 | 使用场景 |
229
+ |------|------|----------|
230
+ | `TextMessageStart/Chunk/End` | 文本消息流式传输 | 实时显示 AI 回复 |
231
+ | `ThinkingStart/End` | 思考过程 | 显示推理步骤 |
232
+ | `ToolCallStart/Args/Result/End` | 工具调用 | 展示工具执行 |
233
+ | `RunError` | 运行错误 | 错误处理 |
234
+ | `MessagesSnapshot` | 消息快照 | 多端同步 |
235
+
236
+ ### 自定义 Protocol
237
+
238
+ ```typescript
239
+ import { AGUIProtocol, type ITextMessageChunkEvent } from '@blueking/chat-helper';
240
+
241
+ class CustomProtocol extends AGUIProtocol {
242
+ // 重写文本消息处理
243
+ handleTextMessageChunkEvent(event: ITextMessageChunkEvent) {
244
+ // 自定义逻辑(如敏感词过滤)
245
+ console.log('接收文本:', event.delta);
246
+ super.handleTextMessageChunkEvent(event);
247
+ }
248
+
249
+ // 重写思考开始
250
+ handleThinkingStartEvent(event) {
251
+ showThinkingAnimation();
252
+ super.handleThinkingStartEvent(event);
253
+ }
254
+ }
255
+ ```
256
+
257
+ ## 常用配置模式
258
+
259
+ ### 动态请求配置
260
+
261
+ ```typescript
262
+ useChatHelper({
263
+ requestData: {
264
+ urlPrefix: '/api/',
265
+ // 动态 headers
266
+ headers: () => ({
267
+ Authorization: `Bearer ${localStorage.getItem('token')}`,
268
+ 'X-Request-ID': crypto.randomUUID(),
269
+ }),
270
+ // 动态 data
271
+ data: () => ({
272
+ app_id: getCurrentAppId(),
273
+ tenant_id: getTenantId(),
274
+ }),
275
+ },
276
+ });
277
+ ```
278
+
279
+ ### 请求/响应拦截器
280
+
281
+ ```typescript
282
+ useChatHelper({
283
+ requestData: { urlPrefix: '/api/' },
284
+ interceptors: {
285
+ request: (config) => {
286
+ console.log('Request:', config.url);
287
+ return config;
288
+ },
289
+ response: (response) => {
290
+ if (response.data.code !== 0) {
291
+ showError(response.data.message);
292
+ }
293
+ return response;
294
+ },
295
+ },
296
+ });
297
+ ```
298
+
299
+ ### 自定义聊天参数
300
+
301
+ ```typescript
302
+ // 带额外参数发送
303
+ agent.chat(userInput, sessionCode, 'custom_chat/', {
304
+ data: {
305
+ temperature: 0.7,
306
+ max_tokens: 2000,
307
+ model: 'gpt-4',
308
+ },
309
+ headers: {
310
+ 'X-Chat-Mode': 'creative',
311
+ },
312
+ });
313
+ ```
314
+
315
+ ## 消息类型
316
+
317
+ ### MessageRole 枚举
318
+
319
+ ```typescript
320
+ enum MessageRole {
321
+ User = 'user', // 用户消息
322
+ Assistant = 'assistant', // AI 助手
323
+ Reasoning = 'reasoning', // 推理过程
324
+ Tool = 'tool', // 工具调用结果
325
+ Activity = 'activity', // 活动(如引用文档)
326
+ System = 'system', // 系统消息
327
+ Info = 'info', // 信息提示
328
+ // ... 更多角色
329
+ }
330
+ ```
331
+
332
+ ### MessageStatus 枚举
333
+
334
+ ```typescript
335
+ enum MessageStatus {
336
+ Pending = 'pending', // 等待中
337
+ Streaming = 'streaming', // 流式传输
338
+ Complete = 'complete', // 完成
339
+ Error = 'error', // 错误
340
+ Stop = 'stop', // 已停止
341
+ }
342
+ ```
343
+
344
+ ## 最佳实践
345
+
346
+ ### 1. 组件卸载时清理
347
+
348
+ ```typescript
349
+ onUnmounted(() => {
350
+ agent.stopChat();
351
+ });
352
+ ```
353
+
354
+ ### 2. 使用 chooseSession 切换会话
355
+
356
+ ```typescript
357
+ // ✅ 推荐:自动停止聊天、加载消息
358
+ await session.chooseSession(sessionCode);
359
+
360
+ // ❌ 不推荐:手动操作
361
+ agent.stopChat();
362
+ session.current.value = ...;
363
+ message.getMessages(sessionCode);
364
+ ```
365
+
366
+ ### 3. 枚举而非字符串
367
+
368
+ ```typescript
369
+ import { MessageStatus, MessageRole } from '@blueking/chat-helper';
370
+
371
+ // ✅ 推荐
372
+ if (msg.status === MessageStatus.Streaming) { }
373
+
374
+ // ❌ 不推荐
375
+ if (msg.status === 'streaming') { }
376
+ ```
377
+
378
+ ### 4. Protocol 钩子快速返回
379
+
380
+ ```typescript
381
+ // ✅ 推荐:不阻塞
382
+ onMessage: (event) => {
383
+ console.log(event);
384
+ asyncOperation(); // 不 await
385
+ }
386
+
387
+ // ❌ 不推荐:阻塞
388
+ onMessage: async (event) => {
389
+ await someAsyncOperation(); // 阻塞
390
+ }
391
+ ```
392
+
393
+ ## 更多资源
394
+
395
+ - API 详细参考: [references/api-reference.md](references/api-reference.md)
396
+ - 完整示例代码: [references/examples.md](references/examples.md)
397
+ - 与 chat-x 集成: [references/integration-guide.md](references/integration-guide.md)
398
+ - chat-x UI 组件: 参考 `bk-chat-x` skill