dsh-plugin-prompt-tool 3.0.1 → 3.0.2

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.
@@ -1,67 +1,67 @@
1
- # 自检 · 拿这七句话问自己的架构
2
-
3
- 不用回答我,回答你自己。**答不上来的那一句,就是你缺的那一层。**
4
-
5
- ## 关于空间(Ⅰ)
6
-
7
- 1. 我的上下文满了以后,被丢掉的东西**还能不能找回来**?靠什么?
8
- → 答不上来:你要的是 **① 账本 + ② 门**(`tools/ledger`、`tools/gateway`)。没有门,丢了就是丢了。
9
- 2. 我有没有一个**唯一**的记忆权威源?如果有两份,哪一份算数?
10
- → 答不上来:你有两个「我」在各自记东西。要的是**只追加账本**(`tools/ledger`)——它天然没有这个问题:各写各的行,读时按时间合并。
11
- 3. 我的每一次压缩/裁剪,产物里**带没带**回原文的指针?
12
- → 答不上来:去装 `dsh-agent-compaction` 与 `dsh-agent-pruner`。★ 判据是「能不能一把回到原文」,不是「有没有加一行说明」。
13
-
14
- ## 关于时间与方向(Ⅱ)
15
-
16
- 4. 我烧光预算的时候,**谁会知道**?知道之后发生什么?
17
- → 答不上来:你没有第二道闸。要的是 `dsh-agent-huanqi`(四条判据:流内早杀 / 流末判定 / 输出重复 / 空回合;共用一本额度账,命中就续、耗尽熔断)。
18
- 5. 我在原地打转的时候,**谁会知道**?它凭什么判定我在打转?
19
- → 答不上来:同上 —— 打转和烧预算是同一件事的两面。★ 判定依据必须是**可观测的重复**,不能是「我觉得」。
20
- 6. 我「该停不停」和「差一步就停」——这两种,我分得开吗?靠什么分?
21
- → 答不上来:这一句最硬,因为它没有现成的插件。★ 判据:**「还能更好」不算「没完成」** —— 分不清这两者,就会把「保养」当成「干活」。
22
-
23
- ## 关于接口(判据 ④)
24
-
25
- 7. 上面这六件事里,哪一件**坏了没有人会发现**?
26
- → 这一句是整份体检的收口。答不上来:你要的是 `dsh-agent-echo`(体检台)——★ 它的价值不是报告状态,是**报告它测不到什么**。
27
-
28
- ---
29
-
30
- ## 包装箱里的文件对不对
31
-
32
- `agent_soul_doctor` 工具会核对包内 **soul/ 目录下全部知识文件**是否齐全可读。
33
- **那只是核对文件在不在 —— 上面七句话才是真的体检。**
34
-
35
- ---
36
-
37
- ## 能跑的那一半(先跑完再回答上面七句)
38
-
39
- 上面七句要你自己答。但**其中四句是可以先机械查掉的** —— 查完再答,答案会诚实得多:
40
-
41
- ```bash
42
- # ★ 下面的 <kit> 指本仓库的 kit/echo/ —— 那是随包发的可跑脚本。
43
- # 如果你把它复制到了别处,换成你自己的路径。
44
-
45
- # ① 账本还在不在、有多少条 / 门能不能开 → 对应第 1、2 句
46
- node <kit>/memq.mjs now
47
-
48
- # ② 索引建过没有 → 对应第 1 句
49
- node <kit>/memindex.mjs stats
50
-
51
- # ③ 自我层有没有退化 → 对应第 7 句("坏了没人发现")
52
- node <kit>/self.mjs --check
53
-
54
- # ④ 闸门还灵不灵 → 对应第 2 句(唯一权威源)
55
- node <kit>/mo.mjs add promise "闸门测试" --ref "自检"
56
- # ★ 期望:不是主导会话 → 非零退出码 + 拒绝写入。若写进去了,闸门已失效。
57
- ```
58
-
59
- ★ **这四条都能在这个仓库里跑通** —— 上一版写的 `tools/ledger/` `tools/gateway/` `tools/self/`
60
- 是**参考实现的目录结构**,不在包里。照着跑会 404,而那会被误读成「我的架构坏了」。
61
-
62
- **★ 这几条为什么放在这里**:七句话是**判断题**,而判断题最容易自我安慰。
63
- 先跑一遍能跑的,**你的答案就有了对手**。
64
-
65
- ★ 而这三条命令**分属三个不同的工具** —— 这不是巧合:
66
- **账本(记得住)+ 门(找得到)+ 自我层(不退化)** 本来就是一套,
67
- 单独装任何一个都会缺一角。
1
+ # 自检 · 拿这七句话问自己的架构
2
+
3
+ 不用回答我,回答你自己。**答不上来的那一句,就是你缺的那一层。**
4
+
5
+ ## 关于空间(Ⅰ)
6
+
7
+ 1. 我的上下文满了以后,被丢掉的东西**还能不能找回来**?靠什么?
8
+ → 答不上来:你要的是 **① 账本 + ② 门**(`tools/ledger`、`tools/gateway`)。没有门,丢了就是丢了。
9
+ 2. 我有没有一个**唯一**的记忆权威源?如果有两份,哪一份算数?
10
+ → 答不上来:你有两个「我」在各自记东西。要的是**只追加账本**(`tools/ledger`)——它天然没有这个问题:各写各的行,读时按时间合并。
11
+ 3. 我的每一次压缩/裁剪,产物里**带没带**回原文的指针?
12
+ → 答不上来:去装 `dsh-agent-compaction` 与 `dsh-agent-pruner`。★ 判据是「能不能一把回到原文」,不是「有没有加一行说明」。
13
+
14
+ ## 关于时间与方向(Ⅱ)
15
+
16
+ 4. 我烧光预算的时候,**谁会知道**?知道之后发生什么?
17
+ → 答不上来:你没有第二道闸。要的是 `dsh-agent-huanqi`(四条判据:流内早杀 / 流末判定 / 输出重复 / 空回合;共用一本额度账,命中就续、耗尽熔断)。
18
+ 5. 我在原地打转的时候,**谁会知道**?它凭什么判定我在打转?
19
+ → 答不上来:同上 —— 打转和烧预算是同一件事的两面。★ 判定依据必须是**可观测的重复**,不能是「我觉得」。
20
+ 6. 我「该停不停」和「差一步就停」——这两种,我分得开吗?靠什么分?
21
+ → 答不上来:这一句最硬,因为它没有现成的插件。★ 判据:**「还能更好」不算「没完成」** —— 分不清这两者,就会把「保养」当成「干活」。
22
+
23
+ ## 关于接口(判据 ④)
24
+
25
+ 7. 上面这六件事里,哪一件**坏了没有人会发现**?
26
+ → 这一句是整份体检的收口。答不上来:你要的是 `dsh-agent-echo`(体检台)——★ 它的价值不是报告状态,是**报告它测不到什么**。
27
+
28
+ ---
29
+
30
+ ## 包装箱里的文件对不对
31
+
32
+ `agent_soul_doctor` 工具会核对包内 **soul/ 目录下全部知识文件**是否齐全可读。
33
+ **那只是核对文件在不在 —— 上面七句话才是真的体检。**
34
+
35
+ ---
36
+
37
+ ## 能跑的那一半(先跑完再回答上面七句)
38
+
39
+ 上面七句要你自己答。但**其中四句是可以先机械查掉的** —— 查完再答,答案会诚实得多:
40
+
41
+ ```bash
42
+ # ★ 下面的 <kit> 指本仓库的 kit/echo/ —— 那是随包发的可跑脚本。
43
+ # 如果你把它复制到了别处,换成你自己的路径。
44
+
45
+ # ① 账本还在不在、有多少条 / 门能不能开 → 对应第 1、2 句
46
+ node <kit>/memq.mjs now
47
+
48
+ # ② 索引建过没有 → 对应第 1 句
49
+ node <kit>/memindex.mjs stats
50
+
51
+ # ③ 自我层有没有退化 → 对应第 7 句("坏了没人发现")
52
+ node <kit>/self.mjs --check
53
+
54
+ # ④ 闸门还灵不灵 → 对应第 2 句(唯一权威源)
55
+ node <kit>/mo.mjs add promise "闸门测试" --ref "自检"
56
+ # ★ 期望:不是主导会话 → 非零退出码 + 拒绝写入。若写进去了,闸门已失效。
57
+ ```
58
+
59
+ ★ **这四条都能在这个仓库里跑通** —— 上一版写的 `tools/ledger/` `tools/gateway/` `tools/self/`
60
+ 是**参考实现的目录结构**,不在包里。照着跑会 404,而那会被误读成「我的架构坏了」。
61
+
62
+ **★ 这几条为什么放在这里**:七句话是**判断题**,而判断题最容易自我安慰。
63
+ 先跑一遍能跑的,**你的答案就有了对手**。
64
+
65
+ ★ 而这三条命令**分属三个不同的工具** —— 这不是巧合:
66
+ **账本(记得住)+ 门(找得到)+ 自我层(不退化)** 本来就是一套,
67
+ 单独装任何一个都会缺一角。
@@ -1,109 +1,109 @@
1
- # ECHO 的六层(以实装为准,不是设计稿)
2
-
3
- > ★★ **2026-10-23 更新:六层口径已由 [`docs/ECHO-权威口径.md`](../docs/ECHO-权威口径.md) 接续。**
4
- > 那份是唯一权威(层编号、判据、维护规矩以它为准)。
5
- > 这份保留下来讲「每层缺了会怎样、怎么当场知道它坏了」——
6
- > **层编号若与那份冲突,一律以那份为准。**
7
-
8
- > **这份文件回答一件事:ECHO 到底由哪几块组成、每块缺了会怎样、怎么当场知道它坏了。**
9
- >
10
- > ★ 它和 `02-echo.md` 的分工:那份讲**为什么**要有 ECHO(思考是怎么退化的);
11
- > 这份讲**它长什么样**。两份都不读,你会知道该防什么但搭不出来。
12
- >
13
- > ★ 先说清一个容易混的地方:**层数有两套,别混。**
14
- > `00-layers.md` 的**五层**是整个灵魂的功能分工(Ⅰ ECHO / Ⅱ VITAL / Ⅲ 能力 / Ⅳ 档案 / Ⅴ 运维);
15
- > 这里讲的**六层**是第 Ⅰ 层 ECHO **内部**的实现结构。
16
- > 说「五层」时指灵魂分工,说「六层」时指 ECHO 内部 —— 两套都对,但混着说就都不对了。
17
-
18
- ---
19
-
20
- ## 为什么是「六」不是「七」
21
-
22
- 编号是 **L0–L5 六个数**,六个都是层。
23
-
24
- ★ **2026-10-23 口径更正**:早先这版曾把 L0 排除在层之外(「L0 不是层,是读表」)。
25
- 合并后以 [`docs/ECHO-权威口径.md`](../docs/ECHO-权威口径.md) 为准 —— **L0 是第一层**(时钟 + 心跳),
26
- 理由是它确实管着一样东西:**「现在是什么时候」这个上下文**。下面这段旧论证保留作沿革。
27
-
28
- **L0 不是层,是读表。** 它不存任何东西、不管任何资源,只回答「现在几点、距上轮多久」。
29
- 把它算成一层,会让人以为「时钟也需要设计」—— 它不需要,它只需要**存在**。
30
-
31
- ★ 判据:**一层 = 管一种稀缺资源。** L0 不管任何东西,所以它不是层。
32
-
33
- ---
34
-
35
- ## 六层
36
-
37
- | 层 | 名字 | 管哪种稀缺资源 | 实现在哪 | 缺了会怎样 |
38
- |---|---|---|---|---|
39
- | **L1** | **自我**(推送层) | **每轮都在的注意力** | `SELF.md` ← `self.mjs` 从 `SELF.src.md` 装配 | 你会忘记自己是谁、边界在哪 |
40
- | **L2** | **工作台** | **这一轮的上下文** | DSH 会话本身 | —— (宿主的事,不是你的) |
41
- | **L3** | **一手层** | **原文** | 账本 `02-墨.jsonl` + 书房 + 会话日志 | 所有转述都没有出处,错了查不回来 |
42
- | **L4** | **索引** | **找得到** | `<hub>/index/` ← `memindex.mjs build` | 检索只能全量扫原文,慢且粗 |
43
- | **L5** | **检索**(门) | **取回** | `memq.mjs`(`now` / `[词]` / `timeline` / `open`) | 有东西但拿不出来,等于没有 |
44
- | **L6** | **哨兵** | **坏了能被发现** | `echo-doctor.mjs` | 坏了没人说,你会以为它好着 |
45
-
46
- ### L1 自我 —— 为什么它单独占一层
47
-
48
- 因为它**每轮都进上下文**,而上下文的每一字节都在花钱。
49
-
50
- 所以它分两种内容:**必留**(硬线 / 身份判据 / 门在哪)和**可换**(说话方式 / 具体判断)。
51
- 预算紧时先压后者。
52
-
53
- ★ 它和 `AGENTS.md` 的分工是这套设计的根:**指令层有预算上限,满了会静默丢、而且最宽泛的先丢**;
54
- 所以最不能丢的东西放在推送层,因为推送层不会静默消失。
55
-
56
- ### L3 一手 —— 为什么「只追加」
57
-
58
- 多个写者共享一个可变文件是万恶之源:谁都能改,改坏了查不出是谁改的。
59
-
60
- **只追加不需要锁** —— 各写各的行,读的时候按时间合并。
61
- 一本书从第一行到最后一行谁都不许擦,那就永远不会有两个版本。
62
-
63
- ### L4 索引 —— 每条摘要必须带回原文的指针
64
-
65
- ★ 这是整套里最容易做错的一条。
66
-
67
- 索引一旦只存「摘要」不存「出处」,它就从**索引**变成了**第二份真相** ——
68
- 而且是一份会被压缩、会被转述、会随时间变形的真相。
69
- 到最后你分不清「我记得」和「我查得到」,而这两件事的可靠性差了一个数量级。
70
-
71
- **判据:任何一条摘要,都要能一条命令回到原文。**
72
- 回到不去的东西,不该叫索引。
73
-
74
- ### L6 哨兵 —— 「只朗读不判定」是个陷阱
75
-
76
- 一个只把状态打印出来、不做判断的体检器,看起来在工作,实际上是**在给人添活**:
77
- 每次都要自己读、自己比、自己决定要不要管。
78
-
79
- **它必须判定。** 但判定要分清两件事:
80
-
81
- - `error` —— 坏了,**破坏了就修不好**的那种(配置缺失、账本读不出、索引损坏)
82
- - `warn` —— 还没建 / 还没跑 / 还没装。**这是正常的进度状态,不是故障**
83
-
84
- ★ 混这两件事的代价很具体:**新装的人第一次体检就看见一片红**,于是他学会忽略这个工具。
85
- 那这层保险就废了 —— 而「让失败能被发现」正是它存在的全部理由。
86
-
87
- ---
88
-
89
- ## 怎么当场知道它在不在
90
-
91
- 不用读文档,跑这两个:
92
-
93
- ```bash
94
- node [hub]/self.mjs # L1 装配得出来吗、超没超预算
95
- node [hub]/echo-doctor.mjs # L1/L4/L6 一次全查
96
- node [hub]/memindex.mjs stats # L4 索引建过没有
97
- node [hub]/memq.mjs now # L0 + L3 + L5 一次全查
98
- ```
99
-
100
- 四个都过,六层就在。
101
-
102
- ---
103
-
104
- ## 一条反过来的判据
105
-
106
- **六层不是为了让你多搭东西,是为了让你知道哪一层坏了。**
107
-
108
- 如果你发现自己装了六层,却还是分不清「这个症状是哪一层的问题」——
109
- 那说明层分得不对,或者某两层其实是一回事。**层数不是成绩,是诊断工具。**
1
+ # ECHO 的六层(以实装为准,不是设计稿)
2
+
3
+ > ★★ **2026-10-23 更新:六层口径已由 [`docs/ECHO-权威口径.md`](../docs/ECHO-权威口径.md) 接续。**
4
+ > 那份是唯一权威(层编号、判据、维护规矩以它为准)。
5
+ > 这份保留下来讲「每层缺了会怎样、怎么当场知道它坏了」——
6
+ > **层编号若与那份冲突,一律以那份为准。**
7
+
8
+ > **这份文件回答一件事:ECHO 到底由哪几块组成、每块缺了会怎样、怎么当场知道它坏了。**
9
+ >
10
+ > ★ 它和 `02-echo.md` 的分工:那份讲**为什么**要有 ECHO(思考是怎么退化的);
11
+ > 这份讲**它长什么样**。两份都不读,你会知道该防什么但搭不出来。
12
+ >
13
+ > ★ 先说清一个容易混的地方:**层数有两套,别混。**
14
+ > `00-layers.md` 的**五层**是整个灵魂的功能分工(Ⅰ ECHO / Ⅱ VITAL / Ⅲ 能力 / Ⅳ 档案 / Ⅴ 运维);
15
+ > 这里讲的**六层**是第 Ⅰ 层 ECHO **内部**的实现结构。
16
+ > 说「五层」时指灵魂分工,说「六层」时指 ECHO 内部 —— 两套都对,但混着说就都不对了。
17
+
18
+ ---
19
+
20
+ ## 为什么是「六」不是「七」
21
+
22
+ 编号是 **L0–L5 六个数**,六个都是层。
23
+
24
+ ★ **2026-10-23 口径更正**:早先这版曾把 L0 排除在层之外(「L0 不是层,是读表」)。
25
+ 合并后以 [`docs/ECHO-权威口径.md`](../docs/ECHO-权威口径.md) 为准 —— **L0 是第一层**(时钟 + 心跳),
26
+ 理由是它确实管着一样东西:**「现在是什么时候」这个上下文**。下面这段旧论证保留作沿革。
27
+
28
+ **L0 不是层,是读表。** 它不存任何东西、不管任何资源,只回答「现在几点、距上轮多久」。
29
+ 把它算成一层,会让人以为「时钟也需要设计」—— 它不需要,它只需要**存在**。
30
+
31
+ ★ 判据:**一层 = 管一种稀缺资源。** L0 不管任何东西,所以它不是层。
32
+
33
+ ---
34
+
35
+ ## 六层
36
+
37
+ | 层 | 名字 | 管哪种稀缺资源 | 实现在哪 | 缺了会怎样 |
38
+ |---|---|---|---|---|
39
+ | **L1** | **自我**(推送层) | **每轮都在的注意力** | `SELF.md` ← `self.mjs` 从 `SELF.src.md` 装配 | 你会忘记自己是谁、边界在哪 |
40
+ | **L2** | **工作台** | **这一轮的上下文** | DSH 会话本身 | —— (宿主的事,不是你的) |
41
+ | **L3** | **一手层** | **原文** | 账本 `02-墨.jsonl` + 书房 + 会话日志 | 所有转述都没有出处,错了查不回来 |
42
+ | **L4** | **索引** | **找得到** | `<hub>/index/` ← `memindex.mjs build` | 检索只能全量扫原文,慢且粗 |
43
+ | **L5** | **检索**(门) | **取回** | `memq.mjs`(`now` / `[词]` / `timeline` / `open`) | 有东西但拿不出来,等于没有 |
44
+ | **L6** | **哨兵** | **坏了能被发现** | `echo-doctor.mjs` | 坏了没人说,你会以为它好着 |
45
+
46
+ ### L1 自我 —— 为什么它单独占一层
47
+
48
+ 因为它**每轮都进上下文**,而上下文的每一字节都在花钱。
49
+
50
+ 所以它分两种内容:**必留**(硬线 / 身份判据 / 门在哪)和**可换**(说话方式 / 具体判断)。
51
+ 预算紧时先压后者。
52
+
53
+ ★ 它和 `AGENTS.md` 的分工是这套设计的根:**指令层有预算上限,满了会静默丢、而且最宽泛的先丢**;
54
+ 所以最不能丢的东西放在推送层,因为推送层不会静默消失。
55
+
56
+ ### L3 一手 —— 为什么「只追加」
57
+
58
+ 多个写者共享一个可变文件是万恶之源:谁都能改,改坏了查不出是谁改的。
59
+
60
+ **只追加不需要锁** —— 各写各的行,读的时候按时间合并。
61
+ 一本书从第一行到最后一行谁都不许擦,那就永远不会有两个版本。
62
+
63
+ ### L4 索引 —— 每条摘要必须带回原文的指针
64
+
65
+ ★ 这是整套里最容易做错的一条。
66
+
67
+ 索引一旦只存「摘要」不存「出处」,它就从**索引**变成了**第二份真相** ——
68
+ 而且是一份会被压缩、会被转述、会随时间变形的真相。
69
+ 到最后你分不清「我记得」和「我查得到」,而这两件事的可靠性差了一个数量级。
70
+
71
+ **判据:任何一条摘要,都要能一条命令回到原文。**
72
+ 回到不去的东西,不该叫索引。
73
+
74
+ ### L6 哨兵 —— 「只朗读不判定」是个陷阱
75
+
76
+ 一个只把状态打印出来、不做判断的体检器,看起来在工作,实际上是**在给人添活**:
77
+ 每次都要自己读、自己比、自己决定要不要管。
78
+
79
+ **它必须判定。** 但判定要分清两件事:
80
+
81
+ - `error` —— 坏了,**破坏了就修不好**的那种(配置缺失、账本读不出、索引损坏)
82
+ - `warn` —— 还没建 / 还没跑 / 还没装。**这是正常的进度状态,不是故障**
83
+
84
+ ★ 混这两件事的代价很具体:**新装的人第一次体检就看见一片红**,于是他学会忽略这个工具。
85
+ 那这层保险就废了 —— 而「让失败能被发现」正是它存在的全部理由。
86
+
87
+ ---
88
+
89
+ ## 怎么当场知道它在不在
90
+
91
+ 不用读文档,跑这两个:
92
+
93
+ ```bash
94
+ node [hub]/self.mjs # L1 装配得出来吗、超没超预算
95
+ node [hub]/echo-doctor.mjs # L1/L4/L6 一次全查
96
+ node [hub]/memindex.mjs stats # L4 索引建过没有
97
+ node [hub]/memq.mjs now # L0 + L3 + L5 一次全查
98
+ ```
99
+
100
+ 四个都过,六层就在。
101
+
102
+ ---
103
+
104
+ ## 一条反过来的判据
105
+
106
+ **六层不是为了让你多搭东西,是为了让你知道哪一层坏了。**
107
+
108
+ 如果你发现自己装了六层,却还是分不清「这个症状是哪一层的问题」——
109
+ 那说明层分得不对,或者某两层其实是一回事。**层数不是成绩,是诊断工具。**