数据、网络、AI的瑞士军刀

Rust 单二进制 · Windows / Ubuntu · AI · 数据 · HTTP 三大核心

ai 子命令查 8000+ 全球模型与 1039 个中文模型、多 Provider 加权轮询聊天、开 OpenAI 兼容本地服务、生成图片、把配置一键导出给 8 种 agent 工具;data 子命令让 JSON / YAML / TOML / CSV / 表格七种格式互转、切片、过滤、投影、计数全在管道里完成;http 子命令按 httpie 参数子集对齐,默认 JSON、完整请求项语法、--offline / --curl / --debug 排查请求 —— 外加 PATH、环境变量、日志、进程等日常命令。

sys-windows-x86_64_v0.6.40.exe · 2.9 MB · UPX 压缩 · 单文件免安装

  • 8000+可查 AI 模型
  • 226个 Provider 目录
  • 7种数据格式互转
  • 8种 agent 配置导出
sys — bash
~ sys ai model --open --date 2026-01-01 --limit 3
ID             CONTEXT  TYPE
deepseek-v3.2   128,000  text
qwen3-vl-30b    256,000  text,image
~ sys ai chat "帮我起个标题" --free
《终端里的瑞士军刀:sys 的十二般兵器》
~ ps | sys data -i table 'Memory|count()' 
312
~ sys data -f cfg.yaml 'clients[*]|{name,models}'

三个重点模块:ai、data 与 http

其余子命令解决日常运维,这三个把「AI 资源」「结构化数据」「HTTP 接口」直接变成命令行里可查、可换、可跑的东西。

重点模块

sys ai · 一整条 AI 工作流

从「哪个模型能用、多少钱」到「直接跟它聊」再到「把这套配置喂给 codex / opencode / litellm / trae」,不用离开终端。

01

全球模型目录离线可查

数据源 models.dev:226 个 Provider、8000+ 模型,24 小时本地缓存,--refresh 强制重抓。精确命中 id / canonical_model_id / name,未命中自动降级子串;多个 Provider 暴露同名模型时按 canonical 多数投票优选,并提示其余 Provider 数量。

sys ai model gpt-4.1  # canonical 优选
sys ai model openai/gpt-4.1-mini  # 完整 id 精确定位
02

四个维度过滤,直接拿到候选集

--date 只看晚于某日期更新的、--open 只看开放权重、--model-type 模态多值取交集(接受中文「文本,图像」与全角逗号)、--limit 控制条数;无参即列全量,输出是带表头的对齐表格。

sys ai model --open --date 2025-01-01
sys ai model --model-type text,image --limit 10
03

中文模型独立数据源,带参数量

ai cn-model 抓 DataLearner 的 1039 个预训练模型(分页抓取 + slug 去重);精确命中额外抓详情页,附带上下文长度、输入/输出模态与参数规模(参数量),失败静默降级不阻塞。

sys ai cn-model deepseek-r1
sys ai cn-model --model-type 语音,多模态
04

多 Provider 动态加权轮询聊天

OpenAI / Anthropic 双协议;请求失败且 weight > 1 则降权并自动试下一个模型,替补成功升权,权重写回配置文件持续生效;轮询状态存 chat_state.json。模型选择支持 provider:model / provider:* / 裸名 / group:<组名> / 逗号多选,发送前按 max_input_tokens 截断超长消息。

sys ai chat "你好" -m "agnes:*,group:cheap"
sys ai chat "hi" --free=blockrun   # 无配置也能聊
05

把配置变成 OpenAI 兼容服务

ai server 起本地 HTTP 服务,暴露 POST /v1/chat/completions(非流式与 SSE 透传)与 GET /v1/models(ID 为 {provider}:{model}),默认 127.0.0.1:10000,地址可只给端口或只给 IP;--help 探测服务是否在跑并打印配置的 provider/model。

sys ai server 0.0.0.0:9000
sys ai server --help   # 查状态 + 列出可用模型
06

八种 agent 配置格式,双向流动

导出 codex / opencode / litellm / freellmapi / codebuddy / workbuddy / trae / zcoder;--show 只预览、-f 写入前自动备份、--update 就地合并缺失条目、--import 从这些工具反向导入回本地配置。一律以 api_base 判定同一 Provider 并归并,不会为同一端点写出多个条目。

sys ai config codex --show
sys ai config workbuddy --import   # 先备份再合并
重点模块

sys data · 结构化数据引擎

选择器兼容子集 + 扩展:七种格式互转、切片、函数、投影、计数,全部在一条管道里完成;老 GBK 文件也能直接读。

01

七种格式任意互转

json / jsonl / yaml / toml / csv / md / table 互转;-i 定输入、-o 定输出(缺省同输入),省略表达式即纯转换。来源三选一:stdin 自动检测、-f FILE 按扩展名、-u URL 直接 GET。

