xiaozhi-client 1.9.3 → 1.9.4-beta.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.
Files changed (138) hide show
  1. package/README.md +2 -2
  2. package/dist/WebServerLauncher.js +2 -100
  3. package/dist/backend/WebServerLauncher.js +100 -0
  4. package/dist/backend/WebServerLauncher.js.map +1 -0
  5. package/dist/backend/cli.js +129 -0
  6. package/dist/backend/cli.js.map +1 -0
  7. package/dist/{package.json → backend/package.json} +21 -9
  8. package/dist/cli.js +2 -129
  9. package/dist/docs/404/index.html +19 -0
  10. package/dist/docs/404.html +19 -0
  11. package/dist/docs/_next/static/JZ0ESgtaHnsqkxSabOqqU/_buildManifest.js +1 -0
  12. package/dist/docs/_next/static/JZ0ESgtaHnsqkxSabOqqU/_ssgManifest.js +1 -0
  13. package/dist/docs/_next/static/chunks/112-c9cbd8401d35f825.js +4 -0
  14. package/dist/docs/_next/static/chunks/2a9bc5d7-4c434acf20ba934a.js +1 -0
  15. package/dist/docs/_next/static/chunks/782-c26ca6c69e488d48.js +1 -0
  16. package/dist/docs/_next/static/chunks/799-fe0d35806fd12012.js +1 -0
  17. package/dist/docs/_next/static/chunks/9b1cb2c3-cc9ed703e6aef1a2.js +1 -0
  18. package/dist/docs/_next/static/chunks/app/[[...mdxPath]]/page-48f5c8f3210e0a8a.js +1 -0
  19. package/dist/docs/_next/static/chunks/app/_not-found/page-2e38866a1cbb77e4.js +1 -0
  20. package/dist/docs/_next/static/chunks/app/layout-e8f420537fd59e8d.js +1 -0
  21. package/dist/docs/_next/static/chunks/framework-b73126dabbf07067.js +1 -0
  22. package/dist/docs/_next/static/chunks/main-75dc65850b89d90d.js +1 -0
  23. package/dist/docs/_next/static/chunks/main-app-3303134270964ce6.js +1 -0
  24. package/dist/docs/_next/static/chunks/pages/_app-e698a68d07c8993d.js +1 -0
  25. package/dist/docs/_next/static/chunks/pages/_error-189a41ab5833da03.js +1 -0
  26. package/dist/docs/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  27. package/dist/docs/_next/static/chunks/webpack-10e2bf7d852ddb6e.js +1 -0
  28. package/dist/docs/_next/static/css/2d82b615fcca1590.css +1 -0
  29. package/dist/docs/_next/static/css/b03484a3c350cf6e.css +1 -0
  30. package/dist/docs/_next/static/css/b289318ef4b60b0a.css +1 -0
  31. package/dist/docs/changelog/index.html +585 -0
  32. package/dist/docs/changelog/index.txt +1079 -0
  33. package/dist/docs/images/coze-workflow/get-parameter.png +0 -0
  34. package/dist/docs/index.html +22 -0
  35. package/dist/docs/index.txt +41 -0
  36. package/dist/docs/quickstart/index.html +64 -0
  37. package/dist/docs/quickstart/index.txt +185 -0
  38. package/dist/docs/reference/command/index.html +20 -0
  39. package/dist/docs/reference/command/index.txt +42 -0
  40. package/dist/docs/usage/as-mcp/index.html +36 -0
  41. package/dist/docs/usage/as-mcp/index.txt +101 -0
  42. package/dist/docs/usage/coze-workflow/index.html +35 -0
  43. package/dist/docs/usage/coze-workflow/index.txt +120 -0
  44. package/dist/docs/usage/docker/index.html +40 -0
  45. package/dist/docs/usage/docker/index.txt +154 -0
  46. package/dist/docs/usage/modelscope/index.html +32 -0
  47. package/dist/docs/usage/modelscope/index.txt +109 -0
  48. package/dist/docs/usage/multi-endpoint/index.html +32 -0
  49. package/dist/docs/usage/multi-endpoint/index.txt +118 -0
  50. package/dist/frontend/assets/form-utils-h64o2Nyg.js.map +1 -0
  51. package/{apps/frontend/dist → dist/frontend}/assets/index-88NfCOo9.js.map +1 -1
  52. package/dist/frontend/assets/radix-ui-BA32w1ww.js.map +1 -0
  53. package/dist/frontend/assets/react-vendor-DrjkXih1.js.map +1 -0
  54. package/dist/frontend/assets/utils-CiPelQLP.js.map +1 -0
  55. package/dist/frontend/assets/vendor-DK9yaMt3.js.map +1 -0
  56. package/dist/shared-types/index.js +36 -0
  57. package/dist/shared-types/index.js.map +1 -0
  58. package/package.json +21 -9
  59. package/apps/frontend/README.md +0 -169
  60. package/apps/frontend/dist/assets/form-utils-h64o2Nyg.js.map +0 -1
  61. package/apps/frontend/dist/assets/radix-ui-BA32w1ww.js.map +0 -1
  62. package/apps/frontend/dist/assets/react-vendor-DrjkXih1.js.map +0 -1
  63. package/apps/frontend/dist/assets/utils-CiPelQLP.js.map +0 -1
  64. package/apps/frontend/dist/assets/vendor-DK9yaMt3.js.map +0 -1
  65. package/dist/WebServerLauncher.js.map +0 -1
  66. package/dist/cli.js.map +0 -1
  67. package/docs/arch/cache.mdx +0 -885
  68. package/docs/changelog.mdx +0 -645
  69. package/docs/development/architecture.mdx +0 -71
  70. package/docs/development/docker-build.mdx +0 -256
  71. package/docs/development/todo__release-guide.md +0 -563
  72. package/docs/development/todo__setting-manager.md +0 -122
  73. package/docs/docs.json +0 -55
  74. package/docs/getting-started/install.mdx +0 -191
  75. package/docs/getting-started/intro.mdx +0 -11
  76. package/docs/getting-started/quickstart.mdx +0 -108
  77. package/docs/mcp-tool-calling.md +0 -363
  78. package/docs/python-dependencies.md +0 -216
  79. package/docs/reference/command.mdx +0 -15
  80. package/docs/usage/add-mcp-server.mdx +0 -6
  81. package/docs/usage/as-a-mcp-server.mdx +0 -76
  82. package/docs/usage/coze-workflow.mdx +0 -73
  83. package/docs/usage/docker.mdx +0 -99
  84. package/docs/usage/modelscope.mdx +0 -74
  85. package/docs/usage/use-multi-xiaozhi-mcp-endpoints.mdx +0 -77
  86. package/docs/usage/web-control.mdx +0 -6
  87. /package/dist/{WebServerLauncher.d.ts → backend/WebServerLauncher.d.ts} +0 -0
  88. /package/dist/{cli.d.ts → backend/cli.d.ts} +0 -0
  89. /package/dist/{templates → backend/templates}/default/mcpServers/calculator.js +0 -0
  90. /package/dist/{templates → backend/templates}/default/mcpServers/datetime.js +0 -0
  91. /package/dist/{templates → backend/templates}/default/package.json +0 -0
  92. /package/dist/{templates → backend/templates}/default/xiaozhi.config.json +0 -0
  93. /package/dist/{templates → backend/templates}/hello-world/mcpServers/calculator.js +0 -0
  94. /package/dist/{templates → backend/templates}/hello-world/mcpServers/datetime.js +0 -0
  95. /package/dist/{templates → backend/templates}/hello-world/package.json +0 -0
  96. /package/dist/{templates → backend/templates}/hello-world/xiaozhi.config.json +0 -0
  97. /package/dist/{templates → backend/templates}/json5/mcpServers/calculator.js +0 -0
  98. /package/dist/{templates → backend/templates}/json5/mcpServers/datetime.js +0 -0
  99. /package/dist/{templates → backend/templates}/json5/package.json +0 -0
  100. /package/dist/{templates → backend/templates}/json5/xiaozhi.config.json5 +0 -0
  101. /package/dist/{templates → backend/templates}/jsonc/mcpServers/calculator.js +0 -0
  102. /package/dist/{templates → backend/templates}/jsonc/mcpServers/datetime.js +0 -0
  103. /package/dist/{templates → backend/templates}/jsonc/package.json +0 -0
  104. /package/dist/{templates → backend/templates}/jsonc/xiaozhi.config.jsonc +0 -0
  105. /package/dist/{templates → backend/templates}/modelscope/xiaozhi.config.json +0 -0
  106. /package/{docs/images/coze-workflow/get-parameter.png → dist/docs/_next/static/media/get-parameter.62eee93d.png} +0 -0
  107. /package/{docs → dist/docs}/images/add-to-cherry-studio/step-1.png +0 -0
  108. /package/{docs → dist/docs}/images/add-to-cherry-studio/step-2.png +0 -0
  109. /package/{docs → dist/docs}/images/add-to-cherry-studio/step-3.png +0 -0
  110. /package/{docs → dist/docs}/images/add-to-cherry-studio/step-4.png +0 -0
  111. /package/{docs → dist/docs}/images/add-to-cherry-studio/step-5.png +0 -0
  112. /package/{docs → dist/docs}/images/add-to-cursor/step-1.png +0 -0
  113. /package/{docs → dist/docs}/images/add-to-cursor/step-2.png +0 -0
  114. /package/{docs → dist/docs}/images/add-to-cursor/step-3.png +0 -0
  115. /package/{docs → dist/docs}/images/coze-workflow/config-workflow-step-1.png +0 -0
  116. /package/{docs → dist/docs}/images/coze-workflow/config-workflow-step-2.png +0 -0
  117. /package/{docs → dist/docs}/images/coze-workflow/config-workflow-step-3.png +0 -0
  118. /package/{docs → dist/docs}/images/integrate-to-cherry-studio.png +0 -0
  119. /package/{docs → dist/docs}/images/integrate-to-cursor.png +0 -0
  120. /package/{docs → dist/docs}/images/modelscope/step-1.png +0 -0
  121. /package/{docs → dist/docs}/images/modelscope/step-2.png +0 -0
  122. /package/{docs → dist/docs}/images/modelscope/step-3.png +0 -0
  123. /package/{docs → dist/docs}/images/modelscope/step-4.png +0 -0
  124. /package/{docs → dist/docs}/images/preview.png +0 -0
  125. /package/{docs → dist/docs}/images/use-multi-xiaozhi-mcp-endpoints/step-1.png +0 -0
  126. /package/{docs → dist/docs}/images/use-multi-xiaozhi-mcp-endpoints/step-2.png +0 -0
  127. /package/{docs → dist/docs}/images/use-multi-xiaozhi-mcp-endpoints/step-3.png +0 -0
  128. /package/{docs → dist/docs}/images/use-multi-xiaozhi-mcp-endpoints/step-4.png +0 -0
  129. /package/{docs → dist/docs}/images/use-multi-xiaozhi-mcp-endpoints/step-5.png +0 -0
  130. /package/{docs → dist/docs}/images/web-ui-preview.png +0 -0
  131. /package/{apps/frontend/dist → dist/frontend}/assets/form-utils-h64o2Nyg.js +0 -0
  132. /package/{apps/frontend/dist → dist/frontend}/assets/index-88NfCOo9.js +0 -0
  133. /package/{apps/frontend/dist → dist/frontend}/assets/index-P6Zq3MZF.css +0 -0
  134. /package/{apps/frontend/dist → dist/frontend}/assets/radix-ui-BA32w1ww.js +0 -0
  135. /package/{apps/frontend/dist → dist/frontend}/assets/react-vendor-DrjkXih1.js +0 -0
  136. /package/{apps/frontend/dist → dist/frontend}/assets/utils-CiPelQLP.js +0 -0
  137. /package/{apps/frontend/dist → dist/frontend}/assets/vendor-DK9yaMt3.js +0 -0
  138. /package/{apps/frontend/dist → dist/frontend}/index.html +0 -0
