""" P1-06 隐私保护优化方案 问题:默认向 LLM 发送主目录/当前目录等环境信息,缺少最小化策略 """ # 优化方案总结 ## 1. 核心改进 ### 1.1 隐私配置管理模块 (app/privacy_config.py) - **PrivacySettings**: 数据类,定义所有隐私相关开关 - 环境信息采集开关(操作系统、Python版本、架构、主目录、工作空间、当前目录) - 脱敏策略(路径脱敏、用户名脱敏) - 场景化策略(对话最小化、指导完整信息) - **PrivacyManager**: 隐私管理器 - 加载/保存隐私配置到 `.privacy_config.json` - 提供 `get_environment_info(scenario)` 方法,按场景返回过滤后的环境信息 - 实现路径脱敏:替换用户名为 ``,主目录为 `` - 度量指标追踪:敏感字段上送次数、脱敏次数、用户关闭字段数 ### 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工作空间: /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 说明 - 合规文档: 数据采集和处理说明