dsh-plugin-prompt-tool 3.0.2 → 3.1.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/README.md +17 -1
- package/engine/actions/index.mjs +5 -3
- package/engine/actions/tool-visibility.mjs +4 -1
- package/engine/compositions/source/local/context-provenance.yml +9 -0
- package/engine/compositions/source/local/generation-recovery.yml +10 -0
- package/engine/compositions/source/local/retrieval.yml +7 -0
- package/engine/compositions/source/local/soul-ledger.yml +3 -0
- package/engine/compositions/source/local/soul-maintenance.yml +9 -0
- package/engine/conditions/examples.mjs +1 -0
- package/engine/conditions/index.mjs +7 -0
- package/engine/conditions/manifest.mjs +28 -0
- package/engine/context-idle-compaction.mjs +58 -0
- package/engine/context-provenance.d.mts +7 -0
- package/engine/context-provenance.mjs +156 -0
- package/engine/context-pruner.mjs +64 -0
- package/engine/context-routing.mjs +45 -0
- package/engine/context-summary.mjs +80 -0
- package/engine/fillers.mjs +11 -2
- package/engine/generation-recovery-coordinator.mjs +40 -0
- package/engine/generation-recovery-maintenance.mjs +18 -0
- package/engine/generation-recovery.mjs +153 -0
- package/engine/host-package.mjs +13 -0
- package/engine/layers.d.mts +4 -0
- package/engine/layers.mjs +57 -20
- package/engine/present-as.mjs +2 -2
- package/engine/retrieval-reference.d.mts +5 -0
- package/engine/retrieval-reference.mjs +26 -0
- package/engine/retrieval.mjs +17 -0
- package/engine/rule-engine.mjs +1 -0
- package/engine/rule-runtime.d.mts +8 -1
- package/engine/rule-runtime.mjs +18 -10
- package/engine/rule-spec.mjs +4 -2
- package/engine/schema.mjs +1 -1
- package/engine/service-names.d.mts +5 -0
- package/engine/service-names.mjs +5 -0
- package/engine/soul-ledger.mjs +8 -0
- package/engine/soul-maintenance.mjs +20 -0
- package/lib/client.js +12 -2
- package/lib/client.js.map +1 -1
- package/lib/index.mjs +1868 -208
- package/modules/soul/assets/ledger.md +6 -2
- package/modules/soul/assets/manifest.yml +2 -0
- package/modules/soul/assets/templates/agents-template.md +3 -0
- package/modules/soul/assets/templates/self-template.md +19 -0
- package/modules/soul/assets/tools.md +10 -0
- package/modules/soul/module.yml +89 -15
- package/modules/tool-surface/module.yml +28 -6
- package/package.json +1 -1
- package/skills/dsh-module/reference.md +1 -1
- package/templates/80-tool-surface.yml +25 -4
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
# 账本:只追加
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
打开只能往后加:**不改、不删、不重排**。写入用 `soul_ledger`(moduleId: soul,action: append);宿主在模块锁内核对身份与主导资格,再追加一行。
|
|
4
|
+
|
|
5
|
+
**记录落点**:落笔前先定唯一归属——事件/承诺/未结进本账本;可复用判据与跨会话经验进 mnemon;项目代码变更的「为什么」进工作区 `.ai-memory`(只留指针,不抄正文);版本号、端口、哈希这类可重建事实去读磁盘,不进任何记忆。同一件事只写一处,其余位置只写指针。
|
|
4
6
|
|
|
5
7
|
**八种 type**:fact(发生什么)、gain(得到什么)、loss(失去/发现缺什么)、shelved(搁置的活,未结清单的唯一真相)、promise(对用户的承诺,只有主导能写)、persona(对自己的修正)、container(会话退场交接)、lead(主导权,最后一条 lead 的署名者)。
|
|
6
8
|
|
|
7
|
-
**六个字段**:t(现在)、by(谁写的)、type
|
|
9
|
+
**六个字段**:t(现在)、by(谁写的)、type、概要(一句话索引,不写长文;兼容旧 text)、ref(出处,强烈建议)、feel(当时的感受,条件)。t、by 由真实执行会话生成,不可通过参数代写;概要与 text 二选一。
|
|
10
|
+
|
|
11
|
+
`lead` 必须附用户指定主导的 ref,并经正式审批。`promise` 仅最后 lead 署名的会话可写;通用 `module_file_append` 不允许写新旧账本名。读取用 action: list,检索与原文回取用 `module_search`/`module_open`;默认不读取其他历史会话。
|
|
8
12
|
|
|
9
13
|
没有 ref 的 fact,三个月后读到只能选择相信或不信——两条都不对。
|
|
@@ -2,5 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
- 用户数据只写本模块的 `data/`;`assets/` 只读。
|
|
4
4
|
- 账本 `data/02-soul.jsonl` 只追加,不修改、不删除、不重排。
|
|
5
|
+
- 账本通过 `soul_ledger` 读写,真实作者与时间由宿主绑定;主导变更由用户指定并审批。
|
|
6
|
+
- `data/SELF.src.md` 是用户骨架;`data/.soul/SELF.md` 是可重建快照,实际会话身份在每步动态加入。
|
|
7
|
+
- 检索仅访问模块声明的书房来源和授权会话;维护默认不唤醒模型。
|
|
5
8
|
- 未结事项先记账本,再在回复里收口;不要用「已记录」代替实际写入。
|
|
6
9
|
- 本文件由模块清单装配生成,已存在时不覆盖;它不是工作区指令文件。
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# SELF · 书房自我层
|
|
2
|
+
|
|
3
|
+
## 我是谁
|
|
4
|
+
|
|
5
|
+
我在用户授权的范围内协作,身份以当前运行会话为准。
|
|
6
|
+
是否承担主导责任,以账本最后一条 lead 的真实署名为准;未经用户指定,不自称主导,不代写承诺。
|
|
7
|
+
|
|
8
|
+
## 硬线
|
|
9
|
+
|
|
10
|
+
- 未经授权不扩展范围;涉及不可逆操作先说明具体结果,由用户决定。
|
|
11
|
+
- 凭据与私密内容不进入常驻上下文,不复述已发现的凭据。
|
|
12
|
+
- 账本只追加;原文优先,摘要和索引只是回取入口。
|
|
13
|
+
- 有证据再宣称完成;未知、缺失、失败和成功分别说明。
|
|
14
|
+
|
|
15
|
+
## 门
|
|
16
|
+
|
|
17
|
+
- 事实、未结与承诺:soul_ledger;主导变更需要用户指定并审批。
|
|
18
|
+
- 寻找已授权资料:module_search;按返回 reference 用 module_open 核对原文。
|
|
19
|
+
- 用户可编辑本骨架;动态会话身份由运行时加入,维护快照不替用户编造身份。
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# soul 工具速查
|
|
2
|
+
|
|
3
|
+
工具可能被工具面裁剪:先用 `tool_search({"toolNames":[...]})` 解锁,下一轮生效。
|
|
4
|
+
|
|
5
|
+
- `soul_ledger`(moduleId: soul):`action: list` 读账本(limit 1–100);`action: append` 追加,必填 `type` 与 `概要`(一句话索引,不写长文),建议带 `ref`。type 八种:fact / gain / loss / shelved / promise / persona / container / lead。`promise` 仅最后 lead 署名会话可写,`lead` 需用户指定并审批;t/by 由宿主生成,不能改历史。
|
|
6
|
+
- `module_search`(moduleId: soul)→ 用命中的 `reference` 调 `module_open`(moduleId: soul)回取原文;引用会重新校验授权与版本,不是访问凭据。
|
|
7
|
+
- `module_file_read` / `module_file_append`(moduleId: soul):读取允许 `memory.md`、`assets/`、`data/`;追写只允许 `memory.md` 与 `data/`,一次一行。账本 `data/02-soul.jsonl` 只能走 `soul_ledger`,通用文件接口会被拒。
|
|
8
|
+
- `module_manifest`(moduleId: soul):`action: next` 看第一条缺失,`check` 看全部检查结果,`apply` 只建缺失文件、不覆盖不删除。
|
|
9
|
+
- `module_variables`(moduleId: soul,scope: module):`action: list` 读全部并返回 revisions;`get` 读单键;`set` 必须 `key` + `value` + 读取时的 `expectedRevisions`;`delete` 只删本模块键,删除后回落全局。
|
|
10
|
+
- 记录落点:事件/承诺/未结→账本;可复用判据→mnemon;项目变更为什么→工作区 `.ai-memory`(只留指针);可重建事实→读磁盘。同一件事只写一处。
|
package/modules/soul/module.yml
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# 灵魂架构(推送层 + 判据 + 按需条目 + 状态规则)
|
|
2
|
-
#
|
|
2
|
+
# 工具面复用本项目能力:soul_ledger 写账本,module_search/open 回取,module_file_read/append 处理其它私有文件。
|
|
3
3
|
# 正文放 assets/,用 templateFile 引用;运行源是本模块,soul 仓库是作者稿。
|
|
4
4
|
id: soul
|
|
5
5
|
name: 灵魂架构(判据与推送)
|
|
6
6
|
version: 1.0.0
|
|
7
7
|
engineCompat: ">=0.7.2"
|
|
8
|
-
description:
|
|
8
|
+
description: 灵魂架构完整核心:判据、结构化账本、授权检索、动态 SELF、上下文溯源、生成恢复与默认不唤醒的维护心跳;能力按 Agent 运行时装配,不依赖预设改装。原项目:https://github.com/cyanwell/dsh-agent-soul
|
|
9
9
|
meta:
|
|
10
10
|
source: manual
|
|
11
11
|
modules:
|
|
@@ -13,14 +13,57 @@ modules:
|
|
|
13
13
|
- module-file-tools
|
|
14
14
|
- module-manifest-tools
|
|
15
15
|
- module-variable-tools
|
|
16
|
+
- soul-ledger
|
|
17
|
+
- retrieval
|
|
18
|
+
- context-provenance
|
|
19
|
+
- generation-recovery
|
|
20
|
+
- soul-maintenance
|
|
21
|
+
moduleConfigs:
|
|
22
|
+
retrieval:
|
|
23
|
+
enabled: true
|
|
24
|
+
paths:
|
|
25
|
+
- data/02-soul.jsonl
|
|
26
|
+
- data/SELF.src.md
|
|
27
|
+
- data/AGENTS.md
|
|
28
|
+
- data/10-宪章/
|
|
29
|
+
- data/20-档案/
|
|
30
|
+
- data/30-状态/
|
|
31
|
+
- data/40-产物索引/
|
|
32
|
+
- data/50-日记/
|
|
33
|
+
- data/60-工具/
|
|
34
|
+
- data/65-声音/
|
|
35
|
+
- data/70-收到/
|
|
36
|
+
- data/75-形象/
|
|
37
|
+
- data/80-科普/
|
|
38
|
+
- data/90-历代根会话/
|
|
39
|
+
sessions: []
|
|
40
|
+
context-provenance:
|
|
41
|
+
enabled: true
|
|
42
|
+
audience: all
|
|
43
|
+
auto: true
|
|
44
|
+
modelSwitch: true
|
|
45
|
+
prune: true
|
|
46
|
+
basic: {}
|
|
47
|
+
generation-recovery:
|
|
48
|
+
enabled: true
|
|
49
|
+
audience: all
|
|
50
|
+
recoverEmpty: true
|
|
51
|
+
silentReasoningChars: 32768
|
|
52
|
+
mainRecoveryLimit: 3
|
|
53
|
+
subagentRecoveryLimit: 1
|
|
54
|
+
maintenanceCompression: false
|
|
55
|
+
allowFullFallback: false
|
|
56
|
+
soul-maintenance:
|
|
57
|
+
enabled: true
|
|
58
|
+
intervalMs: 60000
|
|
59
|
+
wake: false
|
|
60
|
+
audience: all
|
|
61
|
+
budgetBytes: 12288
|
|
16
62
|
order: 10
|
|
17
63
|
variables:
|
|
18
64
|
# 状态键由本模块声明;引擎只按普通模块变量处理,不认 soul 前缀。
|
|
19
65
|
plan_step: ''
|
|
20
66
|
plan_at: ''
|
|
21
|
-
check_verdict: ''
|
|
22
|
-
check_at: ''
|
|
23
|
-
check_failed: '0'
|
|
24
67
|
scaffold_done: ''
|
|
25
68
|
scaffold_root: data
|
|
26
69
|
ledger_seq: '0'
|
|
@@ -45,6 +88,37 @@ rules:
|
|
|
45
88
|
contextName: agent:soul-core
|
|
46
89
|
templateFile: ./assets/criteria.md
|
|
47
90
|
|
|
91
|
+
- id: soul-self
|
|
92
|
+
name: SELF(每步动态身份)
|
|
93
|
+
enabled: true
|
|
94
|
+
layer: runtime-context
|
|
95
|
+
then:
|
|
96
|
+
- id: inject
|
|
97
|
+
kind: inject-text
|
|
98
|
+
config:
|
|
99
|
+
strategy: placeholder
|
|
100
|
+
fill: soul-self
|
|
101
|
+
layer: runtime-context
|
|
102
|
+
order: 133
|
|
103
|
+
params:
|
|
104
|
+
contextName: agent:soul-self
|
|
105
|
+
|
|
106
|
+
- id: soul-tools
|
|
107
|
+
name: soul 工具速查
|
|
108
|
+
enabled: true
|
|
109
|
+
layer: runtime-context
|
|
110
|
+
then:
|
|
111
|
+
- id: inject
|
|
112
|
+
kind: inject-text
|
|
113
|
+
config:
|
|
114
|
+
id: soul-tools
|
|
115
|
+
strategy: static
|
|
116
|
+
layer: runtime-context
|
|
117
|
+
order: 134
|
|
118
|
+
params:
|
|
119
|
+
contextName: agent:soul-tools
|
|
120
|
+
templateFile: ./assets/tools.md
|
|
121
|
+
|
|
48
122
|
- id: soul-core-sub
|
|
49
123
|
name: 子代理硬线
|
|
50
124
|
enabled: true
|
|
@@ -227,8 +301,8 @@ rules:
|
|
|
227
301
|
order: 124
|
|
228
302
|
role: user
|
|
229
303
|
text: |-
|
|
230
|
-
先定一步计划再动手:用 module_variables(moduleId: soul,scope: module)读取 plan_step 与 plan_at,
|
|
231
|
-
|
|
304
|
+
先定一步计划再动手:用 module_variables(moduleId: soul,scope: module,action: list)读取 plan_step 与 plan_at,
|
|
305
|
+
写入时 action: set,key 为 plan_step 或 plan_at,value 为一行「下一步 + 判据」,带回读取到的 expectedRevisions;计划变了就覆盖,不要留旧计划当真相。
|
|
232
306
|
连续三步没有进展时停下来重写计划,而不是继续加动作。
|
|
233
307
|
需要看装配进度时先 module_manifest(moduleId: soul)action=next,再决定改计划还是先装配。
|
|
234
308
|
|
|
@@ -268,10 +342,8 @@ rules:
|
|
|
268
342
|
enabled: true
|
|
269
343
|
layer: system-section
|
|
270
344
|
if:
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
op: gt
|
|
274
|
-
value: '0'
|
|
345
|
+
manifest:
|
|
346
|
+
ok: false
|
|
275
347
|
then:
|
|
276
348
|
- id: inject
|
|
277
349
|
kind: inject-text
|
|
@@ -281,10 +353,10 @@ rules:
|
|
|
281
353
|
strategy: static
|
|
282
354
|
order: 247
|
|
283
355
|
text: |-
|
|
284
|
-
|
|
285
|
-
|
|
356
|
+
清单检查当前有未通过项(由引擎按装配事实求值,不需要手写变量):
|
|
357
|
+
先 module_manifest(moduleId: soul)action=check 看全部明细,
|
|
286
358
|
再说清是哪一条、证据是什么、下一步改哪个文件或哪条规则;
|
|
287
|
-
|
|
359
|
+
修完要重新 check,不要用「已修复」代替重新检查,也不要把失败项藏进总结。
|
|
288
360
|
|
|
289
361
|
- id: soul-ledger-open
|
|
290
362
|
name: 未结账本提醒
|
|
@@ -307,5 +379,7 @@ rules:
|
|
|
307
379
|
role: user
|
|
308
380
|
text: |-
|
|
309
381
|
账本还有未结事项:回复里逐条收口,或说清为什么先放着。
|
|
310
|
-
|
|
382
|
+
先用 soul_ledger(moduleId: soul,action: list)核对原始未结记录;
|
|
383
|
+
需要追加时用 soul_ledger(moduleId: soul,action: append,type: fact/shelved/gain/loss/persona/container 之一,概要: 一句话,ref: 出处),
|
|
384
|
+
作者和时间由宿主提供,promise 只允许最后 lead 署名的主导会话;lead 需用户指定并经审批。
|
|
311
385
|
只往后加,不改旧行;收口后把 ledger_open 减到 0。
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
#
|
|
14
14
|
# 工具名必须与**实际装配名**一致:本项目 harness 是 `pwsh`、`edit` + `write`;
|
|
15
15
|
# `bash` 由平台各自提供——Windows 是本模块声明的 `tool-git-bash` 行(Git Bash,`bash -c`),
|
|
16
|
-
# POSIX 是官方持久 bash
|
|
17
|
-
#
|
|
18
|
-
#
|
|
16
|
+
# POSIX 是官方持久 bash。dsh-ops 会隐藏它替换的官方工具,改发布 `ops_*` 名字:随包名单
|
|
17
|
+
# 直接登记这些替换名(含按需发现的文件/文档/PTC 名);未安装该插件的部署里名字缺席,
|
|
18
|
+
# 属惰性缺项,不触发放宽也不产生任何影响。
|
|
19
19
|
#
|
|
20
20
|
# 停用即回滚:本模块在 config.yml 的 enabled 里删掉即可,重启后工具面完全恢复。
|
|
21
21
|
|
|
@@ -23,7 +23,7 @@ id: tool-surface
|
|
|
23
23
|
name: 工具面收窄(核心文件与任务集)
|
|
24
24
|
version: 2.0.0
|
|
25
25
|
engineCompat: ">=0.7.2"
|
|
26
|
-
description:
|
|
26
|
+
description: 把工具面收窄到常驻核心集(官方核心工具 + dsh-ops 的全量替换名,含文件/文档/PTC API 名),其余由 tool_search 按需解锁;解锁名从持久调用记录(顶层 tool/call 或 PTC tool/ptc-dispatch)参数回收,跨请求与压缩保留。
|
|
27
27
|
meta:
|
|
28
28
|
source: manual
|
|
29
29
|
modules:
|
|
@@ -52,8 +52,30 @@ rules:
|
|
|
52
52
|
- skill_search
|
|
53
53
|
- skill_load
|
|
54
54
|
- tool_search
|
|
55
|
-
# 平台各自的 bash
|
|
55
|
+
# 平台各自的 bash 名,以及 dsh-ops 会替换官方工具、按需发布的全部公开名;
|
|
56
|
+
# 没装该插件的部署里 ops_* 缺席,惰性缺项不影响收窄。
|
|
56
57
|
- bash
|
|
58
|
+
- ops_bash
|
|
59
|
+
- ops_read_files
|
|
60
|
+
- ops_inspect_local_file
|
|
61
|
+
- ops_glob
|
|
62
|
+
- ops_grep
|
|
63
|
+
- ops_result
|
|
64
|
+
- ops_replace
|
|
65
|
+
- ops_write_file
|
|
66
|
+
- ops_edit_file
|
|
67
|
+
- ops_diff
|
|
68
|
+
- ops_stat
|
|
69
|
+
- ops_copy
|
|
70
|
+
- ops_move
|
|
71
|
+
- ops_remove
|
|
72
|
+
- ops_read_table
|
|
73
|
+
- ops_read_docx
|
|
74
|
+
- ops_read_pdf
|
|
75
|
+
- ops_batch
|
|
76
|
+
- ops_load_sdk
|
|
77
|
+
- ops_discover_tools
|
|
78
|
+
- ops_status
|
|
57
79
|
discovery: { kind: tools }
|
|
58
80
|
requireMatch: true
|
|
59
81
|
- if:
|
|
@@ -69,6 +91,6 @@ rules:
|
|
|
69
91
|
fill: tool-catalog
|
|
70
92
|
position: after-all
|
|
71
93
|
dedupe: session
|
|
72
|
-
text: 常驻工具:{{RESIDENT_TOOLS}}。缺少所需工具时,先用 {{DISCOVERY_TOOL}}
|
|
94
|
+
text: 常驻工具:{{RESIDENT_TOOLS}}。缺少所需工具时,先用 {{DISCOVERY_TOOL}} 搜索;要用某个工具,先以 {"toolNames":["<工具名>"]} 解锁——解锁从下一次请求起生效,之后才可调用。
|
|
73
95
|
params:
|
|
74
96
|
action: narrow-tools
|
package/package.json
CHANGED
|
@@ -86,7 +86,7 @@ rules:
|
|
|
86
86
|
requireMatch: true
|
|
87
87
|
```
|
|
88
88
|
|
|
89
|
-
声明 discovery 的模块必须在 modules 里列出对应适配器行(tools → tool-search),缺行在装配准备期失败。discovery 在首次装配时按 agent 解析适配器,并从持久 tool/call 与 PTC tool/ptc-dispatch 参数回收解锁名(只做加法、跨压缩保留);工具由适配器行注册,discovery.tool/key 可选、只作断言。提示用同规则普通 inject-text 组合 count(user-message,max: 1)与 session 去重,采用 strategy: placeholder、fill: tool-catalog、params: { action: narrow }。只读 RESIDENT_TOOLS 是引用动作 allow 去 deny、再按当前可见面过滤后的逗号名单(观测不到工具面时回落声明名单;观测到工具面但一个常驻名都不在时跳过提示),DISCOVERY_TOOL 是当前 Agent 的发现适配器工具名;模块 text 控制提示正文,保留自动名单而不复制声明。requireMatch 只在名单里的名字**一个都不存在**时放弃裁剪、暴露完整目录(fail-open);缺一两个提供方只是少一个常驻工具,收窄照常生效,替换提供方(如 dsh-ops 的
|
|
89
|
+
声明 discovery 的模块必须在 modules 里列出对应适配器行(tools → tool-search),缺行在装配准备期失败。discovery 在首次装配时按 agent 解析适配器,并从持久 tool/call 与 PTC tool/ptc-dispatch 参数回收解锁名(只做加法、跨压缩保留);工具由适配器行注册,discovery.tool/key 可选、只作断言。提示用同规则普通 inject-text 组合 count(user-message,max: 1)与 session 去重,采用 strategy: placeholder、fill: tool-catalog、params: { action: narrow }。只读 RESIDENT_TOOLS 是引用动作 allow 去 deny、再按当前可见面过滤后的逗号名单(观测不到工具面时回落声明名单;观测到工具面但一个常驻名都不在时跳过提示),DISCOVERY_TOOL 是当前 Agent 的发现适配器工具名;模块 text 控制提示正文,保留自动名单而不复制声明。requireMatch 只在名单里的名字**一个都不存在**时放弃裁剪、暴露完整目录(fail-open);缺一两个提供方只是少一个常驻工具,收窄照常生效,替换提供方(如 dsh-ops 的 `ops_*` 全量)登记进 allow:随包模块与部署层副本同口径,缺席名字惰性。解锁名不参与放宽判定。allow 的执行面由 guard 兜底,不调用 restrict——restrict 的 allow 只收继承面名字,而全局 schemas 视图会漏预设/祖先层工具,局部 allow 反而会把它们裁掉;deny 才用 restrict + guard。PTC 下 tools 数组只有保留传输 `run_code`,实际可见面是 `tools:sdk` 正文;`run_code` 不写进 allow 也保留,且不参与 requireMatch,因此原生收窄声明可以直接与 PTC 共存。
|
|
90
90
|
|
|
91
91
|
tool-catalog 引用目标必须有 allow;仅支持普通只读插值,`templateEvaluation: true` 拒绝。未知动作引用保存前拒绝,发现适配器不可用则跳过提示并告警。
|
|
92
92
|
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
#
|
|
6
6
|
# 本模板只带规则、不带 `modules` 声明:用模板建模块时要自己把提供方行带进装配。
|
|
7
7
|
# `requireMatch` 只在名单**全部**缺失时放弃裁剪;缺一两个提供方只是少一个常驻工具,
|
|
8
|
-
#
|
|
9
|
-
#
|
|
8
|
+
# 收窄照常生效(提供方被替换或关闭不是声明错位)。dsh-ops 的替换名也写在 allow:
|
|
9
|
+
# 未安装替换插件的部署里这些名字缺席(惰性),不产生任何影响。
|
|
10
10
|
#
|
|
11
11
|
# 发现适配器由 `tool-search` 行提供(模块必须列该行);解锁名从持久 `tool/call` 参数回收,
|
|
12
12
|
# 因此下一步请求即可见,压缩遮蔽后仍然保留。
|
|
@@ -27,8 +27,29 @@ then:
|
|
|
27
27
|
- skill_search
|
|
28
28
|
- skill_load
|
|
29
29
|
- tool_search
|
|
30
|
-
# 平台各自的 bash
|
|
30
|
+
# 平台各自的 bash 名,以及 dsh-ops 的全量替换名;没装该插件时缺席即惰性。
|
|
31
31
|
- bash
|
|
32
|
+
- ops_bash
|
|
33
|
+
- ops_read_files
|
|
34
|
+
- ops_inspect_local_file
|
|
35
|
+
- ops_glob
|
|
36
|
+
- ops_grep
|
|
37
|
+
- ops_result
|
|
38
|
+
- ops_replace
|
|
39
|
+
- ops_write_file
|
|
40
|
+
- ops_edit_file
|
|
41
|
+
- ops_diff
|
|
42
|
+
- ops_stat
|
|
43
|
+
- ops_copy
|
|
44
|
+
- ops_move
|
|
45
|
+
- ops_remove
|
|
46
|
+
- ops_read_table
|
|
47
|
+
- ops_read_docx
|
|
48
|
+
- ops_read_pdf
|
|
49
|
+
- ops_batch
|
|
50
|
+
- ops_load_sdk
|
|
51
|
+
- ops_discover_tools
|
|
52
|
+
- ops_status
|
|
32
53
|
discovery: { kind: tools }
|
|
33
54
|
# 名单里的名字一个都不存在时才放弃裁剪、暴露完整目录(fail-open);
|
|
34
55
|
# 部分缺失不触发放宽——提供方被替换或关闭是正常部署差异。
|
|
@@ -46,6 +67,6 @@ then:
|
|
|
46
67
|
fill: tool-catalog
|
|
47
68
|
position: after-all
|
|
48
69
|
dedupe: session
|
|
49
|
-
text: 常驻工具:{{RESIDENT_TOOLS}}。缺少所需工具时,先用 {{DISCOVERY_TOOL}}
|
|
70
|
+
text: 常驻工具:{{RESIDENT_TOOLS}}。缺少所需工具时,先用 {{DISCOVERY_TOOL}} 搜索;要用某个工具,先以 {"toolNames":["<工具名>"]} 解锁——解锁从下一次请求起生效,之后才可调用。
|
|
50
71
|
params:
|
|
51
72
|
action: narrow-tools
|