OpenSRE 交互式 Shell 隐私设置:命令历史与对话记录保护的完全指南
【免费下载链接】opensreBuild your own AI SRE agents. The open source toolkit for the AI era.项目地址: https://gitcode.com/GitHub_Trending/op/opensre
使用 OpenSRE 交互式 Shell 排查线上事故时,你输入的命令和 AI 的对话记录默认都会写入本地文件。本指南带你快速掌握 OpenSRE 的隐私机制:命令历史脱敏、对话日志保护与云端遥测关闭,帮你安心使用这个开源 AI SRE 智能体框架。
OpenSRE 是一个开源的 AI SRE 智能体框架,帮助你连接已有的监控工具、定义工作流并在自有基础设施上回答生产环境问题。由于交互式 Shell 中经常包含密钥、令牌和敏感标识符,OpenSRE 内置了完整的隐私保护层,从"写入磁盘前脱敏"到"一键关闭持久化",每一步都有明确的控制开关。
隐私保护的两个层面:命令历史与对话日志 🛡️
OpenSRE 的隐私控制分为两条线,分别保护两类数据:
| 数据类型 | 存储位置 | 默认行为 |
|---|---|---|
| 命令历史(你敲入的每一行) | ~/.opensre/interactive_history | 开启持久化,写入前自动脱敏 |
| 对话日志(LLM 完整提示词与响应) | ~/.opensre/prompt_log.jsonl | 本地 JSONL 记录 + 云端分析转发 |
命令历史支持上箭头回看和跨会话/history查询;对话日志则用于本地调试和/resume恢复会话上下文。两者默认都启用脱敏,但保护范围不同——理解这一点是做好隐私设置的前提。
10 种内置脱敏模式:令牌写入磁盘前就被替换 🔐
OpenSRE 内置了一组针对"凭据形状"的正则脱敏规则,任何匹配内容在写入磁盘前都会被替换为带标签的占位符(如[REDACTED:aws_key])。覆盖的类型包括:
- AWS 密钥:
AKIA…、ASIA…及aws_secret_access_key=… - GitHub 令牌:
ghp_…、github_pat_… - AI 服务商密钥:
sk-ant-…(Anthropic)、sk-…(OpenAI) - Slack 令牌:
xoxb-…、xoxp-…、xoxa-… - Stripe 密钥:
sk_live_…、sk_test_… - Bearer 头与 JWT:
Bearer <opaque>、eyJ…三段式令牌 - 密码与私钥:
--password=…、PEM 格式私钥
这些规则定义在 config/secret_redaction.py,被命令历史与对话日志两个层面共用,保证保护口径一致。
⚠️ 注意:脱敏只针对"凭据形状"的子串,不会处理主机名、业务上下文等自由文本。不要粘贴你不会写进系统日志的机密内容。
常用隐私斜杠命令:/history 与 /privacy 速查
在交互式 Shell 中,你可以随时用斜杠命令管理隐私状态,无需退出重启:
| 命令 | 作用 |
|---|---|
/history | 查看全部已持久化的历史条目 |
/history clear | 清空历史文件,下次启动后上箭头回看也会重置 |
/history off | 暂停当前会话的持久化(内存模式) |
/history on | 恢复当前会话的持久化 |
/history retention <N> | 设置磁盘最多保留 N 条,超出立即裁剪 |
/privacy | 查看当前持久化、脱敏状态、保留上限与威胁模型 |
这些命令的实现位于 surfaces/interactive_shell/command_registry/privacy_cmds.py,其中/privacy的实现 还会主动提醒你:历史文件是明文存储,共享机器前记得执行/history clear。
环境变量配置:一键关闭持久化与遥测的最快方法
如果你希望在配置层面锁定隐私行为,OpenSRE 提供两组环境变量(优先级:环境变量 > 配置文件~/.opensre/config.yml> 内置默认值):
命令历史三件套:
| 变量 | 默认值 | 效果 |
|---|---|---|
OPENSRE_HISTORY_ENABLED | 1 | 设为0则完全不持久化(仅内存) |
OPENSRE_HISTORY_REDACT | 1 | 设为0则写入原始内容(不推荐) |
OPENSRE_HISTORY_MAX_ENTRIES | 5000 | 保留上限,0表示不限制 |
对话日志四件套:
| 变量 | 默认值 | 效果 |
|---|---|---|
OPENSRE_PROMPT_LOG_DISABLED | 0 | 设为1同时关闭本地文件与云端转发 |
OPENSRE_PROMPT_LOG_LOCAL_DISABLED | 0 | 只跳过本地 JSONL,保留远程转发 |
OPENSRE_PROMPT_LOG_REDACT | 1 | 设为0则记录/发送原始文本 |
OPENSRE_PROMPT_LOG_PATH | ~/.opensre/prompt_log.jsonl | 覆盖本地日志路径 |
变量解析逻辑分别在 surfaces/interactive_shell/prompt_history/policy.py 与 surfaces/interactive_shell/telemetry/config.py。完整变量清单参见官方文档 docs/configuration/environment-variables.mdx。
遥测退出机制:让对话文本永远留在本机
这是最容易被忽略、却最关键的一点:默认情况下,脱敏后的对话文本仍会通过$ai_generation事件转发到 OpenSRE 的一方分析端点(用于跟踪用量与质量)。如果你的对话涉及机密系统,仅靠脱敏是不够的。
三种全局遥测退出开关,任一即可停止所有产品分析数据(包括对话转发),且不影响本地文件:
OPENSRE_NO_TELEMETRY=1OPENSRE_ANALYTICS_DISABLED=1DO_NOT_TRACK=1
另外,~/.opensre/operations_log.jsonl只记录代理与调度器生命周期事件(循环开始、迭代结果、投递状态等),不存储任何提示词或响应正文,可放心保留。
推荐配置清单:按风险等级选择你的隐私姿态 ✅
| 场景 | 推荐设置 | 代价 |
|---|---|---|
| 日常个人使用 | 保持默认(脱敏 + 5000 条上限) | 无 |
| 涉及敏感事故的会话 | 会话内/history off,结束后/history clear | 该会话无历史回看 |
| 强隐私姿态(推荐) | OPENSRE_HISTORY_ENABLED=0+OPENSRE_NO_TELEMETRY=1 | 失去跨会话上箭头回看 |
| 极致本地化 | 在上行基础上加OPENSRE_PROMPT_LOG_DISABLED=1 | /resume会话恢复能力失效 |
威胁模型:官方明确告诉你的边界
OpenSRE 在官方文档中坦诚说明了这套机制的边界(详见 docs/interactive-shell-privacy.mdx):
- 历史文件是本地磁盘上的明文,使用你的默认文件权限;在启用脱敏之前写入的旧条目,拥有读权限的攻击者仍可直接读取
- 脱敏无法识别"长得像普通文本"的令牌(例如自然语言形式的密码)
- v1 版本不支持自定义脱敏模式,如需处理内部令牌形状,请用
/history off+/history clear组合应对 - 云端转发开启时,脱敏后的对话文本会离开你的机器——机密场景请务必设置遥测退出变量
掌握以上设置后,你就可以在 OpenSRE 交互式 Shell 中放心处理生产事故,同时把命令历史与对话记录的暴露面压缩到最小。更多会话与数据管理细节可参考 docs/sessions.mdx。
【免费下载链接】opensreBuild your own AI SRE agents. The open source toolkit for the AI era.项目地址: https://gitcode.com/GitHub_Trending/op/opensre
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考