密钥与令牌安全:pi-skills的API Key与OAuth凭证安全存储最佳实践
【免费下载链接】pi-skillsSkills for pi coding agent (compatible with Claude Code and Codex CLI)项目地址: https://gitcode.com/gh_mirrors/pi/pi-skills
pi-skills是面向 pi coding agent(兼容 Claude Code、Codex CLI 等)的一组技能包,包含网页搜索、浏览器自动化、Google 全家桶和语音转写等能力。其中不少技能需要API Key或OAuth 凭证才能工作,本文带你掌握这些密钥与令牌的安全存储最佳实践,避免最常见的泄露隐患。
先获取项目(如需要 clone):
git clone https://gitcode.com/gh_mirrors/pi/pi-skills先搞懂:pi-skills 里的 2 种凭证形态
理解存储方式之前,先看清 pi-skills 到底用了哪些凭证。整个仓库的密钥管理只有两类模式,见 README.md 中的技能清单:
| 凭证类型 | 使用技能 | 存储方式 | 涉及文件 |
|---|---|---|---|
| 🔑 API Key(订阅令牌) | brave-search、transcribe | 环境变量(或本地 config 文件) | brave-search/SKILL.md、transcribe/SKILL.md |
| 🪪 OAuth 客户端凭证 + 访问令牌 | gccli、gdcli、gmcli | 本地 JSON 文件(~/.xxx/目录) | gccli/SKILL.md、gdcli/SKILL.md、gmcli/SKILL.md |
两种模式的安全性要点不同,下面逐一拆解。
API Key 怎么存:环境变量是首选
1️⃣ Brave Search:写入 Shell 配置文件
brave-search/SKILL.md 推荐的官方做法,是把 Key 写到 shell 配置文件(~/.profile,zsh 用户为~/.zprofile):
export BRAVE_API_KEY="your-api-key-here"运行脚本时,search.js 会从环境变量中读取BRAVE_API_KEY,未设置时会直接报错退出,而不会尝试读取任何本地文件——这正是推荐环境变量的原因:密钥不落盘,不随项目目录被提交或同步。
2️⃣ Groq 转写:环境变量或本地 config 文件
transcribe 技能同样优先GROQ_API_KEY环境变量,写入~/.zshrc或~/.bashrc后执行source生效。它还提供了一个备选方案:
echo 'GROQ_API_KEY="your-key"' > configtranscribe.sh 开头会优先加载同目录下的config文件,再检查环境变量。
⚠️注意:
config文件是明文密钥,绝对不要放进版本库或同步盘,建议创建后立即收紧权限(chmod 600 config)。
OAuth 凭证怎么存:三个 Google 技能的模式
gccli(日历)、gdcli(云盘)、gmcli(Gmail)走的是标准的OAuth 桌面应用流程,涉及两个文件:
- 客户端凭证:在 Google Cloud Console 创建 "Desktop app" 类型的 OAuth 客户端并下载 JSON,然后执行一次导入,例如:
gccli accounts credentials ~/path/to/credentials.json- 账户令牌:再执行
gccli accounts add <邮箱>完成浏览器授权(无浏览器环境可用--manual手动模式),令牌会持久化到本地。
三个技能的数据落盘位置完全一致,见各自的 SKILL 文档:
| 技能 | 客户端凭证 | 账户令牌 | 文档位置 |
|---|---|---|---|
| Google 日历 | ~/.gccli/credentials.json | ~/.gccli/accounts.json | gccli/SKILL.md |
| Google 云盘 | ~/.gdcli/credentials.json | ~/.gdcli/accounts.json | gdcli/SKILL.md |
| Gmail | ~/.gmcli/credentials.json | ~/.gmcli/accounts.json | gmcli/SKILL.md |
这套设计的优点:凭证统一放在用户主目录下的技能专属目录,与项目代码物理隔离——即使把技能软链接到项目里(如.claude/skills/),密钥也不会混进代码仓库。
5 条最佳实践清单(照做即可)
✅密钥永不入仓:所有凭证文件都在~/.gccli/、~/.gdcli/等家目录中,与 clone 下来的技能目录分离;transcribe/config这类本地文件要加入.gitignore。
✅收紧文件权限:对明文凭证执行chmod 600,只允许属主读写。
✅最小授权:Google 技能在 OAuth 受众中只添加自己实际使用的 Gmail 地址(测试用户),不要添加无关账号。
✅慎用 Cookies 导出工具:browser-tools 提供了 browser-cookies.js,它会把当前页面的 Cookie 值直接打印到终端(含会话令牌)。请只在本地排查登录问题时使用,不要把输出粘贴到日志、截图或聊天记录中。
✅泄露即轮换:API Key 泄露到公开仓库时,第一时间在提供方控制台吊销旧 Key 并重新生成;OAuth 令牌同理,可删除accounts.json中的对应账户并重新accounts add授权。
常见问题
问:把 API Key 硬编码在脚本里行不行?
不建议。硬编码的密钥容易随代码提交、分享而泄露。pi-skills 的全部技能都遵循"运行时从环境变量读取"的模式(如 search.js 检查BRAVE_API_KEY),这是更安全也更便于轮换的方式。
问:多台机器如何同步凭证?
不要同步credentials.json/accounts.json这类令牌文件。客户端凭证(下载的 JSON)可以复制,但访问令牌建议在新机器上重新走一次授权流程。
问:如何确认哪些技能需要配置?
查看 README.md 的 Requirements 部分即可:brave-search 和 transcribe 需要 API Key,三个 Google 技能需要 OAuth 凭证,其余技能(如 youtube-transcript、vscode)无需任何密钥。
小结
pi-skills 的凭证安全模型很清晰:API Key 走环境变量,OAuth 凭证落家目录专属文件。只要守住"密钥不入仓、权限收紧 600、最小授权、泄露即轮换"这几条底线,就能安全地享受 AI 编码代理带来的生产力。
【免费下载链接】pi-skillsSkills for pi coding agent (compatible with Claude Code and Codex CLI)项目地址: https://gitcode.com/gh_mirrors/pi/pi-skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考