feat: refactor API key configuration and enhance application initialization
- 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.
This commit is contained in:
170
docs/P1-06_隐私保护优化方案.md
Normal file
170
docs/P1-06_隐私保护优化方案.md
Normal file
@@ -0,0 +1,170 @@
|
||||
"""
|
||||
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 说明
|
||||
- 合规文档: 数据采集和处理说明
|
||||
|
||||
Reference in New Issue
Block a user