sys data -i yaml -o json < in.yaml
sys data -u https://api.dev/config status
02

把 ps / 日志当数据库查

table 输入自动识别表头(---- 分隔线跳过、多余列并入最后一列、类型自动推断);csv / table / jsonl 下裸谓词直接过滤,不必写 [*].filter。

ps | sys data -i table 'Id==7360'
sys data -f app.log 'level=="error"'
03

Python 式切片 + 计数

[:2] / [1:3] / [-2:] / [::2] / [::-1] 只读切片(越界截断、空区间合法、步长可负),可接在多段选择之后; count() 支持管道与点式两种写法。

sys data 'data[:2]|count()'          # = 2
ps | sys data -i table '[*]|count()' # 数行数
04

jq 式键投影,三种写法

管道 data[*]|{id,name}、裸 {k1,k2} 直接作用根文档(对象根只留这些键、数组根逐行投影)、深层尾随 sites[0]{key,name} 可省管道;切片也能作投影左侧。

cat 4k.json | sys data '{wallpaper,warningText}'
sys data -f 4k.json 'sites[:2]{key,name}'
05

改数据:赋值、删除、算术

PATH = VALUE、= null 删除键、= @FILE 读文件、= strenv(NAME) 读环境变量、+= -= *= /= 数值更新(+= 对字符串追加);-w FILE 写回,--root 打印整份文档。

sys data -f cfg.yaml 'server.port = 8080' -w cfg.yaml
sys data 'sites.remove(name.contains("web"))' --root
06

中文键、GBK 与上色输出

引号键 m["中文键"] 支持空格与点号;字节级宽容解码链 BOM → UTF-16 → UTF-8 → GBK → GB18030 → 宽松降级,GBK 设备日志直接读;TTY 下 json/yaml 按 jq 风格上色,管道与写文件一律纯文本(NO_COLOR 可关)。

sys data 'm["中文键"]' -f data.json
sys data --depth 1 -f cfg.yaml   # 只保留顶层键
重点模块

sys http · httpie 兼容客户端

参数与 httpie 保持一致(子集):默认 JSON、完整请求项语法、下载与认证、离线构建,还能一行打出等价 --curl 命令;手工调试和脚本里判断退出码都够用。

01

默认 JSON,方法自动推导

所有请求默认带 Content-Type: application/json(即使一个数据项都没有),key=value 自动拼成 JSON 对象;无数据项默认 GET,含数据项自动 POST。-f/--form 切表单编码、--multipart 走多部分、显式 Content-Type:xxx 头可覆盖默认值。

sys http pie.dev/post name=John age:=29
sys http -f POST pie.dev/post name='John Smith'
02

请求项语法与 httpie 对齐

key:=json 原始 JSON 值(数字 / 布尔 / 对象 / 数组)、key==v 查询参数、key:v 请求头(key: 取消默认头、key; 发空头)、key@file multipart 上传(可 ;type=mime 指定类型)、key=@file / :=@file / ==@file / :@file 从文件读取值,内容里的引号与反斜杠自动转义并剥离 BOM、尾部换行。

sys http GET pie.dev/get q==httpie per_page==1
sys http pie.dev/post X-API-Token:123 cv@resume.pdf
03

原始体三个入口,嵌套 JSON 直接写

@file、--file FILE、stdin 管道都能作原始请求体,--raw '{...}' 显式指定;嵌套结构不必手工拼字符串 —— a[b][c]=v、a[]=v、a[1]=v、:=1 即可;以 - 开头的字段名跟在 -- 之后。

sys http POST pie.dev/post @data.json
sys http POST pie.dev/post 'a[b][c]=1' 'tags[]=go'
04

输出随环境自适应

-p/--print 任意组合 BHbh,另有 -h 仅头、-b 仅体、-m 状态行、-v 全量;终端下默认 hb,一进管道或重定向自动只输出 body。JSON 响应默认缩进美化,--pretty none 关闭,-q/--quiet 静音提示信息。

sys http -m pie.dev/get
sys http pie.dev/get | sys data 'args.url'
05

下载、认证、网络与退出码

-o FILE 响应体存盘(其余信息进 stderr)、-d wget 式下载;-a user:pass Basic、-A bearer -a TOKEN Bearer;-F/--follow + --max-redirects、--timeout、--proxy、--verify no 跳过证书校验、--default-scheme 自动补协议、-I 忽略 stdin;--check-status 把 3xx / 4xx / 5xx 映射成退出码 3 / 4 / 5。

sys http -d pie.dev/image.png
sys http --check-status pie.dev/404   # echo $? = 4
06

调试三件套:offline / curl / debug

--offline 只构建并打印请求不发送;--curl 打印完全等价的 curl 命令(方法、URL、查询参数、头、体、认证、代理、重定向、超时、证书、输出全覆盖,JSON / 表单 / multipart 按实际发送内容转换,--file 保留为 --data-binary @FILE,POSIX 单引号引用可直接复制运行);--debug 把实际请求与响应打到 stderr,stdout 保持干净。

