@ganziliang/kb 0.1.4 → 0.1.5
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 +254 -0
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
# @ganziliang/kb
|
|
2
|
+
|
|
3
|
+
本地知识库命令行工具。它会把本地 Markdown、文本、JSON、CSV 或 Excel 文件导入 SQLite 知识库,然后通过关键词检索相关内容,并调用已配置的模型回答问题。
|
|
4
|
+
|
|
5
|
+
## 环境要求
|
|
6
|
+
|
|
7
|
+
- Node.js `>=22.5.0`
|
|
8
|
+
- 如果使用模型问答,需要可用的模型 API Key
|
|
9
|
+
- 首次启动需要配置模型
|
|
10
|
+
|
|
11
|
+
## 安装
|
|
12
|
+
|
|
13
|
+
### 从 npm 安装
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install -g @ganziliang/kb
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
安装后使用 `kb` 命令:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
kb
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### 在源码目录运行
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
cd D:\IDEAProject\ai_work\zhishiku\kb
|
|
29
|
+
npm install
|
|
30
|
+
npm run build
|
|
31
|
+
node dist/entry.js
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
如果希望全局的 `kb` 命令使用当前源码构建结果,可以在源码目录执行:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npm link
|
|
38
|
+
npm run build
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## 首次启动和模型配置
|
|
42
|
+
|
|
43
|
+
直接运行:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
kb
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
首次启动时,程序会询问:
|
|
50
|
+
|
|
51
|
+
1. `api-stats` 页面地址或 `apiId`
|
|
52
|
+
2. API Key
|
|
53
|
+
|
|
54
|
+
当前默认使用智真 LLM Gateway:
|
|
55
|
+
|
|
56
|
+
```text
|
|
57
|
+
https://llm-gateway.zhizhengroup.com
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
`api-stats` 地址示例:
|
|
61
|
+
|
|
62
|
+
```text
|
|
63
|
+
https://llm-gateway.zhizhengroup.com/admin-next/api-stats?apiId=<你的apiId>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
模型配置保存位置:
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
~/.config/kb/config.json
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Windows 通常对应:
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
C:\Users\<用户名>\.config\kb\config.json
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
也可以通过环境变量跳过首次交互配置:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
KB_PROVIDER=company-gpt \
|
|
82
|
+
KB_API=openai-responses \
|
|
83
|
+
KB_MODEL=gpt-5.6-luna \
|
|
84
|
+
KB_BASE_URL=https://llm-gateway.zhizhengroup.com/openai \
|
|
85
|
+
KB_API_KEY=<你的APIKey> \
|
|
86
|
+
kb
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
PowerShell 写法:
|
|
90
|
+
|
|
91
|
+
```powershell
|
|
92
|
+
$env:KB_PROVIDER = "company-gpt"
|
|
93
|
+
$env:KB_API = "openai-responses"
|
|
94
|
+
$env:KB_MODEL = "gpt-5.6-luna"
|
|
95
|
+
$env:KB_BASE_URL = "https://llm-gateway.zhizhengroup.com/openai"
|
|
96
|
+
$env:KB_API_KEY = "你的APIKey"
|
|
97
|
+
kb
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
支持的 `KB_API` 值:
|
|
101
|
+
|
|
102
|
+
- `openai-responses`
|
|
103
|
+
- `anthropic-messages`
|
|
104
|
+
|
|
105
|
+
## 交互操作
|
|
106
|
+
|
|
107
|
+
启动 `kb` 后,在底部的 `> ` 提示符后输入内容并按 Enter。
|
|
108
|
+
|
|
109
|
+
### 导入文件
|
|
110
|
+
|
|
111
|
+
支持的文件格式:
|
|
112
|
+
|
|
113
|
+
- Markdown:`.md`
|
|
114
|
+
- 文本:`.txt`
|
|
115
|
+
- JSON:`.json`
|
|
116
|
+
- CSV:`.csv`
|
|
117
|
+
- Excel:`.xlsx`、`.xls`
|
|
118
|
+
|
|
119
|
+
导入命令格式:
|
|
120
|
+
|
|
121
|
+
```text
|
|
122
|
+
导入 <文件路径>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
也支持以下关键词:
|
|
126
|
+
|
|
127
|
+
```text
|
|
128
|
+
录入 <文件路径>
|
|
129
|
+
整理 <文件路径>
|
|
130
|
+
ingest <文件路径>
|
|
131
|
+
import <文件路径>
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
示例:
|
|
135
|
+
|
|
136
|
+
```text
|
|
137
|
+
导入 ./docs/payment.md
|
|
138
|
+
import D:\docs\api.txt
|
|
139
|
+
导入 "D:\资料\产品说明.xlsx"
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
导入后会复制一份原始文件,并建立版本记录。对同一个文件再次导入时,会创建新版本,不会直接覆盖旧版本。
|
|
143
|
+
|
|
144
|
+
### 查询知识
|
|
145
|
+
|
|
146
|
+
直接输入问题即可:
|
|
147
|
+
|
|
148
|
+
```text
|
|
149
|
+
支付服务的数据库配置是什么?
|
|
150
|
+
如何申请退款?
|
|
151
|
+
总结产品说明中的核心功能
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
程序会先在当前知识库中检索,再把匹配到的内容交给模型回答。回答仅允许使用本地知识;如果没有匹配内容,应提示没有找到相关知识。
|
|
155
|
+
|
|
156
|
+
### 内置命令
|
|
157
|
+
|
|
158
|
+
| 命令 | 作用 |
|
|
159
|
+
| --- | --- |
|
|
160
|
+
| `/help` | 查看命令列表 |
|
|
161
|
+
| `/clear` | 清空当前对话上下文 |
|
|
162
|
+
| `/sources` | 查看当前知识库中的来源文件、路径和版本 |
|
|
163
|
+
| `/models` 或 `/model` | 查看已配置模型 |
|
|
164
|
+
| `/model <编号>` | 切换模型,例如 `/model 1` |
|
|
165
|
+
| `/kb list` | 查看所有知识库 |
|
|
166
|
+
| `/kb current` | 查看当前知识库 |
|
|
167
|
+
| `/kb create <名称>` | 创建知识库 |
|
|
168
|
+
| `/kb use <id>` | 切换知识库 |
|
|
169
|
+
| `/kb delete <id> confirm` | 删除非 default 知识库 |
|
|
170
|
+
| `/backup` | 创建当前知识库备份 |
|
|
171
|
+
| `/backup <目录>` | 备份到指定目录 |
|
|
172
|
+
| `/restore <备份目录>` | 从备份恢复 |
|
|
173
|
+
| `/cleanup` | 查看历史版本 |
|
|
174
|
+
| `/cleanup <版本ID> confirm` | 删除指定历史版本 |
|
|
175
|
+
| `/quit` 或 `/exit` | 退出程序 |
|
|
176
|
+
|
|
177
|
+
知识库示例:
|
|
178
|
+
|
|
179
|
+
```text
|
|
180
|
+
/kb create payment
|
|
181
|
+
/kb list
|
|
182
|
+
/kb use payment
|
|
183
|
+
/kb current
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
`/kb use` 支持使用知识库 ID;知识库名称包含空格时,建议使用生成的 ID。
|
|
187
|
+
|
|
188
|
+
## 数据位置
|
|
189
|
+
|
|
190
|
+
默认数据目录:
|
|
191
|
+
|
|
192
|
+
```text
|
|
193
|
+
~/.kb
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Windows 通常对应:
|
|
197
|
+
|
|
198
|
+
```text
|
|
199
|
+
C:\Users\<用户名>\.kb
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
可通过 `KB_DATA_DIR` 修改:
|
|
203
|
+
|
|
204
|
+
```powershell
|
|
205
|
+
$env:KB_DATA_DIR = "D:\kb-data"
|
|
206
|
+
kb
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
数据目录结构大致如下:
|
|
210
|
+
|
|
211
|
+
```text
|
|
212
|
+
.kb/
|
|
213
|
+
└── knowledge-bases/
|
|
214
|
+
└── default/
|
|
215
|
+
├── knowledge.db # SQLite 数据库
|
|
216
|
+
├── originals/ # 导入时复制的原始文件
|
|
217
|
+
└── backups/ # 备份文件
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
不要把 API Key 提交到 Git。模型配置文件中包含明文 API Key,请妥善保护该文件。
|
|
221
|
+
|
|
222
|
+
## 开发和测试
|
|
223
|
+
|
|
224
|
+
在本目录执行:
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
npm run typecheck
|
|
228
|
+
npm run build
|
|
229
|
+
npm test
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
修改源码时编辑 `src/`,不要直接编辑 `dist/`。构建后,`dist/` 会生成可执行代码。
|
|
233
|
+
|
|
234
|
+
## 常见问题
|
|
235
|
+
|
|
236
|
+
### 运行 `kb` 找不到命令
|
|
237
|
+
|
|
238
|
+
确认 npm 全局 bin 目录已经加入 PATH,或者使用源码方式运行:
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
node dist/entry.js
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### PDF 无法导入
|
|
245
|
+
|
|
246
|
+
当前版本不支持直接解析 PDF。请先将 PDF 转换成 Markdown 或纯文本,再导入转换后的文件。
|
|
247
|
+
|
|
248
|
+
### 修改文件后再次导入没有覆盖旧内容
|
|
249
|
+
|
|
250
|
+
这是预期行为。程序采用版本化存储:新内容会成为当前版本,旧版本可以通过 `/cleanup` 查看和清理。
|
|
251
|
+
|
|
252
|
+
### 恢复备份后查询异常
|
|
253
|
+
|
|
254
|
+
恢复操作完成后需要退出并重新启动 `kb`,让程序重新打开 SQLite 数据库。
|