dsh-plugin-prompt-tool 3.1.0 → 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.
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
打开只能往后加:**不改、不删、不重排**。写入用 `soul_ledger`(moduleId: soul,action: append);宿主在模块锁内核对身份与主导资格,再追加一行。
|
|
4
4
|
|
|
5
|
+
**记录落点**:落笔前先定唯一归属——事件/承诺/未结进本账本;可复用判据与跨会话经验进 mnemon;项目代码变更的「为什么」进工作区 `.ai-memory`(只留指针,不抄正文);版本号、端口、哈希这类可重建事实去读磁盘,不进任何记忆。同一件事只写一处,其余位置只写指针。
|
|
6
|
+
|
|
5
7
|
**八种 type**:fact(发生什么)、gain(得到什么)、loss(失去/发现缺什么)、shelved(搁置的活,未结清单的唯一真相)、promise(对用户的承诺,只有主导能写)、persona(对自己的修正)、container(会话退场交接)、lead(主导权,最后一条 lead 的署名者)。
|
|
6
8
|
|
|
7
9
|
**六个字段**:t(现在)、by(谁写的)、type、概要(一句话索引,不写长文;兼容旧 text)、ref(出处,强烈建议)、feel(当时的感受,条件)。t、by 由真实执行会话生成,不可通过参数代写;概要与 text 二选一。
|
|
@@ -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
|
@@ -103,6 +103,22 @@ rules:
|
|
|
103
103
|
params:
|
|
104
104
|
contextName: agent:soul-self
|
|
105
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
|
+
|
|
106
122
|
- id: soul-core-sub
|
|
107
123
|
name: 子代理硬线
|
|
108
124
|
enabled: true
|
|
@@ -285,8 +301,8 @@ rules:
|
|
|
285
301
|
order: 124
|
|
286
302
|
role: user
|
|
287
303
|
text: |-
|
|
288
|
-
先定一步计划再动手:用 module_variables(moduleId: soul,scope: module)读取 plan_step 与 plan_at,
|
|
289
|
-
|
|
304
|
+
先定一步计划再动手:用 module_variables(moduleId: soul,scope: module,action: list)读取 plan_step 与 plan_at,
|
|
305
|
+
写入时 action: set,key 为 plan_step 或 plan_at,value 为一行「下一步 + 判据」,带回读取到的 expectedRevisions;计划变了就覆盖,不要留旧计划当真相。
|
|
290
306
|
连续三步没有进展时停下来重写计划,而不是继续加动作。
|
|
291
307
|
需要看装配进度时先 module_manifest(moduleId: soul)action=next,再决定改计划还是先装配。
|
|
292
308
|
|
|
@@ -364,6 +380,6 @@ rules:
|
|
|
364
380
|
text: |-
|
|
365
381
|
账本还有未结事项:回复里逐条收口,或说清为什么先放着。
|
|
366
382
|
先用 soul_ledger(moduleId: soul,action: list)核对原始未结记录;
|
|
367
|
-
需要追加时用 soul_ledger(moduleId: soul,action: append,type: fact/shelved/
|
|
383
|
+
需要追加时用 soul_ledger(moduleId: soul,action: append,type: fact/shelved/gain/loss/persona/container 之一,概要: 一句话,ref: 出处),
|
|
368
384
|
作者和时间由宿主提供,promise 只允许最后 lead 署名的主导会话;lead 需用户指定并经审批。
|
|
369
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:
|
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
|
# 部分缺失不触发放宽——提供方被替换或关闭是正常部署差异。
|