@morlay/dsh-session-mode 0.0.4 → 0.0.6
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 +19 -5
- package/dist/client.cjs +16699 -6
- package/dist/index.d.cts +2 -0
- package/dist/index.d.mts +2 -0
- package/dist/index.mjs +104 -20
- package/dist/rows.mjs +10 -0
- package/package.json +39 -40
- package/src/client/SessionModeSeat.tsx +1 -1
- package/src/client/index.ts +4 -1
- package/src/css-modules.d.ts +6 -0
- package/src/index.ts +3 -1
- package/src/mode-sources.ts +9 -1
- package/src/modes.ts +28 -0
- package/src/rows.ts +5 -0
- package/src/scope.ts +142 -28
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# @morlay/dsh-session-mode
|
|
2
2
|
|
|
3
|
-
**模式 = agent preset 的会话级扩展**:每个模式给这个会话加六样东西——一段 persona
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
**模式 = agent preset 的会话级扩展**:每个模式给这个会话加六样东西——一段 persona、两组按名收窄的名单(工具与技能
|
|
4
|
+
各自允许哪些、另外禁掉哪些)、一份 policy 名单(哪些上游裁决规则生效)、instruction / 技能目录 / 动态快照三个开关,
|
|
5
|
+
外加可选的默认模型。模式**不绑 preset**:行清单(工具 / 命令 / 压缩 / 委派)由会话挂着
|
|
6
6
|
的那份 preset 提供,本部署用官方 shipped `standard`(registry 的默认由官方 web-app 给,我们不覆盖);
|
|
7
7
|
`config.modes.<id>.preset` 是可选声明,写了才会在切模式时把 preset 切过去。模式清单与默认值就是本行的 `config.modes`:真源在
|
|
8
8
|
[`src/mode-sources.ts`](./src/mode-sources.ts),行 config 由 [`src/rows.ts`](./src/rows.ts) 渲染;**模式不是 Cordis
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
与 `GET/POST /session-mode`,且只在**空白会话**成立。
|
|
11
11
|
|
|
12
12
|
**按会话收口也在这个包里**([`src/scope.ts`](./src/scope.ts),模式行内部持有、不发布服务):工具目录与
|
|
13
|
-
`tool:<工具名>` section 按同一份合成结果过滤、执行层 guard 挂在该 agent 的 ctx
|
|
13
|
+
`tool:<工具名>` section 按同一份合成结果过滤、执行层 guard 挂在该 agent 的 ctx 上(同一份 guard 也按名拒 `skill`
|
|
14
|
+
工具要加载的那一件技能)、技能目录按技能名单删掉被拒的那几行、三个开关
|
|
14
15
|
(`instructions` / `skills` / `runtimeContext`)按会话生效——其中 `instructions: false` 与 `skills: false` 是在
|
|
15
16
|
`agent/pre-step` 上**丢掉官方两条注入面**(工作区指令、技能目录)。取舍见
|
|
16
17
|
[设计 抑制官方注入面](./.agents/designs/20260929-抑制官方注入面.md)。
|
|
@@ -42,7 +43,9 @@
|
|
|
42
43
|
persona:
|
|
43
44
|
prefix: 你是一个助手。……
|
|
44
45
|
allowTools: [ask_user_question, web_search, web_fetch] # 留空 = 不设收窄(用 preset 的全部工具)
|
|
45
|
-
denyTools: [] # 黑名单:从上面那份里减掉;两份同时命中时以这里为准(deny 优先)
|
|
46
|
+
denyTools: [load_workspace_dependencies] # 黑名单:从上面那份里减掉;两份同时命中时以这里为准(deny 优先)
|
|
47
|
+
allowSkills: [] # 技能白名单:留空 = 不设收窄(技能注册表里有什么就用什么)
|
|
48
|
+
denySkills: [office-docx, office-pptx, office-xlsx] # 技能黑名单:不进技能目录,`skill` 工具加载它也被拒
|
|
46
49
|
instructions: false # 丢掉官方工作区指令的注入,并关掉通道自己的降级注入
|
|
47
50
|
skills: false # 显式丢掉官方技能目录的注入;**本部署不写这一项**——推导已给出同一个值(见下)
|
|
48
51
|
runtimeContext: false # 动态快照(沙箱策略、审批策略)
|
|
@@ -54,6 +57,17 @@
|
|
|
54
57
|
就要技能目录(`allowTools` 留空即"全部",所以只有 `denyTools` 能把它推成 `false`)。本部署两个模式都不写它:
|
|
55
58
|
`coding` 留空名单 → `true`,`chat` 的三件里没有 `skill` → `false`。要"工具收窄但目录照旧列"就显式写 `skills: true`。
|
|
56
59
|
|
|
60
|
+
技能名单(`allowSkills` / `denySkills`)收的是**技能名**,与工具名单同一套合成规则(`allowSkills` 留空 = 不设收窄,
|
|
61
|
+
两份同时命中时 deny 优先),收窄落在两处:`skill-catalog` 那条消息(正文里 ``- `<名字>`: <说明>`` 那几行与它
|
|
62
|
+
`source.entries` 里的结构化名单**一起**删)与 `skill` 工具的**调用参数**(拒的是它这次要加载的那一件,工具本身的
|
|
63
|
+
可见性仍归 `allowTools`)。**不碰注册表**:技能照旧注册着,收的是"模型看到什么、能加载什么"。本部署用它收官方
|
|
64
|
+
Office 面——那三件技能由桌面宿主代码 `ctx.plugin` 挂载(不是 entry 行,profile 层停不掉),于是 `coding` 按名排除
|
|
65
|
+
它们,`load_workspace_dependencies` 那件工具同样进 `denyTools`。
|
|
66
|
+
|
|
67
|
+
代价与失效方式:正文删行认的是官方渲染形状(``- `<名字>`:`` 行首)。上游改了这个形状时那**一条目录消息整条不动**
|
|
68
|
+
(宁可多列一个名字,也不让正文与结构化名单分叉),并打一条点名告警——那是这条名单面唯一的失灵信号。技能名是模型
|
|
69
|
+
可见契约,跟着上游改名走。
|
|
70
|
+
|
|
57
71
|
写错在装载时就拒绝:`default` 必须在清单里且声明 `main`、`role` 不能是空数组、`defaultModel` 要给全 `provider` 与
|
|
58
72
|
`model`、`allowPolicies` / `denyPolicies` 里的名字必须是上游那两条 waterfall(`fs/write-intent` /
|
|
59
73
|
`fs/edit-intent`)。改动等 Loader 重挂这一行生效,已运行会话不自动换定义。
|