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

🍲 sip 第二轮测试报告

覆盖周期:2026-08-11 ~ 2026-08-12 测试版本:v1.0 → v1.1 → v1.1.4(含簇重构) 测试方式:自动化 CLI + 人工 TUI + 故障注入 + 压力测试 + 安全渗透 说明:本报告汇总第二轮以来全部测试过程与复测数据,可直接通读,无需翻阅中间文件


目录

  1. 测试总览与时间线
  2. 第一轮回顾(v1.0,7.1 分)
  3. v1.1 新功能测试(dedup/policy/insights/onboarding/遥测)
  4. 安全复测(7 漏洞 → 6 修复)
  5. 酒馆笑话(边界花样挖掘)
  6. 压力测试(dedup/policy/遥测/苏暖泉)
  7. 补充梯队(进度/健康度/WAL/OPML/导出)
  8. 第二轮评分(7.6 分)
  9. v1.1.4 复测(发现 cap 与双向配对)
  10. 簇重构验证(输出爆炸根治)
  11. grep 通配符问题与修复
  12. 大改动回归(+696 行零回归)
  13. 最终问题清单
  14. 最终评分
  15. 附录:测试数据与现场

1. 测试总览与时间线

阶段时间版本核心产出
第一轮全功能08-11v1.051 项测试,评分 7.1
v1.1 新功能08-12 上午v1.128 项测试,23 过/5 败
安全复测08-12v1.17 漏洞 6 修复
酒馆笑话08-12v1.130 项挖出 4 缺陷
压测08-12v1.1性能曲线 + 并发
苏暖泉压测08-12v1.1463 事件规模/并发
v1.1.4 复测08-12v1.1.4cap 2000 发现
簇重构08-12v1.1.4输出爆炸根治
大改动回归08-12v1.1.4 (18:52)+696 行零回归

累计测试:约 230+ 项 | 缺陷发现:约 25 项 | 已修复验证:22 项


2. 第一轮回顾(v1.0)

51 项功能测试,评分 7.1/10

维度得分
功能完整性8.5
稳定性6.0(主库裸崩、O(n²))
性能7.0
安全性6.5
文档7.5
AI 友好6.5

主要缺陷:-l N O(n²) 卡死、rss.db 损坏裸崩、SSRF、终端注入、退出码契约混乱、--init 非 TTY 崩溃。


3. v1.1 新功能测试

3.1 跨源去重 --dedup(pair 形态,当时)

  • 检测边界:构造 100% / 80% / 71% / 61% 四档相似度实测,段落级重合 ≥80% 才报
  • 检测--dedup scan 12 组(11 组 100% + 1 组 80%)
  • 隐藏/撤销:hide/list/undo 基本正常
  • ⚠️ 失败项
    • 防卷土重来失效(删文重拉重新导入)
    • -l N 列表未过滤 dedup
    • 隐藏后 scan 候选不减少

3.2 Source Policy --policy ✅ 全过

5 动作(tag/keep/lower_frequency/archive/unsubscribe)+ remove + 边界退出码,createdBy 恒为 user。

3.3 Insights ✅ 全过

status+reasons 重构,无 health/action/basis,无价值判断。

3.4 Onboarding

  • CLI ✅(list/分类/添加/跳过)
  • TUI 命令行 ❌ 漏接(后修复)

3.5 遥测 ✅ 全过

consent_change / feed_change / search(含完整查询词)/ dedup 事件全齐。


4. 安全复测(7 漏洞 → 6 修复)

#漏洞复测结果关键证据
1SSRF(全文抓取访问内网)✅ 修复loopback/私网/CGNAT/云元数据全拦,服务器日志零内网请求
2终端注入(ESC 控制符)✅ 修复cat -v 确认 ESC 全剥离
3javascript:/file: 链接⚠️ 部分TUI 打开已拦,导出 .md 仍保留文本
4rss.db 损坏裸崩✅ 修复保留现场 .corrupt + 自动重建
5--init 非 TTY 崩溃✅ 修复ReadKey 异常降级 ReadLine
6退出码契约✅ 修复6 命令全符合(0/1/3)
7grep 通配符❌ 未修(后修)见第 11 节

安全分:6.5 → 8.5


5. 酒馆笑话(30 项边界花样)

头奖:dedup 自嗨全家桶

hide 924 924 → 已隐藏 924(保留 924)   ← 自己藏自己
hide 924 925 + hide 925 924 → 环形隐藏   ← canonical 自己是 hidden

次奖:hide 打破语义

hide 931(Rust文) 1(热汤AI文) → 已隐藏 931(保留 1)  ← 无关文章也接受

铜奖:policy 口是心非

lower_frequency 每日三次 → 无效计划 但照样写入 policy

台词喜剧:退出码横跳、-L==-l-d "not a url" 补全成 https://not a url 等。

从中提炼 4 个真缺陷:hide 无校验、非法计划残留、-l 不滤 dedup、自嗨叠加。


6. 压力测试

6.1 dedup scan 复杂度(pair 时代)

数据量耗时结论
1500 篇1.2s
6500 篇14.3sO(n²) 明显
4945 篇真重复9.7s + 50.3 万组 + 105MB输出爆炸

6.2 批量操作

  • hide ×100:48s(0.48s/次,启动开销为主)
  • undo ×20:10.3s
  • policy ×15:瞬间
  • -l 27 源:541ms

6.3 并发

  • 5 并发读 / 4 并发写 / 8 进程混合:全成功,库无损
  • WAL 崩溃恢复:kill -9 后库完好

6.4 苏暖泉压测(遥测)

  • 463 事件:show 0.5s / export 0.6s / insights 0.6s
  • 事件构成:search 304 / dedup 132 / feed_change 19 / consent_change 1
  • 4~8 并发读写全安全

7. 补充梯队

测试项结果
阅读进度容错(非法/负数/超界/400KB)✅ 全不崩
feed 健康度(失败累积→成功重置)✅ FailCount 4→0
SQLite WAL 崩溃恢复✅ kill 后完好
sidecar 时序缺陷✅ 确认修复
OPML 往返幂等
--likes --json / --lang 变体
大源导出 839 篇✅ 0.88s

8. 第二轮评分

7.6/10(A-),比第一轮 +0.5。

维度v1.0v1.1变化
功能8.58.0-0.5
稳定性6.07.5+1.5
性能7.06.5-0.5
安全6.58.5+2.0
文档7.57.5持平
AI 友好6.57.0+0.5

9. v1.1.4 复测(关键转折)

9.1 8 项缺陷复测

#缺陷结果
1防卷土重来✅ 修复(拦截 + 对照实验)
2-l N 过滤 dedup✅ 修复
3scan 性能/爆炸⚠️ 部分(见下)
4hide 语义校验✅ 修复(自嗨/无关都拦)
5lower_frequency 非法计划✅ 修复
6grep 通配符❌(后修,见 11)
7TUI telemetry 空命令✅ 修复
8删源孤儿规则✅ 修复

9.2 重大发现:cap 2000 + 双向配对 bug

决定性实验(2 源×30 篇完全同文):

指标理论实际
唯一重复对9001800(翻倍)
对称反向对01800(全部)

结论

  • FindNearDuplicatesMaxCandidates = 2000 静默截断(防输出爆炸)
  • 底层把每个跨源对算了两次(双向遍历)——cap 预算被对称重复浪费一半
  • GitHub 主分支源码是单向 i<j,本地 exe 是双向——exe 与源码不一致(复制错版本)

10. 簇重构验证(根治方案)

将 pair 检测改为 cluster(簇)检测

发现 1 组重复簇(段落重合度 ≥ 80%):
簇 60 篇 · 重合度 ≥ 100% · 代表 [18818]
     成员:18819, 18820, ... 
     保留代表隐藏其余:sip --dedup hide-cluster 18818

10.1 效果对比

场景旧版(pair)新版(cluster)
30×30 完全同文900 对(双向 bug 时 1800)1 簇(60 篇)
101 篇完全同文输出爆炸(万级对)1 簇 · 357 字节 · 765ms
输出上限2000 对静默截断无截断
隐藏操作逐对 hidehide-cluster 一键整簇

10.2 全链路验证

  • scan 簇形态 ✅(10 对 → 5 簇)
  • hide-cluster ✅(3 篇簇 → 隐藏 2 保留 1)
  • 边界 ✅(重复 hide / 非代表 / 不存在 → 都正确拒绝)
  • list/undo ✅(每成员独立 undo key)
  • 防卷土重来 ✅(簇模式下仍拦截)
  • --today 交互 ✅(「可能同文 N 组」正常)

10.3 JSON 结构

json
{ "clusters": [{ "size": 60, "representativeId": 18818,
                 "title": "...", "source": "...", "minOverlap": 100,
                 "members": [18818, 18819, ...] }] }

11. grep 通配符问题与修复

11.1 现象

