Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ai-cli

AI 平台统一命令行工具 — 管理任务编排、模型、推理部署与微调。

功能

  • 任务编排管理:创建、停止、查询任务,在任务实例中执行命令
  • 模型管理:模型 CRUD、分支/提交查询、镜像同步
  • 代码仓库管理:创建、查看、删除代码仓库,查看分支/提交/标签与镜像导入
  • Notebook 部署:创建、查看、停止、删除 Notebook,远程执行命令与日志跟踪
  • 快速开始(exp):一条命令完成「本地代码推送 → 代码仓库创建/复用 → Notebook 创建/复用 → 远程执行」端到端流程,并缓存项目配置
  • 运行时框架:查看/管理部署、微调、Notebook 可用的运行时框架
  • 技能仓库:浏览、查询、上传、安装、删除平台技能
  • 服务部署:模型部署、状态查询、服务删除
  • 模型微调:提交微调任务
  • 数据洞察:列出数据集、查看数据集详情(STAC Collection)与元数据
  • EDA 数据探索:浏览 OM 表资产、查看表详情与关联任务、查看 EDA 结果、查询变量 EDA、数据头预览与图表下载(标识自动续接,无需手填内部 id)
  • 集群与资源:查询集群状态、部署/微调/Notebook 可用的 GPU/CPU 资源规格
  • 远程执行:在任务实例或 Notebook 中异步执行命令,支持等待结果与总超时上限
  • 本地状态:task / notebook / exec session 句柄跨命令复用,支持省略 id;本地操作历史审计
  • 多格式输出:table / json / yaml / wide / name / explore / raw
  • 交互式浏览:bubbletea TUI JSON 浏览器
  • 多平台适配:支持 OpenAPI 标准接口,适配器模式可扩展
  • 统一配置:环境变量 / 项目配置 / 全局配置 / exp profile 四级优先级

安装

二进制与安装脚本统一从 public 分发仓库 ai-public/ai-cli-release 匿名下载,无需任何 GitLab token。

一键安装

Linux / macOS / WSL(bash):

# 默认安装到 ~/.local/bin(无需 sudo),自动写入 PATH
curl -fsSL https://gitlab.insightst.com/ai-public/ai-cli-release/-/raw/main/install.sh | bash

# 安装指定版本
curl -fsSL https://gitlab.insightst.com/ai-public/ai-cli-release/-/raw/main/install.sh | bash -s -- -v v0.0.2

# 自定义安装目录
curl -fsSL https://gitlab.insightst.com/ai-public/ai-cli-release/-/raw/main/install.sh | bash -s -- -d /usr/local/bin

Windows(PowerShell,免管理员,自动加入用户级 PATH):

