xuanzhu 0.4.0 → 0.4.2
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 +48 -31
- package/dist/cli.js +338 -347
- package/docs/ARCHITECTURE.md +88 -37
- package/docs/README.en.md +42 -27
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -129,10 +129,10 @@ npm unlink -g xuanzhu && npm i -g xuanzhu
|
|
|
129
129
|
## 快速开始
|
|
130
130
|
|
|
131
131
|
```bash
|
|
132
|
-
# 1.
|
|
132
|
+
# 1. 配置模型与服务商(交互式,可添加多个模型)
|
|
133
133
|
xzh model
|
|
134
134
|
|
|
135
|
-
# 2.
|
|
135
|
+
# 2. 启动玄猪(默认使用上次用过的模型)
|
|
136
136
|
xzh
|
|
137
137
|
```
|
|
138
138
|
|
|
@@ -148,14 +148,13 @@ xzh
|
|
|
148
148
|
| --- | --- |
|
|
149
149
|
| `xzh` | 在当前目录启动全屏交互界面 |
|
|
150
150
|
| `xzh <目录>` | 在指定项目目录启动,例如 `xzh /home` |
|
|
151
|
-
| `xzh model` | 交互式管理多模型(新增 / 删除 /
|
|
152
|
-
| `xzh model list` |
|
|
151
|
+
| `xzh model` | 交互式管理多模型(新增 / 删除 / 查看全部) |
|
|
152
|
+
| `xzh model list` | 列出**已配置**的模型(按回退顺序) |
|
|
153
153
|
| `xzh model all` | 列出**所有内置可用**的模型(按服务商分组,标注已配置项) |
|
|
154
|
-
| `xzh model add <provider> <model> [
|
|
154
|
+
| `xzh model add <provider> <model> [上下文窗口] [on\|off]` | 新增模型(末尾 `on`/`off` = 是否支持图片输入) |
|
|
155
155
|
| `xzh model remove <id\|序号>` | 删除模型 |
|
|
156
|
-
| `xzh model weight <id\|序号> <权重>` | 调整模型的调用权重 |
|
|
157
156
|
| `xzh model context <id\|序号> <大小>` | 调整上下文窗口(token,如 `128000`) |
|
|
158
|
-
| `xzh model
|
|
157
|
+
| `xzh model vision <id\|序号> <on\|off>` | 标注是否支持图片输入 |
|
|
159
158
|
| `xzh config` | 查看当前配置(API Key 脱敏) |
|
|
160
159
|
| `xzh config edit` | 使用 `nano` 编辑配置文件 |
|
|
161
160
|
| `xzh config path` | 打印配置文件路径 |
|
|
@@ -191,8 +190,8 @@ XZH_HOME=/path/to/dir xzh # 改用 /path/to/dir/config.json
|
|
|
191
190
|
"provider": "deepseek",
|
|
192
191
|
"model": "deepseek-chat",
|
|
193
192
|
"models": [
|
|
194
|
-
{ "id": "deepseek/deepseek-chat", "provider": "deepseek", "model": "deepseek-chat"
|
|
195
|
-
{ "id": "openai/gpt-4o", "provider": "openai", "model": "gpt-4o"
|
|
193
|
+
{ "id": "deepseek/deepseek-chat", "provider": "deepseek", "model": "deepseek-chat" },
|
|
194
|
+
{ "id": "openai/gpt-4o", "provider": "openai", "model": "gpt-4o" }
|
|
196
195
|
],
|
|
197
196
|
"temperature": 0.2,
|
|
198
197
|
"maxToolRounds": 200,
|
|
@@ -209,35 +208,41 @@ XZH_HOME=/path/to/dir xzh # 改用 /path/to/dir/config.json
|
|
|
209
208
|
}
|
|
210
209
|
```
|
|
211
210
|
|
|
212
|
-
> 旧版配置(只有 `provider` / `model`、没有 `models
|
|
211
|
+
> 旧版配置(只有 `provider` / `model`、没有 `models`)依然可用:会被视为唯一的一个模型。
|
|
212
|
+
> 旧配置里的 `weight` / `decayed` 字段已废弃,读取时会被忽略、下次保存时自动清掉。
|
|
213
213
|
|
|
214
|
-
###
|
|
214
|
+
### 多模型与自动回退
|
|
215
215
|
|
|
216
|
-
`models`
|
|
216
|
+
`models` 可配置多个模型,**列表顺序就是优先级**(没有权重):
|
|
217
217
|
|
|
218
218
|
| 行为 | 说明 |
|
|
219
219
|
| --- | --- |
|
|
220
|
-
|
|
|
221
|
-
|
|
|
222
|
-
|
|
|
223
|
-
|
|
|
224
|
-
|
|
|
225
|
-
|
|
|
226
|
-
|
|
|
220
|
+
| 默认选择 | 使用**上次用过的**那个模型(记在 `provider` / `model` 里,随每次切换更新) |
|
|
221
|
+
| 上次那个不在了 | 退回列表**第一项**(被删除、或配置里没有记录) |
|
|
222
|
+
| 调用失败 | 自动切换到列表里的**下一个**(走到末尾会绕回表头),单次请求内每个模型最多试一次 |
|
|
223
|
+
| 全部失败 | 直到所有模型都试过才报错,并说明「已配置的模型都试过了」 |
|
|
224
|
+
| 记住结果 | 每次切换都会写回配置,下次启动直接用最后成功的那个 |
|
|
225
|
+
| 配置错误不回退 | 密钥无效 / 无权限 / 模型名或端点不存在时**不切换、不写盘**,只提示检查配置 —— 配置不改就永远失败,换模型只会把整条回退链白走一遍 |
|
|
226
|
+
| 上下文超限不回退 | 超出模型窗口时**收敛历史后自动重试**,也不切换模型(见上一节) |
|
|
227
|
+
| `Ctrl+C` / `Ctrl+D` 中断 | 不算失败,不触发回退 |
|
|
227
228
|
|
|
228
229
|
```bash
|
|
229
230
|
xzh model # 交互式菜单
|
|
230
|
-
xzh model list #
|
|
231
|
+
xzh model list # 查看已配置的模型(按回退顺序,❯ 标出当前使用)
|
|
231
232
|
xzh model all # 查看所有内置可用模型
|
|
232
|
-
xzh model add openai gpt-4o
|
|
233
|
-
xzh model
|
|
233
|
+
xzh model add openai gpt-4o # 新增(追加到末尾,成为最后一道回退)
|
|
234
|
+
xzh model add openai gpt-4o 128000 # 顺带指定上下文窗口
|
|
235
|
+
xzh model add openai gpt-4o 128000 on # 再顺带标注支持图片输入
|
|
234
236
|
xzh model context openai/gpt-4o 128000 # 调整上下文窗口(留空则自动推断)
|
|
235
237
|
xzh model vision openai/gpt-4o on # 标注支持图片输入(推断不出来时用)
|
|
236
238
|
xzh model remove openai/gpt-4o # 删除(id / 模型名 / 序号均可)
|
|
237
|
-
xzh model reset # 全部恢复默认权重
|
|
238
239
|
```
|
|
239
240
|
|
|
240
|
-
|
|
241
|
+
想让某个模型**不参与回退**,直接 `xzh model remove` 删掉即可。当前使用的模型显示在界面顶部与状态栏,
|
|
242
|
+
发生回退时输出区会给出提示。
|
|
243
|
+
|
|
244
|
+
> ⚠️ `xzh model add` 的位置参数自 v0.5 起**整体前移一位**(原来的 `[权重]` 已取消):
|
|
245
|
+
> 现在是 `add <provider> <model> [上下文窗口] [on|off]`。
|
|
241
246
|
|
|
242
247
|
### 上下文窗口的作用
|
|
243
248
|
|
|
@@ -264,8 +269,8 @@ xzh model reset # 全部恢复默认权重
|
|
|
264
269
|
> 保守余量必须留住(放宽反而更容易撞窗口)。
|
|
265
270
|
|
|
266
271
|
若估算偏差导致仍然超限(服务端返回 `context_length_exceeded` 一类错误),玄猪会
|
|
267
|
-
|
|
268
|
-
|
|
272
|
+
**把预算收敛到一半再自动重试一次**,而不会把它当成模型故障去切换模型 ——
|
|
273
|
+
换模型拿同样长的消息重发只会同样失败,还会白白走一遍回退链。
|
|
269
274
|
|
|
270
275
|
### 意图分析(可选,默认关闭)
|
|
271
276
|
|
|
@@ -290,7 +295,7 @@ xzh --no-intent # 仅本次启动强制关闭
|
|
|
290
295
|
|
|
291
296
|
- 意图请求**不携带工具声明**,也不写入对话历史(保持主流程上下文干净)
|
|
292
297
|
- 分析结果会先展示在输出区(附原始消息),便于你确认它理解对了
|
|
293
|
-
-
|
|
298
|
+
- 失败或返回为空时**自动回退**为你的原始输入,不影响主流程,也不会因此触发模型回退
|
|
294
299
|
- 代价:每条消息多一次模型请求(token 消耗约翻倍),故默认关闭
|
|
295
300
|
|
|
296
301
|
API Key 也可以来自环境变量,优先级低于配置文件:
|
|
@@ -732,8 +737,10 @@ XZH_KITTY_KEYS=1 xzh
|
|
|
732
737
|
默认开启自动批准(`autoApprove: true`),所有工具——包括写文件与执行命令——都会直接执行、不再询问;
|
|
733
738
|
执行 `/auto off` 可切换为逐项确认,设置会持久保存到配置文件。
|
|
734
739
|
|
|
735
|
-
其中 `/switch <目录>`
|
|
736
|
-
|
|
740
|
+
其中 `/switch <目录>` 用于切换项目:相对路径基于当前目录解析,支持 `~` 展开。
|
|
741
|
+
切换后所有文件读写与命令执行都会作用于新目录,并且会**自动载入该项目最近一次会话**接着聊
|
|
742
|
+
(会话文件也随之换到该项目名下;当前对话已存档在原项目,切回后 `/resume` 可找回)。
|
|
743
|
+
若该项目还没有历史会话,则是全新开局。
|
|
737
744
|
|
|
738
745
|
## 项目结构
|
|
739
746
|
|
|
@@ -791,11 +798,21 @@ registry 已可见(npm 有 staging 阶段,期间 `npm view` / `npm install`
|
|
|
791
798
|
|
|
792
799
|
- **[CodeBuddy](https://github.com/olasunkanmi-SE/codebuddy)** —— 作者
|
|
793
800
|
[Oyinlola Olasunkanmi Raymond](https://github.com/olasunkanmi-SE)。
|
|
794
|
-
|
|
795
|
-
|
|
801
|
+
玄猪由该项目改造而来,依 MIT 许可**保留其原始版权声明**。
|
|
802
|
+
|
|
796
803
|
- **[Playwright](https://github.com/microsoft/playwright)** —— 由 Microsoft 开源。
|
|
797
804
|
内置的 `playwright` 技能基于它实现浏览器自动化与端到端测试。
|
|
798
805
|
|
|
806
|
+
- **[AutoJs6](https://github.com/SuperMonster003/AutoJs6)** —— 作者 SuperMonster003。
|
|
807
|
+
手机设备桥(`xzh device`)的两套线协议都对着它的实现逐一核对,
|
|
808
|
+
内置的 `autojs6` 技能也按它的源码整理而成 ——
|
|
809
|
+
这才让「用脚本操作手机」成为可照做的能力,而不是让模型盲写。
|
|
810
|
+
|
|
811
|
+
- **[OfficeCLI](https://github.com/iOfficeAI/OfficeCLI)** —— 由 iOfficeAI 开源。
|
|
812
|
+
内置的 `officecli` 技能基于它读写与自动化 Word / Excel / PowerPoint
|
|
813
|
+
(技能内容整理自该项目仓库的 `SKILL.md` 及其参考文件);
|
|
814
|
+
它是零依赖的单文件 CLI、无需安装 Office,`xzh setup` 会一并装好。
|
|
815
|
+
|
|
799
816
|
同时也感谢所有直接与间接依赖的开源项目,以及 npm 生态中的众多工具
|
|
800
817
|
(完整清单见 `package.json`)。
|
|
801
818
|
|