seek-cli

module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 16, 2026 License: MIT

README

seek-cli

CI Release Go License

DeepSeek 开发者平台的命令行工具 —— DeepSeek 版的 ant

仓库名 seek-cli,安装后终端命令为短名 seek(对齐 ant 惯例:仓库 anthropic-cli / 命令 ant)。

seek 把 DeepSeek API 的每一个资源,原样映射成 资源 动作 形式的子命令。它不是聊天机器人,也不是 coding agent,而是 API 的最薄终端外壳:用 typed flags 或管道里的 YAML 构造请求体,用内置 GJSON --transform 抽取响应字段(无需 jq),支持多种输出格式。

设计完全对照 Anthropic 官方的 ant CLI —— 因为调研发现 DeepSeek 官方没有这样的产品,社区也只有聊天/agent 方向的封装,没有一个是"把整个 API 资源化"的薄壳seek 填的就是这个空位。

为什么不是 curl

痛点 curl seek
构造请求体 手写 JSON 字符串 typed flags / 管道 YAML,flags 优先合并
把文件塞进字段 手动 base64 @path 自动内联(二进制自动 base64)
提取响应字段 再管道给 jq 内置 --transform GJSON 查询
取标量塞进变量 jq -r --raw-output / -r
换格式看 自己处理 --format yaml/json/jsonl/pretty/raw

安装

Homebrew(macOS / Linux,最简单)

brew install yzfly/tap/seek

一键脚本(macOS / Linux)

curl -fsSL https://raw.githubusercontent.com/yzfly/seek-cli/main/install.sh | bash
# 自定义目录: SEEK_INSTALL_DIR=~/bin curl -fsSL .../install.sh | bash

go install(需 Go 1.25+)

go install github.com/yzfly/seek-cli/cmd/seek@latest

从源码构建

git clone git@github-yzfly:yzfly/seek-cli.git && cd seek-cli
make build          # 产出 ./bin/seek
make install        # 安装到 $(go env GOPATH)/bin

或直接从 Releases 下载对应平台二进制。验证:

seek --version

鉴权

DeepSeek 用 API key(无 OAuth)。三种方式,优先级 --api-key > $DEEPSEEK_API_KEY > 配置档:

# 方式一: 保存到配置档 (写入 ~/.config/seek/config.json, 权限 0600)
seek auth login          # 交互式输入 key, 并做一次余额验证
seek auth status         # 查看当前鉴权状态 (key 脱敏)

# 方式二: 环境变量
export DEEPSEEK_API_KEY=sk-xxxx

# 方式三: 单次命令
seek --api-key sk-xxxx models list

第一个请求

seek chat create \
  --model deepseek-v4-pro \
  --max-tokens 1024 \
  --message '{role: user, content: "你好, DeepSeek"}'

只想拿到回复正文:

seek chat create --model deepseek-v4-pro \
  --user "用一句话解释什么是大语言模型" \
  --transform 'choices.0.message.content' -r

命令结构

命令遵循 资源 动作 模式,与 ant 一致:

seek <资源> <动作> [选项]
命令 说明 DeepSeek 端点
seek chat create 对话补全 POST /chat/completions
seek fim create FIM 中间填充补全 POST /beta/completions
seek models list 列出可用模型 GET /models
seek models retrieve 取单个模型(本地过滤) GET /models
seek balance retrieve 查询账户余额 GET /user/balance
seek auth ... 管理凭据 本地
seek profile ... 管理命名配置档 本地
seek providers 列出第三方服务别名 本地

任意命令加 --help 查看其 flag。

请求体的三种入口

按数据形状分工(与 ant 一致):

1. Flags(标量与短结构)
seek chat create \
  --model deepseek-v4-pro \
  --message '{role: user, content: "你好"}' \
  --message '{role: assistant, content: "你好, 有什么可以帮你?"}' \
  --message '{role: user, content: "讲个笑话"}' \
  --temperature 0.7 --max-tokens 512

结构化字段用宽松 YAML(键可不加引号),可重复 flag 追加成数组:

seek chat create --model deepseek-v4-pro --user "今天天气?" \
  --tool '{type: function, function: {name: get_weather, parameters: {type: object}}}' \
  --tool-choice auto
2. stdin 文档(嵌套 / 多行)

管道 JSON 或 YAML 作为完整请求体,flags 仍可覆盖其字段:

cat <<'YAML' | seek chat create --model deepseek-v4-flash
messages:
  - role: system
    content: 你是一个严谨的翻译。
  - role: user
    content: Translate to English: 江畔何人初见月
YAML
3. @path 文件内联

把文件内容塞进任意字符串字段,自动判定文本/二进制:

seek chat create --model deepseek-v4-pro \
  --message '{role: user, content: "@./article.md"}' \
  --user "总结上面的文章"
  • @file://path 强制纯文本
  • @data://path 强制 base64
  • \@literal 转义字面量 @

