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`(只留指针);可重建事实→读磁盘。同一件事只写一处。
@@ -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
- 写入一行「下一步 + 判据」,带回 expectedRevisions;计划变了就覆盖,不要留旧计划当真相。
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/promise,概要: 一句话,ref: 出处),
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。替换提供方(如 dsh-ops 的 `ops_bash`)属于部署事实,不写进随包名单:
17
- # 加在部署层模块副本(`$DSH_HOME/.prompt-tool/modules/tool-surface/module.yml`)的 allow 即可;
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: 把工具面收窄到常驻核心集(bash/pwsh/read/write/edit/glob/grep/todo_write/skill_search/skill_load/tool_search),其余由 tool_search 按需解锁;解锁名从持久调用记录(顶层 tool/call 或 PTC tool/ptc-dispatch)参数回收,跨请求与压缩保留。
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 名;替换提供方(如 ops_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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-plugin-prompt-tool",
3
- "version": "3.1.0",
3
+ "version": "3.1.1",
4
4
  "description": "DSH 插件:提示词工具,规范模型的思维链与回答内容,提供 Web UI 编辑 module.yml 与 AGENTS.md,并按 skills 目录注册可开关技能。",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -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 的 ops_bash)写进部署层名单。解锁名不参与放宽判定。allow 的执行面由 guard 兜底,不调用 restrict——restrict 的 allow 只收继承面名字,而全局 schemas 视图会漏预设/祖先层工具,局部 allow 反而会把它们裁掉;deny 才用 restrict + guard。PTC 下 tools 数组只有保留传输 `run_code`,实际可见面是 `tools:sdk` 正文;`run_code` 不写进 allow 也保留,且不参与 requireMatch,因此原生收窄声明可以直接与 PTC 共存。
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
- # 收窄照常生效(提供方被替换或关闭不是声明错位)。替换提供方的名字写进 allow:
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 名;替换提供方(如 ops_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
  # 部分缺失不触发放宽——提供方被替换或关闭是正常部署差异。