@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.
@@ -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)** ⭐ - API/组件/消息格式
106
- 6. **数据模型 (Data Model)** - 数据结构 + Schema
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
- ### 工具1: 系统设计模板
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
- ### 工具3: 架构图工具
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
- - [ ] 接口设计完整(API/组件/消息格式)
304
- - [ ] 数据模型明确(实体/Schema
305
- - [ ] 技术选型有理由(Trade-offs讨论)
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
+ -->