输出与变换

# 输出格式: auto(默认) / json / jsonl / yaml / pretty / raw
seek models list --format yaml

# GJSON 变换 (list 端点对每个元素生效)
seek models list --transform '{id}' --format jsonl

# 取标量塞进 shell 变量
BAL=$(seek balance retrieve --transform 'balance_infos.0.total_balance' -r)
echo "余额: $BAL"

流式

seek chat create --model deepseek-v4-pro --user "写一首短诗" --stream \
  --transform 'choices.0.delta.content' -r

接入第三方服务

DeepSeek API 是 OpenAI 兼容的,所以 seekchat / fim / models 命令对任何 OpenAI 兼容端点都通用——阿里云百炼、硅基流动、Moonshot、智谱、OpenRouter、本地 Ollama 等。

内置别名,用 --base-url <别名> 代替一长串 URL:

seek providers          # 列出所有内置别名
别名 服务
deepseek DeepSeek 官方
dashscope 阿里云百炼(兼容模式)
siliconflow 硅基流动
moonshot 月之暗面 Kimi
zhipu 智谱 GLM
openrouter OpenRouter
openai OpenAI
ollama 本地 Ollama

三种用法:

# 1) 单次命令
seek --base-url dashscope --api-key sk-xxx chat create --model deepseek-v4-pro --user 你好

# 2) 环境变量 (与 $DEEPSEEK_API_KEY / $SEEK_API_KEY 搭配)
export SEEK_BASE_URL=dashscope
seek chat create --model deepseek-v4-pro --user 你好

# 3) 存进 profile (推荐: 别名非密钥, key 仍从环境变量读)
seek profile set base_url dashscope
seek chat create --model deepseek-v4-pro --user 你好

--base-url 也接受任意完整 URL(不在别名表里的服务直接传 URL 即可)。

注意:balance 是 DeepSeek 官方特有端点,第三方网关通常不支持(会返回错误)。

配置档(多 key / 多环境)

seek profile list
seek profile activate work
seek auth login --profile work
seek --profile work chat create --model deepseek-v4-pro --user hi

全局选项

选项 说明
--format 输出格式 auto/json/jsonl/yaml/pretty/raw/explore
--transform GJSON 路径,抽取/重塑响应
-r, --raw-output 字符串结果去掉 JSON 引号
--format-error / --transform-error 对错误响应单独应用
--base-url base URL 或 provider 别名(默认 https://api.deepseek.com$SEEK_BASE_URL
--debug 打印完整 HTTP 请求/响应到 stderr(密钥脱敏)
--profile 使用的命名配置档
--api-key 直接传 key($DEEPSEEK_API_KEY

Shell 补全

# zsh
seek completion zsh > "${fpath[1]}/_seek"
# bash
seek completion bash | sudo tee /etc/bash_completion.d/seek

调试

seek --debug chat create --model deepseek-v4-pro --user hi
# stderr 打印请求行、请求头(Authorization 已脱敏)、请求体、响应

设计说明

  • 薄壳哲学:不发明新概念,资源/动作一一对应 API,让 shell 成为操控 DeepSeek 的单一控制点,可组合、可被脚本与 agent 治理。
  • balancefim 是 DeepSeek 特有,ant 没有对应。
  • models retrieve:DeepSeek 无单模型端点,seek 在本地用 GJSON 从 list 结果过滤,对用户表现为一致的 retrieve 语义。

协议与作者

  • 协议:MIT
  • 作者:云中江树,微信公众号:云中江树

Directories

Path Synopsis
cmd
seek command
seek 是 DeepSeek 开发者平台的命令行工具 —— 对照 Anthropic 的 ant CLI, 把 DeepSeek API 的每个资源原样映射成 `resource action` 子命令的最薄外壳。
seek 是 DeepSeek 开发者平台的命令行工具 —— 对照 Anthropic 的 ant CLI, 把 DeepSeek API 的每个资源原样映射成 `resource action` 子命令的最薄外壳。
internal
body
Package body 负责把命令行的多种输入来源组装成最终请求体。
Package body 负责把命令行的多种输入来源组装成最终请求体。
client
Package client 是 DeepSeek HTTP API 的最薄封装。
Package client 是 DeepSeek HTTP API 的最薄封装。
cmd
Package cmd 组装 seek 的命令树。
Package cmd 组装 seek 的命令树。
config
Package config 管理 seek 的命名配置档 (profiles)。
Package config 管理 seek 的命名配置档 (profiles)。
provider
Package provider 维护第三方 OpenAI 兼容服务的 base URL 别名。
Package provider 维护第三方 OpenAI 兼容服务的 base URL 别名。
render
Package render 负责响应的格式化输出, 对照 ant 的 --format / --transform / --raw-output。
Package render 负责响应的格式化输出, 对照 ant 的 --format / --transform / --raw-output。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL