dsh-capability-panel 1.2.0 → 1.3.0
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.en.md +136 -0
- package/README.i18n.yaml +6 -5
- package/README.ja.md +15 -16
- package/README.ko.md +15 -16
- package/README.md +78 -79
- package/lib/client.js +288 -95
- package/lib/client.js.map +1 -1
- package/lib/index.d.ts +116 -12
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +7157 -195
- package/lib/index.js.map +1 -1
- package/package.json +7 -6
- package/README.zh.md +0 -137
package/README.md
CHANGED
|
@@ -3,135 +3,134 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/dsh-capability-panel) [](https://github.com/pure-craft/dsh-capability-panel/actions/workflows/check.yml) [](LICENSE)
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
English
|
|
6
|
+
[English](README.en.md) | 中文 | [日本語](README.ja.md) | [한국어](README.ko.md)
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
**管理你的 DeepSeek Harness agent 的技能(Skills)、MCP 服务器与工具(Tools):看清此刻真正能触达什么,并随时开关——按会话或按 preset。**
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
一个技能与 MCP 管理面板:每个技能、每个 MCP 服务器、每个系统工具,都有真实的"在不在上下文里"状态,和一个从下一步模型调用就生效的开关。
|
|
11
11
|
|
|
12
|
-

|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
16
|
-
##
|
|
16
|
+
## 速查(agent 快速参考)
|
|
17
17
|
|
|
18
18
|
| | |
|
|
19
19
|
|---|---|
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
|
|
|
23
|
-
|
|
|
24
|
-
|
|
|
25
|
-
|
|
|
20
|
+
| 是什么 | [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)(`dsh`)的 web 插件:一个技能与 MCP 管理面板,列出当前会话的技能(skills)、MCP 服务器(MCP servers)与系统工具(tools)及其真实的在不在上下文状态,并能逐项开关 |
|
|
21
|
+
| 什么时候用 | 回答"为什么 agent 不知道这个技能";看一个加载过的技能是否挺过了剪枝/压缩;只在当前会话里关掉某个工具或 MCP 服务器;为 preset 设置默认能力集合;统计关闭后被拦截的调用次数 |
|
|
22
|
+
| 安装 | `dsh plugin --profile web add dsh-capability-panel`(然后重启 dsh) |
|
|
23
|
+
| 要求 | dsh web profile,dsh ≥ 0.1.2-alpha.4(更早版本可运行,但加载状态降级显示;0.1.7+ 起预设目录打开随宿主 API 演进降级);`@deepseek-ai/*` peer 全部由宿主提供 |
|
|
24
|
+
| 数据 | 设置区段:dsh 0.1.7+ 存在当前 profile 补丁中本插件条目的 Config(按条目 id 寻址),≤ 0.1.6 在 `$DSH_HOME/settings.yaml` 的 `capability-panel` 命名空间;统计在 `$DSH_HOME/capability-panel/stats.jsonl`;loopback API `/api/capability-panel` |
|
|
25
|
+
| 包 | npm 上的 `dsh-capability-panel`;bundle id `capability-panel` |
|
|
26
26
|
|
|
27
|
-
##
|
|
27
|
+
## 为什么
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
技能"装好了"和技能"此刻在模型的上下文里"是两件事——而只有后者能回答"为什么 agent 不知道这个"。两者之间隔着上下文管理:工具结果剪枝器会截断过长的返回,压缩会把整段历史换成一条摘要。你眼看着五分钟前加载过的技能,可能已经部分或全部离开了模型的视野,而它的加载记录还永久躺在日志里,假装一切如常。
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
有时你也只是想让模型在这一个对话里别再碰某个工具——不是卸载插件,不是改配置文件重启,就只是这一个会话、从下一步开始。
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
这个插件把这两件事变成输入框右侧的一个面板。
|
|
34
34
|
|
|
35
|
-
##
|
|
35
|
+
## 功能:Skills、MCP 与工具管理
|
|
36
36
|
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
- **Preset
|
|
40
|
-
- **MCP
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
- **Lightweight.** Zero runtime dependencies, zero-copy reads, no background work — the panel only reads when open.
|
|
48
|
-
- **Follows the UI language.** Panel copy switches between 中文 and English with the host.
|
|
37
|
+
- **真实的加载状态。** 每个技能报告的是模型在下一次请求里实际能看到什么:`已加载`(完整指令在上下文里)/ `已截断`(剪枝器留下首尾、挖掉中间)/ `已挤出`(被压缩整体吞掉)/ `未加载`——外加累计加载次数,被挤出后重新加载的技能读作"已加载 ×2"。
|
|
38
|
+
- **重启不丢的会话级开关。** 关掉当前会话里的一个技能、一个工具或一整个 MCP 服务器:从下一次提示组装生效,重启 dsh 后随该会话恢复,且绝不碰其他会话、绝不动对话历史。
|
|
39
|
+
- **Preset 默认。** 设置 → 能力面板,为每个 agent preset 存一份默认能力集合;之后新建或恢复的会话继承它。全部 / 技能 / MCP / 工具分类切换、可折叠分组、与会话面板同一套筛选和开关——preset 默认只是起点,会话里仍然可以覆盖。
|
|
40
|
+
- **MCP 按服务器分组。** 两个服务器挂着两百个工具也能扫得过来:折叠成每服务器一行,一次开关整组。
|
|
41
|
+
- **离线服务器照常列出。** 宿主配置里声明了、但当前没注册任何工具的 MCP 服务器(比如没启动的本地按需服务)仍会显示一行——如实标注「无已注册工具」,列出已存的关闭项,并附一个「重载」按钮立即重试连接。会话中途才注册上来的工具也会自动继承已存的默认。
|
|
42
|
+
- **按来源分组。** 技能和 MCP 服务器在带标签的分隔线下聚类:preset 自带的条目标注它来自哪个 preset,其余显示真实目录(`~/.dsh/skills`、项目相对路径,过长时中间省略)——"这个技能是从哪来的"一眼即有答案。
|
|
43
|
+
- **一键打开源文件夹。** 悬停分组分隔线会出现文件夹图标,点击即在系统文件管理器中打开该来源目录(macOS、Windows 和 freedesktop Linux)。
|
|
44
|
+
- **拦截计数。** 模型在你关掉某项之后仍然尝试调用,面板会计数——这是"模型在凭记忆行动、开关需要更响亮的告知"的信号。
|
|
45
|
+
- **一键填入命令。** 技能行上的纸飞机按钮把 `/skill-name` 放进输入框,等你自己的回车。
|
|
46
|
+
- **快速筛选。** 按名称、描述或状态文案匹配(搜"已截断"或"truncated"都可以),命中时描述自动展开。
|
|
49
47
|
|
|
50
|
-
##
|
|
48
|
+
## 工程品质
|
|
51
49
|
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
50
|
+
- **测试完备**:580+ 测试,typecheck + 类型感知 lint + 100% 覆盖率门槛(语句/分支/函数/行)在 CI 上对每次 push 和 PR 强制执行。
|
|
51
|
+
- **失败诚实**:任何一环读不到(技能注册表、会话视图、设置存储),面板显示部分数据加明确的降级提示——绝不把"读失败"伪装成"列表为空"。
|
|
52
|
+
- **写入不竞态**:preset 默认和会话开关共享一条串行写队列,两个面板同时写也互不覆盖。
|
|
53
|
+
- **不拖累宿主**:agent 创建监听做了完整的失败隔离——插件的任何异常都不会阻止你的会话启动。
|
|
54
|
+
- **本地优先,零网络**:数据路由只接受 loopback,插件没有外呼、没有遥测、没有第三方服务——设置与统计只留在本机 `$DSH_HOME`(见"数据存放")。
|
|
55
|
+
- **长会话依然秒开**:6 万事件、几十 MB 日志的会话上,面板即点即开:零拷贝 surface 直读,打开时才读一次,没有轮询和后台任务。
|
|
56
|
+
- **历史保留式开关**:开关永不改写对话历史——被关掉的能力在日志里原样保留,"已关闭"告知在每次组装时现算。每个开关都是可后悔的决定,不是不可逆的手术。
|
|
57
|
+
- **只走官方扩展点**:全部能力来自 dsh 的正式接缝(`tools.restrict`、`system-prompt/assemble`、settings 命名空间、UI slots),没有猴子补丁,宿主升级时更不容易碎。
|
|
58
|
+
- **主题免费**:颜色全部走宿主 design token,图标、开关与分段控件直接用宿主组件库——浅色/深色、语言切换都自动跟随,不需要自己维护主题。
|
|
59
|
+
- **国际化友好**:面板文案跟随宿主界面语言(中/英),文档四种语言逐节对齐。
|
|
62
60
|
|
|
63
|
-
##
|
|
61
|
+
## 安装
|
|
64
62
|
|
|
65
|
-
|
|
63
|
+
从插件市场,或直接从仓库安装:
|
|
66
64
|
|
|
67
65
|
```bash
|
|
68
66
|
dsh plugin --profile web add dsh-capability-panel
|
|
69
|
-
#
|
|
67
|
+
# 或
|
|
70
68
|
dsh plugin --profile web add github:pure-craft/dsh-capability-panel
|
|
71
69
|
```
|
|
72
70
|
|
|
73
|
-
|
|
71
|
+
安装后需要重启 dsh 才生效。
|
|
74
72
|
|
|
75
|
-
|
|
73
|
+
要求 DeepSeek Harness 的 web profile(`dsh web`),dsh ≥ 0.1.2-alpha.4(更早版本可运行,加载状态降级显示)。同一构建兼容到最新 0.1.7;仅「按预设名打开其目录」在 0.1.7+ 不可用(新版花名册不再携带路径),其余功能全量保留。所有 `@deepseek-ai/*` 运行时件都由宿主以 peer 依赖形式提供——没有别的要装。
|
|
76
74
|
|
|
77
|
-
|
|
75
|
+
**安装即用,不需要任何配置**——插件没有配置项。重启后你会在两个地方看到它:
|
|
78
76
|
|
|
79
|
-
-
|
|
80
|
-
-
|
|
77
|
+
- 任意对话输入框右侧的**上下文图标**——点开就是会话面板
|
|
78
|
+
- **设置 → 能力面板**——管理每个 preset 的默认能力集合
|
|
81
79
|
|
|
82
|
-
`--profile web`
|
|
80
|
+
`--profile web` 就是 dsh web GUI 使用的配置档;如果你平时用 `dsh web` 启动界面,照抄命令即可。也可以在插件市场里搜索 "capability panel" 一键安装。卸载用 `dsh plugin --profile web remove dsh-capability-panel`;设置和统计会保留在 `$DSH_HOME`(见"数据存放")。
|
|
83
81
|
|
|
84
|
-
##
|
|
82
|
+
## 使用
|
|
85
83
|
|
|
86
|
-
|
|
84
|
+
打开任意对话,点输入框右侧的上下文图标,面板向上展开。
|
|
87
85
|
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
86
|
+
- 顶部三个分区:**技能 N** / **MCP N** / **工具 N**,各带实时计数
|
|
87
|
+
- 每行右侧的开关立即生效——不刷新、不重启
|
|
88
|
+
- 点击行本身展开描述
|
|
89
|
+
- 顶部筛选框匹配名称、描述或状态文案,下方有 `X / Y` 命中计数
|
|
90
|
+
- 分隔线把每个分区按来源归类:preset 自带条目显示 preset 名,其余显示磁盘上的目录——悬停分隔线查看完整路径,点击即在文件管理器中打开该文件夹
|
|
91
|
+
- 被关闭的行变暗,同时模型的系统提示里会被告知"用户关闭了这些能力"
|
|
92
|
+
- 底部固定底栏常驻:左侧「全局配置」直达设置 → 能力面板页,右侧「反馈问题」直达 issue 页
|
|
94
93
|
|
|
95
|
-
`run_code`
|
|
94
|
+
`run_code` 是保留的 Code Mode 传输通道——注册表禁止遮罩它,所以它的开关锁定为开。
|
|
96
95
|
|
|
97
|
-
|
|
96
|
+
两个作用域,同一组开关:**输入框里的面板**绑定你眼前的会话(重启后随它恢复);**设置 → 能力面板**决定之后每个会话从什么状态开始。Preset 默认在会话 agent 创建时读取——不改写 preset 文件,也不改变已经在运行的 agent。
|
|
98
97
|
|
|
99
|
-

|
|
100
99
|
|
|
101
|
-
##
|
|
100
|
+
## 工作原理
|
|
102
101
|
|
|
103
|
-
|
|
102
|
+
**生而轻量。** 插件零运行时依赖——React、UI 组件和全部 `@deepseek-ai/*` 都由宿主提供——读取也是零拷贝:加载状态来自 live session 的内存 surface(模型下一次将看到的内容),从不对持久日志重新折叠,打开面板的代价是一次引用扫描,而不是解析历史。
|
|
104
103
|
|
|
105
|
-
|
|
104
|
+
开关是下一次提示组装上的薄覆盖层——技能用同名影子、工具用注册表遮罩——外加一条组装时现算的"你关了什么"的告知。会话开关以会话自己的 id 持久化在插件设置命名空间里,恢复的会话恰好拿回自己的开关,对话日志永不被写入。
|
|
106
105
|
|
|
107
|
-
##
|
|
106
|
+
## 数据存放
|
|
108
107
|
|
|
109
|
-
- Preset
|
|
110
|
-
-
|
|
108
|
+
- Preset 默认值与会话绑定的开关位置:dsh 0.1.7+ 存在当前 profile 补丁(`~/.dsh/profiles/<profile>/cordis.patch.yml`)中本插件条目的 Config(按条目 id 寻址);dsh ≤ 0.1.6 存在 `$DSH_HOME/settings.yaml` 的 `capability-panel` 命名空间。会话开关在 `sessions.<sessionId>` 下,最多保留 200 个会话、最旧的先淘汰。宿主从不丢弃未加载插件的分节,所以卸载后它们还在,直到你手动删除该段。
|
|
109
|
+
- 拦截统计:`$DSH_HOME/capability-panel/stats.jsonl`,可直接读取:`curl 'http://127.0.0.1:3080/api/capability-panel/stats'`。
|
|
111
110
|
|
|
112
|
-
|
|
111
|
+
数据路由只接受 loopback 请求,判定依据是连接对端地址。
|
|
113
112
|
|
|
114
|
-
##
|
|
113
|
+
## 开发
|
|
115
114
|
|
|
116
115
|
```bash
|
|
117
116
|
pnpm install
|
|
118
|
-
pnpm dev # watch
|
|
119
|
-
pnpm build #
|
|
120
|
-
pnpm test #
|
|
121
|
-
pnpm typecheck #
|
|
122
|
-
pnpm lint # oxlint
|
|
123
|
-
pnpm check # typecheck + lint + test
|
|
124
|
-
pnpm scan:dead-code #
|
|
117
|
+
pnpm dev # watch 构建
|
|
118
|
+
pnpm build # 构建 host 与 client 两半
|
|
119
|
+
pnpm test # 跑测试
|
|
120
|
+
pnpm typecheck # 类型检查
|
|
121
|
+
pnpm lint # oxlint(含 type-aware 规则)
|
|
122
|
+
pnpm check # typecheck + lint + test(100% 覆盖率门槛)
|
|
123
|
+
pnpm scan:dead-code # 死代码巡检报告(仅提示,不做门禁)
|
|
125
124
|
```
|
|
126
125
|
|
|
127
|
-
|
|
126
|
+
改动 host 半需要重启 dsh;client 半在 `dsh web` 与 watch 构建同时运行时热替换。
|
|
128
127
|
|
|
129
|
-
##
|
|
128
|
+
## 支持
|
|
130
129
|
|
|
131
|
-
|
|
130
|
+
如果这个面板帮你省过一次排查,点个 [star](https://github.com/pure-craft/dsh-capability-panel) 让更多人能找到它;也欢迎顺手分享给同样在折腾 dsh 的朋友。Issue 和 PR 都欢迎——详见[贡献指南](CONTRIBUTING.zh.md)。
|
|
132
131
|
|
|
133
|
-
|
|
132
|
+
版本变更记录见 [CHANGELOG.md](CHANGELOG.md)。
|
|
134
133
|
|
|
135
|
-
##
|
|
134
|
+
## 许可证
|
|
136
135
|
|
|
137
136
|
[MIT](LICENSE)
|