一个类 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 中。
vcurl config set api.example.com token "your-secret-token"
vcurl config set api.example.com api_key "your-api-key"
# 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}} 占位符按以下优先级解析(从高到低):
--var key=value 命令行参数vcurl config set 配置的变量VCURL_<DOMAIN>_<KEY>(域名级)VCURL_<KEY>(通用)环境变量命名规则:域名中的 . - : 转为 _,全部大写。
vcurl curl [URL] [flags]
| 参数 | 说明 |
|---|---|
-X, --method | HTTP 方法(默认 GET) |
-H, --header | 请求头(可多次指定) |
-d, --data | 请求体 |
--var | 变量覆盖,格式 key=value(可多次指定) |
--config | 配置文件路径(默认 ~/.vcurl.yaml) |
在没有配置文件的环境中(如 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)和容器中(用环境变量)都能正常运行。
~/.vcurl.yaml 中~/.vcurl.key(权限 0600),首次使用时自动生成vcurl 提供了 CodeBuddy Skill,AI 在需要发送带密钥的 HTTP 请求时会自动使用 vcurl。
在 CodeBuddy Code 中执行:
/skill install https://cnb.cool/i-maxwell/vcurl/tree/master/skill/vcurl
业务方在自己的项目中编写 skill 描述 API 细节,AI 即可结合 vcurl 自动调用你的接口。详见 skill/vcurl/SKILL.md 中的"业务方接入指南"。
MIT