AI Slop Code Risk Monitor

biliup/biliup

SlopCodeMonitor badge for biliup/biliup Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

自动直播录制、投稿、twitch、ytb频道搬运工具。命令行投稿(B站)和视频下载工具,提供多种登录方式,支持多p。边录边传0落盘

0.9 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for biliup/biliup, a Rust project with 5,575 GitHub stars. SynthScan examined 235,857 lines of code across 686 source files, recording 209 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 0.9 (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.

0.9
Adjusted Signal
0.9
Raw Pattern Score
100%
Time Factor
2026-10-27
Last Push
5.6K
Stars
Rust
Language
235.9K
Lines of Code
686
Files
209
Pattern Hits
2026-10-31
Scan Date
0.00
HC Hit Rate

Risk Review · Payload v1

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.

Cognitive Ownership Risk 4.2/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 193 finding(s).

Hallucinated Dependency & Supply Chain Risk 0.2/100 · LOW

Are imports declared and package/API names verified? 12 finding(s).

Agent Over-Engineering Ratio 0.9/100 · LOW

Are wrappers, guards, and repeated structures necessary? 36 finding(s).

PR Review Velocity Impact 4.4/100 · LOW

Which changes need focused human review? 209 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

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.

Severity Breakdown

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.

CRITICAL 0HIGH 0MEDIUM 2LOW 207

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 209 distinct pattern matches across 10 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.

Over-Commented Block152 hits · 152 pts
SeverityFileLineSnippetContext
LOWcrates/biliup-cli/src/tools.rs1//! External programs: where ffmpeg is, and how child processes are started.COMMENT
LOWcrates/biliup-cli/src/entry.rs281 /// Serve on this already-bound socket instead of binding `bind`:`port`, soCOMMENT
LOWcrates/biliup-cli/src/cli.rs21#[command(author, version, about)]COMMENT
LOWcrates/biliup-cli/src/cli.rs41COMMENT
LOWcrates/biliup-cli/src/cli.rs61 #[arg(short, long, value_name = "FILE")]COMMENT
LOWcrates/biliup-cli/src/cli.rs81 submit: Option<SubmitOption>,COMMENT
LOWcrates/biliup-cli/src/cli.rs181 /// 使用 biliup 1.0.7 风格配置文件启动录制COMMENT
LOWcrates/biliup-cli/src/server/config.rs21/// 全局配置结构体COMMENT
LOWcrates/biliup-cli/src/server/config.rs41 /// Noto Sans CJK SC 与 Noto Emoji。填目录本身或它下面的 `fonts/` 都可以。COMMENT
LOWcrates/biliup-cli/src/server/config.rs101 #[serde(default = "default_lines")]COMMENT
LOWcrates/biliup-cli/src/server/config.rs121 #[builder(default = default_event_loop_interval())]COMMENT
LOWcrates/biliup-cli/src/server/config.rs141 /// 的时间轴上);0 = 不合并。投稿不受影响:断流后重新开始的录制仍单独投稿。COMMENT
LOWcrates/biliup-cli/src/server/config.rs161 /// `None` 视同 `relay`。COMMENT
LOWcrates/biliup-cli/src/server/config.rs181 #[serde(default, skip_serializing_if = "Option::is_none")]COMMENT
LOWcrates/biliup-cli/src/server/config.rs201 pub douyu_rate: Option<u32>,COMMENT
LOWcrates/biliup-cli/src/server/config.rs221 /// 斗鱼互动游戏运行时跳过录制COMMENT
LOWcrates/biliup-cli/src/server/config.rs241 /// 虎牙是否保留 imgplus 流名COMMENT
LOWcrates/biliup-cli/src/server/config.rs261 /// 双屏直播录制方式COMMENT
LOWcrates/biliup-cli/src/server/config.rs281 pub kila_protocol: Option<String>,COMMENT
LOWcrates/biliup-cli/src/server/config.rs301 pub bili_force_source: Option<bool>,COMMENT
LOWcrates/biliup-cli/src/server/config.rs321 #[serde(default)]COMMENT
LOWcrates/biliup-cli/src/server/config.rs341 #[serde(default)]COMMENT
LOWcrates/biliup-cli/src/server/config.rs361 #[serde(default)]COMMENT
LOWcrates/biliup-cli/src/server/config.rs541 /// B站Cookie文件路径COMMENT
LOWcrates/biliup-cli/src/server/config.rs561 /// YouTube Cookie文件路径COMMENT
LOWcrates/biliup-cli/src/server/app.rs61 let session_layer = SessionManagerLayer::new(session_store)COMMENT
LOWcrates/biliup-cli/src/server/auto_clip/runner.rs1//! 按场次的自动切片任务:排队、调度、抽音频、转写,接着生成候选(见 [`super::analyze`])。COMMENT
LOWcrates/biliup-cli/src/server/auto_clip/files.rs1//! 一场的分析数据:`<auto_clip 目录>/<场次 id>/` 下的文件,不进 SQLite(连接池只有 2 个连接,COMMENT
LOWcrates/biliup-cli/src/server/auto_clip/danmaku.rs1//! 弹幕密度与高峰:从分段的弹幕 XML 算出 10 秒一桶的条数、前后 10 分钟的滑动中位数基线,COMMENT
LOWcrates/biliup-cli/src/server/auto_clip/audio.rs1//! 抽音频、静音检测与切块。COMMENT
LOWcrates/biliup-cli/src/server/auto_clip/settings.rs41 #[builder(default)]COMMENT
LOWcrates/biliup-cli/src/server/auto_clip/settings.rs61 pub asr_language: Option<String>,COMMENT
LOWcrates/biliup-cli/src/server/auto_clip/jobs.rs1//! `auto_clip_jobs` 的读写:按场次排队的自动切片任务。COMMENT
LOWcrates/biliup-cli/src/server/core/monitor.rs481 /// 删除指定ID的工作器COMMENT
LOWcrates/biliup-cli/src/server/core/monitor.rs721/// 房间ActorCOMMENT
LOWcrates/biliup-cli/src/server/core/slots.rs1//! 容量可在运行时调整的并发槽位。COMMENT
LOWcrates/biliup-cli/src/server/core/downloader.rs61COMMENT
LOWcrates/biliup-cli/src/server/core/downloader.rs121/// 定义支持的各种下载器类型COMMENT
LOWcrates/biliup-cli/src/server/core/downloader.rs301 SegmentCompleted,COMMENT
LOWcrates/biliup-cli/src/server/core/downloader.rs381COMMENT
LOWcrates/biliup-cli/src/server/core/downloader.rs401// let downloader = FfmpegDownloader::new(COMMENT
LOW…up-cli/src/server/core/downloader/ffmpeg_downloader.rs21 process_handle: Arc<RwLock<Option<tokio::process::Child>>>,COMMENT
LOWcrates/biliup-cli/src/server/core/downloader/mesio.rs381 duration_secs,COMMENT
LOW…liup-cli/src/server/core/downloader/mesio/index_tap.rs1//! mesio 的关键帧索引旁路。COMMENT
LOWcrates/biliup-cli/src/server/common/timerange.rs1//! 录制时间范围(`time_range`)的解析与判定。COMMENT
LOWcrates/biliup-cli/src/server/common/upload.rs721 studio: &Studio,COMMENT
LOWcrates/biliup-cli/src/server/common/recording_policy.rs1//! 录制准入策略:集中回答「现在该不该录这个主播」。COMMENT
LOWcrates/biliup-cli/src/server/common/system_stats.rs1//! 控制台首页的系统状态:CPU、内存、录制目录所在磁盘、网速。COMMENT
LOWcrates/biliup-cli/src/server/workbench/recorder.rs1//! 录制侧:把下载器的「开段 / 关段」事件按顺序写进 `stream_sessions` / `segments`。COMMENT
LOWcrates/biliup-cli/src/server/workbench/mod.rs1//! 切片工作台的录制侧底座:场次(`stream_sessions`)、分段(`segments`)与关键帧索引。COMMENT
LOWcrates/biliup-cli/src/server/workbench/markers.rs1//! 标记(`markers`):看直播时按一下「标记」记下的场次时刻,之后在工作台里从这里剪。COMMENT
LOWcrates/biliup-cli/src/server/workbench/retention.rs1//! 分段文件的生命周期:被引用就推迟删除、定时清理、磁盘水位兜底。COMMENT
LOWcrates/biliup-cli/src/server/workbench/live.rs1//! 正在录的场次:DVR 回看跟随正在写的分段时,靠这里拿到两种通知,不轮询。COMMENT
LOWcrates/biliup-cli/src/server/workbench/clips/plan.rs1//! 场次时间上的入点、出点 → 要读的分段字节区间。COMMENT
LOW…biliup-cli/src/server/workbench/clips/publish/queue.rs1//! 切片发布队列:一次只发一个稿件,不占录播自动上传的 UActor。COMMENT
LOW…s/biliup-cli/src/server/workbench/clips/publish/mod.rs61 pub desc: Option<String>,COMMENT
LOWcrates/biliup-cli/src/server/workbench/index/cache.rs1//! 索引缓存文件:文件头之后是只追加的记录流,落盘不经临时文件、不 rename。COMMENT
LOWcrates/biliup-cli/src/server/workbench/index/mod.rs1//! 分段文件的关键帧索引:把「段内时间」对应到「文件字节偏移」。COMMENT
LOWcrates/biliup-cli/src/server/workbench/index/live.rs1//! 录制时边写边建关键帧索引。COMMENT
LOWcrates/biliup-cli/src/server/workbench/dvr/mod.rs1//! DVR 回看:从场次时间轴上任一点起,把已经录下的分段(含正在写的那一段)接成一条可播放的流。COMMENT
92 more matches not shown…
Hyper-Verbose Identifiers31 hits · 36 pts
SeverityFileLineSnippetContext
LOWcrates/stream-gears/tests/test_package.py37def test_native_module_is_a_submodule():CODE
LOWcrates/stream-gears/tests/test_package.py44def test_all_matches_native_module():CODE
LOWcrates/stream-gears/tests/test_package.py68def test_api_package_has_no_server_or_resources():CODE
LOWcrates/stream-gears/tests/test_package.py78def test_upload_text_signature_is_accepted():CODE
LOWcrates/stream-gears/tests/test_package.py137def test_stubs_accept_valid_usage(tmp_path):STRING
LOWcrates/stream-gears/tests/test_package.py142def test_stubs_reject_invalid_usage(tmp_path):STRING
LOW⚡crates/stream-gears/tests/test_errors.py134def test_download_empty_response(server, tmp_path):CODE
LOW⚡crates/stream-gears/tests/test_errors.py139def test_download_truncated_flv(server, tmp_path):CODE
LOW⚡crates/stream-gears/tests/test_errors.py143def test_download_malformed_flv_tag(server, tmp_path):CODE
LOW⚡crates/stream-gears/tests/test_errors.py153def test_download_plain_function_rejects_bad_segment(server, tmp_path):CODE
LOW⚡crates/stream-gears/tests/test_errors.py158def test_callback_accepts_lambda(server, tmp_path):CODE
LOW⚡crates/stream-gears/tests/test_errors.py165def test_callback_accepts_bound_method(server, tmp_path):CODE
LOW⚡crates/stream-gears/tests/test_errors.py171def test_callback_must_be_callable(server, tmp_path):CODE
LOW⚡crates/stream-gears/tests/test_errors.py176def test_callback_exception_is_reraised(server, tmp_path):CODE
LOW⚡crates/stream-gears/tests/test_errors.py186def test_py_segment_fields_are_readable():CODE
LOW⚡crates/stream-gears/tests/test_errors.py264def test_login_by_cookies_missing_file(tmp_path):CODE
LOW⚡crates/stream-gears/tests/test_errors.py272def test_login_file_defaults_to_cookies_json(name):CODE
LOW⚡crates/stream-gears/tests/test_errors.py277def test_login_by_qrcode_file_is_optional():CODE
LOW⚡crates/stream-gears/tests/test_errors.py282def test_login_by_sms_failure_does_not_write_file(tmp_path, closed_port):CODE
LOWcrates/stream-gears/tests/test_errors.py82def assert_stream_gears_error(call):CODE
LOWcrates/stream-gears/tests/test_errors.py105def test_stream_gears_error_hierarchy():CODE
LOWcrates/stream-gears/tests/test_errors.py111def test_login_proxy_defaults_to_none(name):CODE
LOWcrates/stream-gears/tests/test_errors.py123def test_download_closed_port(tmp_path, closed_port):CODE
LOWcrates/stream-gears/tests/test_errors.py205def test_segment_accepts_dict_and_object(server, tmp_path, segment):CODE
LOWcrates/stream-gears/tests/test_errors.py216def test_upload_invalid_extra_fields(tmp_path, extra_fields):CODE
LOWcrates/stream-gears/tests/test_errors.py222def test_upload_valid_extra_fields_reach_login(tmp_path, extra_fields):CODE
LOWcrates/stream-gears/tests/test_errors.py246def test_login_invalid_json_raises_value_error(name):CODE
LOWcrates/stream-gears/tests/test_errors.py252def test_login_by_sms_failure_raises(tmp_path, closed_port):CODE
LOWcrates/stream-gears/examples/download.py35def download_with_signal_handling(url):CODE
LOWapp/lib/douyu-auth.ts146export function douyuManualRefreshMessage(previous: DouyuAuthStatus, next: DouyuAuthStatus): string {CODE
LOWapp/lib/auto-clip-poll.ts5export function sessionJobRefreshInterval(job: { state?: string } | null | undefined): number {CODE
Unused Imports7 hits · 7 pts
SeverityFileLineSnippetContext
LOWcrates/stream-gears/tests/test_package.py10CODE
LOWcrates/stream-gears/tests/test_smoke.py7CODE
LOWcrates/stream-gears/tests/test_smoke.py8CODE
LOWcrates/stream-gears/tests/test_smoke.py9CODE
LOWcrates/stream-gears/tests/test_smoke.py10CODE
LOWcrates/stream-gears/tests/test_smoke.py11CODE
LOWcrates/stream-gears/stream_gears/__init__.py4CODE
Structural Annotation Overuse4 hits · 6 pts
SeverityFileLineSnippetContext
LOWdocs/content/docs/getting-started/quick-start.md36### Step 1: Create a new directoryCOMMENT
LOWdocs/content/docs/getting-started/quick-start.md43### Step 2: Install biliupCOMMENT
LOWdocs/content/docs/getting-started/quick-start.md57### Step 3: ConfigurationCOMMENT
LOWdocs/content/docs/getting-started/quick-start.md89### Step 4: Run the projectCOMMENT
Fake / Example Data5 hits · 5 pts
SeverityFileLineSnippetContext
LOWcrates/biliup-cli/src/server/fleet/ha/sync.rs689 assert!(debug.contains("42") && !debug.contains("placeholder"));CODE
LOW…iliup-cli/src/server/infrastructure/connection_pool.rs560 ('https://live.bilibili.com/1', 'placeholder', '{\"file_size\":null}')",CODE
LOW…iliup-cli/src/server/infrastructure/connection_pool.rs802 ('https://live.bilibili.com/1', 'placeholder', '{\"downloader\":\"sync-downloader\",\"file_size\":null,\"biCODE
LOW…iliup-cli/src/server/infrastructure/connection_pool.rs1123 ('https://live.bilibili.com/1', 'placeholder', '{\"file_size\":null}')",CODE
LOWdocs/content/blog/placeholder-text.md3description = "Lorem Ipsum Dolor Si Amet"CODE
Deep Nesting4 hits · 4 pts
SeverityFileLineSnippetContext
LOWcrates/danmaku-factory/tests/differential.py16CODE
LOWcrates/stream-gears/biliup/plugins/bili_webup.py403CODE
LOWcrates/stream-gears/biliup/plugins/bili_webup.py656CODE
LOWcrates/stream-gears/biliup/plugins/bili_webup.py661CODE
Excessive Try-Catch Wrapping3 hits · 4 pts
SeverityFileLineSnippetContext
LOWcrates/stream-gears/examples/download.py30 except Exception as e:CODE
LOWcrates/stream-gears/biliup/plugins/bili_webup.py349 except Exception as error:CODE
MEDIUMcrates/stream-gears/biliup/plugins/bili_webup.py269def load(self):CODE
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/ci.yml1# This file is autogenerated by maturin v1.9.1COMMENT
AI Structural Patterns1 hit · 1 pts
SeverityFileLineSnippetContext
LOWcrates/stream-gears/biliup/plugins/bili_webup.py44CODE
Modern Structural Boilerplate1 hit · 1 pts
SeverityFileLineSnippetContext
LOWcrates/stream-gears/stream_gears/__init__.py10__all__ = [CODE