@@ -1,563 +0,0 @@
1
- # 🚀 xiaozhi-client 发版指南
2
-
3
- > **适用对象**:项目维护者、新加入的开发者
4
- > **更新时间**:2025-08-27
5
- > **前置要求**:具备 GitHub 和 NPM 基础操作知识
6
-
7
- ## 📖 文档导航
8
-
9
- - [🚀 快速开始](#-快速开始) - 5分钟完成首次发版
10
- - [📋 发版前准备](#-发版前准备) - 权限配置和环境检查
11
- - [🎯 发版操作指南](#-发版操作指南) - 详细操作步骤
12
- - [📝 Commit 规范](#-commit-规范) - 代码提交规范
13
- - [🔍 发版后验证](#-发版后验证) - 发版成功检查清单
14
- - [🆘 故障排除](#-故障排除) - 常见问题解决方案
15
-
16
- ## � 快速开始
17
-
18
- **新手必读**:如果你是第一次进行发版操作,请按以下步骤操作:
19
-
20
- ### 第一步:检查权限
21
- 确认你具备以下权限:
22
- - ✅ GitHub 仓库的 **Write** 权限或更高
23
- - ✅ NPM 包的 **Maintainer** 权限或更高
24
- - ✅ 能够访问仓库的 **Settings** 页面
25
-
26
- ### 第二步:选择发版方式
27
- - **🎯 推荐方式**:[手动触发发版](#1-手动触发发版推荐) - 安全可控
28
- - **⚡ 快速方式**:[自动触发发版](#2-自动触发发版) - 适合熟练用户
29
-
30
- ### 第三步:执行发版
31
- 跳转到 [发版操作指南](#-发版操作指南) 查看详细步骤。
32
-
33
- ## 📋 发版前准备
34
-
35
- ### 🔐 权限配置检查清单
36
-
37
- 在进行发版前,请确保以下配置已完成:
38
-
39
- #### GitHub 权限配置
40
- - [ ] **仓库权限**:确认你有 `Write` 或 `Admin` 权限
41
- - [ ] **Actions 权限**:确认 GitHub Actions 已启用
42
- - [ ] **Secrets 配置**:确认以下 Secrets 已配置
43
- - [ ] `NPM_TOKEN` - NPM 发布令牌
44
- - [ ] `GITHUB_TOKEN` - GitHub 自动提供(无需手动配置)
45
-
46
- #### NPM 权限配置
47
- - [ ] **包权限**:确认你是 `xiaozhi-client` 包的维护者
48
- - [ ] **Token 有效性**:确认 NPM Token 未过期
49
-
50
- ### 🛠️ 环境配置详细步骤
51
-
52
- #### 配置 NPM Token(仅需配置一次)
53
-
54
- **步骤 1:获取 NPM Token**
55
- 1. 打开 [npmjs.com](https://www.npmjs.com/) 并登录
56
- 2. 点击右上角头像 → `Access Tokens`
57
- 3. 点击 `Generate New Token` → 选择 `Automation`
58
- 4. 输入 Token 名称(如:`xiaozhi-client-ci`)
59
- 5. 点击 `Generate Token`
60
- 6. **重要**:立即复制生成的 Token(只显示一次)
61
-
62
- **步骤 2:配置 GitHub Secrets**
63
- 1. 打开 [GitHub 仓库页面](https://github.com/shenjingnan/xiaozhi-client)
64
- 2. 点击 `Settings` 标签页
65
- 3. 在左侧菜单中点击 `Secrets and variables` → `Actions`
66
- 4. 点击 `New repository secret`
67
- 5. 填写:
68
- - **Name**: `NPM_TOKEN`
69
- - **Secret**: 粘贴刚才复制的 NPM Token
70
- 6. 点击 `Add secret`
71
-
72
- #### 验证配置是否正确
73
- 运行以下命令验证配置:
74
- ```bash
75
- # 检查 NPM 登录状态
76
- npm whoami
77
-
78
- # 检查包权限
79
- npm access list collaborators xiaozhi-client
80
- ```
81
-
82
- ## 🎯 发版操作指南
83
-
84
- ### 1. 手动触发发版(推荐)
85
-
86
- **适用场景**:
87
- - 🎯 **常规发版**:功能发布、bug 修复
88
- - 🚨 **紧急发版**:安全漏洞修复、严重 bug 修复
89
- - 🧪 **预发布版本**:beta、alpha 版本发布
90
-
91
- #### 📱 详细操作步骤
92
-
93
- **步骤 1:进入 GitHub Actions 页面**
94
- 1. 打开 [GitHub 仓库页面](https://github.com/shenjingnan/xiaozhi-client)
95
- 2. 点击顶部的 `Actions` 标签页
96
- 3. 在左侧工作流列表中找到并点击 `NPM 发布`
97
-
98
- **步骤 2:触发工作流**
99
- 1. 点击右侧的 `Run workflow` 按钮
100
- 2. 确认分支选择为 `main`(通常已默认选择)
101
- 3. 根据发版需求填写参数:
102
-
103
- #### 🎛️ 发版参数配置
104
-
105
- | 参数 | 说明 | 示例值 | 使用场景 |
106
- |------|------|--------|----------|
107
- | **版本号** | 指定发布版本 | `1.2.0` | 精确控制版本号 |
108
- | | 语义化递增 | `patch`/`minor`/`major` | 自动递增版本 |
109
- | | 预发布版本 | `1.2.0-beta.1` | 测试版本发布 |
110
- | | 留空 | (空) | 根据 commit 类型自动递增 |
111
- | **预演模式** | 预览发版内容 | ✅ 勾选 | 首次发版或重要版本 |
112
-
113
- #### 📋 不同场景的发版配置
114
-
115
- **场景 1:常规功能发版**
116
- - 版本号:留空或填写 `minor`
117
- - 预演模式:建议勾选(首次操作)
118
- - 适用:新功能发布
119
-
120
- **场景 2:Bug 修复发版**
121
- - 版本号:留空或填写 `patch`
122
- - 预演模式:可选
123
- - 适用:问题修复
124
-
125
- **场景 3:重大版本发版**
126
- - 版本号:填写 `major` 或具体版本号(如 `2.0.0`)
127
- - 预演模式:强烈建议勾选
128
- - 适用:破坏性变更、重大功能更新
129
-
130
- **场景 4:预发布版本**
131
- - 版本号:填写具体预发布版本(如 `1.2.0-beta.1`)
132
- - 预演模式:建议勾选
133
- - 适用:测试版本、候选版本
134
-
135
- **步骤 3:执行发版**
136
- 1. 配置完参数后,点击绿色的 `Run workflow` 按钮
137
- 2. 页面会自动刷新,显示工作流执行状态
138
- 3. 点击工作流名称可查看详细执行日志
139
-
140
- **步骤 4:监控执行过程**
141
- - ⏳ **执行中**:黄色圆圈图标,正在执行
142
- - ✅ **成功**:绿色对勾图标,发版完成
143
- - ❌ **失败**:红色叉号图标,需要排查问题
144
-
145
- ### 2. 自动触发发版
146
-
147
- **适用场景**:熟练用户的快速发版流程
148
-
149
- #### 📝 触发条件
150
- 当推送符合以下格式的 commit 到 main 分支时自动触发:
151
- ```bash
152
- chore: release v1.0.0 # 推荐格式
153
- release: 1.0.0 # 兼容格式
154
- ```
155
-
156
- #### 🚀 操作步骤
157
- 1. 确保本地代码已同步到最新
158
- 2. 创建发版 commit:
159
- ```bash
160
- git add .
161
- git commit -m "chore: release v1.2.0"
162
- git push origin main
163
- ```
164
- 3. 推送后自动触发发版流程
165
-
166
- **⚠️ 注意事项**:
167
- - 版本号必须与 `package.json` 中的版本号一致
168
- - 推送前建议先在本地运行测试:`pnpm run check:all`
169
- - 此方式无法使用预演模式,请谨慎使用
170
-
171
- ## 📝 Commit 规范
172
-
173
- 项目使用 [Conventional Commits](https://conventionalcommits.org/) 规范,这直接影响自动版本递增和变更日志生成。
174
-
175
- ### 📐 Commit 格式
176
-
177
- ```bash
178
- <type>[optional scope]: <description>
179
-
180
- [optional body]
181
-
182
- [optional footer(s)]
183
- ```
184
-
185
- ### 🏷️ Commit 类型详解
186
-
187
- | 类型 | 版本影响 | 说明 | 使用场景 |
188
- |------|----------|------|----------|
189
- | `feat` | **minor** ⬆️ | 新功能 | 添加新特性、新命令、新API |
190
- | `fix` | **patch** ⬆️ | Bug 修复 | 修复问题、错误处理 |
191
- | `docs` | 无影响 | 文档更新 | README、注释、文档修改 |
192
- | `style` | 无影响 | 代码格式 | 代码风格、格式化、分号等 |
193
- | `refactor` | 无影响 | 代码重构 | 重构代码但不改变功能 |
194
- | `perf` | **patch** ⬆️ | 性能优化 | 提升性能的代码更改 |
195
- | `test` | 无影响 | 测试相关 | 添加测试、修改测试 |
196
- | `chore` | 无影响 | 构建/工具 | 依赖更新、构建配置等 |
197
- | `ci` | 无影响 | CI/CD | GitHub Actions、构建脚本 |
198
-
199
- ### 💥 破坏性变更
200
-
201
- 当有破坏性变更时,需要在 commit 中标明:
202
-
203
- **方式 1:在 footer 中添加**
204
- ```bash
205
- feat(api): 重构用户认证接口
206
-
207
- BREAKING CHANGE: 用户认证接口参数格式发生变化,需要更新客户端代码
208
- ```
209
-
210
- **方式 2:在 type 后添加 !**
211
- ```bash
212
- feat(api)!: 重构用户认证接口
213
- ```
214
-
215
- ### 📋 Scope 使用指南
216
-
217
- Scope 用于标识变更影响的模块或功能:
218
-
219
- | Scope | 说明 | 示例 |
220
- |-------|------|------|
221
- | `cli` | 命令行相关 | `feat(cli): 添加新的启动参数` |
222
- | `api` | API 接口相关 | `fix(api): 修复接口响应格式` |
223
- | `config` | 配置相关 | `feat(config): 支持环境变量配置` |
224
- | `docker` | Docker 相关 | `fix(docker): 修复容器启动问题` |
225
- | `mcp` | MCP 协议相关 | `feat(mcp): 添加新的工具支持` |
226
- | `web` | Web 界面相关 | `style(web): 优化界面布局` |
227
- | `test` | 测试相关 | `test(cli): 添加命令行测试用例` |
228
-
229
- ### ✅ 良好的 Commit 示例
230
-
231
- ```bash
232
- # 新功能
233
- feat(cli): 添加服务状态检查命令
234
- feat(mcp): 支持自定义工具配置
235
-
236
- # Bug 修复
237
- fix(docker): 修复容器重启时的PID文件清理问题
238
- fix(api): 解决并发请求时的数据竞争问题
239
-
240
- # 文档更新
241
- docs: 更新安装指南和使用说明
242
- docs(api): 完善接口文档和示例代码
243
-
244
- # 破坏性变更
245
- feat(config)!: 重构配置文件格式
246
-
247
- BREAKING CHANGE: 配置文件格式从 JSON 改为 YAML,需要手动迁移现有配置
248
- ```
249
-
250
- ### ❌ 避免的 Commit 格式
251
-
252
- ```bash
253
- # ❌ 不好的示例
254
- update code
255
- fix bug
256
- add feature
257
- 修复问题
258
- 更新文档
259
-
260
- # ✅ 改进后
261
- feat(cli): 添加用户认证功能
262
- fix(api): 修复数据获取超时问题
263
- docs: 更新 API 使用文档
264
- ```
265
-
266
- ### 🔄 版本递增规则
267
-
268
- 根据 commit 类型自动递增版本:
269
-
270
- - **Major (x.0.0)**:包含 `BREAKING CHANGE` 的任何 commit
271
- - **Minor (x.y.0)**:包含 `feat` 类型的 commit
272
- - **Patch (x.y.z)**:包含 `fix`、`perf` 类型的 commit
273
- - **无变化**:`docs`、`style`、`refactor`、`test`、`chore`、`ci` 类型
274
-
275
- ## 🔄 发版流程详解
276
-
277
- ### 完整流程
278
- 1. **代码检查**:运行 `pnpm run check:all`
279
- 2. **项目构建**:运行 `pnpm run build`
280
- 3. **版本更新**:更新 package.json 版本号
281
- 4. **生成变更日志**:基于 commit 历史生成更新日志
282
- 5. **NPM 发布**:发布到 npm registry
283
- 6. **创建 Git 标签**:创建并推送版本标签
284
- 7. **GitHub Release**:创建 GitHub Release 页面
285
-
286
- ### 自动生成内容
287
- - **更新日志**:标准化的变更日志,位于 docs/changelog.mdx
288
- - **Git 标签**:格式为 `v1.0.0`
289
- - **GitHub Release**:包含变更日志和下载链接
290
-
291
- ## ⚙️ 配置文件说明
292
-
293
- ### `.release-it.json`
294
- ```json
295
- {
296
- "git": {
297
- "commitMessage": "chore: release v${version}",
298
- "tagName": "v${version}",
299
- "requireCleanWorkingDir": false,
300
- "commit": false, // CI 环境中不创建 commit
301
- "tag": true, // 创建 Git 标签
302
- "push": true // 推送标签到远程
303
- },
304
- "github": {
305
- "release": true, // 创建 GitHub Release
306
- "releaseName": "🚀 v${version}"
307
- },
308
- "npm": {
309
- "publish": true, // 发布到 NPM
310
- "publishArgs": ["--access", "public"]
311
- },
312
- "plugins": {
313
- "@release-it/conventional-changelog": {
314
- "preset": "conventionalcommits",
315
- "infile": "docs/changelog.mdx"
316
- }
317
- }
318
- }
319
- ```
320
-
321
- ### GitHub Actions 工作流
322
- - **触发条件**:push 到 main 分支或手动触发
323
- - **环境变量**:需要 `NPM_TOKEN` 和 `GITHUB_TOKEN`
324
- - **权限**:`contents: write` 用于创建标签和 Release
325
-
326
- ## 🔐 环境配置
327
-
328
- ### 必需的 Secrets
329
- 在 GitHub 仓库设置中配置:
330
- - `NPM_TOKEN`:NPM 发布令牌
331
- - `GITHUB_TOKEN`:GitHub 自动提供,用于创建 Release
332
-
333
- ### NPM Token 获取
334
- 1. 登录 [npmjs.com](https://www.npmjs.com/)
335
- 2. 进入 Access Tokens 页面
336
- 3. 创建 Automation token
337
- 4. 在 GitHub 仓库 Settings > Secrets 中添加 `NPM_TOKEN`
338
-
339
- ## 🚨 注意事项
340
-
341
- 1. **版本号格式**:必须遵循 [SemVer](https://semver.org/) 规范
342
- 2. **分支保护**:建议对 main 分支启用保护规则
343
- 3. **权限检查**:确保 GitHub Actions 有足够权限
344
- 4. **预发布版本**:包含 `-` 的版本会标记为 prerelease
345
- 5. **回滚处理**:如需回滚,请手动删除对应的标签和 Release
346
-
347
- ## � 发版后验证
348
-
349
- ### 📋 发版成功检查清单
350
-
351
- 发版完成后,请按以下清单逐项检查:
352
-
353
- #### ✅ 基础验证
354
- - [ ] **GitHub Actions 状态**:工作流显示绿色 ✅ 成功状态
355
- - [ ] **版本号更新**:`package.json` 中的版本号已更新
356
- - [ ] **Git 标签创建**:在 [Tags 页面](https://github.com/shenjingnan/xiaozhi-client/tags) 能看到新标签
357
-
358
- #### ✅ NPM 发布验证
359
- - [ ] **NPM 包页面**:访问 [xiaozhi-client](https://www.npmjs.com/package/xiaozhi-client) 确认新版本
360
- - [ ] **安装测试**:运行 `npm install -g xiaozhi-client@latest` 测试安装
361
- - [ ] **版本验证**:运行 `xiaozhi --version` 确认版本号正确
362
-
363
- #### ✅ GitHub Release 验证
364
- - [ ] **Release 页面**:访问 [Releases](https://github.com/shenjingnan/xiaozhi-client/releases) 确认新 Release
365
- - [ ] **Release 内容**:检查 Release 描述和变更日志是否正确
366
- - [ ] **下载链接**:确认源码下载链接可用
367
-
368
- #### ✅ 文档更新验证
369
- - [ ] **更新日志**:确认变更日志已更新并包含新版本(位于 docs/changelog.mdx)
370
- - [ ] **变更内容**:检查变更日志内容是否准确反映了实际变更
371
- - [ ] **链接有效性**:确认 commit 和 PR 链接可正常访问
372
-
373
- ### 🔧 验证命令
374
-
375
- ```bash
376
- # 检查 NPM 最新版本
377
- npm view xiaozhi-client version
378
-
379
- # 检查本地安装版本
380
- xiaozhi --version
381
-
382
- # 检查 Git 标签
383
- git ls-remote --tags origin | grep v1.x.x
384
-
385
- # 本地测试安装
386
- npm install -g xiaozhi-client@latest
387
- ```
388
-
389
- ### 📊 发版数据监控
390
-
391
- 发版后建议关注以下数据:
392
- - **下载量**:NPM 包的下载统计
393
- - **GitHub Stars**:关注度变化
394
- - **Issues**:是否有新的问题报告
395
- - **用户反馈**:社区反馈和使用情况
396
-
397
- ## 🆘 故障排除
398
-
399
- ### 🚨 常见问题及解决方案
400
-
401
- #### 问题 1:NPM 发布失败
402
-
403
- **错误信息**:
404
- ```
405
- npm ERR! 403 Forbidden - PUT https://registry.npmjs.org/xiaozhi-client
406
- npm ERR! 403 You do not have permission to publish "xiaozhi-client"
407
- ```
408
-
409
- **解决方案**:
410
- 1. **检查 NPM Token**:
411
- ```bash
412
- # 验证 token 是否有效
413
- npm whoami
414
- ```
415
- 2. **检查包权限**:
416
- ```bash
417
- # 检查是否有发布权限
418
- npm access list collaborators xiaozhi-client
419
- ```
420
- 3. **更新 GitHub Secrets**:
421
- - 重新生成 NPM Token
422
- - 更新 GitHub 仓库中的 `NPM_TOKEN` Secret
423
-
424
- #### 问题 2:GitHub Release 创建失败
425
-
426
- **错误信息**:
427
- ```
428
- Error: Resource not accessible by integration
429
- ```
430
-
431
- **解决方案**:
432
- 1. **检查仓库权限**:确认 GitHub Actions 有 `contents: write` 权限
433
- 2. **检查分支保护**:确认 main 分支保护规则允许 Actions 推送
434
- 3. **检查 Token 权限**:`GITHUB_TOKEN` 应自动具备所需权限
435
-
436
- #### 问题 3:版本号冲突
437
-
438
- **错误信息**:
439
- ```
440
- npm ERR! 403 Forbidden - PUT https://registry.npmjs.org/xiaozhi-client
441
- npm ERR! 403 You cannot publish over the previously published versions
442
- ```
443
-
444
- **解决方案**:
445
- 1. **检查版本号**:确认要发布的版本号未被使用
446
- 2. **递增版本号**:使用更高的版本号
447
- 3. **删除错误标签**(如果需要):
448
- ```bash
449
- git tag -d v1.x.x
450
- git push origin :refs/tags/v1.x.x
451
- ```
452
-
453
- #### 问题 4:构建失败
454
-
455
- **错误信息**:
456
- ```
457
- Error: Command failed: pnpm run check:all
458
- ```
459
-
460
- **解决方案**:
461
- 1. **本地测试**:
462
- ```bash
463
- pnpm install
464
- pnpm run check:all
465
- pnpm run build
466
- ```
467
- 2. **修复问题**:根据错误信息修复代码问题
468
- 3. **重新发版**:问题修复后重新触发发版
469
-
470
- #### 问题 5:变更日志生成失败
471
-
472
- **错误信息**:
473
- ```
474
- Empty release notes
475
- ```
476
-
477
- **解决方案**:
478
- 1. **检查 Commit 格式**:确保 commit 遵循 Conventional Commits 规范
479
- 2. **手动生成**:
480
- ```bash
481
- npx conventional-changelog -p conventionalcommits -i docs/changelog.mdx -s
482
- ```
483
- 3. **检查配置**:确认 `.release-it.json` 配置正确
484
-
485
- ### 🔍 调试方法
486
-
487
- #### 1. 使用预演模式
488
- ```bash
489
- # 在 GitHub Actions 中勾选 "预演模式"
490
- # 或本地运行
491
- npx release-it --dry-run
492
- ```
493
-
494
- #### 2. 查看详细日志
495
- 1. 进入 GitHub Actions 页面
496
- 2. 点击失败的工作流
497
- 3. 展开各个步骤查看详细错误信息
498
-
499
- #### 3. 本地调试
500
- ```bash
501
- # 本地测试 release-it 配置
502
- npx release-it --dry-run --verbose
503
-
504
- # 检查 conventional-changelog
505
- npx conventional-changelog -p conventionalcommits -r 2
506
-
507
- # 测试 NPM 发布
508
- npm publish --dry-run
509
- ```
510
-
511
- ### 📞 获取帮助
512
-
513
- 如果遇到无法解决的问题:
514
-
515
- 1. **查看文档**:重新阅读本指南相关部分
516
- 2. **搜索 Issues**:在 [GitHub Issues](https://github.com/shenjingnan/xiaozhi-client/issues) 中搜索类似问题
517
- 3. **创建 Issue**:详细描述问题和错误信息
518
- 4. **联系维护者**:通过 GitHub 或其他渠道联系项目维护者
519
-
520
- ### 🔄 回滚操作
521
-
522
- 如果发版出现严重问题,需要回滚:
523
-
524
- #### 回滚 NPM 发布
525
- ```bash
526
- # 废弃有问题的版本(不推荐删除)
527
- npm deprecate xiaozhi-client@1.x.x "This version has critical issues, please upgrade"
528
- ```
529
-
530
- #### 回滚 GitHub Release
531
- 1. 进入 [Releases 页面](https://github.com/shenjingnan/xiaozhi-client/releases)
532
- 2. 找到有问题的 Release
533
- 3. 点击 "Edit" → 勾选 "This is a pre-release" 或删除 Release
534
-
535
- #### 删除 Git 标签
536
- ```bash
537
- # 删除本地标签
538
- git tag -d v1.x.x
539
-
540
- # 删除远程标签
541
- git push origin :refs/tags/v1.x.x
542
- ```
543
-
544
- ---
545
-
546
- ## 🎉 总结
547
-
548
- 现在你已经掌握了 xiaozhi-client 的完整发版流程!
549
-
550
- **记住这些要点**:
551
- - ✅ 首次发版建议使用预演模式
552
- - ✅ 遵循 Conventional Commits 规范
553
- - ✅ 发版后进行完整的验证检查
554
- - ✅ 遇到问题时查看详细日志
555
- - ✅ 不确定时寻求帮助
556
-
557
- **快速链接**:
558
- - 📦 [NPM 包页面](https://www.npmjs.com/package/xiaozhi-client)
559
- - 🏷️ [GitHub Releases](https://github.com/shenjingnan/xiaozhi-client/releases)
560
- - 🔧 [GitHub Actions](https://github.com/shenjingnan/xiaozhi-client/actions)
561
- - 📋 [项目 Issues](https://github.com/shenjingnan/xiaozhi-client/issues)
562
-
563
- 祝你发版顺利!🚀
@@ -1,122 +0,0 @@
1
- # SettingManager 使用文档
2
-
3
- SettingManager 是一个单例配置管理器,用于管理 `.xiaozhi/settings.json` 配置文件。
4
-
5
- ## 特性
6
-
7
- - **单例模式**: 确保全局只有一个配置管理实例
8
- - **只读访问**: 外部只能通过方法获取配置,不能直接修改
9
- - **方法更新**: 必须通过提供的方法来更新配置
10
- - **自动保存**: 配置更新后自动保存到文件
11
- - **嵌套键支持**: 支持使用点号分隔的嵌套键,如 `xiaozhi.endpoint`
12
-
13
- ## 基本用法
14
-
15
- ### 获取实例
16
-
17
- ```javascript
18
- import SettingManager from './src/settingManager.js';
19
-
20
- const settings = SettingManager.getInstance();
21
- ```
22
-
23
- ### 读取配置
24
-
25
- ```javascript
26
- // 读取简单配置
27
- const endpoint = settings.get('xiaozhi.endpoint');
28
-
29
- // 读取嵌套配置
30
- const command = settings.get('mcpServers.amap-maps.command');
31
-
32
- // 获取所有配置(只读副本)
33
- const allSettings = settings.getAll();
34
- ```
35
-
36
- ### 更新配置
37
-
38
- ```javascript
39
- // 更新现有配置
40
- settings.set('xiaozhi.endpoint', 'wss://new-endpoint.com');
41
-
42
- // 添加新配置
43
- settings.set('myApp.newSetting', 'value');
44
-
45
- // 创建嵌套配置
46
- settings.set('myApp.nested.deep.setting', 'deep value');
47
- ```
48
-
49
- ### 检查配置是否存在
50
-
51
- ```javascript
52
- if (settings.has('xiaozhi.endpoint')) {
53
- console.log('Endpoint is configured');
54
- }
55
- ```
56
-
57
- ### 删除配置
58
-
59
- ```javascript
60
- // 删除配置项
61
- settings.delete('myApp.temporarySetting');
62
-
63
- // 删除嵌套配置
64
- settings.delete('myApp.nested.deep.setting');
65
- ```
66
-
67
- ### 重新加载配置
68
-
69
- ```javascript
70
- // 从文件重新加载配置(如果文件被外部修改)
71
- settings.reload();
72
- ```
73
-
74
- ## 配置文件结构
75
-
76
- 配置文件位于 `.xiaozhi/settings.json`,典型结构如下:
77
-
78
- ```json
79
- {
80
- "xiaozhi": {
81
- "endpoint": "wss://api.xiaozhi.me/mcp/?token=..."
82
- },
83
- "mcpServers": {
84
- "amap-maps": {
85
- "command": "npx",
86
- "args": ["-y", "@amap/amap-maps-mcp-server"],
87
- "env": {
88
- "AMAP_MAPS_API_KEY": "your-api-key"
89
- }
90
- }
91
- }
92
- }
93
- ```
94
-
95
- ## 在 mcpWebSocketClient.js 中的使用
96
-
97
- 原来的代码使用环境变量:
98
-
99
- ```javascript
100
- const endpointUrl = process.env.MCP_ENDPOINT;
101
- ```
102
-
103
- 现在使用 SettingManager:
104
-
105
- ```javascript
106
- import SettingManager from './settingManager.js';
107
-
108
- const settingManager = SettingManager.getInstance();
109
- const endpointUrl = settingManager.get('xiaozhi.endpoint');
110
- ```
111
-
112
- ## 注意事项
113
-
114
- 1. **单例模式**: 无论在哪里调用 `SettingManager.getInstance()`,都会返回同一个实例
115
- 2. **自动保存**: 调用 `set()` 或 `delete()` 方法后,配置会立即保存到文件
116
- 3. **只读访问**: `get()` 和 `getAll()` 返回的是配置的副本,直接修改不会影响实际配置
117
- 4. **错误处理**: 如果配置文件损坏或无法访问,会抛出相应的错误
118
- 5. **目录创建**: 如果 `.xiaozhi` 目录不存在,会自动创建
119
-
120
- ## 示例
121
-
122
- 查看 `examples/setting_manager_usage.js` 文件获取完整的使用示例。