{"_id":"@aicaigou-test/cai-cli","_rev":"2-7dfaa83fe50381bb52d29288c99cc98b","name":"@aicaigou-test/cai-cli","dist-tags":{"latest":"0.4.4"},"versions":{"0.4.3":{"name":"@aicaigou-test/cai-cli","version":"0.4.3","keywords":["cai","b2b","baidu","cli"],"license":"MIT","_id":"@aicaigou-test/cai-cli@0.4.3","maintainers":[{"name":"guangtaisong","email":"songguangtai2023@163.com"}],"os":["darwin","linux","win32"],"bin":{"cai-cli":"scripts/run.js"},"cpu":["x64","arm64"],"dist":{"shasum":"944b6e9700fcfe6894364fa98c361622ecf6dff7","tarball":"https://registry.npmjs.org/@aicaigou-test/cai-cli/-/cai-cli-0.4.3.tgz","fileCount":5,"integrity":"sha512-+EImtVRQJvwtbRzg5jjPOM5jNPcZbLK/C+F7wkqEdjWIt7eCH+nLga1X0O5R1PDFffbHU+0rRGX1c4Ism6y6Dw==","signatures":[{"sig":"MEQCIEtX+KuH1ASadnDnjgbQ+0Wi6qjVBeFtvYn9YSVfibueAiBA+CTLihpYhELOiKQfAmGcjTJEUZuVzHLScrkk1pjZFA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13753},"engines":{"node":">=16"},"gitHead":"ef7ab831157b5afa1d2d4261a167b0f6a7e971e4","scripts":{"postinstall":"node scripts/install.js"},"_npmUser":{"name":"guangtaisong","email":"songguangtai2023@163.com"},"repository":{"url":"https://icode.baidu.com/baidu/b2b/cai-cli","type":"git"},"_npmVersion":"11.4.2","description":"CLI tool for CAI B2B platform (cai-cli)","directories":{},"_nodeVersion":"24.4.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cai-cli_0.4.3_1786450004935_0.29288597641139735","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@aicaigou-test/cai-cli","version":"0.4.4","description":"CLI tool for CAI B2B platform (cai-cli)","bin":{"cai-cli":"scripts/run.js"},"scripts":{"postinstall":"node scripts/install.js"},"os":["darwin","linux","win32"],"cpu":["x64","arm64"],"engines":{"node":">=16"},"license":"MIT","keywords":["cai","b2b","baidu","cli"],"repository":{"type":"git","url":"https://icode.baidu.com/baidu/b2b/cai-cli"},"_id":"@aicaigou-test/cai-cli@0.4.4","gitHead":"ef7ab831157b5afa1d2d4261a167b0f6a7e971e4","_nodeVersion":"24.4.1","_npmVersion":"11.4.2","dist":{"integrity":"sha512-IX4oT1BTx0hcZdcaDExofdBR7sTuGD4CbDWLUYNKlzKD3omZUeTsbRXEPxZrHf37ZOeQIloS/y0NtpP5xUUXdA==","shasum":"bca139b9bdeaba1f6f27b4de3023b209b2e7a284","tarball":"https://registry.npmjs.org/@aicaigou-test/cai-cli/-/cai-cli-0.4.4.tgz","fileCount":5,"unpackedSize":13753,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDZhyRtX7GCLd5RXN5TRT34b8FtLhhiSe3pF1qYUC+kjgIgKjFpz56VDDSr9RKjMqY2l04Bps6UlSoMs42xsSN8lHI="}]},"_npmUser":{"name":"guangtaisong","email":"songguangtai2023@163.com"},"directories":{},"maintainers":[{"name":"guangtaisong","email":"songguangtai2023@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cai-cli_0.4.4_1786450575894_0.14040792732188456"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-11T12:06:44.750Z","modified":"2026-08-11T12:16:16.289Z","0.4.3":"2026-08-11T12:06:45.072Z","0.4.4":"2026-08-11T12:16:16.117Z"},"license":"MIT","keywords":["cai","b2b","baidu","cli"],"repository":{"type":"git","url":"https://icode.baidu.com/baidu/b2b/cai-cli"},"description":"CLI tool for CAI B2B platform (cai-cli)","maintainers":[{"name":"guangtaisong","email":"songguangtai2023@163.com"}],"readme":"# cai-cli\n\nB2B CAI 平台命令行工具，提供店铺管理、商品、广告等能力，支持在终端和 AI Agent（Ducc/Claude Code）中使用。\n\n---\n\n## 安装\n\n### npm（推荐）\n\n分两步：先装 CLI，再装 Skills（两条命令互相独立，但都要执行）。\n\n```bash\n# 1. 安装 CLI\nnpm install -g @aicaigou/cli\n\n# 2. 安装 Skills（必需）\nnpx -y skills add https://b2b-material.bj.bcebos.com -y\n```\n\n安装完成后：\n- **CLI 二进制**自动下载到 `node_modules/@aicaigou/cli/bin/`\n- **AI Agent Skills** 自动安装到 `~/.agents/skills/`（Ducc / Claude Code 自动加载）\n\n无需额外步骤，一步完成。\n\n### 从源码构建\n\n```bash\n# 克隆仓库\ngit clone icode.baidu.com/baidu/b2b/cai-cli\ncd cai-cli\n\n# 构建（当前平台）\nmake build\n\n# 或直接安装到 $GOPATH/bin\nmake install\n```\n\n### 要求\n\n- Go 1.23+\n- `GOPROXY=http://goproxy.baidu-int.com`\n\n---\n\n## 快速开始\n\n### 1. 配置 Token\n\n登录 CAI 平台获取 API Token，然后：\n\n```bash\ncai-cli auth login\n# 提示：请输入 API Token: xxxxxxxx\n# ✓ Token 已保存。\n```\n\n或通过环境变量传入（临时使用）：\n\n```bash\nexport CAI_CLI_TOKEN=your_token_here\n```\n\n### 2. 验证配置\n\n```bash\n# 本地检测 Token 格式与过期时间\ncai-cli auth status\n\n# 调用服务端验证（需要网络）\ncai-cli auth status --verify\n```\n\n### 3. 环境诊断\n\n```bash\ncai-cli doctor\n```\n\n输出示例：\n```\ncai-cli 环境诊断\n  版本: 0.1.0 (构建于 2026-04-24T12:00:00Z)\n\n  ✓ 配置文件: /root/.cai-cli\n  ✓ Token: 已配置（本地有效）\n  ✓ 网络连通（http://b2bwork.baidu.com）: HTTP 200\n\n所有检查通过。\n```\n\n---\n\n## 命令参考\n\n### 认证管理\n\n```bash\ncai-cli auth login           # 交互式配置 Token\ncai-cli auth logout          # 删除本地 Token\ncai-cli auth status          # 查看 Token 状态（本地）\ncai-cli auth status --verify # 查看 Token 状态（服务端验证）\n```\n\n### 配置管理\n\n```bash\ncai-cli config init              # 首次引导配置\ncai-cli config show              # 查看当前配置（Token 脱敏）\ncai-cli config set token <value> # 直接设置 Token\n```\n\n### 店铺管理\n\n```bash\ncai-cli shop +info               # 查询店铺基本信息\ncai-cli shop +info --format table # 表格格式输出\ncai-cli shop +info --jq '.shopName'  # 只输出店铺名称\n```\n\n### 原始 API 调用\n\n```bash\n# GET 请求\ncai-cli api GET /gcli/cliapi/shop/info\n\n# POST 请求（带请求体）\ncai-cli api POST /gcli/cliapi/product/list --data '{\"page\":1,\"page_size\":20}'\n\n# 带 Query 参数\ncai-cli api GET /gcli/cliapi/product/detail --params '{\"product_id\":\"123\"}'\n\n# 预览请求（不发送）\ncai-cli api GET /gcli/cliapi/shop/info --dry-run\n```\n\n### Shell 自动补全\n\n```bash\n# Bash\ncai-cli completion bash > /etc/bash_completion.d/cai-cli\n\n# Zsh\ncai-cli completion zsh > \"${fpath[1]}/_cai-cli\"\n\n# Fish\ncai-cli completion fish | source\n```\n\n---\n\n## 全局参数\n\n所有命令均支持以下参数：\n\n| 参数 | 说明 | 示例 |\n|------|------|------|\n| `--format` | 输出格式：`json`（默认）\\|`table`\\|`csv`\\|`ndjson` | `--format table` |\n| `--jq <expr>` | jq 过滤表达式 | `--jq '.shopName'` |\n| `--output <file>` | 输出写入文件 | `--output result.json` |\n| `--dry-run` | 打印请求信息，不实际发送 | `--dry-run` |\n| `--page-all` | 自动翻页获取全部数据 | `--page-all` |\n\n---\n\n## 输出格式\n\n所有命令的 `stdout` 为标准 JSON Envelope：\n\n```json\n{\n  \"ok\": true,\n  \"data\": {\n    \"shop_id\": \"123456\",\n    \"shopName\": \"示例旗舰店\"\n  }\n}\n```\n\n错误时输出到 `stderr`：\n\n```json\n{\n  \"ok\": false,\n  \"error\": {\n    \"type\": \"auth_error\",\n    \"code\": 212011,\n    \"message\": \"Token 无效\",\n    \"hint\": \"logId: abc123\"\n  }\n}\n```\n\n### 退出码\n\n| 代码 | 含义 |\n|------|------|\n| `0` | 成功 |\n| `1` | 通用错误 |\n| `2` | 参数错误 |\n| `3` | 认证错误（Token 未配置/无效/过期）|\n| `4` | 网络错误 |\n\n---\n\n## 环境变量\n\n| 变量 | 说明 | 优先级 |\n|------|------|--------|\n| `CAI_CLI_TOKEN` | API Token | 最高（覆盖 keychain）|\n| `CAI_CLI_CONFIG_DIR` | 配置目录（默认 `~/.cai-cli`）| — |\n\n---\n\n## 在 AI Agent 中使用（Skills）\n\nSkills 通过安装第 2 步装到 `~/.agents/skills/`，可被 Ducc / Claude Code 读取：\n\n```\nskills/cai-shared/SKILL.md   # 通用规范：认证、全局参数、错误处理\nskills/cai-shop/SKILL.md     # 店铺管理命令详细说明\n```\n\n在 Agent 对话中，直接描述需求即可：\n\n> \"帮我查一下当前店铺的基本信息\"\n> \"把店铺名称提取出来存到文件里\"\n\n---\n\n## 开发\n\n```bash\n# 运行测试\nmake test\n\n# 代码检查\nmake lint\n\n# 交叉编译（所有平台）\nmake dist\n\n# 整理依赖\nmake tidy\n```\n\n### 添加新业务命令\n\n1. 在 `shortcuts/<domain>/shortcuts.go` 中添加 `Shortcut` 定义\n2. 实现 `Execute` 函数，通过 `rt.Factory.APIClient()` 调用接口\n3. 在该文件的 `Shortcuts()` 函数中注册\n4. 完成后即可通过 `cai-cli <domain> +<command>` 调用\n\n示例：\n```go\nvar ProductGet = shortcut.Shortcut{\n    Service:     \"product\",\n    Command:     \"+get\",\n    Description: \"查询商品详情\",\n    Flags: []shortcut.Flag{\n        {Name: \"product-id\", Required: true, Desc: \"商品 ID\"},\n    },\n    Execute: func(ctx context.Context, rt *shortcut.RuntimeContext) error {\n        apiClient, _ := rt.Factory.APIClient()\n        data, err := apiClient.CallAPI(ctx, client.RawApiRequest{\n            Method: \"GET\",\n            URL:    \"/gcli/cliapi/product/detail\",\n            Params: map[string]interface{}{\"product_id\": rt.Str(\"product-id\")},\n        })\n        if err != nil {\n            return err\n        }\n        return rt.Out(data)\n    },\n}\n```\n\n\n前端：\nhttps://b2b-material.bj.bcebos.com/cai-cli/web/latest/install-guide.html","readmeFilename":"README.md"}