安全与隐私
wesclaw 采用本地优先的安全架构,保护你的数据和隐私。
本地优先
数据存储
所有数据存储在本地:
~/Library/Application Support/wesclaw/
cells/main/
meta.db ← 元数据
sessions.db ← 对话历史
state.db ← 运行时状态
db/wesclaw.db ← 应用数据
- 对话历史不上传云端
- 记忆数据本地持久化
- 知识库文件原地索引
数据所有权
- 你的数据只在你的设备上
- 平台只记录 token 用量(WES 模型)
- BYOK 模式下平台无任何数据
API Key 保护
加密存储
API Key 使用 AES-256-GCM 加密:
明文 Key
→ AES-256-GCM 加密
→ 存入 hypervisor.db
→ 密钥文件 spec.key (权限 0600)
三种存储方式
| 方式 | 说明 | 安全性 |
|---|---|---|
inline | 加密后存储 | 密钥同机 |
env | 环境变量引用 | 值不落盘 |
live | 运行时动态获取 | 值不落盘 |
exec 环境隔离
AI 执行命令时的环境变量经过两层清理:
- 静态模式表:移除已知敏感变量名
- SecretRef 登记:精确移除用户配置的密钥变量
治理安全
Hardline 防护
18 条正则规则永远拦截危险命令:
rm -rf /系列- Fork bomb
- 系统关机命令
- Kill 引擎进程
不可覆盖、不可绕过。
路径保护
默认被保护的路径:
| 路径 | 原因 |
|---|---|
hypervisor.db | 引擎注册表 |
| 配置文件 | 用户密钥和设置 |
| Cell 外路径 | 隔离边界 |
网络控制
| 模式 | 说明 |
|---|---|
allow | 允许所有网络访问(默认) |
internal_only | 仅内部网络 |
deny | 禁止所有网络访问 |
deny 模式下,curl/wget/ssh 等命令被拦截。
数据导出与备份
Cell 导出
导出当前 Cell 的所有数据:
- 对话历史
- 记忆数据
- 技能配置
- 工作区文件
导出格式
导出为 tar.gz 压缩包,可在其他设备导入。
备份建议
| 数据 | 建议频率 |
|---|---|
| 记忆数据 | 每周 |
| 对话历史 | 按需 |
| 配置文件 | 变更后 |
进程安全
子进程管理
所有 AI 执行的命令经过安全管理:
- 进程组隔离(Setpgid)
- 取消时 SIGKILL 整个进程组
- WaitDelay 限制等待时间
- 前台超时后强制终止
文件写入限制
AI 只能写入:
- ArtifactDir:Cell 内的持久产出目录
- HostPaths:明确允许的主机路径
禁止写入 /tmp、系统目录、Cell 外路径。
会话安全
Actor 标识
每次对话都携带 Actor 标识:
- 登录用户:weisyn uid
- 未登录:固定
"local"
会话隔离
- 不同 Cell 的会话物理隔离
- 同一 Cell 内会话按 Actor 隔离
- 未来多 Profile 时数据完全独立
HITL 安全阀
人在回路
当 AI 遇到以下情况时询问用户:
| 场景 | 触发条件 |
|---|---|
| 主动询问 | Agent 使用 ask_user 工具 |
| 浏览器等待 | 需要用户操作浏览器 |
| 循环检测 | CycleDetector 检测到死循环 |
超时处理
- HITL 请求超时 60 秒
- 超时后自动终止并保存进度
- 不会无限等待
注意事项
- 定期备份重要的记忆数据
- 使用
env方式存储高敏感 Key - 敏感项目使用锁定模式
- 保持 wesclaw 和 wesgine 版本更新
- 不要在对话中发送实际的密码和密钥