# ⚠️ 必须 .TrimStart([char]0xFEFF):GitLab raw 返回带 BOM,裸 iex 会解析失败
(irm https://gitlab.insightst.com/ai-public/ai-cli-release/-/raw/main/install.ps1).TrimStart([char]0xFEFF) | iex

安装脚本会自动检测平台/架构、下载对应二进制并做 sha256 校验,末尾询问是否预装内置 skill ai-cli 与登录平台(非交互环境默认跳过,可用 --with-skill --agent claude / --login 强制)。

安装后如未在 PATH 中,请重新打开终端,或手动添加:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

在 Agent 环境中安装

OpenClaw / Claude Code 等 agent 环境一键安装:

curl -fsSL https://gitlab.insightst.com/ai-public/ai-cli-release/-/raw/main/install.sh | bash

安装后登录(交互式或非交互式):

# 交互式登录
ai-cli login

# 非交互式登录
ai-cli login --api-url https://ai-dev.insightst.com --token <your-token>

登录会保存 api_urlauth_tokencurrent_user 等到 ~/.ai-cli/config.yaml

更新到最新版本:

ai-cli upgrade

卸载

curl -fsSL https://gitlab.insightst.com/ai-public/ai-cli-release/-/raw/main/install.sh | bash -s -- --uninstall

手动安装

go build -o ai-cli

或使用 Makefile:

make build          # 当前平台
make build-all      # 跨平台编译(darwin/linux/windows, amd64/arm64)
make install        # 安装到 $GOPATH/bin

安装后将二进制文件放到 PATH 中即可使用:

cp ai-cli ~/bin/ai-cli

配置

首次使用前需要配置 API 地址和认证 Token。支持三种方式(优先级从高到低):

方式一:环境变量

export AI_CLI_TASK_API_URL="https://task.insightst.com"
export AI_CLI_API_URL="https://ai-dev.insightst.com"
export AI_CLI_AUTH_TOKEN="your-token-here"

# 数据洞察平台(与 AI 平台用户体系未打通,使用独立 token)
export AI_CLI_DATA_API_URL="https://data-platform-service.insightst.com/data_platform_api"
export AI_CLI_DATA_TOKEN="your-data-token-here"

# EDA 数据探索(feature-platform-service,X-Auth-Token 裸 token)
export AI_CLI_EDA_API_URL="https://feature-platform-service.insightst.com"
export AI_CLI_EDA_TOKEN="your-eda-token-here"
  • AI_CLI_TASK_API_URL:任务编排平台 API 地址
  • AI_CLI_API_URL:AI 模型平台 API 地址
  • AI_CLI_AUTH_TOKEN:认证 Token(AI/任务平台,Bearer)
  • AI_CLI_DATA_API_URL:数据洞察平台 API 地址(可选,不配则 dataset 命令不可用)
  • AI_CLI_DATA_TOKEN:数据洞察平台 Token(X-Auth-Token,与 AI 平台独立)
  • AI_CLI_EDA_API_URL:EDA 数据探索 API 地址(可选,不配则 dataset explore 命令不可用;指向 feature-platform-service,路径前缀 /api/v1
  • AI_CLI_EDA_TOKEN:EDA 数据探索 Token(X-Auth-Token 裸 token,与数据平台认证方式一致)
  • AI_CLI_GIT_PASSWORD:代码仓库 Git 认证密码/Token(exp / repo 推送时使用)

ai-cli login 登录后会在 ~/.ai-cli/config.yaml 写入 api_urlauth_tokencurrent_user,并覆盖环境变量/全局文件中的同名配置。推荐首次使用先执行 login

方式二:全局配置文件

mkdir -p ~/.ai-cli
cat > ~/.ai-cli/config.yaml << 'EOF'
task_api_url: https://task.insightst.com
api_url: https://ai-dev.insightst.com
auth_token: your-token-here
data_api_url: https://data-platform-service.insightst.com/data_platform_api
data_token: your-data-token-here
eda_api_url: https://feature-platform-service.insightst.com
eda_token: your-eda-token-here
EOF

方式三:项目配置文件

在实验根目录创建 .ai-cli/<name>.yaml(按实验名命名,收纳在 .ai-cli/ 目录下,采用分组结构):

common:
  api_url: https://ai-dev.insightst.com
  current_user: insightst_test
  auto_confirm: false
exp:
  notebook:
    resource_id: 2
    runtime_framework_id: 227

项目配置文件分两组:common 放共用字段(api_url / current_user / auto_confirm),exp 放 exp 专用字段(repo / notebook / git 等子分组)。凭据类字段(auth_token / data_token / git_password 等)仍只存全局 ~/.ai-cli/config.yaml,不写入项目配置。

命令

登录

命令 说明
ai-cli login 交互式登录 AI 平台
ai-cli login --api-url URL --token TOKEN 非交互式登录

任务管理

命令 说明
ai-cli task create 创建新任务(成功后句柄自动落盘本地)
ai-cli task get [TASK_ID] 查看任务详情(省略 id 取本地最近 task)
ai-cli task stop [TASK_ID] 停止任务(不可逆;默认确认,--yes 跳过;成功后清除本地句柄)
ai-cli task instances [TASK_ID] 查看任务实例列表(省略 id 取本地最近 task)
ai-cli task logs [TASK_ID INSTANCE_ID] 查看任务实例日志(instance id 缺省取最近 exec 实例)
ai-cli task exec [TASK_ID INSTANCE_ID] --command CMD 在实例中执行命令(异步)
ai-cli task exec-result [TASK_ID INSTANCE_ID SESSION_ID] 查看命令执行结果(三个 id 均可省略回退)
ai-cli task list-local 列出本地跟踪的 task(区别于平台的 task list)
ai-cli task forget [TASK_ID] 仅从本地移除 task 跟踪(不影响平台资源)

省略 id 语义:task 命令的位置参数均可省略,回退到本地 taskstore(~/.ai-cli/tasks.json)。本地仅有一个 task 时自动选用;多个 task 时报错并提示 task list-local,不自动猜测。显式传 id 时行为与现状一致。本地状态仅为便利,非权威,关键操作仍以平台 API 为准。

task exec --wait 加固:默认 30 分钟总超时(--timeout-total0 表示不限),超时只退出 CLI 不停远端命令;等待时每轮打印 RUNNING 心跳(--quiet 关闭)。

代码仓库

命令 说明
ai-cli repo list 列出代码仓库
ai-cli repo get <codePath> 查看代码仓库详情
ai-cli repo create --namespace NS --name NAME 创建代码仓库
ai-cli repo update <codePath> 更新代码仓库
ai-cli repo delete <codePath> 删除代码仓库
ai-cli repo branches <codePath> 查看分支
ai-cli repo commits <codePath> 查看提交历史
ai-cli repo tags <codePath> 查看标签
ai-cli repo relations <codePath> 查看关联资源
ai-cli repo mirror <codePath> 创建模型/代码镜像导入任务
ai-cli repo mirror-sync <codePath> 手动触发镜像同步
ai-cli repo mirror-progress <codePath> 查看镜像导入进度

Notebook 部署

命令 说明
ai-cli exp list 列出 Notebook 部署
ai-cli exp get <id> 查看 Notebook 详情
ai-cli exp create --name NAME --resource-id ID --runtime-framework-id ID 创建 Notebook
ai-cli exp create --name NAME --resource-id ID --image IMAGE 使用自定义镜像创建 Notebook
ai-cli exp stop <id> 停止 Notebook
ai-cli exp delete [id] 删除 Notebook(省略 id 取本地最近 notebook)
ai-cli exp container-logs <id> 查看 Notebook 日志
ai-cli exp exec [id] -- COMMAND 在 Notebook 中执行命令

Notebook delete 支持 --force 跳过确认;execdelete 均可省略 id,回退到本地最近跟踪的 notebook。

快速开始(exp)

命令 说明
ai-cli exp run [name] 一键端到端运行(创建/复用代码仓库与 Notebook、推送代码、远程执行命令)
ai-cli exp run --list 列出可选资源/框架候选(JSON),不执行创建
ai-cli exp logs [RUN_ID] 重新挂回某次 exp/exec 远程命令的 SSE 日志流(按 PID 过滤、识别结束哨兵);--list 列出当前运行记录,--log-file 写文件
ai-cli exp config list 列出已保存的 exp 实验
ai-cli exp config show <name> 查看实验配置
ai-cli exp config delete <name> 删除实验配置
ai-cli exp metric --experiment NAME 查询 MLflow 训练指标(不带 --run 列实验下所有 run 的最新 metrics;带 --run 列指定 metric 历史序列)
ai-cli exp artifact --experiment NAME --run RUN_ID 查看 MLflow 训练产物清单,并给出 MLflow Web UI 深链
--third-party-git keep/migrate/error 检测到本地实验目录是第三方 Git 仓库时的处理策略:keep 保留并使用原仓库/分支、直接推回 originmigrate 迁移到平台仓库;error 直接报错退出

指定实验名后,配置会保存到 ~/.ai-cli/profiles/<name>.yaml 与实验内 .ai-cli/<name>.yaml;省略实验名时从 .ai-cli/ 目录读取实验配置(唯一配置自动选用,多个时需显式指定)。命令行 flag 优先级最高,覆盖配置文件。

登录提示exp run 执行前会检查 api_urlauth_token。缺省时交互模式会自动提示登录(类似 ai-cli login),非交互模式(-n)会直接报错并提示使用 login --api-url --token 或环境变量 AI_CLI_API_URL / AI_CLI_AUTH_TOKEN

运行时框架

命令 说明
ai-cli runtime-framework list 列出运行时框架
ai-cli runtime-framework list --deploy-type 5 列出 Notebook 运行时框架(1=推理,2=微调,5=notebook)
ai-cli runtime-framework create 创建运行时框架
ai-cli runtime-framework update <id> 更新运行时框架
ai-cli runtime-framework delete <id> 删除运行时框架

模型管理

命令 说明
ai-cli model list 列出模型
ai-cli model get <modelPath> 查看模型详情
ai-cli model create 创建模型
ai-cli model delete <modelPath> 删除模型(不可逆;默认确认,--yes 跳过)
ai-cli model branches <modelPath> 查看模型分支
ai-cli model commits <modelPath> 查看模型提交历史
ai-cli model framework <modelPath> 查看运行时框架
ai-cli model relations <modelPath> 查看模型关联资源
ai-cli model mirror <modelPath> 创建模型导入任务
ai-cli model mirror-sync <modelPath> 手动触发模型同步
ai-cli model mirror-progress <modelPath> 查看导入进度

服务部署

命令 说明
ai-cli serve deploy <modelPath> 部署模型推理服务
ai-cli serve status <deployId> 查看部署状态
ai-cli serve delete <deployId> 删除部署实例(不可逆;默认确认,--yes 跳过)

模型微调

命令 说明
ai-cli tune finetune <modelPath> 提交微调任务

数据洞察

命令 说明
ai-cli dataset list 列出所有数据集(records.id 即数据集 id)
ai-cli dataset get <datasetId> 查看数据集详情(STAC Collection)
ai-cli dataset metadata <datasetId> 查看数据集元数据

数据洞察平台与 AI 平台用户体系未打通,使用独立 token(AI_CLI_DATA_TOKENX-Auth-Token)。

EDA 数据探索

命令 说明
ai-cli dataset explore tables [<service>] 列出 OM 表资产(fqn 即表完全限定名)
ai-cli dataset explore details <tableFQN> 查看表详情(字段 schema + edaTaskId,写缓存)
ai-cli dataset explore tasks [<datasetID>] 查询数据集关联任务(复用 details 缓存)
ai-cli dataset explore eda [<datasetID>] 查看 EDA 结果(复用缓存的 dataset_id + task_codes)
ai-cli dataset explore variables [<datasetID>] 查询变量 EDA 结果(复用缓存,--variable 可多次指定,不传返回全量)
ai-cli dataset explore preview <datasetPath> 数据头预览(前 N 行,--engine --limit
ai-cli dataset explore plot <hdfsPath> 下载 EDA 分析图片(-o 输出文件)

EDA 探索链路把 details 回吐的 table_fqn/dataset_id/edaTaskId 缓存到 ~/.ai-cli/eda.json,后续 tasks/eda/variables 命令自动续接,无需手记内部 id。服务根 AI_CLI_EDA_API_URL(feature-platform-service,路径前缀 /api/v1),认证 X-Auth-Token 裸 token(AI_CLI_EDA_TOKEN)。接口契约见 docs/EDA.mddocs/datasets_eda.md

Workflow 编排接口(operator/task/run)暂未接入,留待后续单独设计。

技能仓库

命令 说明
ai-cli skills list 列出技能
ai-cli skills list --only-mine 仅显示我的技能
ai-cli skills get <id> 查看技能详情(含文件列表)
ai-cli skills create --name NAME --path PATH 上传技能到平台
ai-cli skills install <id> 下载并安装技能到本地(默认 .skills/<slug>/
ai-cli skills install <id> --dir DIR 安装到指定目录
ai-cli skills delete <id> 删除技能(不可逆;默认确认,--yes 跳过)

集群与资源

命令 说明
ai-cli cluster list 列出集群及资源状态
ai-cli resource list 列出部署/微调可用的 GPU/CPU 资源规格
ai-cli resource list --deploy-type 2 查询微调可用资源(1=部署,2=微调,5=notebook)
ai-cli resource list --cluster-id <ID> 指定集群(不指定则自动选第一个)

操作历史

命令 说明
ai-cli log 列出有历史记录的资源类型及条数
ai-cli log task 查看 task 操作历史(create/stop/exec)
ai-cli log task -n 50 最近 50 条
ai-cli log serve --action deploy 按 action 过滤
ai-cli log task -o json JSON 输出

本地操作历史落盘于 ~/.ai-cli/history/<resource>.jsonl,仅记录操作元信息(资源 id / 动作 / 结果),不记录敏感字段(token、--config 明文等)。覆盖 task/serve/skill/model/tune 的写操作。

版本与升级

命令 说明
ai-cli version 查看版本信息
ai-cli upgrade 升级到最新版本
ai-cli upgrade --check 仅检查是否有新版本
ai-cli upgrade --list 列出所有可发布的版本
ai-cli upgrade --version v0.0.9 安装指定版本(可降级)

待实现

命令 说明
ai-cli train 训练管理(待实现)
ai-cli eval 评估管理(待实现)
ai-cli config CLI 配置管理(待实现)
ai-cli completion Shell 补全生成(待实现)

版本与升级

查看版本

# 简略版本(--version)
ai-cli --version

# 详细版本信息
ai-cli version

ai-cli version 输出:

ai-cli v0.1.0
  Commit:    abc1234
  BuildDate: 2026-05-19T10:00:00Z
  GoVersion: go1.24.0
  Platform:  darwin/arm64

升级

# 检查并升级到最新版本
ai-cli upgrade

# 仅检查是否有新版本
ai-cli upgrade --check

# 列出所有可发布的版本
ai-cli upgrade --list

# 安装指定版本(可降级回退到旧版本)
ai-cli upgrade --version v0.0.9
# 也可省略 v 前缀
ai-cli upgrade --version 0.0.9

升级流程:从 GitLab Releases 获取目标版本 → 下载对应平台的二进制 → 验证 → 替换当前可执行文件。

--version 可指定任意已发布版本,包括比当前更旧的版本(降级)。降级时会提示确认 (可能丢失新版本功能),用 --yes 跳过确认以适配脚本场景。降级后内置 skill 会用 新(即旧版)二进制同步重装,保持 skill 与二进制版本一致。

版本号管理

Makefile 中版本号自动从 git tag 获取:

# 默认:git describe --tags --always --dirty
make build

# 手动指定版本号
make build VERSION=v0.2.0

使用示例

登录

# 交互式登录
ai-cli login

# 非交互式登录(CI / Agent 推荐)
ai-cli login --api-url https://ai.insightst.com --token <your-token>

快速开始(exp)

# 1. 准备本地项目
cd my-ai-project

# 2. 设置 git 凭证(可用 AI_CLI_GIT_PASSWORD 环境变量或 --git-password)
export AI_CLI_GIT_PASSWORD=<your-token>

# 3. 首次运行:交互式选择资源/框架
ai-cli exp run my-project \
  --root-dir . \
  --file main.py

# 4. 后续运行:复用已保存配置
ai-cli exp run --file main.py -n

# 非交互式 / CI 一次到位
ai-cli exp run my-project --non-interactive \
  --root-dir . \
  --resource-id 2 \
  --runtime-framework-id 227 \
  --file main.py \
  --log-stream-timeout 30s

# 使用自定义镜像(与 --runtime-framework-id 互斥)
ai-cli exp run my-project --non-interactive \
  --root-dir . \
  --resource-id 2 \
  --image harbor-prod.insightst.com/ai/hub-notebook:ubuntu-22.04-py311-torch2.3.1-ist1.1.0 \
  --file main.py

# 实验目录已是第三方 Git 仓库时,保留并使用原仓库/分支,直接推回 origin
ai-cli exp run my-project --non-interactive \
  --root-dir . \
  --resource-id 2 \
  --runtime-framework-id 227 \
  --file main.py \
  --third-party-git keep

# 实验目录已是第三方 Git 仓库时,迁移到平台仓库
ai-cli exp run my-project --non-interactive \
  --root-dir . \
  --resource-id 2 \
  --runtime-framework-id 227 \
  --file main.py \
  --third-party-git migrate

# 列出可选资源/框架候选
ai-cli exp run my-project --list \
  --root-dir . \
  --file main.py

任务管理

# 创建任务(最简示例)
ai-cli task create \
  --name my-first-task \
  --queue-id b804e130-a56b-4af8-a4db-24192f4a75db \
  --image busybox:latest

# 创建任务(完整配置)
ai-cli task create \
  --name train-job \
  --queue-id b804e130-a56b-4af8-a4db-24192f4a75db \
  --image harbor-dev.insightst.com/ai/pytorch:2.1.0-cuda12.1 \
  --framework-type CUSTOM \
  --gpu 4 --cpu 8 --memory 32 \
  --command "python" --args "train.py" \
  --env DB_HOST=mysql.local \
  --namespace ai \
  --pod-retention ON_FAILURE \
  --timeout 3600

# 查看任务详情
ai-cli task get task-abc123

# 查看任务实例
ai-cli task instances task-abc123

# 查看实例日志
ai-cli task logs task-abc123 inst-001
ai-cli task logs task-abc123 inst-001 --tail 50
ai-cli task logs task-abc123 inst-001 --filter ERROR

# 在实例中执行命令(异步)
ai-cli task exec task-abc123 inst-001 --command "nvidia-smi"
ai-cli task exec task-abc123 inst-001 --command "ls -la /output" --timeout 60

# 在实例中执行命令并等待结果(默认 30 分钟总超时)
ai-cli task exec task-abc123 inst-001 --command "python eval.py" --wait
ai-cli task exec task-abc123 inst-001 --command "python eval.py" --wait --timeout-total 1h
ai-cli task exec task-abc123 inst-001 --command "python eval.py" --wait --quiet   # 关闭心跳

# 查看命令执行结果
ai-cli task exec-result task-abc123 inst-001 exec-session-abc123

# 停止任务
ai-cli task stop task-abc123

# 省略 id:取本地最近跟踪的 task(create 后自动落盘句柄)
ai-cli task get                       # 等价于取最近 task
ai-cli task logs                      # task id 与 instance id 均回退到本地最近
ai-cli task exec-result               # 三个 id 全部回退到本地最近 exec 句柄

# 本地句柄管理
ai-cli task list-local                # 列出本地跟踪的 task
ai-cli task forget task-abc123        # 仅从本地移除跟踪(不影响平台资源)

模型管理

# 列出所有模型
ai-cli model list

# 搜索模型
ai-cli model list --search Qwen

# 按标签筛选
ai-cli model list --tag-category framework --tag-name pytorch

# JSON 格式输出
ai-cli model list -o json

# 仅输出模型路径(适合管道)
ai-cli model list -o name

# 查看模型详情
ai-cli model get insightst_test/XingQue

# 创建模型
ai-cli model create \
  --namespace insightst_test \
  --name my-model \
  --nickname "我的模型" \
  --model-type llm \
  --license apache-2.0

# 删除模型
ai-cli model delete insightst_test/my-model

# 查看模型分支
ai-cli model branches insightst_test/XingQue

# 查看提交历史(支持分页)
ai-cli model commits insightst_test/XingQue
ai-cli model commits insightst_test/XingQue --limit 10

# 查看运行时框架
ai-cli model framework insightst_test/XingQue
ai-cli model framework insightst_test/XingQue --deploy-type 1

# 查看关联资源
ai-cli model relations insightst_test/XingQue

# 导入外部模型
ai-cli model mirror insightst_test/my-model \
  --mirror-source-id 1 \
  --source-url https://modelscope.cn/xxx

# 同步模型
ai-cli model mirror-sync insightst_test/my-model

# 查看导入进度
ai-cli model mirror-progress insightst_test/my-model

代码仓库

# 列出仓库
ai-cli repo list

# 搜索仓库
ai-cli repo list --search my-project

# 查看详情
ai-cli repo get insightst_test/my-repo

# 创建仓库
ai-cli repo create \
  --namespace insightst_test \
  --name my-repo \
  --nickname "我的仓库" \
  --default-branch main

# 删除仓库
ai-cli repo delete insightst_test/my-repo

# 查看分支、提交、标签
ai-cli repo branches insightst_test/my-repo
ai-cli repo commits insightst_test/my-repo
ai-cli repo tags insightst_test/my-repo

Notebook 部署

# 查询 Notebook 资源
ai-cli resource list --deploy-type 5
ai-cli runtime-framework list --deploy-type 5

# 创建 Notebook(通过运行时框架)
ai-cli exp create \
  --name my-notebook \
  --resource-id 2 \
  --runtime-framework-id 227 \
  --save-defaults

# 创建 Notebook(自定义镜像;CLI Server 始终启动,无需指定)
ai-cli exp create \
  --name my-notebook \
  --resource-id 2 \
  --image harbor-prod.insightst.com/ai/hub-notebook:ubuntu-22.04-py311-torch2.3.1-ist1.1.0

# 列出、查看、停止、删除
ai-cli exp list
ai-cli exp get 582
ai-cli exp stop 582
ai-cli exp delete 582 --force

# 在 Notebook 中执行命令
ai-cli exp exec 582 -- python /workspace/my-repo/hello.py

# 查看日志
ai-cli exp container-logs 582

# 重新挂回某次 exp/exec 远程命令的 SSE 日志(流式跟踪中断后继续看同一条命令)
ai-cli exp logs               # 最近一条运行记录
ai-cli exp logs --list        # 列出当前 .running/ 下的运行记录

推理部署

# 部署模型(从命令行传入 JSON 配置)
ai-cli serve deploy insightst_test/XingQue \
  --config '{"framework":"pytorch","gpu":1}'

# 部署模型(从文件读取配置)
ai-cli serve deploy insightst_test/XingQue \
  --config @deploy-config.json

# 查看部署状态
ai-cli serve status <deploy-id>

# 删除部署
ai-cli serve delete <deploy-id>

模型微调

# 提交微调任务
ai-cli tune finetune insightst_test/XingQue \
  --config '{"framework":"pytorch","dataset":"my-data"}'

# 从文件读取微调配置
ai-cli tune finetune insightst_test/XingQue \
  --config @finetune-config.json

# 指定当前用户
ai-cli tune finetune insightst_test/XingQue \
  --config @finetune-config.json \
  --current-user myname

数据洞察

# 列出所有数据集(表格:ID / NAME / TYPE / PATH)
ai-cli dataset list

# JSON 格式输出
ai-cli dataset list -o json

# 查看数据集详情(STAC Collection,默认 JSON)
ai-cli dataset get ASTGTM_003

# 查看数据集元数据(collectionId 即数据集 id)
ai-cli dataset metadata ASTGTM_003

# YAML 输出
ai-cli dataset get ASTGTM_003 -o yaml

# 提取 JSON 子集(如仅取存储路径)
ai-cli dataset get ASTGTM_003 -o raw --transform "detail.path"

数据流向:dataset list 获取数据集列表 → records[].id 即数据集 id → dataset get / dataset metadata 用该 id 查询详情。

EDA 数据探索

# 列出 OM 表资产(fqn 即表完全限定名)
ai-cli dataset explore tables
ai-cli dataset explore tables odsstacstorageservice   # 按数据源服务过滤

# 查看表详情(字段 schema + edaTaskId),成功后写入本地缓存
ai-cli dataset explore details StacStorageService.StacCatalog.DefaultCatalog.ASTGTM_003

# 关联任务:自动复用 details 缓存的 dataset_id
ai-cli dataset explore tasks

# EDA 结果:自动复用缓存的 dataset_id + task_codes
ai-cli dataset explore eda
ai-cli dataset explore eda --task-code task_abc --task-code task_def   # 或手动指定

# 变量 EDA:自动复用缓存的 dataset_id,默认返回全量变量
ai-cli dataset explore variables
ai-cli dataset explore variables --variable t2m --variable time         # 或指定变量

# 数据头预览(前 100 行)
ai-cli dataset explore preview /data/era5/t2m
ai-cli dataset explore preview /data/era5/t2m --engine dask --limit 50

# 下载 EDA 分析图片
ai-cli dataset explore plot /eda/plots/dist.png -o dist.png

数据流向:tablesdetails <tableFQN>(写入本地 id 缓存)→ tasks(读缓存续接,回写 task_codes)→ eda/variables(读缓存续接)。接口契约见 docs/EDA.mddocs/datasets_eda.md

技能仓库

# 列出所有技能
ai-cli skills list

# 仅显示我的技能
ai-cli skills list --only-mine

# 分页查询
ai-cli skills list --page 2 --per 20

# JSON 格式输出
ai-cli skills list -o json

# 查看技能详情(含文件列表)
ai-cli skills get 4

# 上传技能(目录自动压缩为 ZIP)
ai-cli skills create --name "my-skill" --path ./my-skill/

# 上传技能(指定 ZIP 文件)
ai-cli skills create --name "my-skill" --path ./skill.zip

# 上传为公开技能
ai-cli skills create --name "my-skill" --path ./my-skill/ --visibility PUBLIC

# 安装技能到默认目录(.skills/<slug>/)
ai-cli skills install 4

# 安装技能到指定目录
ai-cli skills install 4 --dir ~/.claude/skills/omc-learned/slack/

# 安装到 Claude Code 全局 skills 目录
ai-cli skills install 4 --agent claude --scope global

# 安装到当前项目的 Codex skills 目录
ai-cli skills install 4 --agent codex --scope project

# 安装到指定项目目录的 Agent skills 目录
ai-cli skills install 4 --agent claude --scope /path/to/project
ai-cli skills install built-in:ai-cli --agent claude --scope D:\test\ai-cli-skills-test

# 安装二进制内置 skill(无需平台连接)
ai-cli skills install built-in:ai-cli --agent claude --scope global
ai-cli skills install built-in:ai-cli --agent codex --scope project

# 删除技能
ai-cli skills delete 4

集群与资源

# 列出集群及资源状态
ai-cli cluster list

# 列出部署可用的资源规格(deploy-type=1,默认)
ai-cli resource list

# 列出微调可用的资源规格(deploy-type=2)
ai-cli resource list --deploy-type 2

# 列出 Notebook 可用资源规格(deploy-type=5)
ai-cli resource list --deploy-type 5

# 指定集群(不指定则自动选第一个可用集群)
ai-cli resource list --cluster-id 8bf035bf-ebbf-45fb-99a5-66214d91f405

# JSON 输出
ai-cli resource list -o json

操作历史

# 列出有历史记录的资源类型及条数
ai-cli log

# 查看 task 操作历史(create/stop/exec)
ai-cli log task

# 最近 50 条
ai-cli log task -n 50

# 按 action 过滤
ai-cli log serve --action deploy

# JSON 输出(适合管道处理)
ai-cli log task -o json

历史落盘于 ~/.ai-cli/history/<resource>.jsonl,仅记操作元信息,不记 --config 明文等敏感字段。

高级:输出格式

# JSON 格式输出
ai-cli task get task-abc123 -o json

# 仅输出名称(管道友好)
ai-cli task instances task-abc123 -o name

# YAML 输出(适合导出配置)
ai-cli task get task-abc123 -o yaml

# 交互式 JSON 浏览器
ai-cli model get insightst_test/XingQue -o explore

# 提取 JSON 子集
ai-cli model list -o json --transform "data.0.name"

# 紧凑 JSON(适合管道处理)
ai-cli model list -o raw | jq .

全局参数

参数 说明
-o, --output 输出格式:table / json / yaml / wide / name / explore / raw
--transform gjson 路径,提取 JSON 子集后再输出
-w, --workspace 指定工作空间
-v, --version 版本信息

危险操作确认

不可逆命令(task stop / model delete / serve delete / skills delete)默认在执行前先拉取目标资源摘要并二次确认,避免误删:

$ ai-cli task stop task-abc123
About to stop task "task-abc123":
  Name:         train-job
  Status:       RUNNING
  Image:        pytorch:2.1.0-cuda12.1
Stop? [y/N]
  • 回答 y / yes 执行;其余(含直接回车、Ctrl-D)中止,退出码非零,远端资源不受影响
  • -y, --yes 跳过本次确认;或在配置里设 auto_confirm: true(环境变量 AI_CLI_AUTO_CONFIRM=true)全局跳过。
  • 预览拉取失败时降级为无预览确认(打印 warning),不阻断。

技术选型

用途 依赖 版本
CLI 框架 spf13/cobra v1.8
配置管理 spf13/viper v1.18
TUI 框架 charmbracelet/bubbletea v0.25
TUI 组件 charmbracelet/bubbles v0.18
终端样式 charmbracelet/lipgloss v0.10
表格输出 olekukonko/tablewriter v0.0.5
JSON 路径 tidwall/gjson v1.17
YAML gopkg.in/yaml.v3 v3.0
测试 stretchr/testify v1.9

架构设计

  • Factory 模式cmdutil.Factory 统一注入依赖(Config / Platform / IOStreams / Printer / TaskStore / History)
  • 接口抽象platform.Platform 接口隔离底层实现,方便切换 AI 平台
  • 多 API 客户端 — 任务编排平台(task_api_url)、模型平台(api_url)、数据洞察平台(data_api_url)、EDA/特征平台(eda_api_url)使用独立客户端,各平台可配置不同认证方式
  • 本地状态层internal/taskstore 持久化 task / notebook 句柄(省略 id 复用),internal/edastate 缓存 EDA 探索的 table_fqn/dataset_id/task_codes(details→tasks/eda 续接),internal/history 记录操作审计日志;internal/exp 缓存 profile 配置;均为单机缓存视图,平台 API 为权威
  • 分层结构cmdcmdutilpkg/platformpkg/api,职责清晰
  • 预留扩展 — Train / Eval / Config / Completion 为预留 stub

目录结构

ai-cli/
├── main.go                          # 程序入口
│
├── cmd/                             # CLI 命令层(Cobra)
│   ├── root.go                      # 根命令 + Factory 注入 + 全局 flag
│   ├── task.go                      # task 子命令注册
│   ├── task_create.go               # task create(成功后句柄落盘 taskstore)
│   ├── task_get.go                  # task get(支持省略 id)
│   ├── task_stop.go                 # task stop(支持省略 id,成功后清本地句柄)
│   ├── task_instances.go            # task instances(支持省略 id)
│   ├── task_logs.go                 # task logs(支持省略 id,instance 回退 LastExec)
│   ├── task_exec.go                 # task exec(异步执行 + --wait 超时加固 + 心跳)
│   ├── task_exec_result.go          # task exec-result(支持省略 id)
│   ├── task_local.go                # task list-local / task forget(本地句柄管理)
│   ├── taskstore_helpers.go         # 省略 id 兜底 + 历史记录辅助
│   ├── log.go                       # log 子命令(查看本地操作历史)
│   ├── login.go                     # login 子命令
│   ├── model.go                     # model 子命令
│   ├── repo.go                      # repo 子命令(代码仓库 CRUD / 分支 / 提交 / 镜像)
│   ├── exp.go                       # exp 子命令注册
│   ├── exp_create.go                # exp create(支持 --save-defaults)
│   ├── exp_list.go                  # exp list
│   ├── exp_get.go                   # exp get
│   ├── exp_stop.go                  # exp stop
│   ├── exp_delete.go                # exp delete(支持 --force)
│   ├── exp_container_logs.go        # exp container-logs
│   ├── exp_exec.go                  # exp exec(在 Notebook 中执行命令)
│   ├── exp_exec_stop.go             # exp exec-stop(停止远程命令)
│   ├── exp_metric.go                # exp metric(查询 MLflow 训练指标)
│   ├── exp_artifact.go              # exp artifact(查看 MLflow 训练产物清单 + Web UI 深链)
│   ├── exp_mlflow_common.go         # exp metric/artifact 共用:tracking URI 解析
│   ├── exp_run.go                   # exp run(端到端一键流程)
│   ├── exp_logs.go                  # exp logs(重挂某次远程命令的 SSE 日志)
│   ├── exp_config.go                # exp config 管理
│   ├── runtime_framework.go         # runtime-framework 子命令
│   ├── serve.go                     # serve 子命令
│   ├── skill.go                     # skills 子命令(list/get/install/create/delete)
│   ├── tune.go                      # tune 子命令
│   ├── dataset.go                   # dataset 子命令(list/get/metadata,数据洞察平台)
│   ├── dataset_explore.go           # dataset explore 子命令(tables/details/tasks/eda/preview/plot,EDA 探索)
│   ├── cluster.go                   # cluster 子命令(集群查询)
│   ├── resource.go                  # resource 子命令(资源规格查询)
│   ├── stub.go                      # 预留子命令(train/eval/config/completion)
│   ├── version.go                   # version 子命令
│   └── upgrade.go                   # upgrade 子命令
│
├── cmdutil/                         # 依赖注入 & 输出格式化
│   ├── factory.go                   # Factory 接口 + 默认实现(含 TaskStore/History 懒初始化)
│   ├── printer.go                   # Printer 接口 + 7 种输出格式实现
│   ├── flagmeta.go                  # FlagResolver:CLI flag → HTTP 请求映射
│   ├── pager.go                     # AutoPager:自动分页(less -R)
│   └── test_helpers.go              # MockFactory / MockPlatform / 内存版 Store/Logger
│
├── internal/                        # 内部工具包(不可外部引用)
│   ├── config/
│   │   └── config.go                # 配置加载(Viper 四级优先级)+ 持久化 + notebook 默认值
│   ├── taskstore/
│   │   └── store.go                 # 本地 task/notebook 句柄存储(~/.ai-cli/tasks.json,原子写)
│   ├── edastate/
│   │   └── edastate.go              # EDA 探索 id 缓存(~/.ai-cli/eda.json,details→tasks/eda 续接)
│   ├── history/
│   │   └── history.go               # 本地操作历史(~/.ai-cli/history/*.jsonl)
│   ├── exp/
│   │   └── profile.go               # exp 项目 profile 存储(~/.ai-cli/profiles/*.yaml)
│   ├── stream/
│   │   ├── stream.go                # StreamIterator 统一流式接口
│   │   ├── sse.go                   # SSE 事件解析器
│   │   ├── raw.go                   # 原始行解析器
│   │   └── detect.go                # 按 Content-Type 自动选择解析器
│   ├── fileembed/
│   │   └── fileembed.go             # @file 语法(读文件/stdin/base64)
│   └── jsonview/
│       └── model.go                 # bubbletea TUI 交互式 JSON 浏览器
│
├── pkg/                             # 对外可复用包
│   ├── api/                         # HTTP 客户端层
│   │   ├── client.go                # Client 封装(认证/JSON/限流/错误解析/APIResponse解包/multipart上传,支持自定义 auth header)
│   │   ├── task.go                  # Task API + Queue API
│   │   ├── model.go                 # Model API(/hub/api/v1/models/...)
│   │   ├── code.go                  # Code API(代码仓库)
│   │   ├── notebook.go              # Notebook API
│   │   ├── runtime_framework.go     # RuntimeFramework API
│   │   ├── serve.go                 # Serve API(deployments)
│   │   ├── skill.go                 # Skill API(list/get/create/delete/download)
│   │   ├── train.go                 # Train API(finetune)
│   │   └── data.go                  # Data API(数据洞察:datasets/metadata,独立解包)
│   │   └── eda.go                   # EDA API(数据探索:tables/details/tasks/overview/preview/plot,字符串体容错解码)
│   │
│   └── platform/                    # 领域接口 & 适配器
│       ├── interface.go             # Platform/TaskClient/ModelClient/... 接口 + 领域模型
│       └── adapter/
│           └── openapi/             # OpenAPI 适配器实现
│               ├── platform.go                 # Platform 接口实现(多客户端:task + model + code + notebook + data)
│               ├── task_client.go              # TaskClient 适配器
│               ├── queue_client.go             # QueueClient 适配器(内部使用,无 CLI 命令)
│               ├── model_client.go             # ModelClient 适配器
│               ├── code_client.go              # CodeClient 适配器
│               ├── notebook_client.go          # NotebookClient 适配器
│               ├── runtime_framework_client.go # RuntimeFrameworkClient 适配器
│               ├── serve_client.go             # ServeClient 适配器
│               ├── skill_client.go             # SkillClient 适配器
│               ├── train_client.go             # TrainClient 适配器
│               └── data_client.go              # DataClient 适配器(数据洞察平台)
│               └── eda_client.go               # EDAClient 适配器(数据探索 6 端点转发)
│
├── docs/
│   ├── ai_platform.json             # AI 模型平台 OpenAPI 规范
│   ├── task-platform-api.json       # 任务编排平台 API 规范
│   ├── ai-cli-exp-manual.md  # exp 详细使用手册
│   └── cli.md                       # CLI 使用说明
│
├── scripts/
│   ├── build-release.sh             # 本地复刻 CI 构建:6 平台交叉编译 + sha256 + BUILD_INFO
│   ├── publish-public-release.sh    # 发布到 public 仓库 ai-public/ai-cli-release(含同步 install 脚本)
│   ├── install-public.sh            # public 仓库匿名安装脚本(同步到仓库根 install.sh)
│   └── install-public.ps1           # public 仓库 Windows 安装脚本(同步到仓库根 install.ps1)
│
├── Makefile                         # 构建 / 测试 / 交叉编译 / Shell 补全
└── go.mod                           # Go 模块定义

开发

make dev            # 开发模式运行
make test           # 运行测试
make test-coverage  # 测试覆盖率报告
make fmt            # 格式化代码
make vet            # 静态分析
make lint           # 运行 golangci-lint
make mock-server    # 启动模拟 API 服务
make completions    # 生成 Shell 补全脚本

技术栈

  • Go 1.24

About

The cli tool for ai platform.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages