🕊️ Telemetry 与隐私
sip 内置一个本地阅读遥测(事件层)——她的名字叫苏暖泉(Sumenia),一个会主动了解你阅读习惯的软萌妹纸(A soft little girl who quietly gets to know how you read.),数据用于未来改进内容筛选与推荐。她的边界是硬性的:
| 原则 | 说明 |
|---|---|
| 默认关闭 | unset(未选择)= 不记录;首次启动 TUI 会询问一次,默认「我暂时不需要」 |
| 仅本地保存 | 数据存 readwithhotsoup/telemetry.db(独立库,与 rss.db 完全隔离) |
| 绝不自动上传 | 没有任何上传逻辑;只有你主动 telemetry export 后才可能分享 |
| 可查看 | sip telemetry show 能看到原始事件(时间/类型/文章/数据) |
| 可关闭 | sip telemetry disable(停止记录,保留历史) |
| 可删除 | sip telemetry clear(清空事件,不影响你的开关选择与其它数据) |
| 可导出 | sip telemetry export [file] 生成 JSON,由你自行决定是否交给开发者 |
| 记录事实,不造画像 | 只记「哪篇文章被打开/读完/跳过、AI 调用情况」等事实,不做用户偏好推断 |
记录什么(低频事件,滚动/按键永不记录):
article_open/article_progress(25/50/75/100% 里程碑)/article_complete/article_skip(主动离开且进度 <10%)ai_call(operation/provider/model/success/耗时;不记 prompt/响应/全文/tokens)article_like(--like标记,区分actor: user/actor: ai)
安全设计:telemetry.db 使用 WAL 模式,启动时做完整性检查(带 busy_timeout 与重试,并发启动不误判损坏),真损坏则改名保留现场(.corrupt-时间戳)并自动重建,绝不影响 rss.db 与阅读;事件经内存缓冲批量写入(50 条或 5 秒),连续写失败自动降级停用。非交互/agent 场景(非 TTY、--ignoresafeannouncement)一律不询问、保持关闭。
文章标记(article_signals.json,与遥测分离):sip --like <id> 用户点赞(♥),sip --like <id> --ai [理由] AI 判断(🤖),sip --likes 查看;侧栏/-l N/JSON 输出均可见。
CLI 命令
bash
sip telemetry status # 查看开关状态与事件统计(Sumenia(苏暖泉): 关闭(未选择) / 事件数…)
sip telemetry show [--limit N] # 查看最近事件(时间/类型/文章/数据,默认 20 条,上限 1000)
sip telemetry enable # 开启(仅本地记录,不会上传)
sip telemetry disable # 关闭(历史数据保留,不再记录新事件)
sip telemetry clear # 清空事件(保留你的开关选择)
sip telemetry export [file] # 导出为 JSON(默认 telemetry.json,用户级备份)AI/非交互场景不询问:TUI 首次启动询问一次(默认「我暂时不需要」);非 TTY、带
--ignoresafeannouncement的场景一律不询问、保持关闭,无需处理。
事件类型
| 事件 | 含义 |
|---|---|
article_open | 打开一篇文章 |
article_progress | 阅读进度里程碑(25/50/75/100%) |
article_complete | 读完 |
article_skip | 主动离开且进度 <10% |
ai_call | AI 调用(operation/provider/model/success/耗时;不记 prompt/响应/全文/tokens) |
article_like | --like 标记(actor: user / actor: ai) |
Active Reading Time:ERT 相对空档阈值(clamp ERT×25%, 10~120s),记 active/estimated/time_ratio。