{"_id":"@1mingji1/xiao-zhi-cli","_rev":"5-5e0f7bee0bfda4118c196573838fc905","name":"@1mingji1/xiao-zhi-cli","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@1mingji1/xiao-zhi-cli","version":"0.1.0","keywords":["cli","ai","agent","ollama","openai","terminal","opentui"],"author":{"name":"Jin Xiao Zhi"},"license":"MIT","_id":"@1mingji1/xiao-zhi-cli@0.1.0","maintainers":[{"name":"1mingji1","email":"970905469@qq.com"}],"homepage":"https://github.com/your-org/xiao-zhi-cli#readme","bugs":{"url":"https://github.com/your-org/xiao-zhi-cli/issues"},"bin":{"xiaozhi":"bin/xiao-zhi.js"},"dist":{"shasum":"b334d4af6023d058a36a97aea28094cded13c994","tarball":"https://registry.npmjs.org/@1mingji1/xiao-zhi-cli/-/xiao-zhi-cli-0.1.0.tgz","fileCount":29,"integrity":"sha512-hMa/hfv1lIjm5cXahfOO2auiKUCwowB9xEMOcHHCroMKVc/NqZa6jWTyoHpHjY17F5rxzFiE47WK0/8tzA+Mfg==","signatures":[{"sig":"MEYCIQDlAVgfCw9bmwsmuHaldUaGB/BNfOFTVXXnSNYHU7yUuAIhAOVHszYAI0UJ91BLBbCW1AuN00McpXww3/uyJYy59Xaa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63084},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js"},"gitHead":"762cd621bc1548d619b35d1c8b4362d5b997e44c","private":false,"scripts":{"dev":"node scripts/start.mjs","build":"tsc -p tsconfig.json","start":"node dist/index.js","prepack":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"1mingji1","email":"970905469@qq.com"},"repository":{"url":"git+https://github.com/your-org/xiao-zhi-cli.git","type":"git"},"_npmVersion":"11.18.0","description":"Xiao Zhi CLI（小智）：一个简单的终端 AI Agent，支持 OpenAI 兼容接口（Ollama / DeepSeek / Kimi 等）和工具调用","directories":{},"productName":"jin-xiao-zhi","_nodeVersion":"22.23.2","dependencies":{"@opentui/core":"0.5.11"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/xiao-zhi-cli_0.1.0_1788943872629_0.9860440962211106","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@1mingji1/xiao-zhi-cli","version":"0.1.1","keywords":["cli","ai","agent","ollama","openai","terminal","opentui"],"author":{"name":"Jin Xiao Zhi"},"license":"MIT","_id":"@1mingji1/xiao-zhi-cli@0.1.1","maintainers":[{"name":"1mingji1","email":"970905469@qq.com"}],"homepage":"https://github.com/your-org/xiao-zhi-cli#readme","bugs":{"url":"https://github.com/your-org/xiao-zhi-cli/issues"},"bin":{"xiaozhi":"bin/xiao-zhi.js"},"dist":{"shasum":"0a0a97cdbfef57afcd56f73e1cf1cbf4e494733f","tarball":"https://registry.npmjs.org/@1mingji1/xiao-zhi-cli/-/xiao-zhi-cli-0.1.1.tgz","fileCount":29,"integrity":"sha512-W2GRqM4MZGQg58hpR6/ODbhLl/WZQuOvWDU4W8XV65qsaQSTtBd+gyZRoWPRR2Ve1FJZ7v2ipwMdz3Ucd8dflA==","signatures":[{"sig":"MEQCIBGdxtcQ3I3XmeejEt57fEnRGBjRP+GinxIPOaaM/oALAiByzWJAO8bryAcTm7FEqq6HXwWI/aNHK3u6SnLKpnstHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65846},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js"},"gitHead":"ad2b1ea9cd52d8c20bad30d0a760d32946a486d5","private":false,"scripts":{"dev":"node scripts/start.mjs","build":"tsc -p tsconfig.json","start":"node dist/index.js","prepack":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"1mingji1","email":"970905469@qq.com"},"repository":{"url":"git+https://github.com/your-org/xiao-zhi-cli.git","type":"git"},"_npmVersion":"11.18.0","description":"Xiao Zhi CLI（小智）：一个简单的终端 AI Agent，支持 OpenAI 兼容接口（Ollama / DeepSeek / Kimi 等）和工具调用","directories":{},"productName":"jin-xiao-zhi","_nodeVersion":"26.8.1","dependencies":{"@opentui/core":"0.5.11"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/xiao-zhi-cli_0.1.1_1788944831542_0.04793042694230798","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@1mingji1/xiao-zhi-cli","version":"0.1.2","keywords":["cli","ai","agent","ollama","openai","terminal","opentui"],"author":{"name":"Jin Xiao Zhi"},"license":"MIT","_id":"@1mingji1/xiao-zhi-cli@0.1.2","maintainers":[{"name":"1mingji1","email":"970905469@qq.com"}],"homepage":"https://github.com/your-org/xiao-zhi-cli#readme","bugs":{"url":"https://github.com/your-org/xiao-zhi-cli/issues"},"bin":{"xiaozhi":"bin/xiao-zhi.js"},"dist":{"shasum":"a605f8a8301edc9078f0633d652af9ecf6770430","tarball":"https://registry.npmjs.org/@1mingji1/xiao-zhi-cli/-/xiao-zhi-cli-0.1.2.tgz","fileCount":29,"integrity":"sha512-ntMrAq8mcUf4jiAS7ETmVJRKR45wp3UYRu9blGQ5riA4LQQk4JZY7NheLpXGcceLZ2VR5qWzZAkwyIpuInmUUg==","signatures":[{"sig":"MEUCIQD8xUVh6g7rIdP1pf8Vhwzu83DNvyVRssVDo8ZEYEfcIQIgKTBxd3jTgZfZUDTJTBi5Dzu8E77hBqLK1cJxiCY25wA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":65867},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js"},"gitHead":"411d915473f1e4753e2368386e2169437b2efd74","private":false,"scripts":{"dev":"node scripts/start.mjs","build":"tsc -p tsconfig.json","start":"node dist/index.js","prepack":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"1mingji1","email":"970905469@qq.com"},"repository":{"url":"git+https://github.com/your-org/xiao-zhi-cli.git","type":"git"},"_npmVersion":"11.18.0","description":"Xiao Zhi CLI（小智）：一个简单的终端 AI Agent，支持 OpenAI 兼容接口（Ollama / DeepSeek / Kimi 等）和工具调用","directories":{},"productName":"jin-xiao-zhi","_nodeVersion":"22.23.2","dependencies":{"@opentui/core":"0.5.11"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/xiao-zhi-cli_0.1.2_1788945355559_0.2756565296240885","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@1mingji1/xiao-zhi-cli","version":"0.1.3","keywords":["cli","ai","agent","ollama","openai","terminal","opentui"],"author":{"name":"Jin Xiao Zhi"},"license":"MIT","_id":"@1mingji1/xiao-zhi-cli@0.1.3","maintainers":[{"name":"1mingji1","email":"970905469@qq.com"}],"homepage":"https://github.com/your-org/xiao-zhi-cli#readme","bugs":{"url":"https://github.com/your-org/xiao-zhi-cli/issues"},"bin":{"xiaozhi":"bin/xiao-zhi.js"},"dist":{"shasum":"c75f6202bae9354cbb5853759a3c04f96828334c","tarball":"https://registry.npmjs.org/@1mingji1/xiao-zhi-cli/-/xiao-zhi-cli-0.1.3.tgz","fileCount":29,"integrity":"sha512-+NADoR4/oDHIc1z+xwgzEWd8d8CaSSonkPuFvw0p5eix1zYLD1CPh2t8eWRihIsjq7tGw8F4xiAvCY1hF5GY5A==","signatures":[{"sig":"MEUCIQDjOBnLYlWV2f8ZCwpC3qupCFHrr0oLJwyLYN+01FStuAIgFs6sqHYXJB+uky/iCOx2m1k7OzbbX2BSQkbCyijQxL8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67332},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":"./dist/index.js"},"gitHead":"f533cd6312a9a28f6ae0068806d069828fb23aaa","private":false,"scripts":{"dev":"node scripts/start.mjs","build":"tsc -p tsconfig.json","start":"node dist/index.js","prepack":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"1mingji1","email":"970905469@qq.com"},"repository":{"url":"git+https://github.com/your-org/xiao-zhi-cli.git","type":"git"},"_npmVersion":"11.18.0","description":"Xiao Zhi CLI（小智）：一个简单的终端 AI Agent，支持 OpenAI 兼容接口（Ollama / DeepSeek / Kimi 等）和工具调用","directories":{},"productName":"jin-xiao-zhi","_nodeVersion":"26.8.1","dependencies":{"@opentui/core":"0.5.11"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/xiao-zhi-cli_0.1.3_1788947058254_0.8753835436691839","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@1mingji1/xiao-zhi-cli","version":"0.1.4","private":false,"type":"module","description":"Xiao Zhi CLI（小智）：一个简单的终端 AI Agent，支持 OpenAI 兼容接口（Ollama / DeepSeek / Kimi 等）和工具调用","license":"MIT","author":{"name":"Jin Xiao Zhi"},"repository":{"type":"git","url":"git+https://github.com/your-org/xiao-zhi-cli.git"},"homepage":"https://github.com/your-org/xiao-zhi-cli#readme","keywords":["cli","ai","agent","ollama","openai","terminal","opentui"],"bin":{"xiaozhi":"bin/xiao-zhi.js"},"main":"dist/index.js","exports":{".":"./dist/index.js"},"scripts":{"build":"tsc -p tsconfig.json","prepack":"npm run build","dev":"node scripts/start.mjs","start":"node dist/index.js","typecheck":"tsc --noEmit"},"engines":{"node":">=18.0.0"},"devDependencies":{"@types/node":"^22.10.0","typescript":"^5.7.0"},"dependencies":{"@opentui/core":"0.5.11"},"productName":"jin-xiao-zhi","gitHead":"f533cd6312a9a28f6ae0068806d069828fb23aaa","types":"./dist/index.d.ts","_id":"@1mingji1/xiao-zhi-cli@0.1.4","bugs":{"url":"https://github.com/your-org/xiao-zhi-cli/issues"},"_nodeVersion":"26.8.1","_npmVersion":"11.18.0","dist":{"integrity":"sha512-6UuDqmQRpQ9ABLlVhKEvEX0vqELtoRirsgV5uOoVdqGCDE2Nq4uYYmQuphWc8ip5WeMT+b1OFWCcKDTeUHf5ew==","shasum":"96a0488078c60a227e2d7cf2375e6a02bc4d16b2","tarball":"https://registry.npmjs.org/@1mingji1/xiao-zhi-cli/-/xiao-zhi-cli-0.1.4.tgz","fileCount":29,"unpackedSize":67344,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCl+RAP8lKweoDU1Y2NE3l+HwSpGzGAR7p9c3CGdUKdPQIgSDPPR+tSCRWlsSHwinxKQ5xlHnI5aQvcyz4YAhF/l3k="}]},"_npmUser":{"name":"1mingji1","email":"970905469@qq.com"},"directories":{},"maintainers":[{"name":"1mingji1","email":"970905469@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/xiao-zhi-cli_0.1.4_1788947230051_0.5827175451029329"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-09T08:51:12.322Z","modified":"2026-09-09T09:47:10.331Z","0.1.0":"2026-09-09T08:51:12.762Z","0.1.1":"2026-09-09T09:07:11.675Z","0.1.2":"2026-09-09T09:15:55.697Z","0.1.3":"2026-09-09T09:44:18.393Z","0.1.4":"2026-09-09T09:47:10.193Z"},"bugs":{"url":"https://github.com/your-org/xiao-zhi-cli/issues"},"author":{"name":"Jin Xiao Zhi"},"license":"MIT","homepage":"https://github.com/your-org/xiao-zhi-cli#readme","keywords":["cli","ai","agent","ollama","openai","terminal","opentui"],"repository":{"type":"git","url":"git+https://github.com/your-org/xiao-zhi-cli.git"},"description":"Xiao Zhi CLI（小智）：一个简单的终端 AI Agent，支持 OpenAI 兼容接口（Ollama / DeepSeek / Kimi 等）和工具调用","maintainers":[{"name":"1mingji1","email":"970905469@qq.com"}],"readme":"# Xiao Zhi CLI（小智）\r\n\r\n小智（Xiao Zhi）——一个带 OpenTUI 界面的终端 AI Agent，TypeScript 编写，支持任意 OpenAI 兼容接口和工具调用。\r\n\r\n## 特性\r\n\r\n- OpenTUI 黑色终端界面：滚动对话区、输入框和底部当前目录状态栏\r\n- 流式输出到终端，支持 Ctrl+C 中断当前生成\r\n- 支持 thinking 模型（如 `qwen3.5`、`deepseek-r1`），推理过程灰色显示、不混入最终回复\r\n- 工具调用循环：`read_file` / `write_file` / `run_command`\r\n- 多模型可配置：Ollama / DeepSeek / Kimi / 通义 / 本地任意 OpenAI 兼容服务，改配置即换\r\n- 危险命令（`rm -rf`、`format`、`dd if=` 等）执行前人工确认\r\n- 上下文自动精简、工具输出自动截断\r\n\r\n## 快速开始\r\n\r\n项目是根目录 pnpm workspace（`packages/*`）的一部分，依赖在根目录统一安装：\r\n\r\nOpenTUI 需要 **Node.js 26.4+（启用 FFI）** 或 Bun 1.3+。当前启动脚本已带上 Node FFI 参数。\r\n\r\n```bash\r\n# 在仓库根目录首次安装依赖（含 xiao-zhi-cli）\r\npnpm install\r\n\r\ncd packages/xiao-zhi-cli\r\npnpm start\r\n```\r\n\r\n复制 `.env.example` 为 `.env`，然后按实际服务配置。示例使用本机 Ollama，不包含任何真实服务地址或密钥：\r\n\r\n```dotenv\r\nAGENT_BASE_URL=http://localhost:11434/v1\r\nAGENT_API_KEY=your-api-key\r\nAGENT_MODEL=qwen3\r\n# 可选：开启 thinking，默认关闭\r\nAGENT_THINKING=1\r\n```\r\n\r\n也可以指定模型启动：\r\n\r\n```bash\r\npnpm start -- --model llama3.1\r\n```\r\n\r\n## 连接其他模型\r\n\r\n通过环境变量或启动参数配置（OpenAI 兼容格式）：\r\n\r\n| 服务 | AGENT_BASE_URL | AGENT_API_KEY | 示例模型 |\r\n|------|---------------|---------------|---------|\r\n| Ollama（本机） | `http://localhost:11434/v1` | 任意值 | `qwen3` |\r\n| Ollama（本机） | `http://localhost:11434/v1` | 任意值 | `qwen3` |\r\n| DeepSeek | `https://api.deepseek.com/v1` | 你的 key | `deepseek-chat` |\r\n| Kimi | `https://api.moonshot.cn/v1` | 你的 key | `moonshot-v1-8k` |\r\n\r\n```bash\r\n# 环境变量方式\r\nexport AGENT_BASE_URL=https://api.deepseek.com/v1\r\nexport AGENT_API_KEY=your-api-key\r\nexport AGENT_MODEL=deepseek-chat\r\npnpm start\r\n\r\n# 或启动时开启 thinking\r\npnpm start -- --thinking\r\n\r\n# 或命令行参数方式\r\nnode src/index.ts --base-url https://api.deepseek.com/v1 --api-key your-api-key --model deepseek-chat\r\n```\r\n\r\n## 对话内命令\r\n\r\n| 命令 | 说明 |\r\n|------|------|\r\n| `/help` | 帮助 |\r\n| `/exit` `/quit` | 退出 |\r\n| `/clear` | 清空会话上下文 |\r\n| `/models` | 从模型服务获取并列出所有模型 |\r\n| `/model` | 列出模型 |\r\n| `/model <序号\\|名称>` | 按序号或名称切换模型 |\r\n| `/tools` | 列出可用工具 |\r\n\r\n输入 `/models` 后，可以使用 `/model 1` 这样的序号，或直接输入 `/model qwen3.5:9b` 切换模型。模型列表来自当前 `AGENT_BASE_URL` 的 OpenAI 兼容 `/models` 接口。\r\n\r\n## 发布到 npm\r\n\r\n```bash\r\ncd packages/xiao-zhi-cli\r\nnpm login\r\nnpm version patch\r\nnpm publish --access public\r\n```\r\n\r\n如果你还没有准备好公开发布，可以先本地验证：\r\n\r\n```bash\r\nnpm pack --dry-run\r\n```\r\n\r\n## 测试\r\n\r\n```bash\r\nnode scripts/smoke.mjs   # 本地 mock 接口验证流式解析 + 工具循环，无需真实模型\r\npnpm typecheck           # TypeScript 类型检查\r\n```\r\n\r\n## 项目结构\r\n\r\n```\r\nsrc/\r\n  index.ts    入口：参数解析、OpenTUI 事件和斜杠命令\r\n  ui.ts       OpenTUI 界面：对话滚动区、输入框、底部目录状态栏\r\n  config.ts   配置加载（环境变量 + 命令行参数）\r\n  provider.ts OpenAI 兼容流式调用（SSE 解析、工具调用累积）\r\n  agent.ts    Agent 主循环（推理 → 工具 → 回填，最多 8 轮）\r\n  tools.ts    工具实现：read_file / write_file / run_command + 危险命令拦截\r\n  types.ts    共享类型\r\nscripts/\r\n  smoke.mjs   冒烟测试（mock 模型接口）\r\n```\r\n\r\n## 已知限制\r\n\r\n- 会话上下文固定保留最近 30 条消息，长任务中间过程会被丢弃\r\n- 工具仅 3 个基础操作，需要更多能力（联网、搜索等）自行在 `tools.ts` 扩展\r\n- `write_file` 不限制路径，注意模型可能写任意位置\r\n","readmeFilename":"README.md"}