• 请不要在回答技术问题时复制粘贴 AI 生成的内容
andie
V2EX  ›  程序员

我做了一个让 Agent 更安全地接收密钥的 Skill

  •  
  •   andie · 18h 24m ago · 1249 views

    Agent 有时确实需要 API Token 、访问密钥等敏感信息。

    但直接粘贴到对话里,明文会进入上下文,甚至出发 Codex 的 Cyber 应激。为了减少这些不必要的暴露,我开发了一个开源 Agent Skill:Loopmark

    它的工作流程是:

    1. Agent 根据任务生成一张表单,并把链接发给用户
    2. 用户在浏览器中填写普通信息或密钥
    3. 普通回答复制回对话;密钥在浏览器中加密,不会出现在复制内容里
    4. Agent 将密钥下载并解密到本地临时 .env 文件,供后续命令按需使用

    整个过程中,云端只保存密文。用于解密密钥的私钥只保存在发起表单的 Agent 本地。

    加密实现采用混合方案:问题会话使用由随机 session code 派生的对称密钥加密;密钥字段使用 ECDH 密钥协商与 AES-GCM 加密。Worker 和 R2 对象存储都无法直接读取密钥明文。

    默认可以直接使用托管服务;如果有更严格的数据边界要求,也可以将 Worker 和私有 R2 存储桶部署到自己的 Cloudflare 账号

    安装:

    npx skills add andiedie/loopmark
    

    项目完全开源,采用 MIT License:

    Loopmark Example

    9 replies    2026-08-12 13:39:20 +08:00
    billlee
        1
    billlee  
       17h 56m ago   ❤️ 2
    这弹个记事本出来出来编辑本地临时 .env 文件不就好了?你从服务器绕一圈,还加载一堆不明所以的 prompt: https://github.com/Andiedie/loopmark/blob/main/skills/loopmark/SKILL.md, https://github.com/Andiedie/loopmark/blob/main/skills/loopmark/references/protocol.md 是想干什么?
    timeance
        2
    timeance  
       15h 53m ago
    合理,我常用的方式是让 ai 写个一次性脚本,将密钥注入到指定位置。然后自己访问脚本去写就完事了

    或者像 #1 楼上说的那样,直接弹个记事本,或者在代码里注释好 告诉你是第几行自己过去填
    wsbqdyhm
        3
    wsbqdyhm  
       10h 15m ago via iPhone
    我是直接明文,反正也能用,不知道有什么后果,有时会自动放到 env
    Fish1024
        4
    Fish1024  
       9h 59m ago
    请在终端安全写入钥匙串,不要把 PAT 发到聊天里:
    xxx
    完成后回复“已写入钥匙串”,我会读取它创建 PR ;

    我的 ai 让我这样操作
    op351
        5
    op351  
       9h 55m ago
    其实阻挡不了 从我的观察来看模型想读取密钥或者直接在会话中显示密钥是挡不住的
    有些 agent 会有阻拦机制,比如不让模型直接读.env 文件,要读的话需要用户授权
    但我经常观察到模型会绕过这种阻拦机制,通过其他命令或方式读取.env
    比如从程序的运行时中打 log 读取,写 python 脚本读取这种
    至于密钥在上下文中展示 这个更拦不住了

    如果真要阻止密钥外泄的话 只能开发环境一套密钥 生产环境用另外一套密钥
    sampdoria
        6
    sampdoria  
       9h 31m ago
    @op351 用单独的用户启动 agent ,不给该用户开放.env 文件的 read 权限
    andie
        7
    andie  
    OP
       7h 36m ago   ❤️ 1
    @billlee 有一个隐藏的问题是,我可能并不是只在同一台设备上工作,比如我通过 ssh 在远程服务器通过 codex cli 工作,有个“服务器绕一圈”才能让我做到我在任意另外的设备上也能填写。

    我用了很长一段时间临时 .env ,不过每次都要编辑,声明位置,声明格式真的蛮麻烦的,于是便有了这个 skill

    纯个人偏好,只是发现用上的频率越来越高且体验非常好,于是推荐给大家实施,各取所需即可~
    LokiSharp
        8
    LokiSharp  
       7h 31m ago
    ssh-agnet ssh-add 不就行了
    gorvey
        9
    gorvey  
       5h 16m ago
    我没有这个场景,不过用 bitwarden cli 1password cli 应该也行吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3318 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 10:55 · PVG 18:55 · LAX 03:55 · JFK 06:55
    ♥ Do have faith in what you're doing.