depa-codument 0.4.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/LICENSE +21 -0
- package/README.md +262 -0
- package/package.json +63 -0
- package/src/cli/commands/archive.ts +519 -0
- package/src/cli/commands/decisions.ts +123 -0
- package/src/cli/commands/engineering.ts +105 -0
- package/src/cli/commands/init.ts +54 -0
- package/src/cli/commands/list.ts +73 -0
- package/src/cli/commands/modeling.ts +105 -0
- package/src/cli/commands/show.ts +238 -0
- package/src/cli/commands/status.ts +140 -0
- package/src/cli/commands/upgrade-track.ts +385 -0
- package/src/cli/commands/upgrade-workspace.ts +138 -0
- package/src/cli/commands/validate.ts +330 -0
- package/src/cli/engineering/config.ts +68 -0
- package/src/cli/engineering/lint.ts +58 -0
- package/src/cli/engineering/merge.ts +172 -0
- package/src/cli/engineering/registry.ts +230 -0
- package/src/cli/engineering/schema.ts +126 -0
- package/src/cli/engineering/validate.ts +286 -0
- package/src/cli/index.ts +136 -0
- package/src/cli/modeling/config.ts +68 -0
- package/src/cli/modeling/lint.ts +58 -0
- package/src/cli/modeling/merge.ts +172 -0
- package/src/cli/modeling/registry.ts +229 -0
- package/src/cli/modeling/schema.ts +160 -0
- package/src/cli/modeling/validate.ts +282 -0
- package/src/cli/utils/index.ts +941 -0
- package/src/cli/utils/install.ts +291 -0
- package/src/cli/utils/spec-xml.ts +673 -0
- package/src/cli/utils/track-time.ts +75 -0
- package/src/cli/utils/vfs.ts +102 -0
- package/src/templates/codument/README.md +59 -0
- package/src/templates/codument/attractors/product.md +17 -0
- package/src/templates/codument/attractors/project.md +10 -0
- package/src/templates/codument/backlog/README.md +33 -0
- package/src/templates/codument/config/attractor-profiles.xml +31 -0
- package/src/templates/codument/config/engineering.xml +22 -0
- package/src/templates/codument/config/modeling.xml +22 -0
- package/src/templates/codument/config/operation-hooks.xml +55 -0
- package/src/templates/codument/memory/README.md +13 -0
- package/src/templates/codument/missions/README.md +125 -0
- package/src/templates/codument/sop/README.md +14 -0
- package/src/templates/codument/std/AGENTS.md +82 -0
- package/src/templates/codument/std/attractors/depa-attractor.md +572 -0
- package/src/templates/codument/std/attractors/knowledge-tiers.md +128 -0
- package/src/templates/codument/std/attractors/model-driven-docs.md +293 -0
- package/src/templates/codument/std/attractors/project-memory.md +48 -0
- package/src/templates/codument/std/docs-impl-fractal/index.md +110 -0
- package/src/templates/codument/std/docs-modeling-fractal/index.md +156 -0
- package/src/templates/codument/std/kernel-pointer.md +19 -0
- package/src/templates/codument/std/operations/README.md +30 -0
- package/src/templates/codument/std/operations/_operation-spec.md +41 -0
- package/src/templates/codument/std/operations/archive-mission.md +66 -0
- package/src/templates/codument/std/operations/archive-track.md +238 -0
- package/src/templates/codument/std/operations/artifact-sync.md +172 -0
- package/src/templates/codument/std/operations/discuss-phase.md +214 -0
- package/src/templates/codument/std/operations/discuss.md +87 -0
- package/src/templates/codument/std/operations/docs-bootstrap.md +148 -0
- package/src/templates/codument/std/operations/gap-loop.md +301 -0
- package/src/templates/codument/std/operations/impl-mission.md +167 -0
- package/src/templates/codument/std/operations/impl-quick.md +79 -0
- package/src/templates/codument/std/operations/impl-track.md +537 -0
- package/src/templates/codument/std/operations/migrate.md +337 -0
- package/src/templates/codument/std/operations/plan-mission.md +230 -0
- package/src/templates/codument/std/operations/plan-track-wave.md +231 -0
- package/src/templates/codument/std/operations/plan-track.md +579 -0
- package/src/templates/codument/std/operations/revise-track.md +136 -0
- package/src/templates/codument/std/operations/validate.md +339 -0
- package/src/templates/codument/std/operations/verify.md +184 -0
- package/src/templates/codument/std/root-agents.md +39 -0
- package/src/templates/codument/std/sop/questioning.md +98 -0
- package/src/templates/codument/std/sop/tdd.md +26 -0
- package/src/templates/codument/std/sop/validation.md +25 -0
- package/src/templates/codument/std/sop/wave-exec.md +42 -0
- package/src/templates/codument/std/sop/workflow.md +35 -0
- package/src/templates/codument/std/spec/behavior-delta.md +36 -0
- package/src/templates/codument/std/spec/behavior-registry.md +42 -0
- package/src/templates/codument/std/spec/engineering-delta.md +68 -0
- package/src/templates/codument/std/spec/engineering-node-schema.md +86 -0
- package/src/templates/codument/std/spec/engineering-registry.md +82 -0
- package/src/templates/codument/std/spec/flow-notation.md +93 -0
- package/src/templates/codument/std/spec/folder-manifest.md +99 -0
- package/src/templates/codument/std/spec/mission-xml-spec.md +249 -0
- package/src/templates/codument/std/spec/modeling-delta.md +85 -0
- package/src/templates/codument/std/spec/modeling-node-schema.md +183 -0
- package/src/templates/codument/std/spec/modeling-registry.md +49 -0
- package/src/templates/codument/std/spec/track-xml-spec.md +272 -0
- package/src/templates/codument/std/spec/xnl-format.md +301 -0
- package/src/templates/codument/workflows/README.md +15 -0
- package/src/templates/manifest.ts +177 -0
- package/src/templates/skills/README.md +38 -0
- package/src/templates/skills/codument-archive/SKILL.md +17 -0
- package/src/templates/skills/codument-archive-mission/SKILL.md +17 -0
- package/src/templates/skills/codument-archive-track/SKILL.md +17 -0
- package/src/templates/skills/codument-artifact-sync/SKILL.md +17 -0
- package/src/templates/skills/codument-code-quality-score/SKILL.md +67 -0
- package/src/templates/skills/codument-decision-tree/SKILL.md +40 -0
- package/src/templates/skills/codument-discuss/SKILL.md +17 -0
- package/src/templates/skills/codument-discuss-phase/SKILL.md +17 -0
- package/src/templates/skills/codument-docs-bootstrap/SKILL.md +17 -0
- package/src/templates/skills/codument-gap-loop/SKILL.md +17 -0
- package/src/templates/skills/codument-impl-mission/SKILL.md +17 -0
- package/src/templates/skills/codument-impl-quick/SKILL.md +17 -0
- package/src/templates/skills/codument-impl-track/SKILL.md +17 -0
- package/src/templates/skills/codument-implement/SKILL.md +14 -0
- package/src/templates/skills/codument-migrate/SKILL.md +17 -0
- package/src/templates/skills/codument-modeling-engineering-e2e/SKILL.md +74 -0
- package/src/templates/skills/codument-plan-mission/SKILL.md +17 -0
- package/src/templates/skills/codument-plan-track/SKILL.md +17 -0
- package/src/templates/skills/codument-plan-track-wave/SKILL.md +17 -0
- package/src/templates/skills/codument-revise-track/SKILL.md +17 -0
- package/src/templates/skills/codument-track/SKILL.md +14 -0
- package/src/templates/skills/codument-validate/SKILL.md +17 -0
- package/src/templates/skills/codument-verify/SKILL.md +17 -0
- package/src/types/text-assets.d.ts +9 -0
- package/src/version.ts +1 -0
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
# skill: codument-plan-track-wave(规划调度 · Schedule DAG)
|
|
2
|
+
|
|
3
|
+
**描述:** 为 `track.xml` 的某些层配置执行调度——把可并行的层标 `cdt:child-mode="dag"`,并在 `<Schedule>` 里用 `<Dag for><Node id><After ref>` 声明该层直接下层的依赖。wave(波次)不再手维护,是该 DAG 层依赖的**拓扑分层派生视图**,由 `codument-impl-track` 在执行时推导。
|
|
4
|
+
|
|
5
|
+
> 本文是完整规划协议(口径已对齐当前标准)。**程序化流程**(逐层分析、标 dag、声明依赖、校验)用流程标记块(` ```text ` + `@delimiter: --`,构造词汇见 `_operation-spec.md`)表达;**说明、规则、背景、示例**用 Markdown。
|
|
6
|
+
>
|
|
7
|
+
> 本 skill 由旧 `codument:plan-wave` 重命名而来:「波次规划」→「调度规划」。旧版手写 `<waves>` 块 + 每个 task 的 `wave=` 属性;新版只在**需要并行的层**上加 `cdt:child-mode="dag"` 并写**结构化依赖**——一个前驱一行 `<After ref>`,不再有手维护的 wave 列表。
|
|
8
|
+
>
|
|
9
|
+
> 口径映射:`codument:plan-wave`→`codument-plan-track-wave`;`plan.xml`→`track.xml`;phase = `<TaskSpace>` 第一层 `<TaskGroup>`;`execution_mode=wave`/`<waves>`/`wave=`→逐层 `cdt:child-mode="dag"` + `<Schedule><Dag for><Node id><After ref>`;`wave_config`→`<Schedule><Parallel max-concurrent spot-check>`;`context_files`→`<Ports><MaterialBundle role="input">`;`spec_deltas/`→`behavior_deltas/`。`context.md`/`design/`/`proposal/` 规划期外部记忆现归 `tracks/<id>/analysis/`。
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 0.0 总纲
|
|
14
|
+
|
|
15
|
+
调度按**层**配置,**默认零成本**:未标 `cdt:child-mode="dag"` 的层按子节点 `order` 依次执行,大多数小 track **跳过本 skill 即可**。只有某个 phase(或非叶 task)的直接下层确实**可并行**时,才给该节点加 `cdt:child-mode="dag"` 并声明依赖。
|
|
16
|
+
|
|
17
|
+
你是 Codument 规范驱动开发框架的 AI 代理助手。本任务是为指定 track 的 `track.xml` 配置调度轴,把可并行的层组织为 DAG,优化并行执行。
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 1.0 前置检查与 track 选择
|
|
22
|
+
|
|
23
|
+
### 1.1 设置检查
|
|
24
|
+
|
|
25
|
+
验证 Codument 环境正确初始化:
|
|
26
|
+
|
|
27
|
+
- 项目上下文:优先 `codument/attractors/`;该目录不存在时旧项目须同时有 `codument/project.md` + `codument/product.md`。
|
|
28
|
+
- `codument/std/`(标准提示词 / spec / sop 已落盘)。
|
|
29
|
+
- `codument/tech-stack.md` 是旧兼容文件,新项目不再推荐。
|
|
30
|
+
|
|
31
|
+
标准工作流文件缺失,或既无 `codument/attractors/` 也无旧项目 `project.md`/`product.md` 组合 → 立即停止,宣布:「Codument 未设置。请先运行 `codument init` 初始化工作区。」**不要**继续 track 选择。
|
|
32
|
+
|
|
33
|
+
### 1.2 交互式问答
|
|
34
|
+
|
|
35
|
+
引用 `codument/std/sop/questioning.md` 的 `ask-*` 协议。**重要**:提问 ToolCall 只用于真实澄清 / 选择 / 确认;**禁止**为测试运行环境能力而发占位问题。当前步骤无需立即提问时直接继续。
|
|
36
|
+
|
|
37
|
+
### 1.3 选择 track
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
@delimiter: --
|
|
41
|
+
-- #sequence ?select
|
|
42
|
+
---- #step ?s1
|
|
43
|
+
扫描 codument/tracks/ 各 track 的 track.xml <Metadata>;无有效 track 目录或 track.xml → 宣布"没有可规划调度的活跃 track"并停止
|
|
44
|
+
---- /?s1
|
|
45
|
+
---- #if ?s2 cond="用户提供了 track 名称参数"
|
|
46
|
+
------ #sequence ?named
|
|
47
|
+
-------- #step ?m1
|
|
48
|
+
对 track-id 做精确、不区分大小写匹配
|
|
49
|
+
-------- /?m1
|
|
50
|
+
-------- #if ?m2 cond="精确且唯一匹配"
|
|
51
|
+
直接选中并继续,不需用户确认
|
|
52
|
+
-------- /?m2
|
|
53
|
+
-------- #else ?m3
|
|
54
|
+
无匹配或多个候选 → ask-single-question-free 请求澄清
|
|
55
|
+
-------- /?m3
|
|
56
|
+
------ /?named
|
|
57
|
+
---- /?s2
|
|
58
|
+
---- #else ?s3
|
|
59
|
+
------ #step ?u1
|
|
60
|
+
取第一个 <Metadata><Status> 非 completed/cancelled 的 track;宣布自动选择并继续;若全部已完成则宣布并停止
|
|
61
|
+
------ /?u1
|
|
62
|
+
---- /?s3
|
|
63
|
+
-- /?select
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
未选出 track 则通知用户并等待指示(`ask-single-question-free`)。
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## 2.0 加载上下文(step 0)
|
|
71
|
+
|
|
72
|
+
读取选定 track 的文件(路径以 `codument/tracks/<track-id>/` 为根):
|
|
73
|
+
|
|
74
|
+
- `track.xml` — 当前任务计划(TaskSpace / Schedule / Hooks / Ports)。
|
|
75
|
+
- `behavior_deltas/**/*.xml` — 行为增量(旧 track 兼容 `spec.md`)。
|
|
76
|
+
- `design.md` — 方案设计(如存在)。
|
|
77
|
+
- `analysis/` — 规划期外部记忆(`findings.md`/`knowledge.md`,大型 track 的子设计 / 子提案现归此)。
|
|
78
|
+
- `codument/std/spec/track-xml-spec.md` — `track.xml` schema(特别是 §4 `cdt:child-mode`、§5 `<Schedule>`)。
|
|
79
|
+
- `codument/config/operation-hooks.xml` — **仅用于**识别显式 hook 触发的 artifact/knowledge sync 任务。
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## 3.0 调度规划流程
|
|
84
|
+
|
|
85
|
+
### 3.1 逐层分析并行机会(step 1)
|
|
86
|
+
|
|
87
|
+
遍历 `<TaskSpace>` 各非叶节点(phase 及嵌套 TaskGroup),逐节点判断其**直接下层**是否存在可并行(无前后依赖)的子节点。对每个非叶节点:
|
|
88
|
+
|
|
89
|
+
```text
|
|
90
|
+
@delimiter: --
|
|
91
|
+
-- #loop ?levels for="TaskSpace 每个非叶节点(phase 及嵌套 TaskGroup)"
|
|
92
|
+
---- #step ?a1
|
|
93
|
+
分析该节点【直接下层】子节点之间的逻辑依赖:据 Description、cdt:Acceptance、技术栈推断;参考 design.md / analysis 决策
|
|
94
|
+
---- /?a1
|
|
95
|
+
---- #step ?a2
|
|
96
|
+
识别并行机会:无依赖关系的子节点可并行(同 wave);有共同前置的可在同一 wave;有顺序依赖的必须分属不同 wave(拓扑层级不同)
|
|
97
|
+
---- /?a2
|
|
98
|
+
---- #step ?a3
|
|
99
|
+
仅当 plan 已有显式文档/制品同步子节点,或 operation-hooks.xml 显式 `<cdt:ArtifactSync use="..."/>` 时,才把 artifact sync 纳入该层依赖图;不要只因 docs profile 启用推断隐式同步任务
|
|
100
|
+
---- /?a3
|
|
101
|
+
-- /?levels
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### 3.2 生成 DAG 分组并展示(step 2)
|
|
105
|
+
|
|
106
|
+
```text
|
|
107
|
+
@delimiter: --
|
|
108
|
+
-- #sequence ?group
|
|
109
|
+
---- #step ?g1
|
|
110
|
+
对每个有可并行子节点的层:拓扑排序其直接下层 → 同一拓扑层级归为同一 wave(派生视图,仅用于展示,不入库)
|
|
111
|
+
---- /?g1
|
|
112
|
+
---- #step ?g2
|
|
113
|
+
向用户展示分组方案并征求确认(ask-single-question-free);见下方示例
|
|
114
|
+
---- /?g2
|
|
115
|
+
-- /?group
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
展示示例(wave 仅作直观分层,最终落库的是结构化 `<After>` 依赖):
|
|
119
|
+
|
|
120
|
+
> 📋 **Phase P1 调度分组方案**(依赖将以结构化 `<After ref>` 落库;以下 wave 仅为直观分层)
|
|
121
|
+
>
|
|
122
|
+
> **第 1 层**(无依赖,可并行)
|
|
123
|
+
> - T1.1: \<task name>
|
|
124
|
+
> - T1.2: \<task name>
|
|
125
|
+
>
|
|
126
|
+
> **第 2 层**(依赖 T1.1)
|
|
127
|
+
> - T1.3: \<task name>
|
|
128
|
+
>
|
|
129
|
+
> **第 3 层**(依赖 T1.1、T1.2)
|
|
130
|
+
> - T1.4: \<task name>
|
|
131
|
+
> - T1.5: \<task name>
|
|
132
|
+
>
|
|
133
|
+
> 此方案是否合理?请建议调整或确认。
|
|
134
|
+
|
|
135
|
+
### 3.3 写入 track.xml(step 3)
|
|
136
|
+
|
|
137
|
+
确认后更新 `track.xml` 的**结构轴标记** + **调度轴依赖**:
|
|
138
|
+
|
|
139
|
+
```text
|
|
140
|
+
@delimiter: --
|
|
141
|
+
-- #sequence ?write
|
|
142
|
+
---- #step ?w1
|
|
143
|
+
对存在并行的层,在该 TaskSpace/TaskGroup 上加 cdt:child-mode="dag";其余层保持默认(不加属性 = sequential)
|
|
144
|
+
---- /?w1
|
|
145
|
+
---- #step ?w2
|
|
146
|
+
对每个 dag 层,在 <Schedule><Dag for="该节点"> 内为有前驱的直接下层各写一个 <Node id>,其前驱用 <After ref> 子元素逐个列出(一个前驱一行)
|
|
147
|
+
---- /?w2
|
|
148
|
+
---- #step ?w3
|
|
149
|
+
旧 context_files(phase 级上下文)→ 收进对应 TaskGroup 的 <Ports><MaterialBundle role="input"> 或 task 物料;不再写独立 <context_files> 块
|
|
150
|
+
---- /?w3
|
|
151
|
+
---- #step ?w4
|
|
152
|
+
并行参数(可选):ask-single-question-closed 问"是否配置 <Parallel>?A) 默认串行、抽检关 B) 自定义";选自定义则写 <Schedule><Parallel max-concurrent spot-check>
|
|
153
|
+
---- /?w4
|
|
154
|
+
-- /?write
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**结构轴**——给可并行的 phase(或嵌套 TaskGroup)加 `cdt:child-mode="dag"`(默认 `sequential` 可省):
|
|
158
|
+
|
|
159
|
+
```xml
|
|
160
|
+
<TaskGroup id="P1" name="后端导出端点" status="NOT_STARTED" order="0" cdt:child-mode="dag">
|
|
161
|
+
…
|
|
162
|
+
</TaskGroup>
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**调度轴**——`<Schedule>` 是与 `<TaskSpace>` **并列的兄弟节点**,每个 `<Dag for>` 只管**一个父节点的直接下层**,前驱用 `<After ref>` 子元素逐行声明:
|
|
166
|
+
|
|
167
|
+
```xml
|
|
168
|
+
<!-- <Schedule> 与 <TaskSpace> 并列,同为 <Track> 的直接子节点 -->
|
|
169
|
+
<Schedule>
|
|
170
|
+
<Dag for="P1">
|
|
171
|
+
<Node id="T1.3">
|
|
172
|
+
<After ref="T1.1"/>
|
|
173
|
+
</Node>
|
|
174
|
+
<Node id="T1.4">
|
|
175
|
+
<After ref="T1.1"/>
|
|
176
|
+
<After ref="T1.2"/>
|
|
177
|
+
</Node>
|
|
178
|
+
</Dag>
|
|
179
|
+
<!-- 要给多个非叶节点配依赖就写多个 <Dag for=...>;不跨层、不跨父 -->
|
|
180
|
+
<Parallel max-concurrent="3" spot-check="true"/> <!-- 取代旧 wave_config,可选 -->
|
|
181
|
+
</Schedule>
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### 3.4 校验(step 4)
|
|
185
|
+
|
|
186
|
+
```text
|
|
187
|
+
@delimiter: --
|
|
188
|
+
-- #sequence ?validate
|
|
189
|
+
---- #step ?v1
|
|
190
|
+
检查每个 <Dag for="X"> 的 X 指向一个 cdt:child-mode="dag" 的节点
|
|
191
|
+
---- /?v1
|
|
192
|
+
---- #step ?v2
|
|
193
|
+
检查 <Node id> 与 <After ref> 只引用该节点的【直接下层】id(不跨层、不跨父)
|
|
194
|
+
---- /?v2
|
|
195
|
+
---- #step ?v3
|
|
196
|
+
检查该层 DAG 无环
|
|
197
|
+
---- /?v3
|
|
198
|
+
---- #step ?v4
|
|
199
|
+
尝试 codument validate <id> --strict(找不到命令则跳过并说明)
|
|
200
|
+
---- /?v4
|
|
201
|
+
-- /?validate
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## 4.0 完成
|
|
207
|
+
|
|
208
|
+
宣布规划完成:
|
|
209
|
+
|
|
210
|
+
> 调度规划完成,track.xml 已更新。
|
|
211
|
+
> - 已标 dag 的层:\<count>
|
|
212
|
+
> - 总依赖边:\<count>
|
|
213
|
+
>
|
|
214
|
+
> 你现在可以运行 `请使用 codument-impl-track skill, 执行 track: <track_id>` 开始执行——wave 由依赖在执行时派生。
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## 5.0 设计要点(为什么这样)
|
|
219
|
+
|
|
220
|
+
- **默认零配置**:未标 `dag` 的层按 `order` 依次执行——大多数 track 不必写任何依赖,跳过本 skill。
|
|
221
|
+
- **依赖完全结构化**:前驱用 `<After ref="…">` **子元素**表达,一个前驱一行——**不用空格分隔的属性字符串**(避免 id 含空格 / 解析歧义);新增一条依赖 = 加一行 `<After>`,对 AI 编辑最省力、最不易错。
|
|
222
|
+
- **作用域单一**:一个 `<Dag>` 只描述**一个父节点的直接下层**之间的边;要给多个非叶节点配依赖就写多个 `<Dag for=...>`,**不跨层、不跨父**——避免旧 `<Needs task on>` 那种全局扁平边的歧义。
|
|
223
|
+
- **wave 是派生视图**:不再手维护 `<waves>`/`wave=`。某 `dag` 层的依赖经拓扑分层即得 wave,由 `codument-impl-track` 执行时推导;并发上限 / 抽检放 `<Parallel>`。具体派发套路见 `codument/std/sop/wave-exec.md`。
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## 附录 A:引用
|
|
228
|
+
|
|
229
|
+
- `codument/std/spec/track-xml-spec.md` — §4 `cdt:child-mode`、§5 `<Schedule><Dag for><Node><After>`、§9 校验规则。
|
|
230
|
+
- `codument/std/sop/wave-exec.md` — DAG 层的派生 wave 调度循环。
|
|
231
|
+
- `codument/std/sop/questioning.md` — `ask-*` 提问协议。
|