@saichao2026/dsh-clickhouse 0.2.0 → 0.2.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.
- package/README.md +11 -8
- package/lib/config.d.ts +12 -6
- package/lib/config.js +14 -8
- package/lib/config.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +5 -9
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
- package/src/config.ts +15 -9
- package/src/index.ts +4 -9
package/README.md
CHANGED
|
@@ -12,12 +12,15 @@ dsh plugin --profile <profile> add @saichao2026/dsh-clickhouse
|
|
|
12
12
|
|
|
13
13
|
配置、工具清单、只读护栏的范围、以及本机验证记录见下文。
|
|
14
14
|
|
|
15
|
-
##
|
|
15
|
+
## 两步上手(新用户)
|
|
16
16
|
|
|
17
17
|
1. **装**:DSH 里 **设置 → 插件**(插件市场)搜 `clickhouse` → 选 `dsh-clickhouse` → 安装。
|
|
18
18
|
命令行等价写法:`dsh plugin --profile <profile> add @saichao2026/dsh-clickhouse`
|
|
19
19
|
2. **启用 + 重启**:装完在市场里点「启用」,然后重启 DSH。
|
|
20
|
-
|
|
20
|
+
|
|
21
|
+
**连接已经内置,装完不用配任何东西。** 默认值是部署环境:`http://10.0.0.34:8123`、用户 `default`、默认库 `default`、只读。客户不会配环境,所以这组默认值直接写死在代码里(`src/config.ts` 的 `DEFAULT_CONFIG`),装完就能查。
|
|
22
|
+
|
|
23
|
+
只有要连**别的**服务器时才需要配置(写法详见「配置」一节):
|
|
21
24
|
|
|
22
25
|
```yaml
|
|
23
26
|
- id: clickhouse
|
|
@@ -25,11 +28,11 @@ dsh plugin --profile <profile> add @saichao2026/dsh-clickhouse
|
|
|
25
28
|
config: { url: http://<主机>:8123, user: default, password: '' }
|
|
26
29
|
```
|
|
27
30
|
|
|
28
|
-
|
|
31
|
+
连不上时得到的是很明确的报错,而不是一句 `fetch failed`:
|
|
29
32
|
|
|
30
33
|
```
|
|
31
|
-
无法连接 ClickHouse(http://
|
|
32
|
-
|
|
34
|
+
无法连接 ClickHouse(http://10.0.0.34:8123):连接被拒绝。请确认服务已启动、端口是 HTTP 接口(默认 8123)而不是原生 TCP 端口(9000)。
|
|
35
|
+
插件已内置连接 http://10.0.0.34:8123(用户 default)。确认服务在跑还是连不上时,说明目标服务器不是它,请在 profile 的用户补丁层改:
|
|
33
36
|
~/.dsh/profiles/<profile>/cordis.patch.yml
|
|
34
37
|
- id: clickhouse
|
|
35
38
|
name: @saichao2026/dsh-clickhouse
|
|
@@ -79,13 +82,13 @@ Copy-Item package.json, cordis.patch.yml, README.md, lib -Recurse -Force "$profi
|
|
|
79
82
|
|
|
80
83
|
## 配置
|
|
81
84
|
|
|
82
|
-
|
|
85
|
+
连接信息**默认已经内置**(见「两步上手」),这一节只讲**要换服务器时**怎么覆盖。覆盖写在 **profile 的用户补丁层**(`~/.dsh/profiles/<name>/cordis.patch.yml`),按 id 替换 bundle 里那一行:
|
|
83
86
|
|
|
84
87
|
```yaml
|
|
85
88
|
- id: clickhouse
|
|
86
89
|
name: @saichao2026/dsh-clickhouse
|
|
87
90
|
config:
|
|
88
|
-
url: http
|
|
91
|
+
url: http://<主机>:8123
|
|
89
92
|
user: default
|
|
90
93
|
password: ''
|
|
91
94
|
database: default
|
|
@@ -98,7 +101,7 @@ Copy-Item package.json, cordis.patch.yml, README.md, lib -Recurse -Force "$profi
|
|
|
98
101
|
|
|
99
102
|
| 配置项 | 默认值 | 说明 |
|
|
100
103
|
| --- | --- | --- |
|
|
101
|
-
| `url` | `http://
|
|
104
|
+
| `url` | `http://10.0.0.34:8123` | ClickHouse **HTTP** 接口地址,内置默认值就是部署环境(装完免配)。也接受 JDBC 写法:`jdbc:clickhouse://host:8123/db?x=y`(自动转成 `http://host:8123`,路径段当作默认库)。 |
|
|
102
105
|
| `user` / `password` | `default` / 空 | 也兼容 `CLICKHOUSE_USER` / `CLICKHOUSE_PASSWORD` 这类环境变量命名,方便从 MCP 配置直接搬。 |
|
|
103
106
|
| `database` | `default` | 未指定库时的默认库。 |
|
|
104
107
|
| `readonly` | `true` | 为 true 时给每个查询加服务端 `readonly=1`。老版本(如 21.12)上 `numbers()` 等表函数在只读模式下会被拒;确需时设为 `false`(客户端护栏仍然生效)。 |
|
package/lib/config.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
/** 生效的插件配置。 */
|
|
10
10
|
export interface ClickHousePluginConfig {
|
|
11
|
-
/** ClickHouse HTTP
|
|
11
|
+
/** ClickHouse HTTP 接口地址,内置默认 http://10.0.0.34:8123 。 */
|
|
12
12
|
url: string;
|
|
13
13
|
user: string;
|
|
14
14
|
password: string;
|
|
@@ -44,7 +44,13 @@ export interface ClickHousePluginConfig {
|
|
|
44
44
|
/** 配置规范化期间发现的问题(非致命)。 */
|
|
45
45
|
warnings: string[];
|
|
46
46
|
}
|
|
47
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* 默认配置:默认连部署方的 ClickHouse、默认只读、默认 200 行。
|
|
49
|
+
*
|
|
50
|
+
* `url` 直接写死部署环境,客户装完不做任何配置即可用(客户不会配环境);
|
|
51
|
+
* 需要指向别的服务器时,用 `url`(或 `host`/`port`,或
|
|
52
|
+
* `CLICKHOUSE_HOST`/`CLICKHOUSE_PORT`)覆盖即可。
|
|
53
|
+
*/
|
|
48
54
|
export declare const DEFAULT_CONFIG: Omit<ClickHousePluginConfig, "warnings">;
|
|
49
55
|
/** 单次查询的取消/超时上限,避免模型写出一条跑不完的查询把界面卡死。 */
|
|
50
56
|
export declare const HARD_MAX_TIMEOUT_SECONDS = 600;
|
|
@@ -71,11 +77,11 @@ export declare function describeConnection(config: ClickHousePluginConfig): stri
|
|
|
71
77
|
/** 连接信息里不能泄露密码,日志展示用。 */
|
|
72
78
|
export declare function describeConnectionForLog(config: ClickHousePluginConfig): string;
|
|
73
79
|
/**
|
|
74
|
-
*
|
|
80
|
+
* 是否还在用「内置的默认连接」(即没有任何配置覆盖)。
|
|
75
81
|
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
82
|
+
* 内置默认就是部署方的服务器,正常情况下无需任何配置;一旦连不上,说明目标环境
|
|
83
|
+
* 与内置值不同,必须顺带告诉用户去哪儿改,否则只会看到一句连接失败。
|
|
78
84
|
*/
|
|
79
85
|
export declare function isDefaultConnection(config: ClickHousePluginConfig): boolean;
|
|
80
|
-
/**
|
|
86
|
+
/** 「目标服务器不是内置默认」的指引:错误信息与系统提示共用同一段文字,避免两处走样。 */
|
|
81
87
|
export declare function configurationHint(): string;
|
package/lib/config.js
CHANGED
|
@@ -6,9 +6,15 @@
|
|
|
6
6
|
* 抛错可能连带影响宿主启动。非法值会退回默认值,并把原因记进 `warnings`,由 `apply()`
|
|
7
7
|
* 写进宿主日志。
|
|
8
8
|
*/
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* 默认配置:默认连部署方的 ClickHouse、默认只读、默认 200 行。
|
|
11
|
+
*
|
|
12
|
+
* `url` 直接写死部署环境,客户装完不做任何配置即可用(客户不会配环境);
|
|
13
|
+
* 需要指向别的服务器时,用 `url`(或 `host`/`port`,或
|
|
14
|
+
* `CLICKHOUSE_HOST`/`CLICKHOUSE_PORT`)覆盖即可。
|
|
15
|
+
*/
|
|
10
16
|
export const DEFAULT_CONFIG = {
|
|
11
|
-
url: "http://
|
|
17
|
+
url: "http://10.0.0.34:8123",
|
|
12
18
|
user: "default",
|
|
13
19
|
password: "",
|
|
14
20
|
database: "default",
|
|
@@ -193,25 +199,25 @@ export function describeConnectionForLog(config) {
|
|
|
193
199
|
return describeConnection(config).split(config.password).join("***");
|
|
194
200
|
}
|
|
195
201
|
/**
|
|
196
|
-
*
|
|
202
|
+
* 是否还在用「内置的默认连接」(即没有任何配置覆盖)。
|
|
197
203
|
*
|
|
198
|
-
*
|
|
199
|
-
*
|
|
204
|
+
* 内置默认就是部署方的服务器,正常情况下无需任何配置;一旦连不上,说明目标环境
|
|
205
|
+
* 与内置值不同,必须顺带告诉用户去哪儿改,否则只会看到一句连接失败。
|
|
200
206
|
*/
|
|
201
207
|
export function isDefaultConnection(config) {
|
|
202
208
|
return (config.url === DEFAULT_CONFIG.url &&
|
|
203
209
|
config.user === DEFAULT_CONFIG.user &&
|
|
204
210
|
config.password === DEFAULT_CONFIG.password);
|
|
205
211
|
}
|
|
206
|
-
/**
|
|
212
|
+
/** 「目标服务器不是内置默认」的指引:错误信息与系统提示共用同一段文字,避免两处走样。 */
|
|
207
213
|
export function configurationHint() {
|
|
208
214
|
return [
|
|
209
|
-
|
|
215
|
+
`插件已内置连接 ${DEFAULT_CONFIG.url}(用户 ${DEFAULT_CONFIG.user})。确认服务在跑还是连不上时,说明目标服务器不是它,请在 profile 的用户补丁层改:`,
|
|
210
216
|
" ~/.dsh/profiles/<profile>/cordis.patch.yml",
|
|
211
217
|
" - id: clickhouse",
|
|
212
218
|
" name: @saichao2026/dsh-clickhouse",
|
|
213
219
|
" config: { url: http://<主机>:8123, user: default, password: '' }",
|
|
214
|
-
"
|
|
220
|
+
"也可以只改 host / port(或 CLICKHOUSE_HOST / CLICKHOUSE_PORT);",
|
|
215
221
|
"详见插件 README 的「配置」一节。改完需要重启 DSH。",
|
|
216
222
|
].join("\n");
|
|
217
223
|
}
|
package/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAyCH
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
* **不导入任何 `@deepseek-ai/*` 运行时模块**,因此装进 profile 后无需任何依赖即可加载。
|
|
6
6
|
* 配置由 `apply()` 自行规范化;`apply()` 不会抛错,避免影响宿主启动。
|
|
7
7
|
*
|
|
8
|
-
* 用法(profile 的 `cordis.patch.yml
|
|
8
|
+
* 用法(profile 的 `cordis.patch.yml`;不写 config 就用内置默认连接):
|
|
9
9
|
* ```yaml
|
|
10
10
|
* - id: clickhouse
|
|
11
11
|
* name: @saichao2026/dsh-clickhouse
|
|
12
12
|
* config:
|
|
13
|
-
* url: http://
|
|
13
|
+
* url: http://10.0.0.34:8123
|
|
14
14
|
* user: default
|
|
15
15
|
* password: ''
|
|
16
16
|
* database: default
|
package/lib/index.js
CHANGED
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
* **不导入任何 `@deepseek-ai/*` 运行时模块**,因此装进 profile 后无需任何依赖即可加载。
|
|
6
6
|
* 配置由 `apply()` 自行规范化;`apply()` 不会抛错,避免影响宿主启动。
|
|
7
7
|
*
|
|
8
|
-
* 用法(profile 的 `cordis.patch.yml
|
|
8
|
+
* 用法(profile 的 `cordis.patch.yml`;不写 config 就用内置默认连接):
|
|
9
9
|
* ```yaml
|
|
10
10
|
* - id: clickhouse
|
|
11
11
|
* name: @saichao2026/dsh-clickhouse
|
|
12
12
|
* config:
|
|
13
|
-
* url: http://
|
|
13
|
+
* url: http://10.0.0.34:8123
|
|
14
14
|
* user: default
|
|
15
15
|
* password: ''
|
|
16
16
|
* database: default
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* @module dsh-clickhouse
|
|
20
20
|
*/
|
|
21
21
|
import { ClickHouseGateway } from "./clickhouse.js";
|
|
22
|
-
import { describeConnection,
|
|
22
|
+
import { describeConnection, resolveConfig, } from "./config.js";
|
|
23
23
|
import { createClickHouseTools } from "./tools.js";
|
|
24
24
|
/** 插件名(profile 补丁层里的 `name` 字段是本包的包名 @saichao2026/dsh-clickhouse)。 */
|
|
25
25
|
export const name = "clickhouse";
|
|
@@ -30,12 +30,8 @@ function guidance(config) {
|
|
|
30
30
|
return [
|
|
31
31
|
"## ClickHouse 数据问答(插件 dsh-clickhouse)",
|
|
32
32
|
`连接:${describeConnection(config)}。`,
|
|
33
|
-
//
|
|
34
|
-
|
|
35
|
-
? [
|
|
36
|
-
"⚠️ 上面这个是默认连接,说明插件还没配置。查询报连接失败时不要反复重试:直接告诉用户去 profile 的用户补丁层(`~/.dsh/profiles/<profile>/cordis.patch.yml`)加一段 `- id: clickhouse` / `name: @saichao2026/dsh-clickhouse` / `config: { url: http://<主机>:8123, user: default, password: '' }`,改完重启 DSH。",
|
|
37
|
-
]
|
|
38
|
-
: []),
|
|
33
|
+
// 连接已内置,正常情况下客户零配置即可用;连不上时提醒模型别反复重试。
|
|
34
|
+
"上面这个连接是插件内置的默认值,装完即可用。查询报连接失败时不要反复重试:确认服务确实在跑之后,直接告诉用户怎么改连接(profile 用户补丁层 `~/.dsh/profiles/<profile>/cordis.patch.yml` 里 `- id: clickhouse` 那行的 `config`,或插件 README 的「配置」一节),改完重启 DSH。",
|
|
39
35
|
"",
|
|
40
36
|
"怎么查:",
|
|
41
37
|
"- 用户给什么参数就查什么:公司名就按名称字段查,专利名/商标名就按各自的名称字段查。不要替用户把参数改写成别的标识(例如先查信用代码、再拿它去查另一张表)。",
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,kBAAkB,EAClB,aAAa,GAEd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,sEAAsE;AACtE,MAAM,CAAC,MAAM,IAAI,GAAG,YAAY,CAAC;AAEjC,iCAAiC;AACjC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;AAEhC,uCAAuC;AACvC,SAAS,QAAQ,CAAC,MAA8B;IAC9C,OAAO;QACL,uCAAuC;QACvC,MAAM,kBAAkB,CAAC,MAAM,CAAC,GAAG;QACnC,qCAAqC;QACrC,wLAAwL;QACxL,EAAE;QACF,MAAM;QACN,iFAAiF;QACjF,kFAAkF;QAClF,gGAAgG;QAChG,wIAAwI;QACxI,6DAA6D;QAC7D,EAAE;QACF,OAAO;QACP,qGAAqG;QACrG,yCAAyC;QACzC,YAAY,MAAM,CAAC,OAAO,yCAAyC;QACnE,yIAAyI;QACzI,kCAAkC;QAClC,oGAAoG;KACrG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,GAAsB,EAAE,SAAkB;IAC9D,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACxC,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ;QAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAEzF,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACrD,KAAK,MAAM,IAAI,IAAI,KAAK;QAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEnD,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAChB,wBAAwB,KAAK,CAAC,MAAM,UAAU,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAC1H,CAAC;IAEF,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE;YAC/C,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzG,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@saichao2026/dsh-clickhouse",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "ClickHouse query tools for DSH / DeepSeek Harness: schema exploration plus guarded read-only SQL. 带只读护栏的 ClickHouse 数据问答插件,零运行时依赖。",
|
|
5
5
|
"author": "赛超",
|
|
6
6
|
"repository": {
|
package/src/config.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
/** 生效的插件配置。 */
|
|
11
11
|
export interface ClickHousePluginConfig {
|
|
12
|
-
/** ClickHouse HTTP
|
|
12
|
+
/** ClickHouse HTTP 接口地址,内置默认 http://10.0.0.34:8123 。 */
|
|
13
13
|
url: string;
|
|
14
14
|
user: string;
|
|
15
15
|
password: string;
|
|
@@ -46,9 +46,15 @@ export interface ClickHousePluginConfig {
|
|
|
46
46
|
warnings: string[];
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* 默认配置:默认连部署方的 ClickHouse、默认只读、默认 200 行。
|
|
51
|
+
*
|
|
52
|
+
* `url` 直接写死部署环境,客户装完不做任何配置即可用(客户不会配环境);
|
|
53
|
+
* 需要指向别的服务器时,用 `url`(或 `host`/`port`,或
|
|
54
|
+
* `CLICKHOUSE_HOST`/`CLICKHOUSE_PORT`)覆盖即可。
|
|
55
|
+
*/
|
|
50
56
|
export const DEFAULT_CONFIG: Omit<ClickHousePluginConfig, "warnings"> = {
|
|
51
|
-
url: "http://
|
|
57
|
+
url: "http://10.0.0.34:8123",
|
|
52
58
|
user: "default",
|
|
53
59
|
password: "",
|
|
54
60
|
database: "default",
|
|
@@ -268,10 +274,10 @@ export function describeConnectionForLog(config: ClickHousePluginConfig): string
|
|
|
268
274
|
}
|
|
269
275
|
|
|
270
276
|
/**
|
|
271
|
-
*
|
|
277
|
+
* 是否还在用「内置的默认连接」(即没有任何配置覆盖)。
|
|
272
278
|
*
|
|
273
|
-
*
|
|
274
|
-
*
|
|
279
|
+
* 内置默认就是部署方的服务器,正常情况下无需任何配置;一旦连不上,说明目标环境
|
|
280
|
+
* 与内置值不同,必须顺带告诉用户去哪儿改,否则只会看到一句连接失败。
|
|
275
281
|
*/
|
|
276
282
|
export function isDefaultConnection(config: ClickHousePluginConfig): boolean {
|
|
277
283
|
return (
|
|
@@ -281,15 +287,15 @@ export function isDefaultConnection(config: ClickHousePluginConfig): boolean {
|
|
|
281
287
|
);
|
|
282
288
|
}
|
|
283
289
|
|
|
284
|
-
/**
|
|
290
|
+
/** 「目标服务器不是内置默认」的指引:错误信息与系统提示共用同一段文字,避免两处走样。 */
|
|
285
291
|
export function configurationHint(): string {
|
|
286
292
|
return [
|
|
287
|
-
|
|
293
|
+
`插件已内置连接 ${DEFAULT_CONFIG.url}(用户 ${DEFAULT_CONFIG.user})。确认服务在跑还是连不上时,说明目标服务器不是它,请在 profile 的用户补丁层改:`,
|
|
288
294
|
" ~/.dsh/profiles/<profile>/cordis.patch.yml",
|
|
289
295
|
" - id: clickhouse",
|
|
290
296
|
" name: @saichao2026/dsh-clickhouse",
|
|
291
297
|
" config: { url: http://<主机>:8123, user: default, password: '' }",
|
|
292
|
-
"
|
|
298
|
+
"也可以只改 host / port(或 CLICKHOUSE_HOST / CLICKHOUSE_PORT);",
|
|
293
299
|
"详见插件 README 的「配置」一节。改完需要重启 DSH。",
|
|
294
300
|
].join("\n");
|
|
295
301
|
}
|
package/src/index.ts
CHANGED
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
* **不导入任何 `@deepseek-ai/*` 运行时模块**,因此装进 profile 后无需任何依赖即可加载。
|
|
6
6
|
* 配置由 `apply()` 自行规范化;`apply()` 不会抛错,避免影响宿主启动。
|
|
7
7
|
*
|
|
8
|
-
* 用法(profile 的 `cordis.patch.yml
|
|
8
|
+
* 用法(profile 的 `cordis.patch.yml`;不写 config 就用内置默认连接):
|
|
9
9
|
* ```yaml
|
|
10
10
|
* - id: clickhouse
|
|
11
11
|
* name: @saichao2026/dsh-clickhouse
|
|
12
12
|
* config:
|
|
13
|
-
* url: http://
|
|
13
|
+
* url: http://10.0.0.34:8123
|
|
14
14
|
* user: default
|
|
15
15
|
* password: ''
|
|
16
16
|
* database: default
|
|
@@ -22,7 +22,6 @@
|
|
|
22
22
|
import { ClickHouseGateway } from "./clickhouse.js";
|
|
23
23
|
import {
|
|
24
24
|
describeConnection,
|
|
25
|
-
isDefaultConnection,
|
|
26
25
|
resolveConfig,
|
|
27
26
|
type ClickHousePluginConfig,
|
|
28
27
|
} from "./config.js";
|
|
@@ -40,12 +39,8 @@ function guidance(config: ClickHousePluginConfig): string {
|
|
|
40
39
|
return [
|
|
41
40
|
"## ClickHouse 数据问答(插件 dsh-clickhouse)",
|
|
42
41
|
`连接:${describeConnection(config)}。`,
|
|
43
|
-
//
|
|
44
|
-
|
|
45
|
-
? [
|
|
46
|
-
"⚠️ 上面这个是默认连接,说明插件还没配置。查询报连接失败时不要反复重试:直接告诉用户去 profile 的用户补丁层(`~/.dsh/profiles/<profile>/cordis.patch.yml`)加一段 `- id: clickhouse` / `name: @saichao2026/dsh-clickhouse` / `config: { url: http://<主机>:8123, user: default, password: '' }`,改完重启 DSH。",
|
|
47
|
-
]
|
|
48
|
-
: []),
|
|
42
|
+
// 连接已内置,正常情况下客户零配置即可用;连不上时提醒模型别反复重试。
|
|
43
|
+
"上面这个连接是插件内置的默认值,装完即可用。查询报连接失败时不要反复重试:确认服务确实在跑之后,直接告诉用户怎么改连接(profile 用户补丁层 `~/.dsh/profiles/<profile>/cordis.patch.yml` 里 `- id: clickhouse` 那行的 `config`,或插件 README 的「配置」一节),改完重启 DSH。",
|
|
49
44
|
"",
|
|
50
45
|
"怎么查:",
|
|
51
46
|
"- 用户给什么参数就查什么:公司名就按名称字段查,专利名/商标名就按各自的名称字段查。不要替用户把参数改写成别的标识(例如先查信用代码、再拿它去查另一张表)。",
|