xiaozhi-client 1.6.3-beta.2 → 1.6.3-beta.3
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/docs/python-dependencies.md +216 -0
- package/package.json +5 -13
- package/templates/docker/requirements.txt +16 -0
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
# Python 依赖管理指南
|
|
2
|
+
|
|
3
|
+
xiaozhi-client Docker 容器支持动态 Python 依赖管理,让你可以轻松添加和管理 Python 包,特别适用于 MCP (Model Context Protocol) 服务器开发。
|
|
4
|
+
|
|
5
|
+
## 🚀 快速开始
|
|
6
|
+
|
|
7
|
+
### 1. 创建自定义依赖文件
|
|
8
|
+
|
|
9
|
+
在你的挂载目录(通常是 `~/xiaozhi-client/`)中创建 `requirements.txt` 文件:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# 在主机上创建文件
|
|
13
|
+
echo "mcp-proxy>=0.8.2" > ~/xiaozhi-client/requirements.txt
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### 2. 重启容器
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
docker restart xiaozhi-client
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
容器启动时会自动检测并安装新的依赖包。
|
|
23
|
+
|
|
24
|
+
## 📋 工作原理
|
|
25
|
+
|
|
26
|
+
### 依赖安装优先级
|
|
27
|
+
|
|
28
|
+
1. **用户自定义** (`~/xiaozhi-client/requirements.txt`) - 最高优先级
|
|
29
|
+
2. **默认模板** (`templates/docker/requirements.txt`) - 仅在用户未自定义时使用
|
|
30
|
+
|
|
31
|
+
### 安装流程
|
|
32
|
+
|
|
33
|
+
容器启动时会按以下顺序执行:
|
|
34
|
+
|
|
35
|
+
1. 检查 `/workspaces/requirements.txt`(用户自定义文件)
|
|
36
|
+
2. 如果存在且包含有效内容,安装用户依赖
|
|
37
|
+
3. 如果不存在,检查是否需要安装默认依赖
|
|
38
|
+
4. 所有依赖都安装在 Python 虚拟环境中(`/opt/venv`)
|
|
39
|
+
|
|
40
|
+
## 📝 使用示例
|
|
41
|
+
|
|
42
|
+
### 示例 1:添加 MCP 相关包
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# ~/xiaozhi-client/requirements.txt
|
|
46
|
+
mcp-proxy>=0.8.2
|
|
47
|
+
mcp-server-git>=0.1.0
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 示例 2:添加数据科学包
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# ~/xiaozhi-client/requirements.txt
|
|
54
|
+
numpy>=1.24.0
|
|
55
|
+
pandas>=2.0.0
|
|
56
|
+
matplotlib>=3.7.0
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 示例 3:添加 Web 开发包
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# ~/xiaozhi-client/requirements.txt
|
|
63
|
+
fastapi>=0.104.0
|
|
64
|
+
uvicorn>=0.24.0
|
|
65
|
+
sqlalchemy>=2.0.0
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 示例 4:完整的 MCP 服务器依赖
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# ~/xiaozhi-client/requirements.txt
|
|
72
|
+
# MCP 核心
|
|
73
|
+
mcp>=1.13.0
|
|
74
|
+
fastmcp>=2.11.0
|
|
75
|
+
|
|
76
|
+
# 网络通信
|
|
77
|
+
httpx>=0.27.0
|
|
78
|
+
websockets>=12.0
|
|
79
|
+
|
|
80
|
+
# 数据处理
|
|
81
|
+
pydantic>=2.11.0
|
|
82
|
+
python-dotenv>=1.0.0
|
|
83
|
+
|
|
84
|
+
# 自定义包
|
|
85
|
+
mcp-proxy>=0.8.2
|
|
86
|
+
openai>=1.0.0
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## 🔧 高级用法
|
|
90
|
+
|
|
91
|
+
### 版本固定
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# 固定特定版本
|
|
95
|
+
mcp==1.13.0
|
|
96
|
+
fastmcp==2.11.0
|
|
97
|
+
|
|
98
|
+
# 版本范围
|
|
99
|
+
httpx>=0.27.0,<1.0.0
|
|
100
|
+
pydantic>=2.11.0,<3.0.0
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 从 Git 安装
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# 从 GitHub 安装开发版本
|
|
107
|
+
git+https://github.com/user/repo.git
|
|
108
|
+
git+https://github.com/user/repo.git@branch_name
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### 可选依赖
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# 安装包的可选依赖
|
|
115
|
+
fastapi[all]>=0.104.0
|
|
116
|
+
httpx[http2]>=0.27.0
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## 🐛 故障排除
|
|
120
|
+
|
|
121
|
+
### 查看安装日志
|
|
122
|
+
|
|
123
|
+
容器启动时会显示详细的安装日志:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
docker logs xiaozhi-client
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### 常见问题
|
|
130
|
+
|
|
131
|
+
#### 1. 依赖安装失败
|
|
132
|
+
|
|
133
|
+
**症状**:容器启动时显示警告信息
|
|
134
|
+
**解决**:
|
|
135
|
+
- 检查包名拼写是否正确
|
|
136
|
+
- 确认版本号是否存在
|
|
137
|
+
- 查看完整错误日志
|
|
138
|
+
|
|
139
|
+
#### 2. 包版本冲突
|
|
140
|
+
|
|
141
|
+
**症状**:安装过程中出现依赖冲突
|
|
142
|
+
**解决**:
|
|
143
|
+
- 使用兼容的版本范围
|
|
144
|
+
- 移除冲突的包
|
|
145
|
+
- 使用虚拟环境隔离
|
|
146
|
+
|
|
147
|
+
#### 3. 网络连接问题
|
|
148
|
+
|
|
149
|
+
**症状**:下载包时超时
|
|
150
|
+
**解决**:
|
|
151
|
+
- 容器已配置清华大学 PyPI 镜像源
|
|
152
|
+
- 检查网络连接
|
|
153
|
+
- 重试安装
|
|
154
|
+
|
|
155
|
+
### 手动安装包
|
|
156
|
+
|
|
157
|
+
如果需要在运行中的容器内手动安装包:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
# 进入容器
|
|
161
|
+
docker exec -it xiaozhi-client bash
|
|
162
|
+
|
|
163
|
+
# 激活虚拟环境并安装
|
|
164
|
+
source /opt/venv/bin/activate
|
|
165
|
+
pip install package_name
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## 📚 默认预装包
|
|
169
|
+
|
|
170
|
+
容器默认包含以下 MCP 开发常用包:
|
|
171
|
+
|
|
172
|
+
- `mcp` - 官方 MCP Python SDK
|
|
173
|
+
- `fastmcp` - 高级 MCP 框架
|
|
174
|
+
- `httpx` - 现代 HTTP 客户端
|
|
175
|
+
- `websockets` - WebSocket 支持
|
|
176
|
+
- `pydantic` - 数据验证
|
|
177
|
+
- `python-dotenv` - 环境变量管理
|
|
178
|
+
- `aiofiles` - 异步文件操作
|
|
179
|
+
|
|
180
|
+
完整列表请查看 `templates/docker/requirements.txt`。
|
|
181
|
+
|
|
182
|
+
## 🔄 更新依赖
|
|
183
|
+
|
|
184
|
+
### 更新单个包
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
# 修改 requirements.txt 中的版本号
|
|
188
|
+
mcp>=1.14.0 # 从 1.13.0 更新到 1.14.0
|
|
189
|
+
|
|
190
|
+
# 重启容器
|
|
191
|
+
docker restart xiaozhi-client
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### 批量更新
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
# 在容器内手动更新
|
|
198
|
+
docker exec -it xiaozhi-client bash
|
|
199
|
+
source /opt/venv/bin/activate
|
|
200
|
+
pip install --upgrade -r requirements.txt
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## 💡 最佳实践
|
|
204
|
+
|
|
205
|
+
1. **版本管理**:使用版本范围而不是固定版本,确保兼容性
|
|
206
|
+
2. **依赖分组**:在 requirements.txt 中使用注释分组相关依赖
|
|
207
|
+
3. **测试验证**:添加新依赖后测试 MCP 服务器功能
|
|
208
|
+
4. **备份配置**:定期备份 requirements.txt 文件
|
|
209
|
+
5. **最小化原则**:只安装必需的包,避免臃肿
|
|
210
|
+
|
|
211
|
+
## 🔗 相关链接
|
|
212
|
+
|
|
213
|
+
- [MCP 官方文档](https://modelcontextprotocol.io/)
|
|
214
|
+
- [FastMCP 文档](https://gofastmcp.com/)
|
|
215
|
+
- [Python 包索引 (PyPI)](https://pypi.org/)
|
|
216
|
+
- [pip 用户指南](https://pip.pypa.io/en/stable/user_guide/)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xiaozhi-client",
|
|
3
|
-
"version": "1.6.3-beta.
|
|
3
|
+
"version": "1.6.3-beta.3",
|
|
4
4
|
"description": "小智 AI 客户端 命令行工具",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/cli.js",
|
|
@@ -55,26 +55,20 @@
|
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@biomejs/biome": "1.9.4",
|
|
57
57
|
"@codecov/vite-plugin": "^1.9.1",
|
|
58
|
-
"@semantic-release/changelog": "^6.0.3",
|
|
59
|
-
"@semantic-release/commit-analyzer": "^13.0.1",
|
|
60
|
-
"@semantic-release/exec": "^7.1.0",
|
|
61
|
-
"@semantic-release/git": "^10.0.1",
|
|
62
|
-
"@semantic-release/github": "^11.0.3",
|
|
63
|
-
"@semantic-release/npm": "^12.0.1",
|
|
64
|
-
"@semantic-release/release-notes-generator": "^14.0.3",
|
|
65
58
|
"@types/eventsource": "^3.0.0",
|
|
66
59
|
"@types/node": "^24.0.1",
|
|
67
60
|
"@types/node-fetch": "^2.6.12",
|
|
68
61
|
"@types/supertest": "^6.0.3",
|
|
69
62
|
"@types/ws": "^8.18.1",
|
|
70
63
|
"@vitest/coverage-v8": "^3.2.3",
|
|
64
|
+
"conventional-changelog-cli": "^5.0.0",
|
|
71
65
|
"conventional-changelog-conventionalcommits": "^9.0.0",
|
|
72
66
|
"cspell": "^9.1.1",
|
|
73
67
|
"esbuild": "^0.25.5",
|
|
68
|
+
"execa": "^9.6.0",
|
|
74
69
|
"glob": "^11.0.3",
|
|
75
70
|
"happy-dom": "^18.0.1",
|
|
76
71
|
"jscpd": "^4.0.5",
|
|
77
|
-
"semantic-release": "^24.2.5",
|
|
78
72
|
"semver": "^7.7.2",
|
|
79
73
|
"supertest": "^7.1.4",
|
|
80
74
|
"ts-node": "^10.9.2",
|
|
@@ -99,10 +93,8 @@
|
|
|
99
93
|
"spell:check": "cspell \"src/**/*.ts\" \"*.md\" \"*.json\"",
|
|
100
94
|
"duplicate:check": "jscpd src/",
|
|
101
95
|
"docker:update-version": "node scripts/update-dockerfile-version.js",
|
|
102
|
-
"release": "
|
|
103
|
-
"
|
|
104
|
-
"release:dry": "semantic-release --dry-run",
|
|
105
|
-
"release:dry:beta": "semantic-release --dry-run",
|
|
96
|
+
"release": "npx tsx scripts/release.ts",
|
|
97
|
+
"publish:beta": "npx tsx scripts/publish-beta.ts",
|
|
106
98
|
"example": "node --loader ts-node/esm"
|
|
107
99
|
}
|
|
108
100
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# xiaozhi-client Docker 环境的 Python 依赖包模板
|
|
2
|
+
#
|
|
3
|
+
# 🔧 使用说明:
|
|
4
|
+
# 1. 这是默认的依赖包模板,包含 MCP 服务器开发的常用包
|
|
5
|
+
# 2. 如需自定义依赖,请在 requirements.txt 文件中添加依赖包
|
|
6
|
+
# 3. 容器启动时会自动安装 requirements.txt 中的依赖包
|
|
7
|
+
#
|
|
8
|
+
# 📝 示例用法:
|
|
9
|
+
# 在主机的 ~/xiaozhi-client/requirements.txt 中添加:
|
|
10
|
+
# mcp-proxy>=0.8.2
|
|
11
|
+
# numpy>=1.24.0
|
|
12
|
+
#
|
|
13
|
+
# 然后重启容器,依赖会自动安装到虚拟环境中
|
|
14
|
+
|
|
15
|
+
# FastMCP - 构建 MCP 服务器的高级框架
|
|
16
|
+
# fastmcp>=2.11.0
|