logo
0
0
WeChat Login
docs: update SKILL.md and README for env var support and file-based key

vcurl

一个类 curl 的命令行工具,让 AI 安全地发送 HTTP 请求,密钥永远不会进入 LLM 上下文。

vcurl 在发送请求前自动替换 URL、Header、Body 中的 {{key}} 占位符为真实值。变量可通过配置命令、环境变量或 --var 参数提供。

安装

curl -fsSL https://cnb.cool/i-maxwell/vcurl/-/git/raw/master/install.sh | bash

需要 Go 1.25.6+,安装后确保 ~/go/bin 在 PATH 中。

快速上手

1. 配置变量

vcurl config set api.example.com token "your-secret-token"
vcurl config set api.example.com api_key "your-api-key"

2. 发送请求

# GET 请求
vcurl curl https://api.example.com/v1/users \
  -H "Authorization: Bearer {{token}}"

# POST 请求
vcurl curl https://api.example.com/v1/chat -X POST \
  -H "Authorization: Bearer {{api_key}}" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-4", "messages": [{"role": "user", "content": "hello"}]}'

vcurl 会根据 URL 中的域名自动匹配配置,将 {{token}}{{api_key}} 替换为真实值后发送请求。

变量解析优先级

{{key}} 占位符按以下优先级解析(从高到低):

  1. --var key=value 命令行参数
  2. vcurl config set 配置的变量
  3. 环境变量 VCURL_<DOMAIN>_<KEY>(域名级)
  4. 环境变量 VCURL_<KEY>(通用)

环境变量命名规则:域名中的 . - : 转为 _,全部大写。

命令参数

vcurl curl [URL] [flags]
参数说明
-X, --methodHTTP 方法(默认 GET)
-H, --header请求头(可多次指定)
-d, --data请求体
--var变量覆盖,格式 key=value(可多次指定)
--config配置文件路径(默认 ~/.vcurl.yaml)

容器化 / CI 环境使用

在没有配置文件的环境中(如 Knot Agent、CI 容器),可通过环境变量或 --var 提供密钥:

# 方式一:环境变量
export VCURL_TOKEN="my-secret"
vcurl curl https://api.example.com -H "Authorization: Bearer {{token}}"

# 方式二:--var 引用平台注入的变量
vcurl curl https://api.example.com \
  --var "token=$CLOUDAPP_TOKEN" \
  -H "Authorization: Bearer {{token}}"

同一份代码在本地(用 vcurl config set)和容器中(用环境变量)都能正常运行。

安全设计

  • 变量值通过 AES-256-GCM 加密存储在 ~/.vcurl.yaml
  • 加密密钥存储在 ~/.vcurl.key(权限 0600),首次使用时自动生成
  • 升级 vcurl 不影响已有加密配置
  • AI 只能看到占位符名称,无法接触真实密钥

AI Skill 支持

vcurl 提供了 CodeBuddy Skill,AI 在需要发送带密钥的 HTTP 请求时会自动使用 vcurl。

一键安装 Skill

在 CodeBuddy Code 中执行:

/skill install https://cnb.cool/i-maxwell/vcurl/tree/master/skill/vcurl

业务方接入

业务方在自己的项目中编写 skill 描述 API 细节,AI 即可结合 vcurl 自动调用你的接口。详见 skill/vcurl/SKILL.md 中的"业务方接入指南"。

License

MIT