pi-patch-keeper 1.0.5 → 1.0.7
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 +33 -29
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,53 +1,57 @@
|
|
|
1
1
|
# pi-patch-keeper — 扩展加载顺序守护(pi 扩展)
|
|
2
2
|
|
|
3
|
-
防止「force
|
|
3
|
+
防止「force 型扩展」静默吞掉其后的 system 注入。
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 为什么需要
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
pi 的 system prompt 由各扩展写入的 section 拼装。若某扩展在 `before_agent_start` 里
|
|
8
|
+
`return { systemPrompt }`(或设置 `forceSystemPrompt`),宿主会用返回值**整段替换**,
|
|
9
|
+
其后所有扩展的 section 写入被静默丢弃——没有报错,表现为「配了却不起效」。
|
|
8
10
|
|
|
9
11
|
## 功能
|
|
10
12
|
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
|
|
13
|
+
- **启动检查** `settings.json` 的 `packages` 顺序:已知 force 型必须整体位于末尾。
|
|
14
|
+
- **静态扫描**已装 npm 扩展的入口源码,区分两类:
|
|
15
|
+
- 「无条件 force」——从不写 section,只 return systemPrompt(会吞掉其后一切)
|
|
16
|
+
- 「兼容兜底」——先写 section,只在旧宿主才 force(安全)
|
|
17
|
+
- **自动修复**:把已知 force 型移到末尾(写前备份 `settings.json.bak-force-order-*`)。
|
|
18
|
+
- **指纹提示**:记录 `packages / defaultTools / enabledModels / extensions / codemode` 指纹,
|
|
19
|
+
变化时提示「环境已变,旧结论可能过期」。
|
|
20
|
+
- **codemode 单点检查**:禁用 `builtin:codemode` 必须有替代实现,反之亦然。
|
|
18
21
|
|
|
19
22
|
## 命令
|
|
20
23
|
|
|
21
24
|
| 命令 | 作用 |
|
|
22
25
|
| --- | --- |
|
|
23
|
-
| `/patch-keeper` |
|
|
24
|
-
| `/patch-keeper fix` |
|
|
26
|
+
| `/patch-keeper` | 查看顺序 / 疑似 force / 兼容兜底 / codemode 单点 |
|
|
27
|
+
| `/patch-keeper fix` | 修 force 顺序(写前备份) |
|
|
25
28
|
|
|
26
|
-
##
|
|
29
|
+
## 配置
|
|
27
30
|
|
|
28
|
-
|
|
29
|
-
| --- | --- | --- |
|
|
30
|
-
| `forceTail` | `npm:pi-rtk-optimizer`, `npm:pi-cache-optimizer` | 已知无条件 force 型;触发概率升序 |
|
|
31
|
-
| 自动修复 | 开 | 仅调整顺序,写前备份 |
|
|
32
|
-
| 提示时机 | 仅异常 | 无问题零输出 |
|
|
33
|
-
| 检测范围 | `npm:` 包 | 本地路径包跳过 |
|
|
34
|
-
|
|
35
|
-
配置文件(可选):`~/.pi/patch-keeper-state.json`
|
|
31
|
+
`~/.pi/patch-keeper.json`(可选):
|
|
36
32
|
|
|
37
33
|
```json
|
|
38
34
|
{ "forceTail": ["npm:pi-rtk-optimizer", "npm:pi-cache-optimizer"] }
|
|
39
35
|
```
|
|
40
36
|
|
|
41
|
-
|
|
37
|
+
`forceTail` 覆盖默认的「已知 force 型」列表;数组顺序即期望顺序(最可能触发者最后)。
|
|
38
|
+
指纹状态写入同文件的 `fingerprint` 字段。
|
|
39
|
+
|
|
40
|
+
## 纪律
|
|
42
41
|
|
|
43
|
-
|
|
42
|
+
- **绝不** `return { systemPrompt }` —— 否则自己就是它要防的问题。
|
|
43
|
+
- 唯一的写操作是修 `settings.json` 的 `packages`,且写前备份。
|
|
44
|
+
- 任何异常只提示、不抛错;无问题不打扰。
|
|
44
45
|
|
|
45
|
-
##
|
|
46
|
+
## 安装
|
|
46
47
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
```bash
|
|
49
|
+
pi install npm:pi-patch-keeper
|
|
50
|
+
pi install ./pi-patch-keeper
|
|
51
|
+
```
|
|
50
52
|
|
|
51
|
-
##
|
|
53
|
+
## 限制
|
|
52
54
|
|
|
53
|
-
|
|
55
|
+
- 静态扫描只看扩展入口前 4000 字符内 `before_agent_start` 附近的写法,动态构造的 force 检测不到。
|
|
56
|
+
- user 扩展(不在 `packages` 数组里)不在扫描范围。
|
|
57
|
+
- 只处理顺序问题;不修改任何第三方扩展的源码。
|
package/package.json
CHANGED