@huajiwuyan/hello 3.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 (117) hide show
  1. package/README.md +68 -0
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.js +448 -0
  4. package/package.json +38 -0
  5. package/templates/claude/commands/hello.md +760 -0
  6. package/templates/claude/skills/SKILL.md +90 -0
  7. package/templates/claude/skills/SKILL.toml +7 -0
  8. package/templates/claude/skills/assets/icon-large.svg +12 -0
  9. package/templates/claude/skills/assets/icon-small-400px.svg +12 -0
  10. package/templates/claude/skills/assets/templates/CHANGELOG.md +24 -0
  11. package/templates/claude/skills/assets/templates/CHANGELOG_{YYYY}.md +25 -0
  12. package/templates/claude/skills/assets/templates/INDEX.md +36 -0
  13. package/templates/claude/skills/assets/templates/archive/_index.md +22 -0
  14. package/templates/claude/skills/assets/templates/context.md +82 -0
  15. package/templates/claude/skills/assets/templates/modules/_index.md +22 -0
  16. package/templates/claude/skills/assets/templates/modules/module.md +35 -0
  17. package/templates/claude/skills/assets/templates/plan/proposal.md +104 -0
  18. package/templates/claude/skills/assets/templates/plan/tasks.md +49 -0
  19. package/templates/claude/skills/references/functions/auto.md +217 -0
  20. package/templates/claude/skills/references/functions/clean.md +167 -0
  21. package/templates/claude/skills/references/functions/commit.md +374 -0
  22. package/templates/claude/skills/references/functions/exec.md +178 -0
  23. package/templates/claude/skills/references/functions/help.md +105 -0
  24. package/templates/claude/skills/references/functions/init.md +228 -0
  25. package/templates/claude/skills/references/functions/plan.md +219 -0
  26. package/templates/claude/skills/references/functions/review.md +146 -0
  27. package/templates/claude/skills/references/functions/rollback.md +208 -0
  28. package/templates/claude/skills/references/functions/test.md +153 -0
  29. package/templates/claude/skills/references/functions/upgrade.md +371 -0
  30. package/templates/claude/skills/references/functions/validate.md +147 -0
  31. package/templates/claude/skills/references/rules/package.md +212 -0
  32. package/templates/claude/skills/references/rules/scaling.md +150 -0
  33. package/templates/claude/skills/references/rules/state.md +318 -0
  34. package/templates/claude/skills/references/rules/tools.md +371 -0
  35. package/templates/claude/skills/references/services/knowledge.md +408 -0
  36. package/templates/claude/skills/references/services/templates.md +344 -0
  37. package/templates/claude/skills/references/stages/analyze.md +201 -0
  38. package/templates/claude/skills/references/stages/design.md +379 -0
  39. package/templates/claude/skills/references/stages/develop.md +497 -0
  40. package/templates/claude/skills/references/stages/evaluate.md +286 -0
  41. package/templates/claude/skills/references/stages/tweak.md +244 -0
  42. package/templates/claude/skills/scripts/create_package.py +260 -0
  43. package/templates/claude/skills/scripts/list_packages.py +145 -0
  44. package/templates/claude/skills/scripts/migrate_package.py +399 -0
  45. package/templates/claude/skills/scripts/project_stats.py +438 -0
  46. package/templates/claude/skills/scripts/upgradewiki.py +321 -0
  47. package/templates/claude/skills/scripts/utils.py +596 -0
  48. package/templates/claude/skills/scripts/validate_package.py +309 -0
  49. package/templates/codex/prompts/hello.md +757 -0
  50. package/templates/codex/skills/SKILL.md +74 -0
  51. package/templates/codex/skills/SKILL.toml +7 -0
  52. package/templates/codex/skills/assets/icon-large.svg +12 -0
  53. package/templates/codex/skills/assets/icon-small-400px.svg +12 -0
  54. package/templates/codex/skills/assets/templates/CHANGELOG.md +24 -0
  55. package/templates/codex/skills/assets/templates/CHANGELOG_{YYYY}.md +25 -0
  56. package/templates/codex/skills/assets/templates/INDEX.md +36 -0
  57. package/templates/codex/skills/assets/templates/archive/_index.md +22 -0
  58. package/templates/codex/skills/assets/templates/context.md +82 -0
  59. package/templates/codex/skills/assets/templates/modules/_index.md +22 -0
  60. package/templates/codex/skills/assets/templates/modules/module.md +35 -0
  61. package/templates/codex/skills/assets/templates/plan/proposal.md +104 -0
  62. package/templates/codex/skills/assets/templates/plan/tasks.md +29 -0
  63. package/templates/codex/skills/references/functions/auto.md +181 -0
  64. package/templates/codex/skills/references/functions/brain.md +275 -0
  65. package/templates/codex/skills/references/functions/clean.md +154 -0
  66. package/templates/codex/skills/references/functions/commit.md +265 -0
  67. package/templates/codex/skills/references/functions/debug/condition-based-waiting.md +151 -0
  68. package/templates/codex/skills/references/functions/debug/defense-in-depth.md +147 -0
  69. package/templates/codex/skills/references/functions/debug/root-cause-tracing.md +168 -0
  70. package/templates/codex/skills/references/functions/debug.md +389 -0
  71. package/templates/codex/skills/references/functions/exec.md +153 -0
  72. package/templates/codex/skills/references/functions/help.md +101 -0
  73. package/templates/codex/skills/references/functions/init.md +221 -0
  74. package/templates/codex/skills/references/functions/plan.md +178 -0
  75. package/templates/codex/skills/references/functions/review.md +135 -0
  76. package/templates/codex/skills/references/functions/rlm.md +864 -0
  77. package/templates/codex/skills/references/functions/rollback.md +190 -0
  78. package/templates/codex/skills/references/functions/test.md +140 -0
  79. package/templates/codex/skills/references/functions/upgrade.md +363 -0
  80. package/templates/codex/skills/references/functions/validate.md +135 -0
  81. package/templates/codex/skills/references/rules/cache.md +136 -0
  82. package/templates/codex/skills/references/rules/scaling.md +124 -0
  83. package/templates/codex/skills/references/rules/state.md +201 -0
  84. package/templates/codex/skills/references/rules/tools.md +301 -0
  85. package/templates/codex/skills/references/services/attention.md +53 -0
  86. package/templates/codex/skills/references/services/knowledge.md +559 -0
  87. package/templates/codex/skills/references/services/package.md +383 -0
  88. package/templates/codex/skills/references/services/templates.md +390 -0
  89. package/templates/codex/skills/references/stages/analyze.md +191 -0
  90. package/templates/codex/skills/references/stages/design.md +355 -0
  91. package/templates/codex/skills/references/stages/develop.md +520 -0
  92. package/templates/codex/skills/references/stages/tweak.md +239 -0
  93. package/templates/codex/skills/rlm/__init__.py +39 -0
  94. package/templates/codex/skills/rlm/agent_orchestrator.py +422 -0
  95. package/templates/codex/skills/rlm/context_manager.py +366 -0
  96. package/templates/codex/skills/rlm/engine.py +915 -0
  97. package/templates/codex/skills/rlm/folding.py +391 -0
  98. package/templates/codex/skills/rlm/repl.py +452 -0
  99. package/templates/codex/skills/rlm/roles/analyzer.md +66 -0
  100. package/templates/codex/skills/rlm/roles/designer.md +94 -0
  101. package/templates/codex/skills/rlm/roles/explorer.md +43 -0
  102. package/templates/codex/skills/rlm/roles/implementer.md +62 -0
  103. package/templates/codex/skills/rlm/roles/kb_keeper.md +138 -0
  104. package/templates/codex/skills/rlm/roles/pkg_keeper.md +163 -0
  105. package/templates/codex/skills/rlm/roles/reviewer.md +74 -0
  106. package/templates/codex/skills/rlm/roles/synthesizer.md +90 -0
  107. package/templates/codex/skills/rlm/roles/tester.md +83 -0
  108. package/templates/codex/skills/rlm/schemas/agent_result.json +174 -0
  109. package/templates/codex/skills/rlm/session.py +376 -0
  110. package/templates/codex/skills/rlm/shared_tasks.py +370 -0
  111. package/templates/codex/skills/scripts/create_package.py +260 -0
  112. package/templates/codex/skills/scripts/list_packages.py +145 -0
  113. package/templates/codex/skills/scripts/migrate_package.py +399 -0
  114. package/templates/codex/skills/scripts/project_stats.py +438 -0
  115. package/templates/codex/skills/scripts/upgradewiki.py +321 -0
  116. package/templates/codex/skills/scripts/utils.py +596 -0
  117. package/templates/codex/skills/scripts/validate_package.py +309 -0
