小桃子 CLI(xtz)
September 8, 2026 · View on GitHub
English | 中文
xtz 是小桃子 DSH 的用户产品:钉死版本的 dsh 外壳。apps/cli/ 是独立、可发布的 pnpm workspace,不是 Harness 插件,也不加入根目录的 plugins/* workspace。xtz 启动后的样子见产品画廊。
CLI 的 Node 范围与 DeepSeek Harness 一致(^22.19.0 || >=24.0.0)。DSH 固定为 @deepseek-ai/dsh 0.1.2-rc.1,其他 DSH 版本不视为兼容。npm 和 bun 只负责装包,xtz 始终用 Node 运行。
安装
先把 Node.js ^22.19.0 或 >=24 放到 PATH,然后任选一种:
curl -fsSL https://raw.githubusercontent.com/kedoupi/xiaotaozi-dsh/main/apps/cli/scripts/install.sh | sh
curl -fsSL https://raw.githubusercontent.com/kedoupi/xiaotaozi-dsh/main/apps/cli/scripts/install.sh | sh -s -- --bun
npm install -g xiaotaozi-dsh-cli
bun add -g xiaotaozi-dsh-cli
脚本在 npm 和 bun 都在时默认走 npm;--bun 或 --pnpm 可指定安装器。装完:
xtz --help
xtz
xtz doctor
启动小桃子
xtz start
直接运行 xtz / xtz start 会备好正式 ~/.dsh/profiles/web,种上 plugins/ 下全部自研插件,后台拉起官方 dsh web(默认 127.0.0.1:3080),打印认证地址并打开浏览器。额外插件在应用内市场安装。
DSH 0.1.2 打印的地址带一次性 ?token= 启动令牌。xtz 从 dsh web: 标准输出捕获它,写入 $DSH_HOME/xiaotaozi-xtz-web.auth(权限 0600),并打开该地址。没有这张 cookie 时打开 / 会 401。xtz open 复用匹配的认证文件。不要把 token 贴进 issue 或日志。
第一次启动会安装默认插件。全局 CLI 升级后,下一次服务已停止的 start / restart 会把所有默认插件作为一个事务同步到该产品快照。服务运行时,start 不会热改 profile,只会提示运行 xtz restart。同步或验证失败时,xtz 会恢复原 profile,且不会启动 Web。
当前开放命令
xtz # 等同 start
xtz start [--port N] # 服务停止时同步默认插件,后台启动,打印认证地址并打开浏览器
xtz stop # 停止 xtz 自己拉起的进程
xtz restart # 先停再启
xtz open # 打开当前认证地址
xtz status # 只读检查记下的端口
xtz doctor # 检查运行时、xtz 戳、profile 和端口
xtz config path # 打印正式 web profile 的 patch 路径
xtz version # 显示 CLI、Node 和固定 DSH 版本
xtz help # 显示帮助
额外插件:打开小桃子后在市场里安装。不要用 xtz plugin。
安全边界
默认地址是 127.0.0.1:3080。若该端口被其他程序占用,交互式 xtz start 可以改用 3082+(永远不用 3081)。非交互运行不会换端口,除非指定 --port。
xtz 只管理自己拉起的进程($DSH_HOME/xiaotaozi-xtz-web.pid),不会结束自己没拉起的进程。若 3080 已经在提供小桃子身份、但不是这个 pid,xtz 不会再起第二个实例。
xtz 只有在 loopback-only、带版本的小桃子身份端点返回精确 v1 契约时才判断服务健康。
正式命令不会探测或回退到仓库沙箱 .dsh-home / 3081。
有意禁用
init、plugin、run、ask、config dump、config defaults、update 都会安全拒绝。
本仓库开发
apps/cli/ 是独立 workspace,根目录 pnpm install 不会装它。Node 必须精确等于 .node-version。然后:
cd apps/cli
pnpm install
pnpm check
node lib/cli.js --help
node lib/cli.js version --json
pnpm check 做类型检查、重建 lib/,并用假 home 跑单测。真实 ~/.dsh / 3080 是用户环境。正式命令不会用 .dsh-home / 3081。在本仓库里,pnpm dev 会跑 node apps/cli/lib/cli.js --sandbox start --foreground,沙箱和正式共用同一套 CLI。正式 home 不干净时 doctor 失败是预期行为,不要为了变绿而放宽检查。
正式 home 的默认种子由第一次 xtz start 写;额外插件走应用内市场。不要把本仓库 link: 进正式 web。
pnpm link --global 是可选步骤,只在需要像用户一样在 PATH 上有 xtz 时使用。
退出码
0:请求的操作成功。1:服务未运行或就绪检查失败。2:参数错误、端口监听者身份未验证,或操作被安全策略拒绝。