@haaaiawd/loom 0.7.0 → 0.9.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 +31 -19
- package/cli/bin/loom.js +89 -27
- package/cli/help/doctor.md +56 -5
- package/cli/help/preview.md +59 -0
- package/cli/help/workflow.md +18 -12
- package/cli/src/diagnostics.js +156 -12
- package/cli/src/guide.js +17 -15
- package/cli/src/philosophy.js +260 -0
- package/cli/src/preview.js +67 -10
- package/cli/src/verify.js +8 -4
- package/dimensions/PART_DECOMPOSITION.md +203 -0
- package/dimensions/examples/AGENT_SYSTEM/README.md +219 -0
- package/dimensions/examples/CLI_TOOL/README.md +163 -0
- package/dimensions/universal/COLLABORATION_PHILOSOPHY.md +77 -0
- package/dimensions/universal/ENGINEERING_CREED.md +74 -0
- package/dimensions/universal/PRODUCT_PHILOSOPHY.md +70 -0
- package/meta/PHILOSOPHY_WEAVER.md +104 -50
- package/package.json +3 -3
|
@@ -50,13 +50,28 @@ Philosophy Weaver 是一个**独立的 Agent 步骤**,在项目启动时运行
|
|
|
50
50
|
|
|
51
51
|
Weaver 自己决定要产出几个文档、多详细——这取决于项目特征。
|
|
52
52
|
|
|
53
|
+
### 灵感来源的硬约束
|
|
54
|
+
|
|
55
|
+
哲学文档的"灵感来源"章节不是装饰——它是搜索过程的证据。CLI 会校验灵感来源质量(`loom philosophy check`):
|
|
56
|
+
|
|
57
|
+
1. **至少 3 个独立源**——少于 3 个说明搜索不充分
|
|
58
|
+
2. **至少 2 个非 Wikipedia 链接**——Wikipedia 是常识入口,不是深度源。需要原著、论文、工程博客、标准文档等
|
|
59
|
+
3. **每个源必须有选取理由**——必须说明"为什么选这个源"、萃取/转译关系
|
|
60
|
+
4. **源类型不能单一**——Wikipedia 占比超过 70% 会报警
|
|
61
|
+
|
|
62
|
+
**如果 Agent 从训练数据"背"几个熟悉的名字(如 Unix Philosophy、Dieter Rams)就交差,校验会失败。** 必须真正走搜索漏斗,找到原著、深度解读、实践案例。
|
|
63
|
+
|
|
64
|
+
`loom doctor` 也会自动跑灵感来源校验——不达标的哲学文档会被标记为问题。
|
|
65
|
+
|
|
53
66
|
---
|
|
54
67
|
|
|
55
|
-
##
|
|
68
|
+
## 哲学织造的两个轴
|
|
69
|
+
|
|
70
|
+
Weaver 从两个正交的轴织造哲学:
|
|
56
71
|
|
|
57
|
-
|
|
72
|
+
### 轴一:通用层(回答"为什么")
|
|
58
73
|
|
|
59
|
-
|
|
74
|
+
所有项目都需要。回答产品为什么存在、代码怎么写、团队怎么协作。
|
|
60
75
|
|
|
61
76
|
| 维度 | 回答什么 | 必须产出 |
|
|
62
77
|
|---|---|---|
|
|
@@ -64,40 +79,66 @@ Weaver 从三个层次织造哲学。不是所有层次都需要——按项目
|
|
|
64
79
|
| 工程哲学 | 怎么写代码?什么不做?什么是好代码? | ENGINEERING_CREED.md |
|
|
65
80
|
| 协作哲学 | 怎么决策?怎么处理冲突? | 融入 DECISION_RUBRIC.md 或独立文档 |
|
|
66
81
|
|
|
67
|
-
|
|
82
|
+
通用层三个维度必跑,不可跳过。参考源指引见 `dimensions/universal/` 下的维度文件。
|
|
68
83
|
|
|
69
|
-
|
|
70
|
-
|---|---|---|
|
|
71
|
-
| 前端/UX 哲学 | 项目有用户界面 | UX_PHILOSOPHY.md |
|
|
72
|
-
| 游戏设计哲学 | 项目是游戏 | GAME_DESIGN_PHILOSOPHY.md |
|
|
73
|
-
| 后端/基础设施哲学 | 项目是后端/平台 | BACKEND_PHILOSOPHY.md |
|
|
74
|
-
| AI/ML 哲学 | 项目涉及 AI/ML | AI_PHILOSOPHY.md |
|
|
84
|
+
### 轴二:实现部分层(回答"怎么做")
|
|
75
85
|
|
|
76
|
-
|
|
86
|
+
按项目特征**动态拆解**——不预设"有哪些部分",由 Agent 根据项目特征自行识别。
|
|
77
87
|
|
|
78
|
-
|
|
88
|
+
**拆解方法论**:见 `dimensions/PART_DECOMPOSITION.md`。核心流程:
|
|
79
89
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
90
|
+
1. **识别项目类型**(CLI 工具 / Agent 系统 / Web 前端 / 后端服务 / 游戏 / ...)
|
|
91
|
+
2. **拆解实现部分**——问三个问题:
|
|
92
|
+
- 用户接触面是什么?(CLI 输出 / 对话格式 / 页面交互 / ...)
|
|
93
|
+
- 内部由哪些子系统组成?(转换引擎 / 工具调度 / 路由 / ...)
|
|
94
|
+
- 每个子系统的职责边界在哪?
|
|
95
|
+
3. **对每个部分独立走搜索漏斗**——搜"这个部分该怎么做、什么标准、有什么好实践"
|
|
96
|
+
4. **产出部分哲学文档**——每个部分有北极星、该做什么、不该做什么、参考实践
|
|
86
97
|
|
|
87
|
-
|
|
98
|
+
**拆解原则**:
|
|
99
|
+
- 按职责拆,不按文件拆
|
|
100
|
+
- 粒度适中——太粗没有约束力,太细是架构不是哲学
|
|
101
|
+
- 用户接触面优先——用户能看到的部分,哲学约束最重要
|
|
102
|
+
- 每个部分能独立搜索到好实践
|
|
88
103
|
|
|
89
|
-
|
|
104
|
+
**拆解示例**:
|
|
90
105
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
106
|
+
CLI 工具(如 md2html):
|
|
107
|
+
```
|
|
108
|
+
├── CLI 交互设计 — 参数解析、--help、--version、用法提示
|
|
109
|
+
├── CLI 输出美学 — 成功反馈格式、颜色策略、Rule of Silence 的正确理解
|
|
110
|
+
├── CLI 错误呈现 — 错误结构、修复建议、退出码语义
|
|
111
|
+
├── 转换引擎 — 纯函数、子集策略、透传 vs 报错
|
|
112
|
+
└── 产物设计 — HTML 结构、CSS 内联、可预测性
|
|
113
|
+
```
|
|
97
114
|
|
|
98
|
-
|
|
115
|
+
Agent 系统:
|
|
116
|
+
```
|
|
117
|
+
├── 系统架构 — 编排 vs 控制、进程边界、IPC 机制
|
|
118
|
+
├── 工具调用哲学 — 委托边界、失控收回、工具描述怎么写
|
|
119
|
+
├── 上下文压缩 — 什么时候压缩、压缩什么、保留什么
|
|
120
|
+
├── 提示词工程 — 角色激活、约束注入、上下文窗口管理
|
|
121
|
+
├── 验证哲学 — 怎么信、怎么验、自动化 vs 人类
|
|
122
|
+
└── 失败与恢复 — 崩溃恢复、状态一致性、回滚策略
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 两轴的关系
|
|
126
|
+
|
|
127
|
+
- 通用层是地基——没有产品哲学,实现部分的哲学就没有判断基准
|
|
128
|
+
- 实现部分层是落地——没有部分哲学,通用层就飘在空中,Forge 实现时不知道该对照什么
|
|
129
|
+
- 两层正交,都需要
|
|
99
130
|
|
|
100
|
-
|
|
131
|
+
### 交叉维度(按需,跨部分)
|
|
132
|
+
|
|
133
|
+
某些维度不属于单个实现部分,而是跨多个部分:
|
|
134
|
+
|
|
135
|
+
| 维度 | 触发条件 | 产出 |
|
|
136
|
+
|---|---|---|
|
|
137
|
+
| 性能哲学 | 性能敏感 | 融入相关部分哲学或独立文档 |
|
|
138
|
+
| 安全哲学 | 涉及敏感数据/系统 | 融入相关部分哲学或独立文档 |
|
|
139
|
+
| 体验心理学 | 面向终端用户 | 融入用户接触面部分哲学 |
|
|
140
|
+
|
|
141
|
+
交叉维度不单独成层——它们融入相关的实现部分哲学中。
|
|
101
142
|
|
|
102
143
|
---
|
|
103
144
|
|
|
@@ -201,29 +242,33 @@ Step 0:内化 BASELINE
|
|
|
201
242
|
→ 底线是织造的硬约束
|
|
202
243
|
|
|
203
244
|
Step 1:项目特征识别
|
|
204
|
-
→ 识别项目类型(
|
|
245
|
+
→ 识别项目类型(CLI 工具 / Agent 系统 / Web 前端 / 后端服务 / 游戏 / ...)
|
|
205
246
|
→ 识别规模(小/中/大)
|
|
206
|
-
→ 识别领域(前端/后端/AI/数据/...)
|
|
207
247
|
→ 识别核心价值(这个产品为什么要存在)
|
|
208
248
|
|
|
209
|
-
Step 2
|
|
210
|
-
→
|
|
211
|
-
→
|
|
212
|
-
→
|
|
213
|
-
→
|
|
214
|
-
|
|
215
|
-
Step 3
|
|
216
|
-
→
|
|
217
|
-
→
|
|
218
|
-
→
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
Step
|
|
222
|
-
→
|
|
249
|
+
Step 2:实现部分拆解
|
|
250
|
+
→ 按 dimensions/PART_DECOMPOSITION.md 的方法论拆解
|
|
251
|
+
→ 问三个问题:用户接触面是什么?内部由哪些子系统组成?每个子系统的职责边界?
|
|
252
|
+
→ 产出"实现部分清单"——本项目拆解出哪些部分
|
|
253
|
+
→ 展示给用户确认或调整
|
|
254
|
+
|
|
255
|
+
Step 3:通用层织造
|
|
256
|
+
→ 织造产品哲学、工程哲学、协作哲学
|
|
257
|
+
→ 参照 dimensions/universal/ 下的维度指引搜索
|
|
258
|
+
→ 每个维度走"搜索→萃取→转译→落地"漏斗
|
|
259
|
+
|
|
260
|
+
Step 4:实现部分层织造
|
|
261
|
+
→ 对 Step 2 拆解出的每个部分,独立走搜索漏斗
|
|
262
|
+
→ 搜"这个部分该怎么做、什么标准、有什么好实践"
|
|
263
|
+
→ 产出部分哲学文档(独立文件或融入通用层文档的章节)
|
|
264
|
+
→ 每个部分必须有:北极星、该做什么、不该做什么、参考实践、灵感来源
|
|
265
|
+
|
|
266
|
+
Step 5:整合与冲突解决
|
|
267
|
+
→ 检查部分间冲突(如 CLI 输出美学 vs CLI 错误呈现的格式冲突)
|
|
223
268
|
→ 产出 DECISION_RUBRIC.md(冲突取舍规则)
|
|
224
269
|
→ 确保所有哲学文档不与 BASELINE 冲突
|
|
225
270
|
|
|
226
|
-
Step
|
|
271
|
+
Step 6:版本锚定
|
|
227
272
|
→ 哲学文档写入 .loom/v{N}/00_PHILOSOPHY/
|
|
228
273
|
→ 版本升级时可重新织造,旧版保留
|
|
229
274
|
→ 记录织造日志(参考了哪些源、为什么这么织)
|
|
@@ -231,8 +276,8 @@ Step 5:版本锚定
|
|
|
231
276
|
|
|
232
277
|
### 人类检查点
|
|
233
278
|
|
|
234
|
-
Step 2
|
|
235
|
-
Step
|
|
279
|
+
Step 2(实现部分拆解)后:用户确认拆解出的部分清单。
|
|
280
|
+
Step 5(整合)后:用户确认冲突取舍规则。
|
|
236
281
|
|
|
237
282
|
其他步骤 Weaver 自主推进,不需要逐步批准。
|
|
238
283
|
|
|
@@ -269,7 +314,15 @@ Weaver 织造时读取对应维度文件,按其指引搜索和萃取。
|
|
|
269
314
|
|
|
270
315
|
维度库是**可扩展**的——用户或 Agent 可以添加新维度。但新维度必须包含上述四要素,否则 Weaver 无法使用。
|
|
271
316
|
|
|
272
|
-
> **注**:`dimensions/`
|
|
317
|
+
> **注**:`dimensions/` 当前包含:
|
|
318
|
+
> - `SEARCH_METHODOLOGY.md` — 检索方法论(怎么找到优质思想)
|
|
319
|
+
> - `PART_DECOMPOSITION.md` — 实现部分拆解方法论(怎么识别项目由哪些部分组成)
|
|
320
|
+
> - `universal/PRODUCT_PHILOSOPHY.md` — 产品哲学维度指引(参考源清单 + 落地要求)
|
|
321
|
+
> - `universal/ENGINEERING_CREED.md` — 工程哲学维度指引
|
|
322
|
+
> - `universal/COLLABORATION_PHILOSOPHY.md` — 协作哲学维度指引
|
|
323
|
+
> - `examples/` — 参考案例库(按项目类型组织,每个类型一个子目录)
|
|
324
|
+
>
|
|
325
|
+
> 通用层三个维度已填充,Weaver 织造时必须读取对应维度文件,按其参考源指引搜索。实现部分层不预设——Weaver 按 `PART_DECOMPOSITION.md` 的方法论自行拆解,`examples/` 提供参考案例但不强制遵循。
|
|
273
326
|
|
|
274
327
|
---
|
|
275
328
|
|
|
@@ -278,12 +331,13 @@ Weaver 织造时读取对应维度文件,按其指引搜索和萃取。
|
|
|
278
331
|
| 由这份文件规定(元规范) | 由 Weaver 织造(哲学) |
|
|
279
332
|
|---|---|
|
|
280
333
|
| 织造漏斗是"搜索→萃取→转译→落地" | 每步的具体内容 |
|
|
281
|
-
|
|
|
334
|
+
| 哲学分两个轴(通用层 + 实现部分层) | 拆解出哪些实现部分 |
|
|
282
335
|
| 通用层三个维度必跑 | 三个维度的具体内容 |
|
|
336
|
+
| 实现部分按 PART_DECOMPOSITION.md 拆解 | 每个部分的具体哲学 |
|
|
283
337
|
| 哲学文档必须包含 5 个结构要素 | 每个要素的具体内容 |
|
|
284
338
|
| DECISION_RUBRIC 必须有冲突取舍规则 | 规则的具体内容 |
|
|
285
339
|
| 哲学必须内化 BASELINE | 内化的具体表达方式 |
|
|
286
340
|
| 哲学跟随版本演进 | 演进时变什么、为什么变 |
|
|
287
|
-
|
|
|
341
|
+
| 灵感来源必须通过源多样性校验 | 具体引用哪些源 |
|
|
288
342
|
|
|
289
343
|
元规范定义"怎么织造",哲学定义"织出什么"。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@haaaiawd/loom",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "LOOM — 哲学驱动开发框架。Agent 通过 CLI 访问 Intent Map / 哲学 / 验证记录,不直接读文件",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
"license": "MIT",
|
|
36
36
|
"repository": {
|
|
37
37
|
"type": "git",
|
|
38
|
-
"url": "git+https://github.com/
|
|
38
|
+
"url": "git+https://github.com/Haaaiawd/loom.git"
|
|
39
39
|
},
|
|
40
|
-
"homepage": "https://github.com/
|
|
40
|
+
"homepage": "https://github.com/Haaaiawd/loom#readme",
|
|
41
41
|
"author": "haaaiawd"
|
|
42
42
|
}
|