sys http --curl pie.dev/post name=John age:=29
sys http --debug pie.dev/post a=1 b:=2

其余能力,同样一种手感

统一的 sys <子命令> 语法,每个子命令各自 --help,参数风格与示例保持一致。

pathPATH 管理

增删查改系统 PATH,自动转绝对路径、去重、前置插入。默认只动当前会话,--save 才持久化;user / machine 双作用域,Windows 还能 path unlock 解锁被占用的文件;export / import 支持 .reg / JSON / 文本三格式,跨机迁移与备份还原靠它。

sys path add D:\tools --save
sys path export backup.reg
查看详情 →

link链接到 PATH

把任意文件挂进 PATH 目录,之后任意目录直接敲名字执行。硬链接 → 符号链接 → 拷贝三级自动回退,Windows 自动生成 .cmd 垫片。

sys link mytool.exe --name t
sys link ./deploy.py
查看详情 →

env环境变量管理

get / set / unset / list,默认持久化并同时更新当前进程;值含空格自动 shell 转义,--temporary 只打印可粘贴片段。

sys env set FOO bar
sys env list --format json
查看详情 →

net网络探测

从文件批量读取地址:3 次 GET 取平均按响应时间排序、校验 tv JSON 结构并统计排序、清理失效源、离线提取 URL、查 RDAP 域名注册信息。

sys net -i urls.txt -t domain
sys net -i urls.txt -t test -o clean.txt
查看详情 →

log彩色日志查看器

less 式交互:解析 Nginx / Linux / Windows / Log4j 日志,时间橙色、级别渐变、IP 蓝色;按级别过滤、关键字搜索、-f 追踪轮转文件。

sys log --file app.log --level error
sys log --file app.log -f
查看详情 →

file文本搜索与替换

fd 风格:按参数个数决定搜 stdin、搜目录树还是就地替换;附哈希比对、编码转换与大小/时间/深度筛选,中文匹配同样正确。

sys file hello D:\projects -e py
sys file --enc old.log new.log --from gbk
查看详情 →

task进程与端口

无参列全部进程(PID / 名称 / 路径),-o 8080 直接查谁占了这个端口,按 PID 或名称模糊终止,-f 强制。

sys task -o 8080
sys task kill -f 1234
查看详情 →

一条命令看懂每个模块

sys ai
# 查 models.dev:开放权重、2025 年后更新的模型
~ sys ai model --open --date 2025-01-01 --limit 3
ID            NAME          CONTEXT  TYPE
deepseek-v3.2  DeepSeek-V3.2  128,000  text
qwen3-vl-30b   Qwen3-VL-30B   256,000  text,image

# 没有配置文件?内置免费路由直接聊
~ sys ai chat "用一句话解释 PATH" --free
PATH 是操作系统用来查找可执行文件的目录列表,敲命令时按顺序在这些目录里找你输入的程序。

# 把已配置的 Provider 导出给 codex / opencode / litellm / trae…
~ sys ai config codex --show
→ ~/.codex/config.toml(仅预览,未写入)

ai 模块完整说明:目录查询 / 聊天 / 服务 / 图片 / 配置导出 →

快速开始

单文件免安装,下载即可运行;发布产物统一 UPX 压缩,文件名带平台 + 架构 + 版本号。

Windows x86_64 · v0.6.40

sys-windows-x86_64_v0.6.40.exe
立即下载(2.9 MB)

放进任意目录双击即用;持久化默认写 HKCU\Environment,机器级需管理员。首次运行若被浏览器拦截,选择「保留」即可。

Ubuntu / Linux x86_64

sys-linux-x86_64_v0.6.40

当前站点仅提供 Windows 安装包,Linux 版请用下方一键脚本自行构建;chmod +x 后 sys link sys -f 挂进 ~/.local/bin,持久化写入 ~/.config/sys/ 托管文件。

自行构建

cargo build --release
powershell -File build.ps1   # Windows 一键发布
./build.sh                   # Ubuntu 一键发布

需要 Rust 1.79+;脚本自动 UPX 压缩、冒烟测试并清理 target/。

为什么是 sys

单二进制,零依赖

Rust 编写,UPX 压缩后一个文件拷走即用;Windows 与 Ubuntu 行为一致,同一套子命令与参数。

默认安全的作用域

path add 默认只动当前会话并打印可粘贴片段,加 --save 才持久化;所有写操作都可 --temporary,改配置不再害怕。

不联网也能用

AI 模型目录 24 小时本地缓存,--refresh 强制重抓;http --offline / --curl 只构建不发送。

可脚本化输出

-o json|csv|yaml|md 机器可读;管道输出自动去 ANSI;httpie 风格退出码 --check-status,CI 里直接判断。