zovo.imzovo.im
首页›教程›正文

让 Claude Code 读你的 .env,密钥却不出电脑:magpie 的本地脱敏怎么开

zovo约 3 分钟读完
让 Agent 帮你排查部署问题,它会顺手读 .env、翻带 token 的日志,这些内容会原样塞进发给模型厂商的请求里。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在设置里打开它

  1. 进入 设置 → 隐私,把“脱敏密钥”设为开启,覆盖 API Key、私钥、Token、密码。
  2. 需要的话再开“脱敏个人信息”:邮箱、中国大陆手机号、身份证号、银行卡号。
  3. 在“脱敏词”里填不想让厂商看到的人名、项目代号、内部主机名,每行一个,不区分大小写。
  4. 把一段文字粘进“试一试”,看厂商实际会收到什么,粘进去的内容不会保存。

改动从下一个请求起生效,不用重启,Agent 那边也不用动。没有图形界面的机器(服务器、Docker)可以直接编辑 ~/.config/magpie/settings.json,文档给的最小写法是:

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 看效果,再决定要不要加个人信息。需要注意:这是文档描述的行为,本文没有替你安装验证,上线前用“试一试”自己确认一遍。

标签:
本文由 zovo 编辑撰写,转载请注明出处。

相关文章