- Renamed `check_environment` to `check_api_key_configured` for clarity, simplifying the API key validation logic. - Removed the blocking behavior of the API key check during application startup, allowing the app to run while providing a prompt for configuration. - Updated `LocalAgentApp` to accept an `api_configured` parameter, enabling conditional messaging for API key setup. - Enhanced the `SandboxRunner` to support backup management and improved execution result handling with detailed metrics. - Integrated data governance strategies into the `HistoryManager`, ensuring compliance and improved data management. - Added privacy settings and metrics tracking across various components to enhance user experience and application safety.
171 lines
5.2 KiB
Markdown
171 lines
5.2 KiB
Markdown
"""
|
||
P1-06 隐私保护优化方案
|
||
问题:默认向 LLM 发送主目录/当前目录等环境信息,缺少最小化策略
|
||
"""
|
||
|
||
# 优化方案总结
|
||
|
||
## 1. 核心改进
|
||
|
||
### 1.1 隐私配置管理模块 (app/privacy_config.py)
|
||
- **PrivacySettings**: 数据类,定义所有隐私相关开关
|
||
- 环境信息采集开关(操作系统、Python版本、架构、主目录、工作空间、当前目录)
|
||
- 脱敏策略(路径脱敏、用户名脱敏)
|
||
- 场景化策略(对话最小化、指导完整信息)
|
||
|
||
- **PrivacyManager**: 隐私管理器
|
||
- 加载/保存隐私配置到 `.privacy_config.json`
|
||
- 提供 `get_environment_info(scenario)` 方法,按场景返回过滤后的环境信息
|
||
- 实现路径脱敏:替换用户名为 `<USER>`,主目录为 `<HOME>`
|
||
- 度量指标追踪:敏感字段上送次数、脱敏次数、用户关闭字段数
|
||
|
||
### 1.2 隐私设置 UI (ui/privacy_settings_view.py)
|
||
- 可视化配置界面,用户可控制:
|
||
- 哪些环境信息发送给 LLM
|
||
- 是否启用脱敏策略
|
||
- 场景化采集策略
|
||
- 实时显示隐私度量指标(卡片式展示)
|
||
- 支持导出隐私保护报告
|
||
|
||
### 1.3 集成到主应用 (app/agent.py)
|
||
- 初始化 `PrivacyManager` 单例
|
||
- 修改 `_get_system_environment_info()` 方法,接受 `scenario` 参数
|
||
- 三个场景调用时传入不同场景标识:
|
||
- `chat`: 对话场景(最小化信息)
|
||
- `guidance`: 操作指导场景(完整信息)
|
||
- `execution`: 执行场景(按需信息)
|
||
- 在聊天视图添加"🔒 隐私"按钮,方便用户访问设置
|
||
|
||
## 2. 默认安全策略
|
||
|
||
### 2.1 默认关闭的敏感字段
|
||
- ❌ 用户主目录(`send_home_dir = False`)
|
||
- ❌ 当前工作目录(`send_current_dir = False`)
|
||
|
||
### 2.2 默认开启的脱敏
|
||
- ✅ 路径脱敏(`anonymize_paths = True`)
|
||
- ✅ 用户名脱敏(`anonymize_username = True`)
|
||
|
||
### 2.3 场景化最小化
|
||
- ✅ 对话场景最小化(`chat_minimal_info = True`)
|
||
- 仅发送:操作系统、Python版本
|
||
- 不发送:任何路径信息
|
||
- ✅ 指导场景完整信息(`guidance_full_info = True`)
|
||
- 操作指导需要完整环境信息以提供准确建议
|
||
|
||
## 3. 度量指标
|
||
|
||
### 3.1 追踪指标
|
||
- `sensitive_fields_sent`: 敏感字段上送次数
|
||
- `anonymized_fields`: 脱敏处理次数
|
||
- `user_disabled_fields`: 用户关闭的字段数
|
||
- `total_requests`: 总请求次数
|
||
- `sensitive_ratio`: 敏感字段上送比率
|
||
- `anonymization_ratio`: 脱敏处理比率
|
||
|
||
### 3.2 报告导出
|
||
- 生成文本格式的隐私保护度量报告
|
||
- 包含所有指标和当前设置详情
|
||
- 支持一键导出到 `workspace/privacy_report.txt`
|
||
|
||
## 4. 用户体验
|
||
|
||
### 4.1 可控性
|
||
- 用户可通过 UI 完全控制每个字段的采集
|
||
- 实时预览当前设置状态
|
||
- 保存后立即生效,无需重启
|
||
|
||
### 4.2 透明性
|
||
- 度量指标可视化展示
|
||
- 用户清楚知道发送了哪些信息
|
||
- 支持导出报告用于审计
|
||
|
||
### 4.3 便捷性
|
||
- 聊天界面直接访问隐私设置
|
||
- 卡片式度量展示,一目了然
|
||
- 智能默认值,开箱即用
|
||
|
||
## 5. 企业合规
|
||
|
||
### 5.1 最小化原则
|
||
- 按场景采集,避免过度收集
|
||
- 对话场景默认最小化信息
|
||
|
||
### 5.2 脱敏保护
|
||
- 自动替换敏感路径信息
|
||
- 用户名匿名化处理
|
||
|
||
### 5.3 审计支持
|
||
- 完整的度量指标追踪
|
||
- 可导出报告用于合规审计
|
||
- 用户行为可追溯(关闭了哪些字段)
|
||
|
||
## 6. 技术实现亮点
|
||
|
||
### 6.1 单例模式
|
||
- `get_privacy_manager(workspace)` 全局单例
|
||
- 避免重复初始化,保证配置一致性
|
||
|
||
### 6.2 场景化设计
|
||
- 不同场景传入不同 `scenario` 参数
|
||
- 灵活控制信息粒度
|
||
|
||
### 6.3 持久化配置
|
||
- JSON 格式存储在 `workspace/.privacy_config.json`
|
||
- 跨会话保持用户设置
|
||
|
||
### 6.4 实时度量
|
||
- 每次调用自动更新度量指标
|
||
- 无需额外埋点代码
|
||
|
||
## 7. 使用示例
|
||
|
||
```python
|
||
# 获取隐私管理器
|
||
privacy = get_privacy_manager(workspace)
|
||
|
||
# 对话场景(最小化)
|
||
env_info = privacy.get_environment_info(scenario='chat')
|
||
# 输出:操作系统: Windows\nPython版本: 3.11.0
|
||
|
||
# 指导场景(完整)
|
||
env_info = privacy.get_environment_info(scenario='guidance')
|
||
# 输出:操作系统: Windows 11 (...)\nPython版本: 3.11.0\n工作空间: <HOME>/workspace
|
||
|
||
# 更新设置
|
||
privacy.update_settings(send_home_dir=False, anonymize_paths=True)
|
||
|
||
# 查看度量
|
||
metrics = privacy.get_metrics()
|
||
print(f"敏感字段上送比率: {metrics['sensitive_ratio']:.1%}")
|
||
|
||
# 导出报告
|
||
report = privacy.export_metrics()
|
||
```
|
||
|
||
## 8. 后续优化建议
|
||
|
||
1. **差分隐私**: 对数值型信息(如文件数量)添加噪声
|
||
2. **加密传输**: 敏感信息端到端加密
|
||
3. **本地模型**: 支持完全本地运行,零数据上传
|
||
4. **细粒度控制**: 按 LLM 提供商设置不同策略
|
||
5. **合规模板**: 预设 GDPR、CCPA 等合规配置模板
|
||
|
||
## 9. 测试建议
|
||
|
||
1. 验证默认配置下敏感字段不上送
|
||
2. 验证脱敏功能正确替换路径
|
||
3. 验证场景化策略生效
|
||
4. 验证度量指标准确性
|
||
5. 验证配置持久化和加载
|
||
6. 验证 UI 交互和保存功能
|
||
|
||
## 10. 文档更新
|
||
|
||
需要更新以下文档:
|
||
- README.md: 添加隐私保护说明
|
||
- 用户手册: 隐私设置使用指南
|
||
- 开发文档: 隐私管理器 API 说明
|
||
- 合规文档: 数据采集和处理说明
|
||
|