很多扩展能力的 AI Skill(比如我之前写的生图、生视频和网页动画工具)都需要调用第三方接口,第一次使用时少不了要配置 API Key。
怎么让用户把 API Key 填进去,一直是个让人纠结的体验细节。如果让用户自己去翻找隐藏目录、手动编辑配置文件,操作门槛太高;为了省事,我以前经常图方便,直接把 API Key 粘贴到对话框里让 AI Agent 帮我写进配置。
我自己敢这么操作,是因为我用的 Agent 订阅走的是官方直连通道。但如果把这套习惯放到公开分发的 Skill 里,隐患就非常大:
- 中转链路截获风险:很多开发者平时使用第三方中转站接入模型,把明文密钥发进聊天框,意味着密钥会直接流经不可控的第三方服务器与日志。
- 误写入代码库风险:AI Agent 在处理配置时,可能会把你发在对话里的明文 Key 直接硬编码进源码或受版本控制的配置文件里;一旦顺手推送到公开的 GitHub 仓库,密钥就会瞬间泄露。
为了既保留“免手动改配置文件”的顺滑体验,又不让明文密钥经过对话框和代码库,我重新设计了一套凭据录入与存储机制。
启动本地网页完成无上下文录入
新的录入交互很直接:当你在 Agent 里调用某个需要外部密钥的 Skill,而本地又还没有配置过时,Agent 不会让你在聊天框里发 Key,而是调用内置脚本在本地(127.0.0.1)拉起一个轻量级的配置网页。

这个本地页面会根据当前 Skill 所需的密钥名称(支持单 Key 或多 Key 组合)动态生成输入框,并附上获取该密钥的说明链接。你在浏览器里粘贴 API Key 并点击保存后,后续的写入与接口调用全部由确定性的本地脚本接管。在正常的工作流里,明文密钥不会返回给 AI Agent 的对话上下文,自然也就杜绝了在聊天记录里泄露的可能。
跨 Agent 共享配置与系统级加密存储
解决了怎么输入的问题后,第二个痛点是“存放在哪里”。
现在很多人电脑上会同时装好几个 AI 编程工具(比如平时混用 Claude Code 和 Codex)。每个工具都有自己独立的 Skill 安装目录。如果把配置文件跟随 Skill 目录存放,那么每次换一个 Agent 用同一个 Skill,都得重新配一遍参数。

因此,我在存储层把“普通配置”和“敏感密钥”做了拆分:
- 普通设置统一放进用户级全局目录:非敏感的偏好设置不再绑定特定 Agent 的安装路径,而是统一写到系统的用户级配置目录下。这样无论你在哪个 Agent 里调用该 Skill,读取的都是同一份设置。
- 敏感密钥交由操作系统原生凭据库保管:API Key 等机密信息绝不以明文文件形式落盘,而是按操作系统分别存入 macOS 钥匙串(Keychain)、Windows 凭据管理器(Credential Manager) 以及 Linux Secret Service。如果检测到当前环境的系统凭据服务不可用,脚本会直接报错中止,不会偷偷退回明文文件存储。

集成进 oil-skill-creator 与安全边界说明
我已经把这套可复用的系统凭据输入组件与多 Key 页面打包进了开源项目 oil-skill-creator。这是一个专门用来把零散脚本打磨成产品化 Skill 的辅助工具。

无论你是从头开发一个需要调用外部接口的新 Skill,还是想把手头已有的 Skill 升级成这套安全存储方案,只需要把 oil-skill-creator 的仓库地址发给 Agent,让它照着里面的组件规范改造即可。
最后也需要明确说明这套机制的安全边界:把密钥放进系统钥匙串并绕开对话框,解决的是日常使用中的误暴露问题(防止密钥留在聊天记录、经过中转站或被误提交到 Git 仓库)。但它并不代表拥有本地最高执行权限的 Agent 在技术上绝对无法读取你的钥匙串——毕竟脚本本身就是在本地用户权限下运行的。认清这一层边界,才能在便利性与安全性之间做出合理的取舍。
