让 Claude Code 读你的 .env,密钥却不出电脑:magpie 的本地脱敏怎么开
先说 magpie 是什么:它在你电脑上跑一个小网关,Claude Code、Codex、Gemini CLI 等 Agent 都把请求发给它,再由它转给你配置的模型服务商(DeepSeek、Kimi、GLM 都行)。项目 README 把它定位成“每个 Agent 的模型,一处管理”,和只改配置文件的 CC Switch 不同,请求会真的从它这里经过。正因为请求从它这里过,它才有机会在出门前动手脚。
01发出去的和厂商收到的,差在哪
官方文档给了一个例子。Agent 发出的是“用 OPENAI_API_KEY=sk-proj-… 部署,再给 li.wei@acme-corp.cn 发邮件或打 13800138000”,厂商收到的则是 {{API_KEY_xxxx}}、{{EMAIL_xxxx}}、{{PHONE_xxxx}} 这样的占位符。模型回复里出现占位符时,magpie 再换回真值,所以 Agent 写进文件的仍是真 key。同一个值每次得到同一个占位符,对话上下文和厂商的提示词缓存不受影响,原值只放在内存里。
02在设置里打开它
- 进入 设置 → 隐私,把“脱敏密钥”设为开启,覆盖 API Key、私钥、Token、密码。
- 需要的话再开“脱敏个人信息”:邮箱、中国大陆手机号、身份证号、银行卡号。
- 在“脱敏词”里填不想让厂商看到的人名、项目代号、内部主机名,每行一个,不区分大小写。
- 把一段文字粘进“试一试”,看厂商实际会收到什么,粘进去的内容不会保存。
改动从下一个请求起生效,不用重启,Agent 那边也不用动。没有图形界面的机器(服务器、Docker)可以直接编辑 ~/.config/magpie/settings.json,文档给的最小写法是:
{
"redact": true,
"redactPersonal": true,
"redactWords": ["Nightjar", "db.acme-corp.cn"]
}另有一个“用本地模型查找”的选项,用来找规则抓不到的自由文本人名和地址,文档说它默认开启,第一次脱敏时会下载 AstrLink Guard(39 MB),下载完成前只靠规则。
03怎么确认它真的在干活
网关页的最近调用里,被处理过的请求带一个盾牌徽标和数字;观测 → 脱敏能看 7 天或 30 天里遮了哪些类型的值。记录只存类型、长度和开头几个字符,保留 30 天。每种类型还能改成“提醒”(原样发出只记数)或“拦截”(直接返回 400,什么都不发)。
04几个别指望它的地方
- 只管经过 magpie 的请求,Agent 绕过它直连厂商就不在范围内。
- 图片和文件数据原样发送,截图里的密钥不会被遮。
- 模型只能看到占位符,读不懂也没法推理被遮的值;任务必须让模型看到的值,要加进“从不脱敏”。
- 规则按格式匹配,别国格式的电话号码、自由文本里的人名要靠本地模型或自己填的词。
- 脱敏开着却跑不起来时,请求会返回 503 而不是裸发,这是个让人放心的设计,但也意味着关掉“隐私遮盖”插件后 Agent 会直接报错。
- 可以给本机 Ollama 这类供应商单独设“不脱敏”,对云端供应商打开这个开关,请求就会明文发出去。
我会先开“脱敏密钥”,用“试一试”粘一段自己的 .env 看效果,再决定要不要加个人信息。需要注意:这是文档描述的行为,本文没有替你安装验证,上线前用“试一试”自己确认一遍。


DeepSeek
Hy-Memory
Timestral