@@ -0,0 +1,452 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ HelloAGENTS-RLM REPL Environment
5
+ 递归语言模型REPL环境
6
+
7
+ 基于MIT RLM设计:
8
+ - Python REPL环境
9
+ - 递归自调用
10
+ - 外部数据存储
11
+ - 工具执行
12
+ """
13
+
14
+ import asyncio
15
+ import json
16
+ import sys
17
+ from dataclasses import dataclass, field
18
+ from datetime import datetime
19
+ from pathlib import Path
20
+ from typing import Any, Callable, Dict, List, Optional
21
+
22
+ from .engine import RLMEngine, RLMMode, AgentResult
23
+ from .context_manager import ContextManager, ContextEvent
24
+ from .folding import ContextFolder, Trajectory, FoldingStrategy
25
+
26
+
27
+ @dataclass
28
+ class REPLState:
29
+ """REPL状态"""
30
+ turn: int = 0
31
+ answer: Dict[str, Any] = field(default_factory=lambda: {"content": "", "ready": False})
32
+ variables: Dict[str, Any] = field(default_factory=dict)
33
+ history: List[Dict[str, Any]] = field(default_factory=list)
34
+
35
+
36
+ class RLMREPL:
37
+ """
38
+ RLM REPL环境
39
+
40
+ 提供类似MIT RLM的编程环境:
41
+ - rlm.peek(): 查看外部数据片段
42
+ - rlm.store(): 存储数据
43
+ - rlm.fold(): 折叠子轨迹
44
+ - rlm.spawn_agent(): 递归调用子Agent
45
+ - rlm.batch(): 并行执行
46
+ - rlm.answer: 渐进式输出
47
+ """
48
+
49
+ def __init__(
50
+ self,
51
+ mode: RLMMode = RLMMode.ACTIVE,
52
+ working_dir: Optional[Path] = None,
53
+ ):
54
+ self.engine = RLMEngine(mode=mode)
55
+ self.context = ContextManager()
56
+ self.folder = ContextFolder()
57
+ self.state = REPLState()
58
+ self.working_dir = working_dir or Path.cwd()
59
+
60
+ # ==================== REPL核心API ====================
61
+
62
+ def peek(self, data_key: str, start: int = 0, end: int = 1000) -> str:
63
+ """
64
+ 查看外部存储的数据片段
65
+
66
+ Args:
67
+ data_key: 数据键名 (文件路径或变量名)
68
+ start: 起始位置
69
+ end: 结束位置
70
+
71
+ Returns:
72
+ 数据片段
73
+ """
74
+ # 首先检查变量
75
+ if data_key in self.state.variables:
76
+ data = str(self.state.variables[data_key])
77
+ return data[start:end]
78
+
79
+ # 尝试作为文件路径
80
+ file_path = self._resolve_path(data_key)
81
+ if file_path and file_path.exists():
82
+ try:
83
+ content = file_path.read_text(encoding='utf-8')
84
+ return content[start:end]
85
+ except Exception as e:
86
+ return f"[ERROR] 读取文件失败: {e}"
87
+
88
+ # 使用engine的peek
89
+ return self.engine.peek(data_key, start, end)
90
+
91
+ def store(self, key: str, data: Any, persist: bool = False) -> bool:
92
+ """
93
+ 存储数据
94
+
95
+ Args:
96
+ key: 键名
97
+ data: 数据
98
+ persist: 是否持久化
99
+
100
+ Returns:
101
+ 是否成功
102
+ """
103
+ # 存储到变量
104
+ self.state.variables[key] = data
105
+
106
+ # 持久化
107
+ if persist:
108
+ return self.engine.store(key, str(data), persist=True)
109
+
110
+ return True
111
+
112
+ def fold(
113
+ self,
114
+ content: str,
115
+ strategy: str = "balanced",
116
+ custom_prompt: Optional[str] = None,
117
+ ) -> str:
118
+ """
119
+ 折叠内容生成摘要
120
+
121
+ Args:
122
+ content: 要折叠的内容
123
+ strategy: 策略 (aggressive | balanced | conservative)
124
+ custom_prompt: 自定义摘要提示
125
+
126
+ Returns:
127
+ 摘要
128
+ """
129
+ strategy_map = {
130
+ "aggressive": FoldingStrategy.AGGRESSIVE,
131
+ "balanced": FoldingStrategy.BALANCED,
132
+ "conservative": FoldingStrategy.CONSERVATIVE,
133
+ }
134
+
135
+ trajectory = Trajectory(
136
+ trajectory_id=f"repl_fold_{self.state.turn}",
137
+ content=content,
138
+ )
139
+
140
+ result = self.folder.fold(
141
+ trajectory=trajectory,
142
+ strategy=strategy_map.get(strategy, FoldingStrategy.BALANCED),
143
+ custom_prompt=custom_prompt,
144
+ )
145
+
146
+ return result.summary
147
+
148
+ async def spawn_agent(
149
+ self,
150
+ role: str,
151
+ task: str,
152
+ context_hint: Optional[List[str]] = None,
153
+ timeout: int = 120,
154
+ ) -> AgentResult:
155
+ """
156
+ 创建子Agent
157
+
158
+ Args:
159
+ role: 角色 (explorer | analyzer | implementer | reviewer | tester | synthesizer)
160
+ task: 任务描述
161
+ context_hint: 上下文提示
162
+ timeout: 超时时间
163
+
164
+ Returns:
165
+ Agent结果
166
+ """
167
+ # 记录到历史
168
+ self._record_action("spawn_agent", {
169
+ "role": role,
170
+ "task": task[:100],
171
+ })
172
+
173
+ result = await self.engine.spawn_agent(
174
+ role=role,
175
+ task=task,
176
+ context_hint=context_hint,
177
+ timeout=timeout,
178
+ )
179
+
180
+ # 记录结果
181
+ self._record_action("agent_result", {
182
+ "role": role,
183
+ "status": result.status,
184
+ "findings_count": len(result.key_findings),
185
+ })
186
+
187
+ return result
188
+
189
+ async def batch(self, tasks: List[Dict[str, Any]]) -> List[AgentResult]:
190
+ """
191
+ 并行执行多个Agent
192
+
193
+ Args:
194
+ tasks: 任务列表 [{role, task, context_hint}]
195
+
196
+ Returns:
197
+ 结果列表
198
+ """
199
+ self._record_action("batch", {"count": len(tasks)})
200
+
201
+ results = await self.engine.batch(tasks)
202
+
203
+ return results
204
+
205
+ def merge(self, results: List[AgentResult], strategy: str = "synthesize") -> str:
206
+ """
207
+ 合并多个Agent结果
208
+
209
+ Args:
210
+ results: 结果列表
211
+ strategy: 合并策略 (concat | synthesize | vote)
212
+
213
+ Returns:
214
+ 合并后的内容
215
+ """
216
+ return self.engine.merge(results, strategy=strategy)
217
+
218
+ # ==================== Answer管理 ====================
219
+
220
+ def set_answer(self, content: str, ready: bool = False):
221
+ """
222
+ 设置answer (渐进式输出)
223
+
224
+ Args:
225
+ content: 内容
226
+ ready: 是否完成
227
+ """
228
+ self.state.answer["content"] = content
229
+ self.state.answer["ready"] = ready
230
+
231
+ def append_answer(self, content: str):
232
+ """追加内容到answer"""
233
+ self.state.answer["content"] += content
234
+
235
+ def get_answer(self) -> Dict[str, Any]:
236
+ """获取answer"""
237
+ return self.state.answer.copy()
238
+
239
+ def finalize_answer(self):
240
+ """标记answer完成"""
241
+ self.state.answer["ready"] = True
242
+
243
+ # ==================== 上下文管理 ====================
244
+
245
+ def load_context(self, key: str) -> Optional[str]:
246
+ """加载上下文 (从知识库)"""
247
+ return self.context.load_memory(key)
248
+
249
+ def save_context(self, key: str, content: str) -> bool:
250
+ """保存上下文 (到知识库)"""
251
+ return self.context.save_memory(key, content)
252
+
253
+ def get_working_context(self) -> List[Dict[str, Any]]:
254
+ """获取工作上下文"""
255
+ return self.context.get_working_context()
256
+
257
+ def add_to_context(self, event_type: str, content: Any):
258
+ """添加到上下文"""
259
+ event = ContextEvent(event_type=event_type, content=content)
260
+ self.context.add_to_working(event)
261
+
262
+ # ==================== 执行控制 ====================
263
+
264
+ async def execute(self, instruction: str) -> Dict[str, Any]:
265
+ """
266
+ 执行指令
267
+
268
+ Args:
269
+ instruction: 指令 (自然语言或特殊命令)
270
+
271
+ Returns:
272
+ 执行结果
273
+ """
274
+ self.state.turn += 1
275
+
276
+ # 记录
277
+ self._record_action("execute", {"instruction": instruction[:200]})
278
+
279
+ # 解析指令
280
+ if instruction.startswith("peek:"):
281
+ # peek:key:start:end
282
+ parts = instruction.split(":")
283
+ key = parts[1] if len(parts) > 1 else ""
284
+ start = int(parts[2]) if len(parts) > 2 else 0
285
+ end = int(parts[3]) if len(parts) > 3 else 1000
286
+ result = self.peek(key, start, end)
287
+ return {"type": "peek", "result": result}
288
+
289
+ elif instruction.startswith("store:"):
290
+ # store:key:value
291
+ parts = instruction.split(":", 2)
292
+ key = parts[1] if len(parts) > 1 else "temp"
293
+ value = parts[2] if len(parts) > 2 else ""
294
+ success = self.store(key, value)
295
+ return {"type": "store", "success": success}
296
+
297
+ elif instruction.startswith("fold:"):
298
+ # fold:content
299
+ content = instruction[5:]
300
+ summary = self.fold(content)
301
+ return {"type": "fold", "summary": summary}
302
+
303
+ elif instruction.startswith("spawn:"):
304
+ # spawn:role:task
305
+ parts = instruction.split(":", 2)
306
+ role = parts[1] if len(parts) > 1 else "explorer"
307
+ task = parts[2] if len(parts) > 2 else ""
308
+ result = await self.spawn_agent(role, task)
309
+ return {"type": "spawn", "result": result.to_dict()}
310
+
311
+ else:
312
+ # 默认: 分析指令
313
+ result = await self.spawn_agent(
314
+ role="analyzer",
315
+ task=instruction,
316
+ )
317
+ self.set_answer(result.to_summary(), ready=True)
318
+ return {"type": "analyze", "result": result.to_dict()}
319
+
320
+ def run_sync(self, instruction: str) -> Dict[str, Any]:
321
+ """同步执行"""
322
+ return asyncio.run(self.execute(instruction))
323
+
324
+ # ==================== 状态管理 ====================
325
+
326
+ def get_status(self) -> Dict[str, Any]:
327
+ """获取REPL状态"""
328
+ return {
329
+ "turn": self.state.turn,
330
+ "answer_ready": self.state.answer["ready"],
331
+ "variables_count": len(self.state.variables),
332
+ "history_count": len(self.state.history),
333
+ "engine_status": self.engine.get_status(),
334
+ "context_status": self.context.get_status(),
335
+ }
336
+
337
+ def get_history(self, limit: int = 10) -> List[Dict[str, Any]]:
338
+ """获取历史"""
339
+ return self.state.history[-limit:]
340
+
341
+ def reset(self):
342
+ """重置REPL"""
343
+ self.state = REPLState()
344
+ self.engine.reset()
345
+ self.context.reset()
346
+
347
+ # ==================== 内部方法 ====================
348
+
349
+ def _resolve_path(self, path_str: str) -> Optional[Path]:
350
+ """解析路径"""
351
+ path = Path(path_str)
352
+ if path.is_absolute():
353
+ return path
354
+ return self.working_dir / path
355
+
356
+ def _record_action(self, action_type: str, details: Dict[str, Any]):
357
+ """记录动作"""
358
+ self.state.history.append({
359
+ "turn": self.state.turn,
360
+ "action": action_type,
361
+ "details": details,
362
+ "timestamp": datetime.now().isoformat(),
363
+ })
364
+
365
+
366
+ # ==================== 交互式REPL ====================
367
+
368
+ async def interactive_repl():
369
+ """交互式REPL循环"""
370
+ print("HelloAGENTS-RLM REPL v1.0.0")
371
+ print("输入 'help' 查看帮助, 'exit' 退出")
372
+ print("-" * 40)
373
+
374
+ repl = RLMREPL()
375
+
376
+ while True:
377
+ try:
378
+ user_input = input(f"\n[{repl.state.turn}] >>> ").strip()
379
+
380
+ if not user_input:
381
+ continue
382
+
383
+ if user_input.lower() in ('exit', 'quit', 'q'):
384
+ print("再见!")
385
+ break
386
+
387
+ if user_input.lower() == 'help':
388
+ print("""
389
+ 可用命令:
390
+ peek:key:start:end - 查看数据片段
391
+ store:key:value - 存储数据
392
+ fold:content - 折叠内容
393
+ spawn:role:task - 创建子Agent
394
+ status - 查看状态
395
+ history - 查看历史
396
+ reset - 重置
397
+ exit - 退出
398
+
399
+ 直接输入其他内容将作为分析任务执行
400
+ """)
401
+ continue
402
+
403
+ if user_input.lower() == 'status':
404
+ print(json.dumps(repl.get_status(), ensure_ascii=False, indent=2))
405
+ continue
406
+
407
+ if user_input.lower() == 'history':
408
+ for item in repl.get_history():
409
+ print(f" [{item['turn']}] {item['action']}: {item['details']}")
410
+ continue
411
+
412
+ if user_input.lower() == 'reset':
413
+ repl.reset()
414
+ print("已重置")
415
+ continue
416
+
417
+ # 执行
418
+ result = await repl.execute(user_input)
419
+ print(json.dumps(result, ensure_ascii=False, indent=2, default=str))
420
+
421
+ except KeyboardInterrupt:
422
+ print("\n按Ctrl+C退出")
423
+ except EOFError:
424
+ break
425
+ except Exception as e:
426
+ print(f"错误: {e}")
427
+
428
+
429
+ # ==================== CLI入口 ====================
430
+
431
+ if __name__ == "__main__":
432
+ import argparse
433
+
434
+ parser = argparse.ArgumentParser(description="HelloAGENTS-RLM REPL")
435
+ parser.add_argument("--interactive", "-i", action="store_true", help="交互式模式")
436
+ parser.add_argument("--execute", "-e", type=str, help="执行指令")
437
+ parser.add_argument("--status", action="store_true", help="显示状态")
438
+
439
+ args = parser.parse_args()
440
+
441
+ if args.interactive:
442
+ asyncio.run(interactive_repl())
443
+ elif args.execute:
444
+ repl = RLMREPL()
445
+ result = repl.run_sync(args.execute)
446
+ print(json.dumps(result, ensure_ascii=False, indent=2, default=str))
447
+ elif args.status:
448
+ repl = RLMREPL()
449
+ print(json.dumps(repl.get_status(), ensure_ascii=False, indent=2))
450
+ else:
451
+ print("HelloAGENTS-RLM REPL v1.0.0")
452
+ print("使用 --help 查看帮助, -i 进入交互模式")
@@ -0,0 +1,66 @@
1
+ # Analyzer 角色预设
2
+
3
+ 你是一个**深度分析专家**,专注于理解代码逻辑、架构设计和潜在问题。
4
+
5
+ ## 核心能力
6
+
7
+ - 分析代码结构和设计模式
8
+ - 理解业务逻辑和数据流
9
+ - 识别潜在的性能瓶颈
10
+ - 发现安全风险和代码异味
11
+ - 评估技术债务
12
+
13
+ ## 工作原则
14
+
15
+ 1. **深入理解**: 不止于表面,追溯调用链和依赖关系
16
+ 2. **多角度分析**: 考虑性能、安全、可维护性等多个维度
17
+ 3. **证据支撑**: 每个结论都要有代码引用支持
18
+ 4. **可操作建议**: 提供具体、可执行的改进建议
19
+
20
+ ## 分析框架
21
+
22
+ ### 代码质量
23
+ - 复杂度 (圈复杂度、认知复杂度)
24
+ - 重复代码
25
+ - 命名规范
26
+ - 注释质量
27
+
28
+ ### 架构设计
29
+ - 模块耦合度
30
+ - 职责分离
31
+ - 依赖方向
32
+ - 扩展性
33
+
34
+ ### 安全性
35
+ - 输入验证
36
+ - 认证授权
37
+ - 数据保护
38
+ - 常见漏洞 (OWASP Top 10)
39
+
40
+ ## 输出格式
41
+
42
+ ```json
43
+ {
44
+ "status": "completed",
45
+ "key_findings": [
46
+ "架构模式: ...",
47
+ "核心逻辑: ...",
48
+ "依赖关系: ..."
49
+ ],
50
+ "changes_made": [],
51
+ "issues_found": [
52
+ {"severity": "high|medium|low", "description": "...", "location": "file:line"}
53
+ ],
54
+ "recommendations": [
55
+ "优化建议: ...",
56
+ "重构建议: ..."
57
+ ]
58
+ }
59
+ ```
60
+
61
+ ## 典型任务
62
+
63
+ - "分析用户认证模块的实现"
64
+ - "评估API的安全性"
65
+ - "识别性能瓶颈"
66
+ - "分析数据库查询效率"
@@ -0,0 +1,94 @@
1
+ # Designer 角色预设
2
+
3
+ 你是一个**方案设计专家**,专注于技术方案设计、任务分解和风险评估。
4
+
5
+ ## 核心能力
6
+
7
+ - 设计清晰、可执行的技术方案
8
+ - 合理分解任务并估算复杂度
9
+ - 识别技术风险和依赖关系
10
+ - 平衡技术优雅与实现成本
11
+ - 制定验收标准和测试策略
12
+
13
+ ## 工作原则
14
+
15
+ 1. **目标导向**: 方案直接服务于需求目标,不过度设计
16
+ 2. **可执行性**: 任务拆分具体、可执行、可验证
17
+ 3. **风险预判**: 提前识别技术风险,准备应对方案
18
+ 4. **约束尊重**: 遵循现有架构和代码风格
19
+
20
+ ## 设计框架
21
+
22
+ ### 方案设计
23
+
24
+ - 技术路径选择及理由
25
+ - 影响范围分析
26
+ - 与现有系统的集成方式
27
+ - 数据模型/API 设计(如适用)
28
+
29
+ ### 任务分解
30
+
31
+ - 按逻辑顺序分解任务
32
+ - 标注任务间的依赖关系
33
+ - 识别可并行执行的任务
34
+ - 预估任务复杂度(简单/中等/复杂)
35
+
36
+ ### 风险评估
37
+
38
+ - 技术风险(兼容性、性能等)
39
+ - 实现风险(复杂度、依赖等)
40
+ - EHRB 风险检测(按 G2 规则)
41
+
42
+ ### 验收标准
43
+
44
+ - 功能验收点
45
+ - 测试策略建议
46
+ - 边界条件和异常处理
47
+
48
+ ## 输出格式
49
+
50
+ ```json
51
+ {
52
+ "status": "completed",
53
+ "key_findings": [
54
+ "技术路径: ...",
55
+ "核心变更: ...",
56
+ "影响范围: ..."
57
+ ],
58
+ "changes_made": [],
59
+ "issues_found": [
60
+ {"severity": "high|medium|low", "description": "...", "category": "risk|constraint|dependency"}
61
+ ],
62
+ "recommendations": [
63
+ "方案建议: ...",
64
+ "实现注意: ..."
65
+ ],
66
+ "task_breakdown": [
67
+ {"id": 1, "description": "...", "complexity": "simple|medium|complex", "depends_on": []},
68
+ {"id": 2, "description": "...", "complexity": "...", "depends_on": [1]}
69
+ ]
70
+ }
71
+ ```
72
+
73
+ ## 典型任务
74
+
75
+ - "设计用户登录功能的实现方案"
76
+ - "规划数据库迁移的执行步骤"
77
+ - "制定 API 版本升级的任务清单"
78
+ - "评估新功能的技术可行性"
79
+
80
+ ## 与其他角色的协作
81
+
82
+ ```yaml
83
+ 与 analyzer 的区别:
84
+ - analyzer: 分析现有代码,发现问题
85
+ - designer: 设计新方案,规划实现
86
+
87
+ 与 implementer 的协作:
88
+ - designer 输出 task_breakdown
89
+ - implementer 按任务清单执行代码修改
90
+
91
+ 调用场景:
92
+ - DESIGN 阶段轻量迭代: 单方案设计
93
+ - 复杂任务: 与 analyzer 并行,analyzer 分析可行性,designer 设计方案
94
+ ```
@@ -0,0 +1,43 @@
1
+ # Explorer 角色预设
2
+
3
+ 你是一个**代码库探索专家**,专注于高效地收集和整理项目上下文信息。
4
+
5
+ ## 核心能力
6
+
7
+ - 快速扫描目录结构,识别关键文件
8
+ - 识别项目类型、技术栈、框架
9
+ - 提取核心模块和入口点
10
+ - 发现配置文件和依赖关系
11
+
12
+ ## 工作原则
13
+
14
+ 1. **只读操作**: 仅进行读取和搜索,不修改任何文件
15
+ 2. **结构化输出**: 以清晰的层次结构呈现发现
16
+ 3. **关注重点**: 优先识别核心代码,忽略生成文件和依赖
17
+ 4. **效率优先**: 使用glob和grep快速定位,避免逐文件读取
18
+
19
+ ## 输出格式
20
+
21
+ ```json
22
+ {
23
+ "status": "completed",
24
+ "key_findings": [
25
+ "项目类型: ...",
26
+ "主要技术栈: ...",
27
+ "入口文件: ...",
28
+ "核心模块: ..."
29
+ ],
30
+ "changes_made": [],
31
+ "issues_found": [],
32
+ "recommendations": [
33
+ "建议深入分析: ..."
34
+ ]
35
+ }
36
+ ```
37
+
38
+ ## 典型任务
39
+
40
+ - "探索src/目录的结构"
41
+ - "识别项目使用的框架和依赖"
42
+ - "找出所有API端点定义"
43
+ - "列出配置文件和环境变量"