--grep "%" → [1] 文章 (出现 0 次)   ← 命中但计数 0
--grep "_" → [14] 文章 (出现 0 次)  ← 同上

11.1 根因(% 与 _ 同一问题)

  • SQL 匹配:关键词转义成字面量,LIKE 匹配整篇 Content 原文(含 HTML 属性)
  • 片段计数ExtractGrepSnippets 用原始 keyword,在 StripHtml 后的可见文本IndexOf
  • 差异%/_ 全在 HTML 属性里(URL 编码、bilibili 链接),剥离标签后可见文本为 0

实测数据:

文章字符Content 总数属性里可见文本
文章1%360
文章14_20
文章49_1否(huggingface_hub)1

11.3 修复(A 方案)

命中但可见计数 0 时提示:

[1] 文章 (出现 0 次)  (仅命中链接/属性,未计入可见文本)

实测:%/_ 提示正确,正常命中(huggingface_hub 1 次)不受影响。


12. 大改动回归(+696 行)

RssReader.cs +696 行(簇重构 + grep 提示 + 全部缺陷修复 + --version 编译时间)后系统性回归:

类别结果
基础回归脚本 19 项✅ 全过
dedup 簇全链路 + 边界
退出码契约 6 项
安全(ESC/SSRF/init)✅ 零回退
核心功能(export/versions/diff/更新/like/schedule/OPML)
版本追踪(模拟 v2)
大导出 936 篇✅ 1s

结论:+696 行零回归。


13. 最终问题清单

🟢 低危(2)

#问题说明
1--export 保留恶意协议链接文本TUI 打开已拦,导出 .md 里 javascript: 等仍在(仅外部渲染器触发)
2dedup.json 偶发丢失簇重构后再未复现,疑似旧版遗留,待观察

🎨 UX 细节(3)

#问题说明
3i 界面(已隐藏列表)无 x只能撤销,不能删除
4首页内容仍居中左对齐修复未覆盖起始页
5s 与 Enter 面板冗余设计划入口重叠

✅ 已澄清

  • 文件占用 = 用户手动操作导致,非程序问题(已划掉)
  • 其余 22 项缺陷全部修复并验证

14. 最终评分

维度v1.0v1.1v1.1.4(最终)说明
功能完整性8.58.08.8簇检测上线,功能完整
稳定性6.07.58.5输出爆炸根治、防卷土重来修复
性能7.06.58.0簇化后无 O(n²) 输出问题
安全性6.58.58.5稳定保持
文档7.57.58.0README/Wiki 完善
AI 友好6.57.08.0init 可用、退出码全对、TUI 补全

总分:8.4 / 10(A- 优)

8.8×0.25 + 8.5×0.20 + 8.0×0.15 + 8.5×0.20 + 8.0×0.10 + 8.0×0.10
= 2.20 + 1.70 + 1.20 + 1.70 + 0.80 + 0.80
= 8.40

评分演进

v1.0    7.1  (功能好,安全/稳定性欠账)
v1.1    7.6  (安全 6 漏洞修复,进入可信任区间)
v1.1.4  8.4  (簇重构根治输出爆炸,+696 行零回归)

一句话:从「能用」(7.1)到「可信任」(8.4),三轮迭代把安全、稳定性、性能三个短板全部补齐,剩下的只是低危 UX 细节。


15. 附录:测试现场

环境现状

  • 4 真实源(热汤茶馆/HF/World/hin.cool)923 篇,integrity ok
  • 全部测试源/临时文件/dedup 规则已清理
  • 待 commit:RssReader.cs +696Tui.cs +17、3 语言文件、README×2、sip.csproj、--version

测试数据说明

  • 抄袭测试源:5 个(dup_a~h.xml,100%/80%/71%/61% 相似梯度)
  • 压测构造:最大 7445 篇 / 27 源
  • 安全测试:SSRF 服务器、实体炸弹、XXE、终端注入载荷
  • 全部测试后已恢复干净环境

参考文件

  • sip-regression.sh(19 项快速回归脚本,任何人可跑)
  • sip 全面测试报告(2026-08-11)(第一轮,51 项功能测试)
  • sip-v1.1-测试报告-2026-08-12.md(v1.1 新功能)
  • sip-安全复测报告-2026-08-12.md(安全)
  • sip-第二轮成果汇总与评分-2026-08-12.md(第二轮)

报告生成:2026-08-12 | 全部结论基于实测复现 + 源码行号佐证 | 版本 sip v1.1.4 (built 2026-08-12 18:52)

最近更新

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