@haaaiawd/anws 1.1.0 → 1.2.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/README.md +217 -48
- package/package.json +1 -1
- package/templates/.agent/rules/agents.md +112 -93
- package/templates/.agent/skills/design-reviewer/SKILL.md +161 -0
- package/templates/.agent/skills/spec-writer/SKILL.md +50 -0
- package/templates/.agent/skills/spec-writer/references/prd_template.md +116 -113
- package/templates/.agent/skills/system-designer/SKILL.md +113 -19
- package/templates/.agent/skills/system-designer/references/system-design-detail-template.md +198 -0
- package/templates/.agent/skills/system-designer/references/system-design-template.md +118 -145
- package/templates/.agent/skills/task-planner/SKILL.md +5 -0
- package/templates/.agent/skills/task-reviewer/SKILL.md +287 -0
- package/templates/.agent/workflows/blueprint.md +77 -3
- package/templates/.agent/workflows/challenge.md +57 -90
- package/templates/.agent/workflows/change.md +8 -0
- package/templates/.agent/workflows/craft.md +8 -0
- package/templates/.agent/workflows/design-system.md +88 -17
- package/templates/.agent/workflows/explore.md +9 -0
- package/templates/.agent/workflows/forge.md +75 -31
- package/templates/.agent/workflows/genesis.md +36 -2
- package/templates/.agent/workflows/quickstart.md +289 -0
- package/templates/.agent/workflows/scout.md +10 -1
|
@@ -91,19 +91,57 @@ description: 为单个系统设计详细的技术文档。负责架构图、接
|
|
|
91
91
|
|
|
92
92
|
---
|
|
93
93
|
|
|
94
|
+
## 📁 双层文档架构 (Two-Layer Document Structure)
|
|
95
|
+
|
|
96
|
+
> [!IMPORTANT]
|
|
97
|
+
> **每个系统的设计文档采用 L0 + (可选) L1 双层结构。**
|
|
98
|
+
|
|
99
|
+
| 层次 | 文件 | 内容 | 加载频率 |
|
|
100
|
+
| :-----------: | -------------------- | ------------------------------ | :------------------: |
|
|
101
|
+
| **L0 导航层** | `{system}.md` | 架构图、操作契约表、设计决策 | 高(每次必载) |
|
|
102
|
+
| **L1 实现层** | `{system}.detail.md` | 完整伪代码、配置常量、边缘情况 | 低(任务明确引用时) |
|
|
103
|
+
|
|
104
|
+
### L1 拆分解觠规则 (R1–R5)
|
|
105
|
+
|
|
106
|
+
**触发任意一条即必须创建 `{system}.detail.md`**:
|
|
107
|
+
|
|
108
|
+
| 规则 ID | 触发条件 | 理由 |
|
|
109
|
+
| :-----: | --------------------------------------- | -------------------------------------------- |
|
|
110
|
+
| **R1** | 单个连续代码块 **> 30 行** | 该长度已是实现细节,非设计意图 |
|
|
111
|
+
| **R2** | 文档内全部代码块总行数 **> 200 行** | 代码超过文字意味着文档滞向实现层 |
|
|
112
|
+
| **R3** | 配置常量字典条目 **> 5 个** | 配置数据与设计文档是不同阅读目的 |
|
|
113
|
+
| **R4** | 版本内联注释 (`# vX.X 变更`) **> 5 处** | 版本历史应集中到 §版本历史,不应散落在代码中 |
|
|
114
|
+
| **R5** | 文档总行数 **> 500 行** | 超过 500 行的 `.md` 对 AI 上下文是负担 |
|
|
115
|
+
|
|
116
|
+
### L0 和 L1 内容边界
|
|
117
|
+
|
|
118
|
+
| 内容类型 | L0 导航层 | L1 实现层 |
|
|
119
|
+
| ---------------------------- | :-------: | :-------: |
|
|
120
|
+
| 系统目标、架构图、Trade-offs | ✅ | ❌ |
|
|
121
|
+
| 操作契约表格(参见守则 7) | ✅ | ❌ |
|
|
122
|
+
| `@dataclass` 属性字段声明 | ✅ | ✅ |
|
|
123
|
+
| Protocol/ABC 接口签名 | ✅ | ❌ |
|
|
124
|
+
| Mermaid 决策树、数据流 | ✅ | ❌ |
|
|
125
|
+
| 函数体伪代码(> 10 行) | ❌ | ✅ |
|
|
126
|
+
| 配置常量定义表 | ❌ | ✅ |
|
|
127
|
+
| 版本变更历史 | ❌ | ✅ |
|
|
128
|
+
| 边缘情况、实现注意事项 | ❌ | ✅ |
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
94
132
|
## 📋 输出格式:系统设计文档结构
|
|
95
133
|
|
|
96
134
|
使用 `.agent\skills\system-designer\references\system-design-template.md` 模板。
|
|
97
135
|
|
|
98
136
|
**14个章节**:
|
|
99
137
|
|
|
100
|
-
### 必需章节 (Must Have)
|
|
138
|
+
### 必需章节 (Must Have) — L0 导航层
|
|
101
139
|
1. **概览 (Overview)** - 系统目的、边界、职责
|
|
102
140
|
2. **目标与非目标 (Goals & Non-Goals)** - 从PRD继承
|
|
103
141
|
3. **背景与上下文 (Background)** - 为什么需要、关联需求
|
|
104
142
|
4. **系统架构 (Architecture)** ⭐ - 架构图 + 组件 + 数据流
|
|
105
|
-
5. **接口设计 (Interface Design)** ⭐ -
|
|
106
|
-
6. **数据模型 (Data Model)** -
|
|
143
|
+
5. **接口设计 (Interface Design)** ⭐ - 操作契约表格 / 跨系统协议
|
|
144
|
+
6. **数据模型 (Data Model)** - 属性字段声明 + 实体关系图
|
|
107
145
|
7. **技术选型 (Tech Stack)** - 核心技术 + 依赖库
|
|
108
146
|
8. **Trade-offs & Alternatives** ⭐ - 为什么选A不选B
|
|
109
147
|
9. **安全性考虑 (Security)** - 认证、加密、风险缓解
|
|
@@ -266,24 +304,77 @@ interface User {
|
|
|
266
304
|
|
|
267
305
|
---
|
|
268
306
|
|
|
269
|
-
|
|
307
|
+
### 守则 7:操作契约表格(Agent/游戏系统尓必)
|
|
308
|
+
**规则**: 对于 Agent、游戏核心、消息系统,**必须用操作契约表格代替函数伪代码**,完整伪代码移入 `.detail.md`。
|
|
309
|
+
|
|
310
|
+
**为什么?** 一行表格 = 30 行伪代码的信息量,且对 AI 上下文更友好。
|
|
311
|
+
|
|
312
|
+
**表格格式**:
|
|
313
|
+
|
|
314
|
+
```markdown
|
|
315
|
+
### 操作契约:{XXX 类操作}
|
|
316
|
+
|
|
317
|
+
| 操作 | [REQ-XXX] | 前置条件 | 消耗/输入 | 产出/副作用 | 实现细节 |
|
|
318
|
+
| ---------------------- | :-------: | ---------------------- | --------- | ---------------------------------- | :-----------------: |
|
|
319
|
+
| `embark(unit, port)` | [REQ-012] | 陆地单位;有港口;未行动 | 3★ | 生成 Boat,承载 unit;原 unit 消失 | [§3.1](./detail.md) |
|
|
320
|
+
| `disembark(boat, pos)` | [REQ-012] | boat 有承载;目标是陆地 | 0★ | 释放单位至 pos;boat 解体 | [§3.2](./detail.md) |
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
**填写要领**:
|
|
324
|
+
- 操作名: `func_name(key_params)` 风格,参数只写关键入参,不写类型注解
|
|
325
|
+
- 前置条件: 以「;」分隔,不超过 3 个
|
|
326
|
+
- 实现细节: 链接到 `.detail.md` 对应章节(如尚未创建,填「待补充」)
|
|
327
|
+
|
|
328
|
+
---
|
|
329
|
+
|
|
330
|
+
### 守则 8:Mermaid 优先于伪代码
|
|
331
|
+
**规则**: 对于决策树、状态机类逻辑,**优先使用 Mermaid flowchart**,完整伪代码移入 `.detail.md`。
|
|
270
332
|
|
|
271
|
-
|
|
333
|
+
**为什么?** Mermaid 图在 L0 层对 AI 输入 Token 消耗更低,且可视化程度更高。
|
|
334
|
+
|
|
335
|
+
**示例**:
|
|
336
|
+
|
|
337
|
+
````markdown
|
|
338
|
+
### 决策树:陆地单位任务规划
|
|
339
|
+
|
|
340
|
+
```mermaid
|
|
341
|
+
flowchart TD
|
|
342
|
+
A[单位在中立村落上?] -->|是| B[→ capture 任务, 优先级 100]
|
|
343
|
+
A -->|否| C[HP < 撤退阀值?]
|
|
344
|
+
C -->|是| D[→ move_to 最近己方城市, 优先级 90]
|
|
345
|
+
C -->|否| E{军事策略}
|
|
346
|
+
E -->|aggressive| F[→ 攻击/趋近目标]
|
|
347
|
+
E -->|defensive| G[→ 守卫无防御城市]
|
|
348
|
+
E -->|neutral| H[→ 探索/扩张焦点]
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
> 完整实现见 [`executor.detail.md §4.1`](./executor.detail.md)
|
|
352
|
+
````
|
|
353
|
+
|
|
354
|
+
---
|
|
355
|
+
|
|
356
|
+
### 工具1: 系统设计 L0 模板(导航层)
|
|
272
357
|
- **路径**: `.agent/skills/system-designer/references/system-design-template.md`
|
|
273
|
-
- **用途**: 14
|
|
358
|
+
- **用途**: L0 导航层模板,14章节结构,操作契约表格格式
|
|
274
359
|
- **使用**: `view_file .agent/skills/system-designer/references/system-design-template.md`
|
|
275
360
|
|
|
276
|
-
### 工具2:
|
|
361
|
+
### 工具2: 系统设计 L1 模板(实现层)
|
|
362
|
+
- **路径**: `.agent/skills/system-designer/references/system-design-detail-template.md`
|
|
363
|
+
- **用途**: L1 实现层模板,触发 R1-R5 任意一条时创建 `{system}.detail.md`
|
|
364
|
+
- **使用**: `view_file .agent/skills/system-designer/references/system-design-detail-template.md`
|
|
365
|
+
|
|
366
|
+
### 工具3: 调研报告存储
|
|
277
367
|
- **路径**: `genesis/v{N}/04_SYSTEM_DESIGN/_research/{system-id}-research.md`
|
|
278
368
|
- **用途**: 保存 /explore 的调研结果
|
|
279
369
|
- **格式**: Exploration Report (由 /explore 生成)
|
|
280
370
|
|
|
281
|
-
### 工具
|
|
371
|
+
### 工具4: 架构图工具
|
|
282
372
|
- **工具**: Mermaid
|
|
283
|
-
- **语法**:
|
|
373
|
+
- **语法**:
|
|
284
374
|
- `graph TD` - 架构图
|
|
375
|
+
- `flowchart TD` - 决策树(优先用此替代伪代码,见守则8)
|
|
285
376
|
- `sequenceDiagram` - 数据流图
|
|
286
|
-
- `classDiagram` -
|
|
377
|
+
- `classDiagram` - 实体关系图
|
|
287
378
|
- **参考**: [Mermaid Documentation](https://mermaid.js.org/)
|
|
288
379
|
|
|
289
380
|
---
|
|
@@ -300,20 +391,23 @@ interface User {
|
|
|
300
391
|
|
|
301
392
|
### 内容质量
|
|
302
393
|
- [ ] 系统边界定义清晰(输入/输出/依赖)
|
|
303
|
-
- [ ]
|
|
304
|
-
- [ ]
|
|
305
|
-
- [ ]
|
|
394
|
+
- [ ] **§5 接口设计使用操作契约表格**,而非函数伪代码(守则7)
|
|
395
|
+
- [ ] **§6 数据模型只有属性字段 + Protocol 签名**,无方法体(守则8)
|
|
396
|
+
- [ ] Trade-offs 章节至少讨论 2 个重要决策
|
|
397
|
+
- [ ] 决策树/流程图使用 Mermaid,而非伪代码(守则8)
|
|
306
398
|
|
|
307
399
|
### 约束遵守
|
|
308
|
-
- [ ] PRD的性能约束已继承
|
|
309
|
-
- [ ] PRD的安全约束已继承
|
|
310
|
-
- [ ] ADR的技术决策已遵守
|
|
311
|
-
- [ ] 追溯链完整([REQ-XXX]引用)
|
|
400
|
+
- [ ] PRD 的性能约束已继承
|
|
401
|
+
- [ ] PRD 的安全约束已继承
|
|
402
|
+
- [ ] ADR 的技术决策已遵守
|
|
403
|
+
- [ ] 追溯链完整([REQ-XXX] 引用)
|
|
404
|
+
- [ ] **L0 文件无方法体伪代码**(如有,立即移入 `.detail.md §3`)
|
|
405
|
+
- [ ] **触发 R1-R5 时已创建 `.detail.md`**(否则标记「待补充」)
|
|
312
406
|
|
|
313
407
|
### 可实施性
|
|
314
|
-
- [ ]
|
|
315
|
-
- [ ] 数据库Schema完整(可以直接执行)
|
|
408
|
+
- [ ] 操作契约表格完整(每个核心操作都有对应行)
|
|
316
409
|
- [ ] 测试策略明确(单元/集成/E2E)
|
|
410
|
+
- [ ] 如已创建 `.detail.md`,§3 每个小节都填写了「准入理由」
|
|
317
411
|
- [ ] 部署流程清晰(如需要)
|
|
318
412
|
|
|
319
413
|
---
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# {System Name} — 实现细节 (detail)
|
|
2
|
+
|
|
3
|
+
> **文件性质**: L1 实现层
|
|
4
|
+
> **对应 L0**: [`{system}.md`](./{system}.md)
|
|
5
|
+
> 本文件仅在 `/forge` 任务的 `**输入**` 字段明确引用时加载。
|
|
6
|
+
> 日常阅读、系统概览、任务规划请优先阅读 L0 层文件。
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 版本历史
|
|
11
|
+
|
|
12
|
+
> 所有版本变更记录集中于此,不再散落在代码注释中。
|
|
13
|
+
|
|
14
|
+
| 版本 | 日期 | Changelog |
|
|
15
|
+
| ---- | ------------ | --------- |
|
|
16
|
+
| v1.0 | {YYYY-MM-DD} | 初始版本 |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## §1 配置常量 (Config Constants)
|
|
21
|
+
|
|
22
|
+
> 所有硬编码配置、枚举映射、查找表集中放在此处。
|
|
23
|
+
|
|
24
|
+
```python
|
|
25
|
+
# ── 示例: 单位配置表 ──
|
|
26
|
+
# 每行格式: UnitType: {atk, def, hp, mov, range, cost, tech, behavior, move_type}
|
|
27
|
+
UNIT_CONFIG = {
|
|
28
|
+
# UnitType.WARRIOR: {...},
|
|
29
|
+
# ...
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
# ── 示例: 地形配置表 ──
|
|
33
|
+
TERRAIN_CONFIG = {
|
|
34
|
+
# TerrainType.PLAIN: {move_cost: 1, passable: "land", buildings: [...]}
|
|
35
|
+
# ...
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
# ── 示例: 建筑配置表 ──
|
|
39
|
+
BUILDING_CONFIG = {
|
|
40
|
+
# BuildingType.FARM: {cost: 5, tech: "farming", rp_bonus: 1}
|
|
41
|
+
# ...
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## §2 核心数据结构完整定义 (Full Data Structures)
|
|
48
|
+
|
|
49
|
+
> 包含方法实现的完整类定义(L0 层只放无方法的属性声明)。
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
# ── 示例: 完整类定义(含方法) ──
|
|
53
|
+
|
|
54
|
+
@dataclass
|
|
55
|
+
class ExampleEntity:
|
|
56
|
+
id: str
|
|
57
|
+
# ... 字段
|
|
58
|
+
|
|
59
|
+
def some_method(self) -> bool:
|
|
60
|
+
"""方法说明"""
|
|
61
|
+
# 完整逻辑...
|
|
62
|
+
pass
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## §3 核心算法伪代码 (Non-Trivial Algorithm Pseudocode)
|
|
68
|
+
|
|
69
|
+
> [!IMPORTANT]
|
|
70
|
+
> **严格准入门槛 — 不满足任意一条,禁止写入本节**:
|
|
71
|
+
>
|
|
72
|
+
> | 准入条件 | 说明 |
|
|
73
|
+
> |---------|------|
|
|
74
|
+
> | 函数体估计 **> 15 行** | 短函数的意图从 L0 操作契约表格已可理解,不需要伪代码 |
|
|
75
|
+
> | 含**不明显的业务规则** | 如战斗伤害公式、路径寻找、状态机分支、复杂校验逻辑 |
|
|
76
|
+
> | 含**多步骤副作用链** | 如"A→检查→B→更新C→触发D"且顺序不能颠倒 |
|
|
77
|
+
> | **同事看签名猜不出实现** | 若函数名+参数名已能清楚表达意图,则不需要伪代码 |
|
|
78
|
+
>
|
|
79
|
+
> **反例(禁止写入 §3)**:
|
|
80
|
+
> ```python
|
|
81
|
+
> # ❌ 太简单,不需要伪代码
|
|
82
|
+
> def get_nation_stars(nation: Nation) -> int:
|
|
83
|
+
> return nation.stars
|
|
84
|
+
>
|
|
85
|
+
> # ❌ 5行setter,从签名已可理解
|
|
86
|
+
> def set_military_target(self, target: str) -> None:
|
|
87
|
+
> self.military_target = target
|
|
88
|
+
> self.last_updated_turn = world.turn
|
|
89
|
+
> ```
|
|
90
|
+
|
|
91
|
+
每个小节对应 L0 操作契约表格中的一行,提供完整函数体。
|
|
92
|
+
|
|
93
|
+
### §3.1 {操作名称}
|
|
94
|
+
|
|
95
|
+
**对应契约**: L0 §{章节} 操作契约表 — `{function_name}()`
|
|
96
|
+
**准入理由**: {为什么这个函数需要伪代码,满足了哪条准入条件}
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
def function_name(param1: Type, param2: Type, ...) -> ReturnType:
|
|
100
|
+
"""
|
|
101
|
+
函数说明。
|
|
102
|
+
|
|
103
|
+
前置条件:
|
|
104
|
+
1. ...
|
|
105
|
+
|
|
106
|
+
副作用:
|
|
107
|
+
- ...
|
|
108
|
+
"""
|
|
109
|
+
# 完整实现逻辑
|
|
110
|
+
pass
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**关键设计注意事项**:
|
|
114
|
+
- 注意点1 (如: 深拷贝、竞争条件、顺序依赖等)
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
### §3.2 {操作名称}
|
|
119
|
+
|
|
120
|
+
```python
|
|
121
|
+
# ...
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## §4 决策树详细逻辑 (Decision Tree Details)
|
|
127
|
+
|
|
128
|
+
> 对应 L0 层 Mermaid 决策树的文字展开 + 完整伪代码。
|
|
129
|
+
|
|
130
|
+
### §4.1 {决策场景名称}
|
|
131
|
+
|
|
132
|
+
**对应 L0 Mermaid**: `{system}.md §{章节}`
|
|
133
|
+
|
|
134
|
+
```python
|
|
135
|
+
def plan_or_decide(...):
|
|
136
|
+
"""
|
|
137
|
+
决策逻辑完整实现。
|
|
138
|
+
"""
|
|
139
|
+
# Step 1: 检查高优先级条件
|
|
140
|
+
# ...
|
|
141
|
+
|
|
142
|
+
# Step 2: 分支逻辑
|
|
143
|
+
# ...
|
|
144
|
+
pass
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## §5 边缘情况与注意事项 (Edge Cases & Gotchas)
|
|
150
|
+
|
|
151
|
+
> 实现时必须处理的非显而易见的情况。
|
|
152
|
+
|
|
153
|
+
| 场景 | 风险 | 处理方式 |
|
|
154
|
+
| -------------- | ---------- | -------------- |
|
|
155
|
+
| {边缘情况描述} | {潜在 Bug} | {正确处理方式} |
|
|
156
|
+
|
|
157
|
+
### §5.1 {具体边缘情况}
|
|
158
|
+
|
|
159
|
+
```python
|
|
160
|
+
# ❌ 错误做法 (会导致什么问题)
|
|
161
|
+
# cloned_unit.embarked_unit = unit.embarked_unit # 浅拷贝导致状态污染!
|
|
162
|
+
|
|
163
|
+
# ✅ 正确做法
|
|
164
|
+
# cloned_unit.embarked_unit = deepcopy(unit.embarked_unit) if unit.embarked_unit else None
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## §6 测试辅助 (Test Helpers)
|
|
170
|
+
|
|
171
|
+
> 单元测试中复用的工厂函数、fixtures 或测试场景说明。
|
|
172
|
+
|
|
173
|
+
```python
|
|
174
|
+
# 示例: 测试用工厂函数
|
|
175
|
+
def make_test_unit(type=UnitType.WARRIOR, hp=10, pos=(0,0)) -> Unit:
|
|
176
|
+
"""创建测试用 Unit 对象"""
|
|
177
|
+
pass
|
|
178
|
+
|
|
179
|
+
def make_test_world(size=8) -> World:
|
|
180
|
+
"""创建测试用 World 对象"""
|
|
181
|
+
pass
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
<!-- ⚠️ 使用指南
|
|
187
|
+
**何时填写本文件**:
|
|
188
|
+
- 触发了 R1-R5 任意一条提取规则时
|
|
189
|
+
- L0 的操作契约表对应的实现需要 > 30 行伪代码时
|
|
190
|
+
|
|
191
|
+
**§ 编号约定**:
|
|
192
|
+
- §1 配置常量: 始终是第一节
|
|
193
|
+
- §2 数据结构: 含方法的完整类
|
|
194
|
+
- §3 算法伪代码: 按照函数顺序编号 (§3.1, §3.2...)
|
|
195
|
+
- §4 决策树展开: 对应 L0 Mermaid 图的文字版
|
|
196
|
+
- §5 边缘情况: 从文档注释中提取的 "# ⚠️ 注意" 类内容
|
|
197
|
+
- §6 测试辅助: 可选
|
|
198
|
+
-->
|