@haaaiawd/loom 0.9.0 → 1.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.
- package/LICENSE +21 -0
- package/README.md +87 -52
- package/cli/bin/loom.js +438 -149
- package/cli/help/concepts.md +93 -72
- package/cli/help/doctor.md +71 -121
- package/cli/help/loop.md +120 -135
- package/cli/help/patch.md +33 -0
- package/cli/help/preview.md +2 -1
- package/cli/help/version.md +92 -16
- package/cli/help/workflow.md +89 -100
- package/cli/src/activate.js +302 -73
- package/cli/src/auto.js +41 -18
- package/cli/src/diagnostics.js +223 -50
- package/cli/src/guide.js +127 -38
- package/cli/src/init.js +50 -29
- package/cli/src/intent-draft.js +303 -0
- package/cli/src/intent-map.js +540 -54
- package/cli/src/patch.js +214 -0
- package/cli/src/philosophy.js +181 -156
- package/cli/src/preview-prompt.md +13 -6
- package/cli/src/preview.js +1 -0
- package/cli/src/shared/intent-ref.js +38 -0
- package/cli/src/shared/proof-reference.js +19 -0
- package/cli/src/shared/verification-method.js +32 -0
- package/cli/src/verify.js +204 -51
- package/cli/src/version.js +5 -4
- package/dimensions/PART_DECOMPOSITION.md +42 -203
- package/dimensions/SEARCH_METHODOLOGY.md +101 -97
- package/dimensions/examples/AGENT_SYSTEM/README.md +1 -1
- package/dimensions/examples/CLI_TOOL/README.md +1 -1
- package/dimensions/universal/COLLABORATION_PHILOSOPHY.md +28 -77
- package/dimensions/universal/ENGINEERING_CREED.md +30 -74
- package/dimensions/universal/PRODUCT_PHILOSOPHY.md +32 -70
- package/meta/BASELINE.md +91 -276
- package/meta/INTENT_LOOP.md +242 -737
- package/meta/PHILOSOPHY_WEAVER.md +110 -343
- package/meta/ROLE_ACTIVATION.md +103 -267
- package/package.json +4 -3
- package/roles/architect.md +71 -111
- package/roles/forge.md +87 -126
- package/roles/keeper.md +99 -223
- package/roles/visionary.md +57 -86
- package/templates/INTENT_MAP_TEMPLATE.json +24 -10
- package/templates/PHILOSOPHY_TEMPLATE.md +44 -75
- package/templates/VISION_TEMPLATE.md +44 -67
|
@@ -1,74 +1,30 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
- **SICP** — Abelson & Sussman(MIT 经典)。核心:抽象、组合、元语言抽象。理论根基。
|
|
32
|
-
|
|
33
|
-
### 函数式编程哲学
|
|
34
|
-
|
|
35
|
-
- **Structure and Interpretation of Computer Programs** — 见上。
|
|
36
|
-
- **Pure Function-based Architecture** — 搜 "pure function architecture"。核心:纯函数 + 不可变数据 + 副作用隔离。
|
|
37
|
-
- **Haskell 设计哲学** — 搜 "Haskell philosophy pure functional"。核心:纯函数、惰性求值、类型系统。
|
|
38
|
-
|
|
39
|
-
### 系统设计哲学
|
|
40
|
-
|
|
41
|
-
- **A Philosophy of Software Design** — 见上(深模块部分)。
|
|
42
|
-
- **Designing Data-Intensive Applications** — Martin Kleppmann(2017)。核心:数据流、一致性、容错。
|
|
43
|
-
- **The Twelve-Factor App** — https://12factor.net/。核心:配置外置、无状态进程、一次性。
|
|
44
|
-
|
|
45
|
-
### 错误处理哲学
|
|
46
|
-
|
|
47
|
-
- **Joel Spolsky"Exceptions vs Error Codes"** — 搜 "Joel Spolsky exceptions"。经典争论。
|
|
48
|
-
- **Go 的 error-as-value 哲学** — 搜 "Go error handling philosophy"。核心:错误是值,不是控制流。
|
|
49
|
-
- **Rust 的 Result/Option** — 搜 "Rust error handling philosophy"。核心:类型系统强制错误处理。
|
|
50
|
-
|
|
51
|
-
### 测试哲学
|
|
52
|
-
|
|
53
|
-
- **TDD** — Kent Beck *Test-Driven Development*(2002)。核心:红-绿-重构。
|
|
54
|
-
- **Property-based Testing** — 搜 "property based testing philosophy"。核心:测不变量,不测具体案例。
|
|
55
|
-
- **The Way of Testivus** — 搜 "testivus testing philosophy"。核心:测试够用就好,不要过度。
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
## 落地要求
|
|
60
|
-
|
|
61
|
-
织造出的 ENGINEERING_CREED.md 必须包含:
|
|
62
|
-
|
|
63
|
-
1. **工程北极星**:一句话,工程层面的判断基准
|
|
64
|
-
2. **代码原则**:编号(E1, E2...),每条有理由
|
|
65
|
-
3. **工程反模式清单**:编号(EAP1, EAP2...),每条有"不做"和"为什么"
|
|
66
|
-
4. **灵感来源**:至少 2 个独立源,每个源说明"为什么选它"
|
|
67
|
-
5. **底线内化声明**:与 PRODUCT_PHILOSOPHY.md 一致
|
|
68
|
-
6. **章节锚点**:每个章节有 `{#english-anchor}` 标识
|
|
69
|
-
|
|
70
|
-
### 禁止
|
|
71
|
-
|
|
72
|
-
- 禁止照搬 Clean Code 的条目不加工——必须转译为本项目的具体约束
|
|
73
|
-
- 禁止"好代码是可读的"这种废话——必须具体到"什么场景下可读性优先于性能"
|
|
74
|
-
- 禁止抽象层和产品层重复——工程哲学聚焦"怎么写",产品哲学聚焦"为什么存在"
|
|
1
|
+
# Doctrine Lens — Engineering Judgment
|
|
2
|
+
|
|
3
|
+
> 按需使用。它只记录跨多个 Intent 的工程判断,不把常识和局部技术选择永久化。
|
|
4
|
+
|
|
5
|
+
## 触发
|
|
6
|
+
|
|
7
|
+
- 多个系统部分需要共享同一数据、错误、依赖或兼容策略。
|
|
8
|
+
- 某类工程失败反复发生,已成为项目级风险。
|
|
9
|
+
- 一个长期取舍会持续影响架构和实现。
|
|
10
|
+
|
|
11
|
+
如果问题只属于当前技术栈、某个模块或一次实现,让 Architect 定义边界,Forge 在 Expertise Pack 中
|
|
12
|
+
加载相应专业方法。
|
|
13
|
+
|
|
14
|
+
## 决策问题
|
|
15
|
+
|
|
16
|
+
1. 项目最需要控制的复杂度来自哪里?
|
|
17
|
+
2. 哪些契约必须显式,哪些实现细节应保持局部?
|
|
18
|
+
3. 错误、降级和恢复应保护什么用户或系统结果?
|
|
19
|
+
4. 何时引入依赖或抽象,什么证据说明它值得?
|
|
20
|
+
5. 哪些工程反模式会让短期速度转化为长期失控?
|
|
21
|
+
|
|
22
|
+
## 输出标准
|
|
23
|
+
|
|
24
|
+
- 工程北极星。
|
|
25
|
+
- 少量带触发条件的判断原则。
|
|
26
|
+
- 反模式与可观察失败信号。
|
|
27
|
+
- 允许实验与必须审慎的边界。
|
|
28
|
+
- 决策相关 Evidence Map。
|
|
29
|
+
|
|
30
|
+
不要规定函数长度、目录风格、测试比例等通用教条;除非它们由项目证据支持且会反复改变决定。
|
|
@@ -1,70 +1,32 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
- **Jeff Atwood / Joel Spolsky 的工具哲学** — Stack Overflow / Fog Creek 创始人。搜 "Joel Spolsky software philosophy"。
|
|
34
|
-
|
|
35
|
-
### 2C 产品领域(面向终端用户)
|
|
36
|
-
|
|
37
|
-
- **Steve Jobs 产品哲学** — 原著:Walter Isaacson *Steve Jobs*(2011)。核心:减法优先、体验 > 功能。
|
|
38
|
-
- **John Maeda"减法法则"** — *The Laws of Simplicity*(2006)。MIT Press 出版。
|
|
39
|
-
- **Don Norman"以用户为中心的设计"** — *The Design of Everyday Things*(1988/2013 修订版)。
|
|
40
|
-
|
|
41
|
-
### 2B / 平台领域
|
|
42
|
-
|
|
43
|
-
- **Amazon Working Backwards** — 搜 "Amazon working backwards document"。核心:从 PR/FAQ 倒推技术方案。
|
|
44
|
-
- **Google Design Docs** — 搜 "Google design doc template"。核心:设计先行、文档驱动。
|
|
45
|
-
|
|
46
|
-
### 学术建制化领域(如果有理论根基需求)
|
|
47
|
-
|
|
48
|
-
- **SEP"Philosophy of Technology"** — 斯坦福哲学百科全书条目。搜 "SEP philosophy of technology"。
|
|
49
|
-
- **Hubert Dreyfus** — *What Computers Still Can't Do*(技术哲学视角)。
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## 落地要求
|
|
54
|
-
|
|
55
|
-
织造出的 PRODUCT_PHILOSOPHY.md 必须包含:
|
|
56
|
-
|
|
57
|
-
1. **北极星**:一句话,可被 Intent 的 `philosophy_anchors` 引用
|
|
58
|
-
2. **不可妥协的价值**:3-5 条,每条有理由
|
|
59
|
-
3. **反模式清单**:编号(AP1, AP2...),每条有"不做"和"为什么"
|
|
60
|
-
4. **决策原则**:编号(P1, P2...),每条有适用条件和判断标准
|
|
61
|
-
5. **灵感来源**:至少 3 个独立源,至少 2 个非 Wikipedia 链接,每个源说明"为什么选它"
|
|
62
|
-
6. **底线内化声明**:显式声明已内化 BASELINE
|
|
63
|
-
7. **章节锚点**:每个章节有 `{#english-anchor}` 标识
|
|
64
|
-
|
|
65
|
-
### 禁止
|
|
66
|
-
|
|
67
|
-
- 禁止只有 Wikipedia 链接——Wikipedia 是常识入口,不是深度源
|
|
68
|
-
- 禁止"灵感来源"只有名字没有理由——必须说明萃取/转译关系
|
|
69
|
-
- 禁止北极星是口号(如"做最好的工具")——必须是判断基准
|
|
70
|
-
- 禁止反模式没有"为什么"——"不做"和"为什么不做"同样重要
|
|
1
|
+
# Doctrine Lens — Product Judgment
|
|
2
|
+
|
|
3
|
+
> 按需使用。只有判断会跨多个 Intent 反复生效时,才写入 Project Doctrine。
|
|
4
|
+
|
|
5
|
+
## 触发
|
|
6
|
+
|
|
7
|
+
- 项目需要长期保护的用户结果尚不清楚。
|
|
8
|
+
- 多个功能之间存在价值冲突。
|
|
9
|
+
- 团队对“合格”和“优秀”的产品结果没有共同判断。
|
|
10
|
+
- 反复出现表面完成、实际伤害用户结果的方案。
|
|
11
|
+
|
|
12
|
+
单个页面、一次功能或局部体验技巧留给当前 Intent 的 Expertise Pack。
|
|
13
|
+
|
|
14
|
+
## 决策问题
|
|
15
|
+
|
|
16
|
+
1. 项目长期保护的用户结果是什么,什么证据表明它重要?
|
|
17
|
+
2. 当速度、控制、清晰、灵活性等价值冲突时如何取舍?
|
|
18
|
+
3. 什么可观察信号区分普通、可靠和出众?
|
|
19
|
+
4. 哪些反模式会让产品看似完成,却破坏用户结果?
|
|
20
|
+
5. 哪些方向允许大胆且可逆的探索,哪些边界不能改变?
|
|
21
|
+
|
|
22
|
+
## 输出标准
|
|
23
|
+
|
|
24
|
+
只保留能够改变未来行动的内容:
|
|
25
|
+
|
|
26
|
+
- 一句可用于取舍的北极星。
|
|
27
|
+
- 少量带适用条件和例外的原则。
|
|
28
|
+
- 卓越标准与失败信号。
|
|
29
|
+
- 创作空间。
|
|
30
|
+
- Evidence Map:事实或来源 → 机制 → 项目后果。
|
|
31
|
+
|
|
32
|
+
不设置原则或来源数量,不复述 BASELINE,不预写功能和架构。
|
package/meta/BASELINE.md
CHANGED
|
@@ -1,276 +1,91 @@
|
|
|
1
|
-
# BASELINE — LOOM
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
**哲学内化方式**:Philosophy Weaver 织造协作哲学时,必须包含"决策是组织记忆"原则。具体记录格式由哲学决定(ADR / 决策日志 / Git commit message)。
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
### B5:意图必须可回溯
|
|
98
|
-
|
|
99
|
-
**约束**:任何实现都必须能回溯到它的原始意图——"为什么存在"。
|
|
100
|
-
|
|
101
|
-
**为什么**:这是 LOOM 的核心命题。信息在传递链中会损失——从产品意图到系统设计到任务到代码,每一层翻译都可能扭曲原始意思。如果实现不能回溯到意图,就无法验证"是否忠实于原始目标"。
|
|
102
|
-
|
|
103
|
-
**最低要求**:
|
|
104
|
-
- 每个实现单元(Intent / 功能模块)有意图叙事——"为什么存在,服务什么目标"
|
|
105
|
-
- 意图叙事不是"做什么"的描述,是"为什么做"的叙事
|
|
106
|
-
- 意图叙事可被验证角色(Keeper)引用和对照
|
|
107
|
-
- 意图叙事在传递链中不丢失——从愿景到实现,每个环节都能追溯到原始意图
|
|
108
|
-
|
|
109
|
-
**哲学内化方式**:这条底线是 LOOM 的灵魂,Philosophy Weaver 织造产品哲学时必须包含"意图是实现的灵魂"原则。具体叙事格式由哲学决定。
|
|
110
|
-
|
|
111
|
-
---
|
|
112
|
-
|
|
113
|
-
## 底线与哲学的关系
|
|
114
|
-
|
|
115
|
-
```
|
|
116
|
-
底线(这份文件) 哲学(Weaver 织造)
|
|
117
|
-
↓ ↓
|
|
118
|
-
"什么不能不做" + "怎么做好"
|
|
119
|
-
↓ ↓
|
|
120
|
-
└─────────┬────────────┘
|
|
121
|
-
↓
|
|
122
|
-
角色内化
|
|
123
|
-
↓
|
|
124
|
-
角色行动
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
底线划出边界,哲学填充边界内的内容。角色在边界内自主发挥,越界被拦截。
|
|
128
|
-
|
|
129
|
-
**底线不可被哲学覆盖**。如果 Philosophy Weaver 织造的哲学与底线冲突,底线优先。Weaver 在织造时必须将底线作为硬约束输入。
|
|
130
|
-
|
|
131
|
-
---
|
|
132
|
-
|
|
133
|
-
## 底线的演进
|
|
134
|
-
|
|
135
|
-
底线不是永恒不变的。随着 LOOM 系统的演进,底线可能需要调整。
|
|
136
|
-
|
|
137
|
-
但底线的变更必须:
|
|
138
|
-
- 有明确的变更理由
|
|
139
|
-
- 记录在版本历史中
|
|
140
|
-
- 经过审慎评估——底线变更是系统级决策,不是随手调整
|
|
141
|
-
|
|
142
|
-
底线变更跟随 LOOM 的版本(v{N}),与哲学演进机制一致。
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
## 适配与扩展
|
|
147
|
-
|
|
148
|
-
BASELINE 的 5 条底线是通用约束,适用于所有项目。但不同领域、不同规模的项目对底线的理解和执行方式不同。以下机制让 BASELINE 在保持不可妥协的同时适配现实。
|
|
149
|
-
|
|
150
|
-
### 底线澄清
|
|
151
|
-
|
|
152
|
-
底线约束本身不变,但"怎么算合规"在不同领域有不同理解。以下澄清不改变约束,只明确适用边界:
|
|
153
|
-
|
|
154
|
-
**B1 澄清:原型验证阶段**
|
|
155
|
-
|
|
156
|
-
对于需要验证核心可行性的项目(如游戏核心玩法、AI 模型效果),允许先做可运行原型。原型是结构设计的一部分,不是"跳过设计的编码"——原型验证通过后,必须补结构设计文档再进入正式 Intent Loop。
|
|
157
|
-
|
|
158
|
-
**B3 澄清:非确定性系统**
|
|
159
|
-
|
|
160
|
-
接口契约定义输入输出的**结构边界和约束条件**(schema、长度限制、字段必填、错误码),不要求内容本身确定性。LLM 的输出每次不同,但输出结构可以契约化(如"返回 `{answer: string, sources: Source[]}`,answer 长度 1-500 字,sources 非空")。
|
|
161
|
-
|
|
162
|
-
### 项目特定底线
|
|
163
|
-
|
|
164
|
-
BASELINE 的 5 条是通用底线,适用于所有项目。但不同领域有额外的"不可妥协"——2B 需要安全合规、AI/ML 需要模型版本管理、医疗需要隐私保护。
|
|
165
|
-
|
|
166
|
-
Philosophy Weaver 织造哲学时,可以产出 `PROJECT_BASELINE.md`,声明项目特定底线。
|
|
167
|
-
|
|
168
|
-
**规则**:
|
|
169
|
-
- 项目特定底线和 BASELINE 一样不可妥协——角色激活时和 BASELINE 一起强制加载
|
|
170
|
-
- 项目特定底线只能**追加**,不能**豁免**通用底线
|
|
171
|
-
- 项目特定底线必须有明确的"合规/违规"判定标准(和通用底线一样可被 Keeper 验证)
|
|
172
|
-
- 项目特定底线跟随版本演进,变更时记录理由
|
|
173
|
-
|
|
174
|
-
**角色激活时加载的底线** = `meta/BASELINE.md`(通用 5 条)+ `.loom/v{N}/00_PHILOSOPHY/PROJECT_BASELINE.md`(项目特定,如果有)
|
|
175
|
-
|
|
176
|
-
### 流程复杂度
|
|
177
|
-
|
|
178
|
-
LOOM 是元规范,不是固定流程。Agent 根据项目规模自主调整复杂度:
|
|
179
|
-
|
|
180
|
-
| 项目规模 | 哲学维度 | Intent 粒度 | 验证层级 |
|
|
181
|
-
|---|---|---|---|
|
|
182
|
-
| 小项目(< 1 个月) | 只通用层(产品 + 工程) | 粗粒度(3-5 个 Intent) | 全用 L1 静态审查 |
|
|
183
|
-
| 中项目(1-3 个月) | 通用层 + 1-2 个领域层 | 中粒度(5-15 个 Intent) | 关键 Intent 用 L2 |
|
|
184
|
-
| 大项目(3+ 个月) | 所有需要的维度 | 细粒度(15+ 个 Intent) | 关键 Intent 用 L2/L3 |
|
|
185
|
-
| 维护期 | 沿用已有哲学 | 直接加 bug 修复 Intent | L1 为主 |
|
|
186
|
-
|
|
187
|
-
这不是规则,是参考。Agent 自主判断,不按这个分级也行。核心原则是:**文档开销不应超过开发开销**。
|
|
188
|
-
|
|
189
|
-
---
|
|
190
|
-
|
|
191
|
-
## 版本演进
|
|
192
|
-
|
|
193
|
-
LOOM 用 `.loom/v{N}/` 目录支持多版本共存与演进。
|
|
194
|
-
|
|
195
|
-
### 版本指针
|
|
196
|
-
|
|
197
|
-
- `.loom/current` 文件记录当前版本号(如 `v1`)
|
|
198
|
-
- CLI 优先读指针;指针缺失时回退到自动探测最新版本(向后兼容)
|
|
199
|
-
- `loom version list` 列出所有版本并标记当前
|
|
200
|
-
- `loom version use <v>` 切换当前版本
|
|
201
|
-
|
|
202
|
-
### 旧版本只读
|
|
203
|
-
|
|
204
|
-
**旧版本是只读的——最新版本(current 指针指向的)是当前真相。**
|
|
205
|
-
|
|
206
|
-
- 角色激活时只加载当前版本
|
|
207
|
-
- CLI 写操作(intent update、verify write)只作用于当前版本
|
|
208
|
-
- 旧版本保留作为历史参考,不修改
|
|
209
|
-
|
|
210
|
-
### 演进分级
|
|
211
|
-
|
|
212
|
-
变更分两级,判定由用户 + Agent 对话完成,CLI 不做决策:
|
|
213
|
-
|
|
214
|
-
| 级别 | 判定标准 | 处理方式 |
|
|
215
|
-
|---|---|---|
|
|
216
|
-
| **Minor** | 不改哲学前提、不改愿景北极星、不改架构边界 | 当前版本内改(LOOM 已有的变更回流机制) |
|
|
217
|
-
| **Major** | 哲学前提变了、愿景北极星变了、架构边界变了 | 创建新版本 |
|
|
218
|
-
|
|
219
|
-
### Major 升级流程
|
|
220
|
-
|
|
221
|
-
```
|
|
222
|
-
[Agent / 用户判断需要 Major 升级]
|
|
223
|
-
↓
|
|
224
|
-
loom version new → 创建 v{N+1}(空目录 + 模板),自动切换为当前
|
|
225
|
-
↓
|
|
226
|
-
loom version diff v{N} v{N+1} → 看看旧版本有什么(Agent 决定参考什么)
|
|
227
|
-
↓
|
|
228
|
-
Weaver 读 .loom/v{N}/00_PHILOSOPHY/ → 织造 v{N+1} 哲学,记录"相对 v{N} 变了什么"
|
|
229
|
-
↓
|
|
230
|
-
Visionary 读 .loom/v{N}/01_VISION.md → 定义 v{N+1} 愿景
|
|
231
|
-
↓
|
|
232
|
-
Architect 读 .loom/v{N}/02_ARCHITECTURE.md + 04_INTENT_MAP.json → 设计 v{N+1}
|
|
233
|
-
↓
|
|
234
|
-
进入 v{N+1} 的 Intent Loop
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
**关键设计**:`loom version new` 创建空目录 + 模板,**不自动复制旧版本内容**。强制 Agent 重新思考——参考 ≠ 复制。如果直接复制 v1 哲学到 v2,Agent 可能懒得重织造,版本演进就变成"在旧版本上打补丁"了。
|
|
238
|
-
|
|
239
|
-
### 代码迁移
|
|
240
|
-
|
|
241
|
-
v1 已完成的代码保留在项目代码库中。v2 的 Intent Map 引用已有代码时:
|
|
242
|
-
- 如果代码仍适用 → Intent 状态直接设为 `completed`,验收契约引用已有代码
|
|
243
|
-
- 如果代码需要调整 → 新建 Intent,depends_on 可以引用 v1 的 Intent ID(通过 `loom intent trace` 追溯历史)
|
|
244
|
-
|
|
245
|
-
### Intent ID 延续
|
|
246
|
-
|
|
247
|
-
v2 的 Intent ID **重新编号**(INT-001, INT-002...),不延续 v1。原因:
|
|
248
|
-
- v2 的 Intent 语义可能和 v1 不同,延续 ID 会造成混淆
|
|
249
|
-
- 追溯通过 Git history 和 `loom version diff` 完成,不靠 ID 延续
|
|
250
|
-
|
|
251
|
-
### 版本对比
|
|
252
|
-
|
|
253
|
-
- `loom version diff <v1> <v2>` 对比文件存在性和大小差异
|
|
254
|
-
- 内容差异用 Git diff(`.loom/` 纳入版本控制)
|
|
255
|
-
|
|
256
|
-
### 不做的
|
|
257
|
-
|
|
258
|
-
- CLI 不判断 Minor/Major(决策由 Agent + 用户对话完成)
|
|
259
|
-
- CLI 不自动复制旧版本内容到新版本(强制重新思考)
|
|
260
|
-
- CLI 不强制旧版本只读(规范声明 + Git 保护,不靠代码强制)
|
|
261
|
-
- CLI 不迁移验证记录(v2 的 Intent 是新 ID,v1 验证记录通过 Git history 追溯)
|
|
262
|
-
|
|
263
|
-
---
|
|
264
|
-
|
|
265
|
-
## 给 Philosophy Weaver 的指令
|
|
266
|
-
|
|
267
|
-
当 Philosophy Weaver 开始织造哲学时,这份文件是它的**硬约束输入**。
|
|
268
|
-
|
|
269
|
-
Weaver 必须:
|
|
270
|
-
1. 读取这份文件,理解每条底线
|
|
271
|
-
2. 在织造哲学时,将底线转译为哲学语言——不是照抄,而是融入哲学叙事
|
|
272
|
-
3. 确保织造出的哲学文档不与任何底线冲突
|
|
273
|
-
4. 在哲学文档中显式声明"已内化 BASELINE 中的所有底线"
|
|
274
|
-
5. 如果项目有领域特定的"不可妥协"(如安全合规、隐私保护、模型版本管理),产出 `PROJECT_BASELINE.md` 声明项目特定底线
|
|
275
|
-
|
|
276
|
-
如果 Weaver 无法将某条底线融入哲学(例如哲学流派与底线矛盾),必须停止并报告——这意味着该哲学流派不适合这个项目。
|
|
1
|
+
# BASELINE — LOOM 不可妥协的系统底线
|
|
2
|
+
|
|
3
|
+
底线只规定什么不能失守,不规定怎样做到优秀。
|
|
4
|
+
|
|
5
|
+
项目哲学负责定义取舍与质量;角色负责在边界内发挥专业能力;CLI 负责机械执行能够被程序保证的约束。底线不能替代这三者。
|
|
6
|
+
|
|
7
|
+
## B1:改变之前必须理解结构
|
|
8
|
+
|
|
9
|
+
任何实质修改都必须建立在对当前系统结构、职责边界和依赖关系的理解上。
|
|
10
|
+
|
|
11
|
+
最低要求:
|
|
12
|
+
|
|
13
|
+
- 先检查真实代码与现有约定,不凭想象创建平行体系。
|
|
14
|
+
- 修改范围与结构说明的详细程度应和风险相称。
|
|
15
|
+
- 新增边界、模块或跨系统依赖时,必须写明职责和依赖方向。
|
|
16
|
+
- 探索性原型可以先验证关键假设,但不得伪装成已完成的正式实现。
|
|
17
|
+
|
|
18
|
+
违反信号:未读现有实现便重写、复制出第二套系统、用“以后再整理”掩盖边界混乱。
|
|
19
|
+
|
|
20
|
+
## B2:环境与秘密不得固化进实现
|
|
21
|
+
|
|
22
|
+
密钥、凭证、环境专属地址和可变配置不得写死在代码中。
|
|
23
|
+
|
|
24
|
+
最低要求:
|
|
25
|
+
|
|
26
|
+
- 秘密通过安全的环境或凭证机制提供。
|
|
27
|
+
- 环境差异进入配置层。
|
|
28
|
+
- 业务常量集中且具有语义;算法常量和协议常量可以保留,但必须能解释来源。
|
|
29
|
+
- 新增配置要有类型、默认策略和错误语义。
|
|
30
|
+
|
|
31
|
+
违反信号:真实密钥进入仓库、随机路径或 URL 散落、无法解释的数值控制业务行为。
|
|
32
|
+
|
|
33
|
+
## B3:可观察契约必须显式
|
|
34
|
+
|
|
35
|
+
用户、模块或外部系统能够观察到的行为必须有明确契约。
|
|
36
|
+
|
|
37
|
+
契约至少覆盖适用项:
|
|
38
|
+
|
|
39
|
+
- 输入、输出和状态变化。
|
|
40
|
+
- 错误、失败和降级行为。
|
|
41
|
+
- API、CLI、配置、文件格式或交互语义。
|
|
42
|
+
- 兼容边界与变更影响。
|
|
43
|
+
|
|
44
|
+
局部实现细节不需要全部文档化;会影响其他部分的行为不能只存在于作者记忆里。
|
|
45
|
+
|
|
46
|
+
## B4:重要判断必须可追溯
|
|
47
|
+
|
|
48
|
+
会改变产品方向、架构边界、公共契约、关键依赖或安全姿态的判断必须留下理由和证据。
|
|
49
|
+
|
|
50
|
+
记录应回答:
|
|
51
|
+
|
|
52
|
+
- 为什么现在需要这个决定。
|
|
53
|
+
- 考虑过哪些替代方案。
|
|
54
|
+
- 选择依据和代价是什么。
|
|
55
|
+
- 影响哪些 Intent、契约或系统部分。
|
|
56
|
+
- 什么证据会使我们重新评估。
|
|
57
|
+
|
|
58
|
+
普通局部实现选择不必制造 ADR;可逆且低风险的探索可以先做小实验,再用结果决定是否升级为正式决策。
|
|
59
|
+
|
|
60
|
+
## B5:完成必须可回溯、可验证
|
|
61
|
+
|
|
62
|
+
任何“完成”都必须能回溯到原始意图,并有当前 revision 的验证证据。
|
|
63
|
+
|
|
64
|
+
最低要求:
|
|
65
|
+
|
|
66
|
+
- 实现单元关联清晰的意图叙事。
|
|
67
|
+
- 完成契约描述可观察结果和关键失败边界;若声明质量提升,另有质量契约与基线相对证据。
|
|
68
|
+
- 实现者可以自测,但不能只凭自己的解释宣告通过。
|
|
69
|
+
- Keeper 独立验证;需要人类判断的部分明确标为 `pending_human`。
|
|
70
|
+
- 声称质量提升时,必须提供修改前基线、选择依据和稳定性证据。
|
|
71
|
+
- 没有当前 revision 的最后一条 `passed` 记录,不得闭合 Intent。
|
|
72
|
+
|
|
73
|
+
## 项目特定底线
|
|
74
|
+
|
|
75
|
+
Weaver 可以在 `.loom/v{N}/00_PHILOSOPHY/PROJECT_BASELINE.md` 追加领域不可妥协项,例如隐私、安全、合规、可访问性或模型治理。
|
|
76
|
+
|
|
77
|
+
项目底线必须:
|
|
78
|
+
|
|
79
|
+
- 有明确触发条件和合规判定。
|
|
80
|
+
- 只追加,不豁免通用底线。
|
|
81
|
+
- 与版本和影响范围一起演进。
|
|
82
|
+
|
|
83
|
+
## 比例原则
|
|
84
|
+
|
|
85
|
+
LOOM 的流程成本必须小于它降低的风险。
|
|
86
|
+
|
|
87
|
+
- 小改动:简短结构判断、局部契约、直接验证。
|
|
88
|
+
- 中等能力:清晰 Intent、必要设计、自动验证。
|
|
89
|
+
- 高风险系统:完整边界、决策记录、多层验证与回滚方案。
|
|
90
|
+
|
|
91
|
+
当两条规则冲突时,优先保护真实用户结果、系统完整性和可恢复性;不要为了“流程正确”牺牲交付本身。
|