跳到正文

工具、隐私与隔离 ​

Agent 拿到的是你的文件系统、你的凭据和你的 shell。先想清楚哪些数据会离开这台机器,再决定给它多大权限。

数据往哪里流 ​

最常见的形态是 harness 在本地、推理在云端:每次请求把当前上下文发给模型供应商,包括你贴进去的代码、它读到的文件、命令输出。

更重的形态把索引和工作流也放上云,供应商可能因此拿到整个仓库和历史对话。这不是阴谋,是功能决定的——代码检索和长任务都需要服务端状态。

形态本地云端
CLI agent文件、命令执行对话、读到的文件内容
IDE 补全编辑器、缓冲区光标附近代码、上下文
云端索引少量仓库快照、提交历史

使用前读两件事:数据是否用于训练、保留多久。企业内部代码通常有明确禁入规定,个人项目也该避免把 .env、私钥、客户数据放进上下文。敏感仓库直接关掉云端补全和云端索引,只在离线模型上工作。

另一个出口是工具输出:agent 跑一句 env、cat .env,内容就进了上下文并随请求发出,收窄工作目录比指望它自觉更实际。多数工具提供会话导出与用量记录,出事时能查到发过什么。

权限与 yolo mode ​

默认情况下 harness 会为每次工具调用请求确认,这是最后一道有效闸门。所谓 yolo mode 就是关掉它:

bash
claude --dangerously-skip-permissions

命令名字已经把风险写在脸上。跳过确认后,模型的一个错误判断就能删库、改 ~/.ssh/config、把 token 发到外网。它不会恶意,但会自信地做错。

  • 开跑前确认在 git 仓库、工作区干净、分支是新建的
  • 把 rm -rf、git push --force、curl | sh 配成 deny 规则
  • 别指望弹窗,第十次确认时人已经在无脑按回车

隔离运行 ​

要在无人值守下跑,就把 agent 关进容器或虚拟机。原则是最小暴露:只挂当前项目、不给宿主机凭据、不共享 ~/.ssh 与云平台 token。

bash
docker run --rm -it \
  -v "$PWD":/work -w /work \
  --cap-drop ALL \
  --security-opt no-new-privileges \
  my-agent-image
隔离级别手段挡得住
目录限制工作目录、权限配置误改项目外文件
容器Docker、devcontainer改系统配置、装全局包
虚拟机独立内核容器逃逸、内核级操作
断网--network none外传数据,但云端推理不可用

注意最后一行:云端模型需要网络,断网只适合本地模型,或者预先装好依赖的离线任务。想两者兼得,就让容器出网但只放行模型 API,其余流量走代理拒绝。

容器里默认没有你的 shell 历史和 SSH agent,别把 ~/.ssh、~/.aws、~/.config/gh 挂进去。也别挂 Docker socket,那等于让容器里的进程直接操纵宿主机。

本地模型 ​

开源 agent(如 opencode)配开源模型可以完全离线,数据不出机器。现实约束是硬件:能跑前沿模型的机器很贵,消费级显卡上的模型在长任务、工具调用稳定性上仍有明显差距。

务实的做法是分层:敏感仓库用本地小模型做补全和检索,非敏感任务用云端强模型。本地方案的运维成本也不低,量化、显存、并发、上下文长度都得自己调。

选型 ​

IDE 内置 agent 胜在与补全、诊断共享上下文;CLI agent 胜在能跑完整命令、能进 CI、能用 git worktree 并行。Claude Code、Codex 是闭源产品,opencode 是开源实现,能力与生态各有取舍。

别把约定只写进某个工具的私有配置,AGENTS.md 这类文件是跨工具的事实标准,换工具时成本最低。选工具先回答三个问题:能否限制可写目录、能否关掉联网与索引、日志落在哪里。试用一周再决定,别一上来就把团队流程绑死在某个产品上。