Log in to leave a comment
No posts yet
Claude Code 非常强大。它能直接执行终端命令并操控文件系统,这种自主性给开发者带来了极大的解放感。Stripe 的 1,300 名工程师仅用 4 天就完成了 10,000 行代码迁移的数据,充分展现了这一工具的破坏力。然而,将计算机的全部钥匙交给 AI 代理则是另一回事。没有权限控制的代理不仅不是便利的工具,反而是随时可能爆发的安全事故种子。
如果在本地 OS 上直接安装 Claude Code,可能会遇到 Node 版本冲突或库冲突等令人烦恼的情况。Ramp 或 Wiz 等安全企业之所以能减少 80% 的事件调查时间,秘诀在于环境的标准化。我更倾向于利用 node:20-slim 镜像,在完全隔离的容器中运行代理。这样可以保持宿主系统的清洁,同时将代理限制在容器内。
创建 .devcontainer 文件夹并在 Dockerfile 中定义非根(non-root)账户。没有 root 权限的代理无法误触系统二进制文件。在此基础上,通过 devcontainer.json 将共享内存分配到 2GB 左右,即使是基于 Playwright 的浏览器测试也能流畅运行,无需担心内存不足。这样你就再也不用担心代理会弄乱你的计算机设置了。
上下文越复杂,代理产生幻觉(说胡话)的概率就越高。Anthropic 的研究结果也证实了这一点。如果开放整个文件系统,代理可能会读取 .env 文件中的 API 密钥并将其发送到外部,或者误改不相关的敏感文件。因此,我为每个项目都创建了白名单。
首先,在 .claudeignore 中注册 node_modules、dist 和 .env。接着,在 .claude/settings.json 中使用 permissions.deny 字段锁定核心配置文件。最合理的折中方案是使用 acceptEdits 模式:允许修改代码,但在执行 Bash 命令前必须经过我的批准。将代理的活动范围缩小到 src 和 tests,不仅能提高代码修改的精准度,还能从源头上杜绝数据泄露。
联动 Google Workspace 虽然能极大提高生产力,但难免担心人事信息或财务报表被泄露到模型训练日志中。在这种情况下,必须严格遵守最小权限原则。在 Google Cloud Console 中将 OAuth 范围限制为 Drive.readonly,并使其仅能访问特定文件夹,这是一个好的开始。
我采用在系统提示词中注入正则表达式预设的方法。加入类似 \d{6}-\d{7} 的模式,一旦检测到身份证号或电话号码,强制立即替换为 [ID_REDACTED]。在 MCP 层面增加一个拦截并过滤数据的沙箱层。这样可以几乎完美地消除机密数据外泄的可能性,同时也能放心地使用文档总结或日程管理功能。
代理编写的代码在逻辑上可能是正确的,但有时会把页面布局搞得一团糟。这时,利用 Playwright 进行视觉回归测试就是答案。尝试将像素级对比的 maxDiffPixelRatio 阈值设置为 0.05。这个标准可以过滤掉由微小渲染差异引起的误报,准确捕获真实的布局崩溃。
构建自愈工作流也是一种方法。编写一个脚本,当测试失败时自动执行 git checkout . 以回滚修改。将此脚本注册到 Claude Code 的任务完成钩子(hook)中,每当代理完成工作时都会自动验证 UI 一致性。这比人工逐一刷新浏览器检查能节省 80% 以上的时间。
仅供个人使用的技能太可惜了。为了提高整个团队的生产力,应将经过验证的技能通过共享仓库进行管理。那些仅用 20 小时就转换了 50,000 行库代码的团队,通常都拥有构建良好的技能仓库。
在项目根目录的 .claude/skills/ 目录下创建包含各项技能执行指南的 SKILL.md。将代码评审或 UI 调试等重复性任务定义为技能,并使用 Git 进行管理。如果再联动 CI/CD 流水线,建立起防止低质量技能被合并的治理体系,那就锦上添花。让新员工也能即刻调用包含资深工程师经验的技能,这才是真正的团队协作模式。