- 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.
5.2 KiB
5.2 KiB
""" 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. 使用示例
# 获取隐私管理器
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. 后续优化建议
- 差分隐私: 对数值型信息(如文件数量)添加噪声
- 加密传输: 敏感信息端到端加密
- 本地模型: 支持完全本地运行,零数据上传
- 细粒度控制: 按 LLM 提供商设置不同策略
- 合规模板: 预设 GDPR、CCPA 等合规配置模板
9. 测试建议
- 验证默认配置下敏感字段不上送
- 验证脱敏功能正确替换路径
- 验证场景化策略生效
- 验证度量指标准确性
- 验证配置持久化和加载
- 验证 UI 交互和保存功能
10. 文档更新
需要更新以下文档:
- README.md: 添加隐私保护说明
- 用户手册: 隐私设置使用指南
- 开发文档: 隐私管理器 API 说明
- 合规文档: 数据采集和处理说明