dayloom 0.1.0-beta.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.
- package/README.md +1146 -0
- package/dist/cli/daily.js +41 -0
- package/dist/cli/index.js +33 -0
- package/dist/cli/init.js +40 -0
- package/dist/cli/next.js +60 -0
- package/dist/cli/play.js +39 -0
- package/dist/cli/revise.js +41 -0
- package/dist/cli/settle.js +45 -0
- package/dist/daily/apply-plan.js +25 -0
- package/dist/daily/constants.js +16 -0
- package/dist/daily/dialogue-loop.js +147 -0
- package/dist/daily/finalize.js +23 -0
- package/dist/daily/guard.js +54 -0
- package/dist/daily/index.js +27 -0
- package/dist/daily/intent-router.js +65 -0
- package/dist/daily/mcp-gateway.js +5 -0
- package/dist/daily/mcp-tools.js +8 -0
- package/dist/daily/parse-assistant.js +38 -0
- package/dist/daily/parse-payload.js +10 -0
- package/dist/daily/player-context.js +85 -0
- package/dist/daily/project-plan.js +15 -0
- package/dist/daily/promptpile-loop.js +41 -0
- package/dist/daily/prompts.js +11 -0
- package/dist/daily/read-user-input.js +6 -0
- package/dist/daily/session.js +119 -0
- package/dist/daily/types.js +2 -0
- package/dist/daily/validate-plan.js +46 -0
- package/dist/i18n/detect.js +23 -0
- package/dist/i18n/index.js +22 -0
- package/dist/i18n/messages.js +149 -0
- package/dist/index.js +27 -0
- package/dist/init/apply-payload.js +18 -0
- package/dist/init/archive-transcript.js +28 -0
- package/dist/init/checklist.js +74 -0
- package/dist/init/cleanup.js +12 -0
- package/dist/init/constants.js +21 -0
- package/dist/init/errors.js +11 -0
- package/dist/init/finalize.js +35 -0
- package/dist/init/guard.js +31 -0
- package/dist/init/index.js +59 -0
- package/dist/init/interview-loop.js +103 -0
- package/dist/init/parse-assistant.js +50 -0
- package/dist/init/project-payload.js +78 -0
- package/dist/init/promptpile-run.js +80 -0
- package/dist/init/prompts.js +16 -0
- package/dist/init/read-user-input.js +44 -0
- package/dist/init/scaffold.js +66 -0
- package/dist/init/session.js +98 -0
- package/dist/init/types.js +2 -0
- package/dist/next/index.js +79 -0
- package/dist/next/inspect.js +90 -0
- package/dist/play/ai.js +11 -0
- package/dist/play/event-loop.js +244 -0
- package/dist/play/guard.js +14 -0
- package/dist/play/index.js +21 -0
- package/dist/play/parse-assistant.js +39 -0
- package/dist/play/player-context.js +20 -0
- package/dist/play/prompts.js +9 -0
- package/dist/play/session.js +14 -0
- package/dist/play/state.js +117 -0
- package/dist/play/types.js +2 -0
- package/dist/play/validate.js +156 -0
- package/dist/revise/apply-payload.js +58 -0
- package/dist/revise/bin-resolve.js +38 -0
- package/dist/revise/constants.js +17 -0
- package/dist/revise/dialogue-loop.js +116 -0
- package/dist/revise/diff.js +24 -0
- package/dist/revise/file-hash.js +27 -0
- package/dist/revise/finalize.js +23 -0
- package/dist/revise/guard.js +17 -0
- package/dist/revise/index.js +24 -0
- package/dist/revise/mcp-gateway.js +74 -0
- package/dist/revise/mcp-tools.js +91 -0
- package/dist/revise/parse-assistant.js +41 -0
- package/dist/revise/parse-payload.js +22 -0
- package/dist/revise/process-run.js +77 -0
- package/dist/revise/project-payload.js +62 -0
- package/dist/revise/promptpile-loop.js +41 -0
- package/dist/revise/prompts.js +16 -0
- package/dist/revise/read-user-input.js +35 -0
- package/dist/revise/session.js +119 -0
- package/dist/revise/types.js +2 -0
- package/dist/revise/validate-payload.js +47 -0
- package/dist/settle/ai.js +23 -0
- package/dist/settle/apply.js +58 -0
- package/dist/settle/context.js +69 -0
- package/dist/settle/derive.js +56 -0
- package/dist/settle/guard.js +71 -0
- package/dist/settle/index.js +105 -0
- package/dist/settle/parse-assistant.js +14 -0
- package/dist/settle/parse-payload.js +19 -0
- package/dist/settle/project.js +58 -0
- package/dist/settle/session.js +45 -0
- package/dist/settle/types.js +2 -0
- package/dist/settle/validate.js +100 -0
- package/dist/shared/filtered-stream-output.js +41 -0
- package/dist/shared/promptpile-stream.js +59 -0
- package/dist/shared/run-promptpile-with-stream.js +34 -0
- package/dist/utils/loading.js +54 -0
- package/package.json +39 -0
- package/prompts/README.md +39 -0
- package/prompts/choice.system.md +0 -0
- package/prompts/daily-dialogue.system.md +37 -0
- package/prompts/daily-finalize-plan.system.md +34 -0
- package/prompts/daily-intent-router.system.md +34 -0
- package/prompts/day-planner.system.md +0 -0
- package/prompts/day-summarizer.system.md +0 -0
- package/prompts/dialogue.system.md +0 -0
- package/prompts/diary-writer.system.md +0 -0
- package/prompts/event-runner.system.md +0 -0
- package/prompts/init-finalize.system.md +59 -0
- package/prompts/init-interviewer.system.md +37 -0
- package/prompts/memory-updater.system.md +0 -0
- package/prompts/next-day-seeder.system.md +0 -0
- package/prompts/play-event-dialogue.system.md +20 -0
- package/prompts/play-event-generator.system.md +19 -0
- package/prompts/play-event-resolver.system.md +26 -0
- package/prompts/play-replanner.system.md +21 -0
- package/prompts/revise-dialogue.system.md +22 -0
- package/prompts/revise-finalize.system.md +40 -0
- package/prompts/settle.system.md +28 -0
- package/prompts/spec.md +320 -0
- package/prompts/state-resolver.system.md +0 -0
package/prompts/spec.md
ADDED
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
# dayloom 按天存档规范
|
|
2
|
+
|
|
3
|
+
dayloom 的 **World 存档**通用约定:**一切叙事推进与历史归档均以「天」为单位**。依据 [`../README.md`](../README.md) 第 7~11 节、第 13 节整理;本 spec 随协议演进逐步补全字段 schema。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. 范围
|
|
8
|
+
|
|
9
|
+
| 项 | 说明 |
|
|
10
|
+
|---|---|
|
|
11
|
+
| 存档类型 | **World**(完整叙事存档) |
|
|
12
|
+
| 根目录 | 任意路径,记为 `<world_root>/` |
|
|
13
|
+
| **推进与归档单位** | **Day(天)** — 唯一叙事提交粒度 |
|
|
14
|
+
| 命名示例 | `world_0001/`、`my_campus/` 等,由 `manifest.yaml` 的 `id` 标识 |
|
|
15
|
+
|
|
16
|
+
核心原则:
|
|
17
|
+
|
|
18
|
+
```text
|
|
19
|
+
跨天目录存「当前世界长什么样」
|
|
20
|
+
days/ 按天存「每一天发生了什么」
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
一句话:以文件系统为状态存储、**按天**推进事件、**按天**结算日记与世界状态。
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 2. 核心概念
|
|
28
|
+
|
|
29
|
+
| 概念 | 说明 |
|
|
30
|
+
|------|------|
|
|
31
|
+
| **Day** | **核心单位**:今日计划 → 事件 → 日终结算 → **`summary.md`**、日记与补丁;一天 = 一次叙事提交 |
|
|
32
|
+
| **Event** | 一天内的互动单元,仅存在于该天的 `days/day_NNNN/events/` 下 |
|
|
33
|
+
| **World** | 跨天容器:设定、当前快照、人物/场景/剧情线的**现态** |
|
|
34
|
+
| **Character / Scene / Arc** | 跨天**现态**载体;其历史细节以 `days/` 为准,实体侧 memory/timeline 为派生 |
|
|
35
|
+
| **Memory** | 对**按天历史**的压缩理解(短期 / 长期 / 结构化事实) |
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 3. 按天目录(`days/`)
|
|
40
|
+
|
|
41
|
+
`days/` 是叙事历史的**唯一按天归档**。已完成的 `day_NNNN/` **原则上不可覆盖**。
|
|
42
|
+
|
|
43
|
+
**硬性要求**:凡已结算、写入历史的 `day_NNNN/`,**必须**包含根级 `summary.md`。进行中的当天在结算完成前可无此文件。
|
|
44
|
+
|
|
45
|
+
### 3.1 单日结构
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
days/
|
|
49
|
+
day_0001/
|
|
50
|
+
meta.yaml # 日期元信息、阶段状态
|
|
51
|
+
morning_plan.md # 用户今日计划(**不可改写**,§8.1)
|
|
52
|
+
day_outline.yaml # AI 生成的当天事件大纲
|
|
53
|
+
timeline.md # 当天客观时间线(追加写入)
|
|
54
|
+
|
|
55
|
+
events/
|
|
56
|
+
event_001/
|
|
57
|
+
event.yaml # 元数据:标题、时间、地点、人物、触发原因
|
|
58
|
+
scene.md # 场景描写
|
|
59
|
+
dialogue.md # 对话
|
|
60
|
+
choices.yaml # 行为分支
|
|
61
|
+
user_action.md # 用户选择或自由输入(**不可改写**)
|
|
62
|
+
result.yaml # 事件结果
|
|
63
|
+
state_patch.yaml # 本事件状态补丁
|
|
64
|
+
|
|
65
|
+
ending/
|
|
66
|
+
objective_summary.md # 客观日终总结(结算过程稿,可选)
|
|
67
|
+
diary.md # 用户视角日记(AI 生成)
|
|
68
|
+
state_patch.yaml # 日级合并补丁
|
|
69
|
+
next_day_seed.yaml # 明日事件种子
|
|
70
|
+
|
|
71
|
+
summary.md # **必填**(仅已结算入历史的天):当天客观摘要,供检索与 memory 压缩
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
目录名:`day_NNNN`,`NNNN` 为从 `0001` 起的四位序号,与 `current.yaml` 中的当前天对齐。
|
|
75
|
+
|
|
76
|
+
事件目录名:`event_NNN`,三位序号。
|
|
77
|
+
|
|
78
|
+
### 3.2 `summary.md`
|
|
79
|
+
|
|
80
|
+
| 项 | 约定 |
|
|
81
|
+
|---|---|
|
|
82
|
+
| 路径 | `days/day_NNNN/summary.md` |
|
|
83
|
+
| 何时必须有 | 该天**已结算**并视为历史(`current.yaml` 已推进到下一天) |
|
|
84
|
+
| 内容 | 第三方客观视角的当日摘要:关键事件、人物变化、未解决线索 |
|
|
85
|
+
| 与 `diary.md` | `diary.md` 为用户视角日记;`summary.md` 为结构化检索用的客观摘要 |
|
|
86
|
+
| 与 `ending/objective_summary.md` | 结算时可先在 `ending/` 起草;**定稿须落盘为根级 `summary.md`** |
|
|
87
|
+
|
|
88
|
+
校验:加载历史存档时,缺少 `summary.md` 的已完成 `day_NNNN/` 视为**不完整存档**。
|
|
89
|
+
|
|
90
|
+
### 3.3 单日事务流程
|
|
91
|
+
|
|
92
|
+
```text
|
|
93
|
+
开始 day_NNNN
|
|
94
|
+
→ 写入 morning_plan.md
|
|
95
|
+
→ 生成 day_outline.yaml
|
|
96
|
+
→ 执行 event_001 … event_N(运行 → user_action → state_patch)
|
|
97
|
+
→ 追加 timeline.md
|
|
98
|
+
→ ending:diary.md、summary.md、state_patch.yaml、next_day_seed.yaml
|
|
99
|
+
→ 应用补丁到跨天现态(state / characters / scenes / arcs / memory)
|
|
100
|
+
→ current.yaml 指向下一天
|
|
101
|
+
结束 day_NNNN
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
中途失败时从**当前 event** 恢复;已完成 event 目录不应回写。
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 4. 跨天目录(`<world_root>/`)
|
|
109
|
+
|
|
110
|
+
跨天目录描述**世界现态**与设定;不替代 `days/` 中的按天历史。
|
|
111
|
+
|
|
112
|
+
```text
|
|
113
|
+
<world_root>/
|
|
114
|
+
manifest.yaml # 存档清单:id、协议版本、创建时间
|
|
115
|
+
current.yaml # 当前天指针、阶段、最后成功提交的 day_NNNN
|
|
116
|
+
config.yaml # 运行配置
|
|
117
|
+
|
|
118
|
+
canon/ # 世界设定(低频变更)
|
|
119
|
+
premise.md
|
|
120
|
+
rules.md
|
|
121
|
+
style.md
|
|
122
|
+
user_role.md
|
|
123
|
+
|
|
124
|
+
state/ # 当前世界快照
|
|
125
|
+
world.yaml
|
|
126
|
+
calendar.yaml
|
|
127
|
+
progress.yaml
|
|
128
|
+
variables.yaml
|
|
129
|
+
|
|
130
|
+
characters/ # 人物现态(§6.1)
|
|
131
|
+
index.yaml
|
|
132
|
+
<char_id>/
|
|
133
|
+
profile.md # AI 语义上下文
|
|
134
|
+
relationships.md # AI 语义上下文
|
|
135
|
+
meta.yaml # 程序字段:id/type/status/tags
|
|
136
|
+
memory.md # 派生:从 days/ 压缩
|
|
137
|
+
timeline.md # 派生:按天索引,指向 days/
|
|
138
|
+
|
|
139
|
+
scenes/ # 场景现态(§6.2)
|
|
140
|
+
index.yaml
|
|
141
|
+
<scene_id>/
|
|
142
|
+
profile.md # AI 语义上下文
|
|
143
|
+
meta.yaml # 程序字段:id/type/status/tags
|
|
144
|
+
memory.md
|
|
145
|
+
triggers.yaml
|
|
146
|
+
timeline.md
|
|
147
|
+
|
|
148
|
+
arcs/ # 剧情线现态(§6.3)
|
|
149
|
+
index.yaml
|
|
150
|
+
<arc_id>/
|
|
151
|
+
profile.md
|
|
152
|
+
meta.yaml
|
|
153
|
+
progress.yaml
|
|
154
|
+
timeline.md
|
|
155
|
+
|
|
156
|
+
days/ # 按天历史(§3,权威来源)
|
|
157
|
+
day_0001/
|
|
158
|
+
...
|
|
159
|
+
|
|
160
|
+
memory/ # 跨天压缩记忆(派生,可重算)
|
|
161
|
+
short_term.md # 最近若干天
|
|
162
|
+
long_term.md
|
|
163
|
+
facts.yaml
|
|
164
|
+
unresolved_threads.yaml
|
|
165
|
+
important_events.yaml
|
|
166
|
+
|
|
167
|
+
logs/ # 追溯
|
|
168
|
+
state_changes.jsonl
|
|
169
|
+
generation_trace.md
|
|
170
|
+
errors.md
|
|
171
|
+
|
|
172
|
+
exports/ # 可选
|
|
173
|
+
diaries/
|
|
174
|
+
summaries/
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
`<char_id>`、`<scene_id>`、`<arc_id>` 使用小写 snake_case。
|
|
178
|
+
|
|
179
|
+
存档协议定义见 dayloom 包 [`prompts/spec.md`](./spec.md),**不参与** `<world_root>/` 运行时加载。
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## 5. 三层语义
|
|
184
|
+
|
|
185
|
+
| 层 | 目录 | 粒度 | 原则 |
|
|
186
|
+
|----|------|------|------|
|
|
187
|
+
| **按天历史** | `days/` | 天 | 权威叙事记录;已完成天**必有 `summary.md`**;**不可覆盖** |
|
|
188
|
+
| **跨天现态** | `state/`、`characters/`、`scenes/`、`arcs/`、`canon/` | 世界 | 反映「现在」;由日终补丁更新 |
|
|
189
|
+
| **派生理解** | `memory/`、各 `*/memory.md`、各 `*/timeline.md` | 压缩 / 索引 | **可重算**;须能回溯到 `days/` |
|
|
190
|
+
| **追溯** | `logs/` | 变更流水 | 调试与回放 |
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## 6. 实体现态约定
|
|
195
|
+
|
|
196
|
+
实体目录只维护**跨天现态**;按天发生了什么,以 `days/day_NNNN/` 为准。
|
|
197
|
+
|
|
198
|
+
### 6.1 Character
|
|
199
|
+
|
|
200
|
+
| 文件 | 内容 |
|
|
201
|
+
|------|------|
|
|
202
|
+
| `profile.md` | 角色语义设定:身份、性格、目标、秘密、口吻等 |
|
|
203
|
+
| `relationships.md` | 与主角及其他角色的自然语言关系说明 |
|
|
204
|
+
| `meta.yaml` | 程序字段:id、type、status、tags |
|
|
205
|
+
| `memory.md` | 长期记忆(**派生**,从 `days/` 重算) |
|
|
206
|
+
| `timeline.md` | **按天**事件索引(**派生**),条目应能对应到 `days/day_NNNN/` 及其 **`summary.md`** |
|
|
207
|
+
|
|
208
|
+
### 6.2 Scene
|
|
209
|
+
|
|
210
|
+
| 文件 | 内容 |
|
|
211
|
+
|------|------|
|
|
212
|
+
| `profile.md` | 场景描述、氛围、进入条件、可互动元素 |
|
|
213
|
+
| `meta.yaml` | 程序字段:id、type、status、tags |
|
|
214
|
+
| `triggers.yaml` | 可触发事件索引 |
|
|
215
|
+
| `memory.md` | 场景记忆(**派生**) |
|
|
216
|
+
| `timeline.md` | **按天**场景事件索引(**派生**) |
|
|
217
|
+
|
|
218
|
+
### 6.3 Arc
|
|
219
|
+
|
|
220
|
+
| 文件 | 内容 |
|
|
221
|
+
|------|------|
|
|
222
|
+
| `profile.md` | 目标、冲突、参与人物的语义描述 |
|
|
223
|
+
| `meta.yaml` | 程序字段:id、type、status、tags |
|
|
224
|
+
| `progress.yaml` | 当前阶段、进度、下一触发点 |
|
|
225
|
+
| `timeline.md` | **按天**剧情推进索引(**派生**) |
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## 7. 状态更新原则
|
|
230
|
+
|
|
231
|
+
### 7.1 不可覆盖(用户原文)
|
|
232
|
+
|
|
233
|
+
- `days/*/morning_plan.md`
|
|
234
|
+
- `days/*/events/*/user_action.md`
|
|
235
|
+
|
|
236
|
+
### 7.2 可重算(AI 派生)
|
|
237
|
+
|
|
238
|
+
- `memory/**`
|
|
239
|
+
- `characters/*/memory.md`、`characters/*/timeline.md`
|
|
240
|
+
- `scenes/*/memory.md`、`scenes/*/timeline.md`
|
|
241
|
+
- `arcs/*/timeline.md`
|
|
242
|
+
- `days/*/ending/objective_summary.md`(重生成时保留日志)
|
|
243
|
+
- `days/*/summary.md` 在**已结算入历史后**视为当日权威摘要;不应在无日志的情况下覆盖(见 §3.2)
|
|
244
|
+
|
|
245
|
+
### 7.3 先补丁、后合并(按天)
|
|
246
|
+
|
|
247
|
+
1. 每个 event 结束 → `events/*/state_patch.yaml`
|
|
248
|
+
2. 全天结束 → `ending/state_patch.yaml`
|
|
249
|
+
3. 状态更新器应用到跨天现态
|
|
250
|
+
|
|
251
|
+
### 7.4 补丁覆盖范围
|
|
252
|
+
|
|
253
|
+
- 人物关系
|
|
254
|
+
- `state/variables.yaml`
|
|
255
|
+
- 场景 / 剧情线进度
|
|
256
|
+
- 新事件种子、未解决线索
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## 8. 文件格式
|
|
261
|
+
|
|
262
|
+
| 用途 | 格式 |
|
|
263
|
+
|------|------|
|
|
264
|
+
| 结构化状态、索引、补丁、短机器字段 | **YAML** |
|
|
265
|
+
| 设定、日记、记忆、时间线 | **Markdown** |
|
|
266
|
+
| 状态变更流水 | **JSONL** |
|
|
267
|
+
|
|
268
|
+
UTF-8 编码。
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
## 9. MVP 最小文件集(按天跑通)
|
|
273
|
+
|
|
274
|
+
**跨天**
|
|
275
|
+
|
|
276
|
+
- `manifest.yaml`、`current.yaml`
|
|
277
|
+
- `canon/premise.md`、`canon/user_role.md`
|
|
278
|
+
- `state/world.yaml`、`state/calendar.yaml`
|
|
279
|
+
- `characters/index.yaml` + 至少 1 个 NPC
|
|
280
|
+
|
|
281
|
+
**第一天 `days/day_0001/`**
|
|
282
|
+
|
|
283
|
+
- `morning_plan.md` → `day_outline.yaml` → 3~5 个 `events/*` → `ending/diary.md` + **`summary.md`** + `ending/state_patch.yaml`
|
|
284
|
+
|
|
285
|
+
MVP 成功标准:连续推进 **10 天**后,跨天现态无明显「重置感」。
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## 10. AI 模块与按天读写
|
|
290
|
+
|
|
291
|
+
| 模块 | 按天读写 |
|
|
292
|
+
|------|----------|
|
|
293
|
+
| Day Planner | 读跨天现态 + `morning_plan.md` → 写 `day_outline.yaml` |
|
|
294
|
+
| Event Runner | 读 `event.yaml` + 现态 → 写 `scene.md`、`dialogue.md`、`choices.yaml` |
|
|
295
|
+
| State Resolver | 读 `user_action.md` → 写 `result.yaml`、`state_patch.yaml` |
|
|
296
|
+
| Diary Writer | 读当天 `timeline.md`、events → 写 `ending/diary.md` |
|
|
297
|
+
| Day Summarizer | 读当天 events、`timeline.md` → 写 **`summary.md`**(结算必填) |
|
|
298
|
+
| Memory Updater | 读**当天** events、`summary.md` → 更新 `memory/` 与实体派生文件 |
|
|
299
|
+
| Next Day Seeder | 写 `ending/next_day_seed.yaml` → 驱动下一天 `day_{N+1}/` |
|
|
300
|
+
|
|
301
|
+
运行时 **system 提示词** 自本目录各 `*.system.md` 加载(见 [`README.md`](./README.md))。
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## 11. 待定义项
|
|
306
|
+
|
|
307
|
+
- [ ] `manifest.yaml` / `current.yaml` 字段表
|
|
308
|
+
- [ ] `day_NNNN` / `event_NNN` 编号与日历映射规则
|
|
309
|
+
- [ ] `state_patch.yaml` 补丁语法与 merge 规则
|
|
310
|
+
- [ ] `event.yaml` / `day_outline.yaml` / `choices.yaml` schema
|
|
311
|
+
- [ ] `summary.md` 字段结构与最小长度要求
|
|
312
|
+
- [ ] 实体 `timeline.md` 按天索引条目格式
|
|
313
|
+
- [ ] 协议版本与向后兼容
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
## 12. 参考
|
|
318
|
+
|
|
319
|
+
- 项目总设计:[`../README.md`](../README.md)
|
|
320
|
+
- 早期架构草案:[`../plan.md`](../plan.md)
|
|
File without changes
|