@yejiming/dsh-data-agent 0.0.6 → 0.0.10
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 +142 -119
- package/README.md +138 -118
- package/cordis.patch.yml +8 -9
- package/lib/client.js +42423 -524
- package/lib/client.js.map +1 -1
- package/lib/command-LFgLb6el.js +875 -0
- package/lib/command.js +2 -0
- package/lib/connections-WmjuUrDj.js +1608 -0
- package/lib/defaults-DP4RyRh1.js +21 -0
- package/lib/index.js +265 -68
- package/lib/routes.js +94 -170
- package/lib/tool-Dka6RyEp.js +1128 -0
- package/lib/tool.js +1 -426
- package/lib/types/analysis.d.ts +1071 -0
- package/lib/types/client/AnalysisChart.d.ts +26 -0
- package/lib/types/client/AnalysisDashboard.d.ts +30 -0
- package/lib/types/client/DataAgentWorkbench.d.ts +2 -2
- package/lib/types/client/analysis-charts.d.ts +40 -0
- package/lib/types/client/analysis-view-model.d.ts +44 -0
- package/lib/types/client/index.d.ts +3 -4
- package/lib/types/client/locales.d.ts +66 -0
- package/lib/types/client/persistence.d.ts +6 -1
- package/lib/types/client-discovery.d.ts +45 -0
- package/lib/types/clients.d.ts +17 -10
- package/lib/types/command.d.ts +41 -0
- package/lib/types/connections.d.ts +115 -40
- package/lib/types/defaults.d.ts +2 -0
- package/lib/types/index.d.ts +109 -63
- package/lib/types/routes.d.ts +25 -91
- package/lib/types/sql.d.ts +1 -1
- package/lib/types/storage.d.ts +70 -0
- package/lib/types/structured-read.d.ts +50 -0
- package/lib/types/tool.d.ts +29 -20
- package/lib/types/tui-connection-form.d.ts +98 -0
- package/package.json +65 -4
- package/preset/data-agent/agent.cordis.yml +22 -25
- package/preset/data-agent/preset.yml +1 -1
- package/lib/defaults-Bac6QvNt.js +0 -911
- package/lib/query-CmhTFklw.js +0 -86
package/README.md
CHANGED
|
@@ -1,191 +1,211 @@
|
|
|
1
|
-
#
|
|
1
|
+
# DSH Data Agent · 用对话分析数据
|
|
2
2
|
|
|
3
|
-
[English](README.en.md)
|
|
3
|
+
**中文** | [English](README.en.md)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="assets/dsh-data-agent-banner.png" alt="dsh-data-agent HERO图" width="100%">
|
|
7
|
+
</p>
|
|
8
|
+
<p align="center">
|
|
9
|
+
<img src="https://img.shields.io/github/v/release/omdsh-dev/dsh-data-agent?style=flat-square" alt="Version">
|
|
10
|
+
|
|
11
|
+
<a href="https://dshfind.com/zh/plugins/omdsh-dev/dsh-data-agent?ref=badge"><img src="https://dshfind.com/api/badge/omdsh-dev/dsh-data-agent?lang=zh" alt="dshfind 小标"></a>
|
|
12
|
+
|
|
13
|
+
<img src="https://img.shields.io/github/stars/omdsh-dev/dsh-data-agent?style=flat-square" alt="Stars">
|
|
14
|
+
|
|
15
|
+
<img src="https://img.shields.io/npm/v/@yejiming%2Fdsh-data-agent?style=flat-square&label=npm" alt="npm">
|
|
16
|
+
|
|
17
|
+
<img src="https://img.shields.io/badge/license-MIT-blue?style=flat-square" alt="License">
|
|
18
|
+
</p>
|
|
19
|
+
<p align="center">
|
|
20
|
+
<a href="https://dshfind.com/zh/plugins/omdsh-dev/dsh-data-agent?ref=badge"><img src="https://dshfind.com/api/card/omdsh-dev/dsh-data-agent?lang=zh" alt="dshfind 展示卡" width="440"></a>
|
|
21
|
+
</p>
|
|
22
|
+
<p align="center">
|
|
23
|
+
<strong>让DeepSeek Harness连接数据库,用对话完成数据分析与商业洞察</strong><br>
|
|
24
|
+
<em>自然语言查询 · 自动执行SQL · 连续分析 · Web UI · dsh-tui · 只读保护</em>
|
|
25
|
+
</p>
|
|
6
26
|
|
|
7
|
-
|
|
27
|
+
<p align="center">
|
|
8
28
|
|
|
9
|
-
|
|
29
|
+
[项目简介](#项目简介) · [主要功能](#主要功能) · [快速安装](#快速安装) · [Web UI](#在web-ui中使用) · [dsh-tui](#在dsh-tui中使用) · [安全说明](#安全说明)
|
|
10
30
|
|
|
11
|
-
|
|
31
|
+
</p>
|
|
12
32
|
|
|
13
|
-
|
|
33
|
+
## 项目简介
|
|
14
34
|
|
|
15
|
-
|
|
35
|
+
dsh-data-agent是DeepSeek Harness(DSH)的数据分析插件。连接数据库后,直接提出业务问题,DSH会自动查看库表、编写并执行SQL、根据真实结果继续分析,最终给出清晰的数据结论和商业洞察。插件同时支持Web UI与dsh-tui,无需修改DSH源码。
|
|
36
|
+
|
|
37
|
+

|
|
16
38
|
|
|
17
39
|
## 主要功能
|
|
18
40
|
|
|
19
|
-
-
|
|
41
|
+
- **通过对话完成数据分析**:直接用自然语言描述目标,DSH会理解问题、拆解分析步骤、查询真实数据并整理结论。你可以继续追问,分析会沿着当前上下文逐步深入。
|
|
42
|
+
- **自动寻找商业洞察**:不仅返回查询结果,还能帮助比较趋势、定位异常、识别高价值客户或商品,并把数据转化为便于业务决策的说明。
|
|
43
|
+
- **Web 分析报告(render-analysis)**:Web 界面中 Agent 可在普通工具调用里自主生成单图或 Dashboard 式综合分析报告(metric/line/bar/pie/scatter/table 视图),结果行提供内联预览与「查看分析」Modal;是否画图由 Agent 按问题判断,schema 探查、单标量等查询不会被强制生成图表。
|
|
44
|
+
- **完整兼容Web UI与dsh-tui**:喜欢可视化操作时,可以在Web界面连接数据库、浏览库表和查看结果,推荐使用[zhu1090093659/dsh-web-ui](https://github.com/zhu1090093659/dsh-web-ui);习惯键盘工作流时,可以在终端中使用同一“数据模式”,通过`/database`完成连接,然后直接开始对话分析,推荐使用[ccch1mneyyy/dsh-TUI](https://github.com/ccch1mneyyy/dsh-TUI)。两种界面都能使用数据Agent的核心能力。
|
|
45
|
+
- **连接常见业务数据库**:支持MySQL、PostgreSQL、SQLite、Oracle、Hive和Impala,可用于业务系统、分析库、本地数据文件及数仓场景。
|
|
46
|
+
- **DSH自动完成分析闭环**:DSH会根据当前问题查看表结构、编写SQL、执行查询,并结合报错或返回结果继续调整,而不是只生成一段未经验证的SQL。
|
|
47
|
+
- **专注数据任务的数据模式**:会话使用DSH原生`str_replace_editor`处理文件,并保留`sql-query`、`sql-write`、`sql-cmd`;Web额外提供`render-analysis`。`describe_image`、`ssh_*`等宿主或社区插件工具不会进入数据模式。
|
|
48
|
+
- **安全地使用真实数据**:支持只读模式和数据库只读账号;TUI密码会被隐藏,且不会作为表单草稿恢复。是否允许修改数据由你决定。
|
|
49
|
+
|
|
50
|
+
Web UI还提供按需数据库工作台:点击输入框右上角的数据库按钮,即可在同一个Modal中配置连接、浏览库表、查看字段结构或临时运行SQL。开始对话前后都不占用输入框上方或左侧的对话空间。
|
|
20
51
|
|
|
21
|
-
|
|
22
|
-
- **数据库工作台**(内嵌于会话输入框上方):连接配置卡(连接成功后折叠为摘要行,可展开查看);库表浏览(点击「库表」按钮弹出 Modal:单击库展开表列表(可滚动),点击表查看结构);SQL 命令框(编辑并运行 SQL,非 agent 通道,结果等宽展示)。连接配置持久化到浏览器 localStorage,切换页面/重启自动回填并重连。开始对话后工作台自动变为左侧栏,对话记录与输入框在右侧。
|
|
52
|
+

|
|
23
53
|
|
|
24
|
-
|
|
25
|
-
- **数据库 tools**:`sql-query` 执行只读 SQL 并返回结构化 `{ columns, rows, affectedRows, elapsedMs }`;`sql-write` 执行写/管理 SQL(单条自动提交,写语义明确);`sqlcmd` 保留原始终端输出。三者均在数据库客户端(mysql / psql / sqlite3 / sqlplus / beeline / impala-shell)执行;无 shell 层(argv 数组化 + SQL 走 stdin),超时自动终止进程树,输出有界截断,单次调用只允许一条 SQL。
|
|
26
|
-
- **数据模式 预设**:新建会话可选「数据模式」——工具面为 `sql-query`/`sql-write`/`sqlcmd`/`read`/`write`/`edit`,项目其他工具(bash、grep、skill、todo、goal、web、subagent 等)全部缺席即禁用;非数据模式会话不渲染工作台,零影响。
|
|
54
|
+
创建会话时选择“数据模式”,DSH就会以数据分析工作流处理后续问题。
|
|
27
55
|
|
|
28
|
-
|
|
29
|
-
- **标准 agent loop**:data-agent 会话就是普通 DSH 会话,走标准 turn/step、流式输出、工具调度与持久化,零宿主改动。
|
|
56
|
+

|
|
30
57
|
|
|
31
58
|
## 快速安装
|
|
32
59
|
|
|
33
|
-
|
|
34
|
-
`prepare`/`prepack` 脚本)。
|
|
60
|
+
Web UI、DSH Desktop和dsh-tui使用独立的DSH profile。请把插件安装到实际使用的profile;同时使用多个界面时,分别执行对应命令。
|
|
35
61
|
|
|
36
|
-
### 方式一:npm
|
|
62
|
+
### 方式一:npm安装(推荐)
|
|
37
63
|
|
|
38
64
|
```sh
|
|
39
|
-
# 从 npm 安装(首次使用会初始化该 profile)
|
|
40
65
|
dsh plugin --profile web add @yejiming/dsh-data-agent
|
|
66
|
+
dsh plugin --profile desktop add @yejiming/dsh-data-agent
|
|
67
|
+
dsh plugin --profile dsh-tui add @yejiming/dsh-data-agent
|
|
41
68
|
```
|
|
42
69
|
|
|
43
|
-
###
|
|
70
|
+
### 方式二:从GitHub安装
|
|
44
71
|
|
|
45
72
|
```sh
|
|
46
|
-
# 从 GitHub 源码安装(仓库已提交构建产物 lib/,安装时无需构建)
|
|
47
73
|
dsh plugin --profile web add github:omdsh-dev/dsh-data-agent
|
|
74
|
+
dsh plugin --profile desktop add github:omdsh-dev/dsh-data-agent
|
|
75
|
+
dsh plugin --profile dsh-tui add github:omdsh-dev/dsh-data-agent
|
|
48
76
|
```
|
|
49
77
|
|
|
50
|
-
|
|
78
|
+
插件会自动安装“数据模式”预设,并在profile启动时预加载该预设的数据库工具与命令;选择预设时不再动态导入插件子路径,无需本地构建。
|
|
79
|
+
|
|
80
|
+
## 在Web UI中使用
|
|
81
|
+
|
|
82
|
+
启动Web UI:
|
|
51
83
|
|
|
52
84
|
```sh
|
|
53
|
-
dsh --profile web
|
|
54
|
-
ls $DSH_HOME/.agent-presets/data-agent/ # 应有 agent.cordis.yml + preset.yml(由插件自动安装)
|
|
85
|
+
dsh --profile web
|
|
55
86
|
```
|
|
56
87
|
|
|
57
|
-
|
|
88
|
+
然后按下面的步骤操作:
|
|
89
|
+
|
|
90
|
+
1. 新建会话并选择“数据模式”。
|
|
91
|
+
2. 点击输入框右上角的数据库按钮,在工作台Modal中填写连接信息。
|
|
92
|
+
3. 连接成功后,直接在对话框中提出分析问题。
|
|
93
|
+
4. 根据第一轮结果继续追问,让DSH缩小范围、比较维度或总结结论。
|
|
94
|
+
|
|
95
|
+
例如,输入“分析最近30天订单变化,找出销售额下降最明显的地区和商品,并解释主要原因”,DSH会自行查看相关表、生成并执行查询,再根据真实结果完成分析。
|
|
96
|
+
|
|
97
|
+
### Web 分析报告
|
|
98
|
+
|
|
99
|
+
在 Web UI 中,数据模式还提供 render-analysis 工具:Agent 会先用 sql-query 探查并核对事实,再自行判断可视化是否有帮助。判断需要画图时,一次工具调用会生成一份版本化分析报告:
|
|
100
|
+
|
|
101
|
+
- 报告包含 1-6 个只读数据集与 1-8 个视图(metric、line、bar、pie、scatter、table),同一数据集可被多个视图复用,聚合与 Top N 都写在 SQL 中;
|
|
102
|
+
- 简单问题生成单个主图(结果行内联预览),复杂问题生成紧凑摘要 + 「查看分析」按钮;
|
|
103
|
+
- 「查看分析」在大型 Modal 中展示本次报告的全部视图:紧凑指标带、全宽主图、双列辅助图与明细表,浅色/深色主题与窄屏单列自适应;
|
|
104
|
+
- 完整报告快照随会话日志持久化:刷新或历史回放不重新查询数据库,也不产生新的浏览器存储;
|
|
105
|
+
- 仅 Web 提供该工具;dsh-tui 的工具面保持不变,也不会加载图表或浏览器依赖。
|
|
106
|
+
|
|
107
|
+
## 在dsh-tui中使用
|
|
108
|
+
|
|
109
|
+
启动终端界面:
|
|
58
110
|
|
|
59
111
|
```sh
|
|
60
|
-
dsh --profile
|
|
112
|
+
dsh --profile dsh-tui
|
|
61
113
|
```
|
|
62
114
|
|
|
63
|
-
|
|
115
|
+
在空白会话中切换到数据模式,然后连接数据库:
|
|
116
|
+
|
|
117
|
+
```text
|
|
118
|
+
/preset data-agent
|
|
119
|
+
/database connect
|
|
120
|
+
```
|
|
64
121
|
|
|
65
|
-
|
|
122
|
+
连接表单会一次展示所有相关字段。使用Tab或Shift+Tab切换输入项;数据库类型和只读模式按Enter展开选项,使用方向键选择并再次按Enter确认。
|
|
66
123
|
|
|
67
|
-
|
|
124
|
+
连接成功后,回到聊天输入框直接提出业务问题即可。常用的数据库命令还有:
|
|
68
125
|
|
|
69
126
|
```text
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
│ · 连接配置 (6 类型) │ ───────▶ │ · /plugins/data-agent/* 路由 │
|
|
74
|
-
│ · 库表浏览 + SQL 命令框 │ │ · 连接存储服务 dataAgentConnections │
|
|
75
|
-
│ · hero 堆叠 / active 左栏 │ │ · 预设自安装 → $DSH_HOME/.agent-presets│
|
|
76
|
-
└─────────────────────────────┘ └──────────────┬───────────────────────┘
|
|
77
|
-
│ 同一进程
|
|
78
|
-
data-agent 会话 (agent loop 全复用) ▼
|
|
79
|
-
┌──────────────────────────────────────────────────────────────────────────┐
|
|
80
|
-
│ agent.cordis.yml (预设层,仅 3 行) │
|
|
81
|
-
│ · persona → 数据工程师系统提示词 │
|
|
82
|
-
│ · dsh-tool-fs → read / write / edit(项目自带) │
|
|
83
|
-
│ · dsh-data-agent/tool → sql-query / sql-write / sqlcmd(本包工具半体) │
|
|
84
|
-
└──────────────────────────────────────────────────────────────────────────┘
|
|
127
|
+
/database status 查看当前连接
|
|
128
|
+
/database test 测试当前连接
|
|
129
|
+
/database disconnect 断开当前连接
|
|
85
130
|
```
|
|
86
131
|
|
|
87
|
-
|
|
132
|
+
同一会话再次打开连接表单时,会恢复最近填写的数据库类型、地址、端口、用户、数据库和只读模式。密码始终隐藏且不会恢复。
|
|
133
|
+
|
|
134
|
+

|
|
135
|
+
|
|
136
|
+
## 推荐的提问方式
|
|
137
|
+
|
|
138
|
+
为了获得更有价值的分析,可以在问题中补充业务目标、时间范围和关注维度。例如:
|
|
88
139
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
| 工具半体 | `lib/tool.js`(exports 子路径 `./tool`) | 仅 data-agent 预设装载(`tool-sqlcmd` 行) |
|
|
94
|
-
| 浏览器半体 | `lib/client.js`(package.json `dsh.client` 声明) | 浏览器:输入条带内嵌数据库工作台(`conversation.input.dock`) |
|
|
140
|
+
```text
|
|
141
|
+
分析2026年第二季度各地区的销售额和毛利率变化,找出表现异常的地区,
|
|
142
|
+
继续拆解到品类和核心客户,并给出三条可执行的业务建议。
|
|
143
|
+
```
|
|
95
144
|
|
|
96
|
-
|
|
145
|
+
你也可以让DSH保存分析过程或SQL,方便复查和复用:
|
|
97
146
|
|
|
98
|
-
|
|
147
|
+
```text
|
|
148
|
+
完成会员复购分析,把最终SQL保存到analysis/repurchase.sql,
|
|
149
|
+
并用一段适合周报的文字总结主要发现。
|
|
150
|
+
```
|
|
99
151
|
|
|
100
|
-
|
|
152
|
+
## 使用前准备
|
|
101
153
|
|
|
102
|
-
|
|
103
|
-
|---|---|
|
|
104
|
-
| `presetId` | 自安装的预设目录名(默认 `data-agent`) |
|
|
105
|
-
| `installPreset` | 是否在启动时自安装预设(默认 true;已存在则跳过,保留用户编辑) |
|
|
106
|
-
| `connectTimeoutMs` | /connect 连通性检查的端到端超时(默认 10000 毫秒) |
|
|
107
|
-
| `introspectMaxTables` | 表清单上限(默认 500) |
|
|
108
|
-
| `queryTimeoutMs` | 数据库 tools 单次查询超时(默认 30000 毫秒) |
|
|
109
|
-
| `maxResultChars` | 数据库 tools 捕获输出上限(stdout/stderr 各自,默认 20000 字符) |
|
|
110
|
-
| `readonly` | 只读护栏(默认 false):true 时数据库 tools 与 `/query` 仅放行读语句(SELECT/SHOW/DESCRIBE/EXPLAIN/PRAGMA 等),写语句直接拒绝 |
|
|
111
|
-
| `clients` | 各数据库类型 CLI 客户端覆盖:`{ command?, args? }`,键为 `mysql` / `postgres` / `sqlite` / `oracle` / `hive` / `impala`(内置默认 mysql/psql/sqlite3/sqlplus/beeline/impala-shell) |
|
|
112
|
-
| `connections` | 配置预置连接,键为 sessionId(`'*'` = 通配符默认,任何无自有连接的会话回落它;headless/keyless 运行与部署固定默认库场景)。**不含 password 字段**——密码只允许经 /connect 路由进入内存;可选 `readonly` 字段按连接锁定只读 |
|
|
154
|
+
DSH运行查询时需要本机能够访问目标数据库,并安装相应的数据库客户端:
|
|
113
155
|
|
|
114
|
-
|
|
156
|
+
- SQLite通常已随macOS或Linux提供。
|
|
157
|
+
- MySQL需要`mysql`客户端。
|
|
158
|
+
- PostgreSQL需要`psql`客户端。
|
|
159
|
+
- Oracle、Hive和Impala需要各自的命令行客户端。
|
|
115
160
|
|
|
116
|
-
|
|
161
|
+
插件会先使用当前profile进程的PATH;找不到时,会继续检查客户端HOME环境变量以及Windows、macOS、Linux的常见安装位置,包括Homebrew、MacPorts、Linuxbrew、Snap、Nix、WinGet Links、Scoop、Chocolatey和Program Files下的版本目录。自动发现使用的补充PATH也会传给实际客户端进程,因此从Finder启动的DSH Desktop通常无需再为Homebrew客户端手工配置路径。
|
|
162
|
+
|
|
163
|
+
如果客户端安装在公司工具链或其他自定义目录,可在当前profile的`data-agent`配置中补充搜索目录;需要锁定具体版本时则直接填写绝对命令路径。当前profile的PATH始终优先,`searchPaths`在系统常见目录之前:
|
|
117
164
|
|
|
118
165
|
```yaml
|
|
119
|
-
# cordis.patch.yml 或 profile 层覆盖示例
|
|
120
166
|
- id: data-agent
|
|
121
|
-
name: '@yejiming/dsh-data-agent'
|
|
122
167
|
config:
|
|
123
168
|
clients:
|
|
124
169
|
mysql:
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
'*':
|
|
129
|
-
type: sqlite
|
|
130
|
-
database: /tmp/analytics.db
|
|
170
|
+
searchPaths:
|
|
171
|
+
- /opt/company/mysql/bin
|
|
172
|
+
# command: /opt/company/mysql/bin/mysql
|
|
131
173
|
```
|
|
132
174
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
**重要**:`dsh run`(headless bundle)不装载 agent-presets roster,也不会为会话挂载预设——预设机制属于 web 面(apiproxy 在会话创建时 mount)。因此 **headless 会话无法使用 sql-query/sql-write/sqlcmd/read/write/edit 工具面**,数据库 tools 的验证与使用都在 web 面完成;headless 中如需数据库能力,只能靠宿主 base 自带工具(如 bash 直接调用客户端)。
|
|
136
|
-
|
|
137
|
-
(注:插入 roster 行 + 禁用 base 工具行的 patch 组合无法在 headless 中复现预设工具面——agent 会得到一个零工具的空组合,模型无工具可调。如需 headless 冒烟,仅验证「连接配置预置 + 宿主工具可用」即可。)
|
|
138
|
-
|
|
139
|
-
`data-agent-routes` 行在无 webserver 的 profile 中经嵌套 inject 自动跳过,无需处理。
|
|
175
|
+
Windows路径可以写成`C:\Program Files\MySQL\MySQL Server 9.0\bin`。插件不会下载数据库客户端、执行登录shell或扫描整块磁盘;位于非常规目录且未进入PATH时,仍需使用`searchPaths`或`command`。
|
|
140
176
|
|
|
141
|
-
|
|
177
|
+
建议先准备一个只读数据库账号,让数据Agent在不修改业务数据的前提下完成探索和分析。
|
|
142
178
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
| 方法/路径 | 说明 |
|
|
146
|
-
|---|---|
|
|
147
|
-
| `POST /connect` | body `{ sessionId, type, host?, port?, user?, database, password?, readonly? }`;校验 → 连通性验证(列出所有表)→ 成功才保存连接,返回 `{ ok, tables }`,失败返回 `{ ok: false, error }` 且不保存 |
|
|
148
|
-
| `POST /disconnect` | body `{ sessionId }`;清除该会话连接 |
|
|
149
|
-
| `GET /status?sessionId=` | `{ connected, summary? }`;summary 为脱敏连接概要(无密码,含 `readonly` 当连接显式设定时)+ 表清单 |
|
|
150
|
-
| `GET /schemas?sessionId=` | `{ ok, schemas: string[] }`;库/数据库列表(sqlite 为 `['main']`) |
|
|
151
|
-
| `GET /tables?sessionId=&schema=` | `{ ok, tables: string[] }`;某库的表列表(sqlite 忽略 schema 参数) |
|
|
152
|
-
| `GET /describe?sessionId=&schema=&table=` | `{ ok, columns: [{ name, type, nullable? }] }`;表结构(sqlite 忽略 schema) |
|
|
153
|
-
| `POST /query` | body `{ sessionId, sql }`;运行一条 SQL(工作台命令框,非 agent 通道),返回 `{ ok, result: { exitCode, stdout, stderr, truncated } }`;`sql` 长度上限 `maxQueryChars`;单次只允许一条语句;readonly 开启时拒绝写语句 |
|
|
154
|
-
|
|
155
|
-
schema/table 标识符仅允许 `[A-Za-z0-9_$]`(服务端白名单校验并转义引用,拒绝注入形字符)。
|
|
179
|
+
如果出现`failed to mount`或提示找不到`@yejiming/dsh-data-agent`,通常是当前profile还没有安装插件,或仍在使用旧版预设。请为Web UI、DSH Desktop或dsh-tui执行对应的安装命令,然后完全退出并重新启动DSH。未修改过的旧版预设会自动迁移;手工编辑过的预设需要删除其中指向`@yejiming/dsh-data-agent/tool`和`@yejiming/dsh-data-agent/command`的两行配置块。
|
|
156
180
|
|
|
157
181
|
## 安全说明
|
|
158
182
|
|
|
159
|
-
-
|
|
160
|
-
-
|
|
161
|
-
-
|
|
162
|
-
-
|
|
163
|
-
-
|
|
183
|
+
- 推荐使用数据库只读账号,并在连接表单中开启只读模式。
|
|
184
|
+
- Web UI和dsh-tui中的临时密码只用于当前连接;TUI只显示`*`,重新打开表单时不会恢复密码。
|
|
185
|
+
- 需要跨进程恢复认证时,可以使用DSH credential reference,避免在命令参数中输入明文密码。
|
|
186
|
+
- 未开启只读模式时,数据Agent可以按你的要求执行更新或管理语句。连接生产数据库前,请先确认账号权限和数据备份策略。
|
|
187
|
+
- 不同会话的数据库连接相互隔离,便于分别处理不同项目、客户或分析环境。
|
|
164
188
|
|
|
165
189
|
## 卸载与回滚
|
|
166
190
|
|
|
167
191
|
```sh
|
|
168
|
-
dsh plugin --profile web remove @yejiming/dsh-data-agent
|
|
169
|
-
|
|
192
|
+
dsh plugin --profile web remove @yejiming/dsh-data-agent
|
|
193
|
+
dsh plugin --profile desktop remove @yejiming/dsh-data-agent
|
|
194
|
+
dsh plugin --profile dsh-tui remove @yejiming/dsh-data-agent
|
|
195
|
+
rm -rf $DSH_HOME/.agent-presets/data-agent
|
|
170
196
|
```
|
|
171
197
|
|
|
172
|
-
|
|
198
|
+
卸载插件不会主动删除已经保存的非敏感连接信息。若需要彻底清理,请先备份,再删除DSH中对应的数据Agent存储记录。
|
|
173
199
|
|
|
174
200
|
## 本地开发
|
|
175
201
|
|
|
176
|
-
构建与测试:
|
|
177
|
-
|
|
178
202
|
```sh
|
|
179
|
-
pnpm
|
|
180
|
-
pnpm
|
|
203
|
+
pnpm install
|
|
204
|
+
pnpm build
|
|
205
|
+
pnpm test
|
|
181
206
|
```
|
|
182
207
|
|
|
183
|
-
`lib
|
|
184
|
-
构建产物时直接 `pnpm install` 即可:`@deepseek-ai/*` 等依赖均已发布到 npm,
|
|
185
|
-
无需再从本地 DSH checkout 复制/链接 node_modules。`pnpm-workspace.yaml` 采用
|
|
186
|
-
dsh 同款约定(`nodeLinker: hoisted`);pnpm 11 的供应链策略会拦截「发布不久」
|
|
187
|
-
的包与依赖构建脚本,仓库已预置 `minimumReleaseAgeExclude`(rc.6 全家桶)与
|
|
188
|
-
`allowBuilds: esbuild`。
|
|
208
|
+
`lib/`已提交到仓库,因此通过npm或GitHub安装时无需自行构建。
|
|
189
209
|
|
|
190
210
|
## 许可
|
|
191
211
|
|
|
@@ -193,6 +213,6 @@ MIT
|
|
|
193
213
|
|
|
194
214
|
## 友情链接
|
|
195
215
|
|
|
196
|
-
- [dshfind.com](https://dshfind.com):DeepSeek Harness
|
|
197
|
-
- [dsh-web-ui](https://github.com/dsh-external/dsh-web-ui):DeepSeek Harness
|
|
198
|
-
- [dsh-cc-tui](https://github.com/dsh-external/dsh-cc-tui):Claude Code
|
|
216
|
+
- [dshfind.com](https://dshfind.com):DeepSeek Harness中文学习与分享社区
|
|
217
|
+
- [dsh-web-ui](https://github.com/dsh-external/dsh-web-ui):DeepSeek Harness Web UI插件与皮肤集合
|
|
218
|
+
- [dsh-cc-tui](https://github.com/dsh-external/dsh-cc-tui):Claude Code风格的全屏终端界面
|
package/cordis.patch.yml
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
# The dsh-data-agent bundle patch: activates the plugin as a profile layer.
|
|
2
2
|
#
|
|
3
|
-
# Two host rows: `data-agent` provides the connection store,
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
# activates where the webserver exists (web profiles).
|
|
7
|
-
# (lib/client.js) ships in the same package and loads under
|
|
8
|
-
# through the `dsh.client` declaration in package.json
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
# (duplicate ids fail the load).
|
|
3
|
+
# Two host rows: `data-agent` provides the connection store, installs the
|
|
4
|
+
# selectable agent preset, and statically preloads that preset's scoped tools
|
|
5
|
+
# and command through the profile bundle path; `data-agent-routes` mounts the
|
|
6
|
+
# HTTP routes and only activates where the webserver exists (web profiles).
|
|
7
|
+
# The browser half (lib/client.js) ships in the same package and loads under
|
|
8
|
+
# the data-agent id through the `dsh.client` declaration in package.json.
|
|
9
|
+
# The preset composition deliberately contains no dynamic imports of this
|
|
10
|
+
# package, which keeps DSH Desktop away from its unpacked-ASAR resolver bug.
|
|
12
11
|
- insert:
|
|
13
12
|
- id: data-agent
|
|
14
13
|
name: '@yejiming/dsh-data-agent'
|