skill-base 2.0.1 → 2.0.4
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 +42 -0
- package/bin/skill-base.js +26 -7
- package/package.json +7 -7
- package/src/index.js +2 -2
package/README.md
CHANGED
|
@@ -22,8 +22,16 @@ npx skill-base -p 3000
|
|
|
22
22
|
|
|
23
23
|
# 仅本地访问
|
|
24
24
|
npx skill-base --host 127.0.0.1
|
|
25
|
+
|
|
26
|
+
# 指定数据目录(推荐,方便管理数据)
|
|
27
|
+
npx skill-base -d ./data
|
|
28
|
+
|
|
29
|
+
# 数据存储到当前目录
|
|
30
|
+
npx skill-base -d .
|
|
25
31
|
```
|
|
26
32
|
|
|
33
|
+
> **提示**:使用 `-d` 指定数据目录后,数据库和 Skills 文件会存储在指定路径,而非 npm 缓存目录。这样更方便数据备份和管理。
|
|
34
|
+
|
|
27
35
|
### Web 端使用
|
|
28
36
|
|
|
29
37
|
1. 访问平台首页,注册/登录账号
|
|
@@ -117,6 +125,40 @@ skill-base/
|
|
|
117
125
|
└── docs/ # 文档
|
|
118
126
|
```
|
|
119
127
|
|
|
128
|
+
## 数据存储
|
|
129
|
+
|
|
130
|
+
### 数据目录结构
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
data/
|
|
134
|
+
├── skills.db # SQLite 数据库
|
|
135
|
+
├── skills.db-wal # WAL 日志
|
|
136
|
+
├── skills.db-shm # 共享内存文件
|
|
137
|
+
└── <skill-id>/ # 每个 Skill 的 ZIP 文件
|
|
138
|
+
├── v20260326.120000.zip
|
|
139
|
+
└── v20260326.150000.zip
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### 删除数据
|
|
143
|
+
|
|
144
|
+
**方法 1:指定数据目录后删除**
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
# 启动时指定数据目录
|
|
148
|
+
npx skill-base -d ./my-data
|
|
149
|
+
|
|
150
|
+
# 删除数据(停止服务后)
|
|
151
|
+
rm -rf ./my-data
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**方法 2:清理 npx 缓存(未指定 -d 时)**
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
npx clear-npx-cache
|
|
158
|
+
# 或手动删除
|
|
159
|
+
rm -rf ~/.npm/_npx/
|
|
160
|
+
```
|
|
161
|
+
|
|
120
162
|
## SKILL.md 规范
|
|
121
163
|
|
|
122
164
|
每个 Skill 必须包含 `SKILL.md` 文件,平台会自动解析:
|
package/bin/skill-base.js
CHANGED
|
@@ -6,11 +6,13 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
const path = require('path');
|
|
9
|
+
const fs = require('fs');
|
|
9
10
|
|
|
10
11
|
// 解析命令行参数
|
|
11
12
|
const args = process.argv.slice(2);
|
|
12
13
|
let port = 8000;
|
|
13
14
|
let host = '0.0.0.0';
|
|
15
|
+
let dataDir = null;
|
|
14
16
|
|
|
15
17
|
for (let i = 0; i < args.length; i++) {
|
|
16
18
|
if ((args[i] === '-p' || args[i] === '--port') && args[i + 1]) {
|
|
@@ -19,6 +21,9 @@ for (let i = 0; i < args.length; i++) {
|
|
|
19
21
|
} else if ((args[i] === '-h' || args[i] === '--host') && args[i + 1]) {
|
|
20
22
|
host = args[i + 1];
|
|
21
23
|
i++;
|
|
24
|
+
} else if ((args[i] === '-d' || args[i] === '--data-dir') && args[i + 1]) {
|
|
25
|
+
dataDir = path.resolve(args[i + 1]);
|
|
26
|
+
i++;
|
|
22
27
|
} else if (args[i] === '--help') {
|
|
23
28
|
console.log(`
|
|
24
29
|
Skill Base - 内网轻量版 Skill 管理平台
|
|
@@ -27,15 +32,18 @@ Usage:
|
|
|
27
32
|
npx skill-base [options]
|
|
28
33
|
|
|
29
34
|
Options:
|
|
30
|
-
-p, --port <port>
|
|
31
|
-
-h, --host <host>
|
|
32
|
-
--
|
|
33
|
-
--
|
|
35
|
+
-p, --port <port> 指定端口号 (默认: 8000)
|
|
36
|
+
-h, --host <host> 指定监听地址 (默认: 0.0.0.0)
|
|
37
|
+
-d, --data-dir <path> 指定数据目录 (默认: 包内 data/)
|
|
38
|
+
--help 显示帮助信息
|
|
39
|
+
--version 显示版本号
|
|
34
40
|
|
|
35
41
|
Examples:
|
|
36
|
-
npx skill-base
|
|
37
|
-
npx skill-base -p 3000
|
|
38
|
-
npx skill-base --host 127.0.0.1
|
|
42
|
+
npx skill-base # 启动服务 (端口 8000)
|
|
43
|
+
npx skill-base -p 3000 # 使用端口 3000
|
|
44
|
+
npx skill-base --host 127.0.0.1 # 仅本地访问
|
|
45
|
+
npx skill-base -d ./data # 数据存储到当前目录的 data 文件夹
|
|
46
|
+
npx skill-base -d . -p 3000 # 数据存储到当前目录
|
|
39
47
|
`);
|
|
40
48
|
process.exit(0);
|
|
41
49
|
} else if (args[i] === '--version') {
|
|
@@ -49,5 +57,16 @@ Examples:
|
|
|
49
57
|
process.env.PORT = port;
|
|
50
58
|
process.env.HOST = host;
|
|
51
59
|
|
|
60
|
+
// 设置数据目录
|
|
61
|
+
if (dataDir) {
|
|
62
|
+
// 确保目录存在
|
|
63
|
+
if (!fs.existsSync(dataDir)) {
|
|
64
|
+
fs.mkdirSync(dataDir, { recursive: true });
|
|
65
|
+
}
|
|
66
|
+
process.env.DATA_DIR = dataDir;
|
|
67
|
+
process.env.DATABASE_PATH = path.join(dataDir, 'skills.db');
|
|
68
|
+
console.log(`Data directory: ${dataDir}`);
|
|
69
|
+
}
|
|
70
|
+
|
|
52
71
|
// 启动服务
|
|
53
72
|
require('../src/index.js');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skill-base",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.4",
|
|
4
4
|
"description": "Skill Base - 内网轻量版 Skill 管理平台",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -18,13 +18,13 @@
|
|
|
18
18
|
"test": "node --test tests/**/*.test.js"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"fastify": "^
|
|
22
|
-
"@fastify/
|
|
23
|
-
"@fastify/multipart": "^
|
|
24
|
-
"@fastify/
|
|
25
|
-
"@fastify/cors": "^9.0.0",
|
|
26
|
-
"better-sqlite3": "^9.4.0",
|
|
21
|
+
"@fastify/cookie": "^11.0.2",
|
|
22
|
+
"@fastify/cors": "^11.2.0",
|
|
23
|
+
"@fastify/multipart": "^9.4.0",
|
|
24
|
+
"@fastify/static": "^9.0.0",
|
|
27
25
|
"bcryptjs": "^2.4.3",
|
|
26
|
+
"better-sqlite3": "^12.8.0",
|
|
27
|
+
"fastify": "^5.8.4",
|
|
28
28
|
"uuid": "^9.0.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
package/src/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const path = require('path');
|
|
2
2
|
const fastify = require('fastify')({
|
|
3
|
-
logger:
|
|
3
|
+
logger: false,
|
|
4
4
|
// 设置 body 大小限制为 100MB(支持大 zip 上传)
|
|
5
5
|
bodyLimit: 100 * 1024 * 1024
|
|
6
6
|
});
|
|
@@ -80,7 +80,7 @@ async function start() {
|
|
|
80
80
|
await fastify.listen({ port: PORT, host: HOST });
|
|
81
81
|
console.log(`Skill Base server running at http://${HOST}:${PORT}`);
|
|
82
82
|
} catch (err) {
|
|
83
|
-
|
|
83
|
+
console.error(err);
|
|
84
84
|
process.exit(1);
|
|
85
85
|
}
|
|
86
86
|
}
|