⚡ 鉴于近期 DeepSeek 涨价等一系列因素,开发活动将较大放缓——更新节奏会变慢,敬请理解。
Skip to content

🔒 安全

sip 天生保守,因为它觉得信息首先是你的。

一句话:它不收集、不追踪、不偷偷上传你的东西。

sip 的安全体系分三层:数据归属(全本地、不注册、不云端)、默认保守(遥测默认关、API Key 不进脚本)、以及核心的 孟思琳(simon) 安全守护(默认开启、无法关闭,只能调节挡位)。角色档案见 梗百科 · 孟思琳

孟思琳(simon)——安全守护(默认开启,无法关闭)

孟思琳是 sip 的安全子系统拟人(源码 simon.cs),负责:

  • 数据库损坏自动修复(完整性检查 + WAL 自愈)
  • SSRF 防护(全文抓取地址校验)
  • 终端注入拦截(ANSI 转义序列剥离)
  • 非交互调用管控(脚本 / AI 调用按挡位拦截)
  • 数据加密(挡位 3:SQLCipher + AES-GCM)

挡位

挡位只有 1 / 2 / 3,没有 0 = 不可关闭

挡位名称行为
1基础(默认)完整性自愈 + 基础防护,现状能力
2严格CLI 写操作一律拒绝,只读命令可用,或到 TUI 操作
3极致CLI 调用全部拒绝(唯一例外 simon status),只允许通过 TUI 使用;开启数据加密
  • 挡位只能升不能由脚本降:降挡只能在 TUI 命令栏当面操作,CLI 一律拒绝(SIMON_LOCKED)——"孟思琳不允许被脚本或 CLI 调弱"
  • 挡位权威值存在系统凭据库(改 sip_settings.json 无法降挡),按数据目录哈希隔离——同一机器的多个 sip 副本互不影响
  • 拦截原则:CLI(含交互终端)是不可信通道;TUI 命令栏不经拦截检查,永远是真人通道
  • 所有动作留痕在 readwithhotsoup/simon_events.json(最近 200 条:repair_db / blocked_cmd / level_change / key_import
  • 人格话术:修复数据库时「哎呀,麻烦我修复下数据库——检测到损坏,已保留现场并重建」;About 界面「🔒 孟思琳正保护着你的软件哦」

CLI 命令

sip simon status [--json]                 # 挡位 / 加密状态 / 修复与拦截次数 / 最近事件
sip simon level <1|2|3>                   # 调挡位(降挡只能在 TUI 命令栏)
sip simon export-key <file>               # 导出数据库加密密钥备份(换机迁移用,需真实终端)
sip simon import-key <file>               # 导入密钥备份(需真实终端)

simon status 输出示例(节选):

孟思琳(simon) 安全守护 挡位: 2(严格)——默认开启,无法关闭,只能调节 数据加密: 已开启(密钥在系统凭据库,自动生成;开启后不可逆) 永远作为此软件的最后一道安全防线。 数据库修复: 1 次 已拦截非交互调用: 3 次

数据加密(挡位 3)

升到挡位 3 时自动执行全数据加密,原明文库备份为 rss.db.plaintext.bak

数据加密方式
rss.dbSQLCipher(PRAGMA key;FTS 索引表启动时重建,首次 --grep 懒回填)
fulltext/*.md 全文缓存、dedup.jsonAES-GCM(SIPC1 格式,密钥复用)
  • 密钥自动生成(32 字节随机),只存系统凭据库(Windows 凭据管理器 / macOS 钥匙串 / Linux Secret Service),你不需要记任何密钥
  • 加密幂等、崩溃安全(两步原子替换,任一时刻崩溃数据可恢复);降挡后加密库仍可读——挡位 3 只决定"是否迁移为加密"
  • 开启后不可逆status 提示 "开启后不可逆"),换机迁移用 sip simon export-key 导出密钥备份,妥善保管(该文件可解密你的全部数据)
  • export-key / import-key 都需要真实交互终端——防止脚本把密钥偷走

网络与终端防护

  • SSRF 防护(全文抓取):只抓 http/https;回环(localhost)与链路本地地址硬拦截;私网段默认拦截(内网源可在 AI 配置里设 "allowPrivateNet": true 放行);云元数据地址(如 169.254.169.254)不可达
  • 终端注入拦截:RSS 源标题/正文里的 ANSI 转义序列与控制字符在 CLI 导出与 TUI 渲染前统一剥离(保留 \n \t \r 正常空白,不影响 Markdown 语法),防恶意源在终端里注入转义码

数据库可靠性

  • SQLite WAL 模式 + 完整性检查:上次未正常退出时启动自检并自动修复(大库约需 30 秒,仅此一次),修复事件记入 simon_events.json
  • 遥测库(telemetry.db)独立于 rss.db,损坏绝不影响阅读数据(见遥测与隐私

凭据与隐私

  • API Key:只存系统凭据库,--init 必须在真实终端手动运行——API Key 不进脚本、不进日志
  • 搜索词等敏感记录只在本机,可随时 telemetry export / telemetry clear
  • 遥测(苏暖泉)默认关闭,开启后也仅本地记录、绝不自动上传

质量保障

仓库内置 37 个进程级黑盒测试用例(CLI 契约 / SSRF 矩阵 / 去重不变量 / 终端注入 / simon 守护与加密往返)+ GitHub Actions CI,每次改动自动回归;其中 SimonTests.cs 专门断言:「不存在 off = 无法关闭」。


最近更新

遵循 GNU General Public License v3.0 (GPL-3.0)