指南 / 安全
安全与隐私
能给智能体多大的权力,取决于护栏有多可靠。CCHarness 的每一层能力都配有一条边界: 权限档位、审批门控、隔离运行、注入防护与传输防护,默认全部开启。
权限档位
| 档位 | 行为 |
|---|---|
| 只读 | 智能体只能读不能写,适合调研与问答 |
| 需审批 | 写操作逐项审批(默认档),每次改动过目后落盘 |
| 自动写入 | 免逐项审批;开启前必须通过风险确认对话框(勾选责任条款),档位常驻红色警示 |
审批卡
每次写操作弹出预览与 diff,120 秒超时即自动拒绝(fail-closed)。 被拒绝的调用同样计入完整工具记录,可随时回溯「模型想做什么、你拦下了什么」。
Worktree 隔离
写操作重定向到 git worktree 工作树,合并前主工作区零触碰: 查看 diff、整体合并或一键丢弃。即使开启自动写入,也能把爆炸半径锁在一棵可丢弃的工作树里。
隐私匿名化(Pseudonymisation)
开启后,出站请求中的敏感信息在离开你的机器之前被替换为类型一致的假名, 模型看到的是脱敏文本,回答质量不受影响:
- 手机号(含
+86前缀)、邮箱、身份证、IP、API Key(sk-…,≥16 位)等 8 类内置识别; - 替换用 HMAC-SHA256 确定性假名:同一原文在同一会话内永远映射到同一假名,保持指代一致性;手机号仍是中国号段、邮箱仍是邮箱格式;
- 每会话独立种子(主密钥派生),跨会话不可关联;
- 支持自定义正则扩充识别(如姓名、内部编号);
- 所有替换写入本机 JSONL 映射日志,设置页可查看、可清空,替换了什么一目了然。
策略沙箱(Policy Sandbox)
智能体的每条命令在执行前经过三态裁决:放行 / 强制审批 / 直接拦截。 你按清单划界,而不是在「全开」与「全关」之间二选一:
| 清单 | 控制什么 | 例子 |
|---|---|---|
| 文件 deny / allow | 读写路径(支持通配符) | 拦截 .env、~/.ssh/**,放行 src/** |
| 命令 deny / ask / allow | 程序名 | 拦 reg、schtasks;git push 需审批;cargo 直接放行 |
| 网络 deny / allow / 全拦 | 目标域名 | 拦 *.internal;只放行白名单域名;恶意 URL 特征内置启发式 |
注入防护(Guardrails)
- 网页抓取、MCP 返回等外部内容默认经过注入检测 + 数据围栏包裹;
- 中英文注入短语库内置,可自定义扩充;
- 内容中伪造的围栏结束标记会被转义,防止外部内容伪装成可信指令。
SSRF 防护
网页抓取默认拒绝环回、内网与链路本地地址;本地模型服务(如 Ollama)需要显式加入白名单才会放行。 智能体抓什么、连哪里,边界由你划定。
Local-first 存储
| 数据 | 存储 | 保护 |
|---|---|---|
| 会话 | 本机应用数据目录 | 原子写入(tmp + rename),损坏自动备份重建 |
| API Key | 本机应用数据目录 | 系统级加密落盘(见下节) |
| 辅助调用缓存 | L1 内存 LRU + L2 磁盘 | 工作区隔离、静态加密、8 MiB 有界 |
| 出站请求 | 直连你配置的 Provider | 不经过任何第三方中转 |
API Key 的系统级保护
API Key 永不以明文落盘(密钥环不可用时才降级明文并明确提示):
- Windows:DPAPI 用户级加密;
- macOS:钥匙串保存 32 字节主密钥 + AES-256-GCM 加密落盘;
- Linux:Secret Service 密钥环(zbus 纯 Rust 实现)+ AES-256-GCM。
一句话总结
数据在你机器上、请求走你的路、密钥由系统保管、写入必须过目——能力越强,边界越清晰。