PanSou是一款高性能的网盘资源搜索API服务,支持TG频道和插件搜索。系统设计以性能和可扩展性为核心,支持多频道多插件并发搜索、结果智能排序和网盘类型分类。docker集成前后端,一键启动,开箱即用。仅供学习研究,请勿以各种形式用于盈利目的。 https://t.me/s/webhtv
This report summarizes scanner evidence for fish2018/pansou, a Go project with 15,095 GitHub stars. SynthScan examined 127,612 lines of code across 360 source files, recording 48 pattern matches distributed across 3 syntactic categories. The legacy adjusted pattern signal is 0.5 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 48 finding(s).
Are imports declared and package/API names verified? 0 finding(s).
Are wrappers, guards, and repeated structures necessary? 0 finding(s).
Which changes need focused human review? 48 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 48 distinct pattern matches across 3 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | util/http_util.go | 161 | COMMENT | |
| LOW | util/http_body.go | 41 | } | COMMENT |
| LOW | util/parser_util.go | 141 | // PageParseStatus 表示一次搜索结果页解析的可信程度。 | COMMENT |
| LOW | util/parser_types_probe_test.go | 61 | // 每条链接必须拿到**自己**的提取码。 | COMMENT |
| LOW | util/retry.go | 41 | // BaseDelay 是首次重试前的等待时长。 | COMMENT |
| LOW | util/retry.go | 61 | COMMENT | |
| LOW | util/ext_digest.go | 21 | // 把它算进键会让同一份结果因为一次 refresh 而多占一个缓存槽 | COMMENT |
| LOW | util/cache/cache_key.go | 241 | } | COMMENT |
| LOW | util/cpu/cpu.go | 1 | // Package cpu 提供"这个进程实际能用多少 CPU"这唯一一个口径。 | COMMENT |
| LOW | config/config.go | 61 | TGChannelRequestTimeout time.Duration // 单个频道请求超时 | COMMENT |
| LOW | plugin/publish_budget.go | 1 | package plugin | COMMENT |
| LOW | plugin/plugin.go | 61 | COMMENT | |
| LOW | plugin/plugin.go | 381 | // 工作池不在这里创建。本函数会被各插件的构造函数在包 init() 阶段触发, | COMMENT |
| LOW | plugin/plugin.go | 621 | // ============================================================ | COMMENT |
| LOW | plugin/gying/gying.go | 2121 | // ============ 登录逻辑 ============ | COMMENT |
| LOW | plugin/woniu/woniu.go | 481 | } | COMMENT |
| LOW | plugin/panlian/panlian_jsontag_test.go | 1 | package panlian | COMMENT |
| LOW | plugin/panlian/panlian_live_test.go | 21 | // | COMMENT |
| LOW | plugin/hdr4k/设计文档.md | 921 | *plugin.BaseAsyncPlugin | COMMENT |
| LOW | api/limits.go | 1 | package api | COMMENT |
| LOW | service/main_cache_lock.go | 1 | package service | COMMENT |
| LOW | service/outbound_gate.go | 101 | COMMENT | |
| LOW | service/outbound_gate.go | 141 | // 实测固定开销约 0.2 秒(8.19 对 8.00、10.22 对 10.00、30.20 对 30.00),取 1 秒留足。 | COMMENT |
| LOW | service/search_service.go | 321 | COMMENT | |
| LOW | service/search_service.go | 1501 | // 原先这里是 Set 整块覆盖,合并的只是"本请求的快照 + 补齐结果"。但补齐发生在首轮写入之后 | COMMENT |
| LOW | service/batch_search.go | 221 | // 插件路径下整批零产出不写缓存:这类空结果多为响应超时下的部分结果, | COMMENT |
| LOW | service/main_cache_lock_test.go | 101 | // 端到端缺口(如实记录):直接对 cacheUpdater 做并发合并断言需要驱动插件完成路径 | COMMENT |
| LOW | service/adaptive_concurrency.go | 21 | // 排队信号 = 本轮每任务 p90 / 历史最好 p90("地板值",近似无排队时的延迟) | COMMENT |
| LOW | service/tg_reachability.go | 21 | // 一条路径,用户看到的就是空等 4 秒。 | COMMENT |
| LOW | service/tg_reachability.go | 41 | tgUnreachableTTL = 60 * time.Second | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | plugin/qupanshe/qupanshe.go | 74 | // Step 1: 获取首页formhash(使用session客户端) | COMMENT |
| LOW | plugin/qupanshe/qupanshe.go | 86 | // Step 2: POST请求获取搜索结果URL(使用同一个session客户端) | COMMENT |
| LOW | plugin/qupanshe/qupanshe.go | 98 | // Step 3: GET请求获取搜索结果(使用同一个session客户端) | COMMENT |
| LOW | plugin/qupanshe/qupanshe.go | 110 | // Step 4: 关键词过滤 | COMMENT |
| LOW | plugin/xdpan/xdpan.go | 68 | // Step 1: 获取搜索结果页面 | COMMENT |
| LOW⚡ | plugin/xdpan/xdpan.go | 80 | // Step 2: 并发获取详情页信息(获取真实的百度网盘链接) | COMMENT |
| LOW⚡ | plugin/xdpan/xdpan.go | 84 | // Step 3: 关键词过滤 | COMMENT |
| LOW | plugin/panwiki/panwiki.go | 159 | // Step 1: 发起初始搜索请求获取重定向URL | COMMENT |
| LOW | plugin/panwiki/panwiki.go | 231 | // Step 2: 请求实际的搜索结果页面 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | plugin/qupanshe/qupanshe.go | 74 | // Step 1: 获取首页formhash(使用session客户端) | COMMENT |
| LOW | plugin/qupanshe/qupanshe.go | 86 | // Step 2: POST请求获取搜索结果URL(使用同一个session客户端) | COMMENT |
| LOW | plugin/qupanshe/qupanshe.go | 98 | // Step 3: GET请求获取搜索结果(使用同一个session客户端) | COMMENT |
| LOW | plugin/qupanshe/qupanshe.go | 110 | // Step 4: 关键词过滤 | COMMENT |
| LOW | plugin/xdpan/xdpan.go | 68 | // Step 1: 获取搜索结果页面 | COMMENT |
| LOW⚡ | plugin/xdpan/xdpan.go | 80 | // Step 2: 并发获取详情页信息(获取真实的百度网盘链接) | COMMENT |
| LOW⚡ | plugin/xdpan/xdpan.go | 84 | // Step 3: 关键词过滤 | COMMENT |
| LOW | plugin/panwiki/panwiki.go | 159 | // Step 1: 发起初始搜索请求获取重定向URL | COMMENT |
| LOW | plugin/panwiki/panwiki.go | 231 | // Step 2: 请求实际的搜索结果页面 | COMMENT |