密钥管理
智能体可以在运行时通过 tai tool CLI 读取用户配置的密钥。密钥在静态时使用 AES-256-GCM 加密,仅在读取时解密。
可用工具
| 工具 | 描述 |
|---|---|
secret_list | 列出密钥名称和描述(不包含值) |
secret_read | 按名称读取单个密钥的值 |
使用方法
Bash
# 列出可用密钥
tai tool secret_list
# 读取密钥
TOKEN=$(tai tool secret_read '{"name": "GITHUB_TOKEN"}' | jq -r '.value')
git clone "https://${TOKEN}@github.com/org/repo.git"
Node.js
const { execSync } = require("child_process");
function readSecret(name) {
const raw = execSync(
`tai tool secret_read '${JSON.stringify({ name })}'`,
{ encoding: "utf-8" }
);
return JSON.parse(raw).value;
}
const token = readSecret("GITHUB_TOKEN");
Python
import json
import subprocess
def read_secret(name: str) -> str:
result = subprocess.run(
["tai", "tool", "secret_read", json.dumps({"name": name})],
capture_output=True, text=True, check=True,
)
return json.loads(result.stdout)["value"]
token = read_secret("GITHUB_TOKEN")
PowerShell
function Read-Secret {
param([string]$Name)
$json = @{ name = $Name } | ConvertTo-Json -Compress
$result = tai tool secret_read $json | ConvertFrom-Json
return $result.value
}
$token = Read-Secret -Name "GITHUB_TOKEN"
安全规则
- 切勿打印或记录密钥值 —— 不要将密钥写入标准输出、标准错误或任何日志文件。
- 切勿将密钥写入文件 —— 例外:SSH 密钥可以写入
~/.ssh/目录,权限设置为chmod 600。 - 切勿将密钥发送给 LLM —— 密钥值不得出现在提示内容、系统消息或转发给模型的结果中。
- 作用域隔离 —— 密钥按用户和智能体分别作用域。智能体只能访问为其配置的密钥。
- 审计追踪 —— 每次
secret_read调用都会在审计追踪中记录,并标明调用者身份。