视频转字幕、字幕翻译、AI 配音与声音克隆、字幕烧录——免费开源的一站式桌面工具。基于 Whisper / FunASR 等本地模型离线语音转文字,批量处理 + 全平台 GPU 加速,跨 Windows / macOS / Linux。Free, open-source desktop app to generate, translate, dub & burn video subtitles — local Whisper speech-to-text, AI dubbing & voice cloning, offline, GPU-accelerated.
This report presents the forensic synthetic code analysis of buxuku/SmartSub, a TypeScript project with 4,623 GitHub stars. SynthScan v2.0 examined 196,616 lines of code across 982 source files, recording 402 pattern matches distributed across 9 syntactic categories. The overall adjusted score of 3.7 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 402 distinct pattern matches across 9 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | renderer/components/tasks/stageUtils.ts | 87 | // ── 人工检查点(白话:字幕校对 / 配音确认)──────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/tasks/wizard/TaskWizard.tsx | 121 | // ── 文件区 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/tasks/wizard/TaskWizard.tsx | 325 | // ── 目标产物 ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/tasks/wizard/TaskWizard.tsx | 339 | // ── 字幕段配置(本地表单 + InlineConfigBar 复用)───────────────────────── | COMMENT |
| MEDIUM | renderer/components/tasks/wizard/TaskWizard.tsx | 438 | // ── 配音配置(工作台同款记忆)───────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/tasks/wizard/TaskWizard.tsx | 466 | // ── 合成配置 ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/tasks/wizard/TaskWizard.tsx | 589 | // ── 配方预填(?recipe=<id>):内置走常量、用户走 IPC ───────────────────── | COMMENT |
| MEDIUM | renderer/components/tasks/wizard/TaskWizard.tsx | 668 | // ── 阶段链与就绪校验 ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/tasks/wizard/TaskWizard.tsx | 815 | // ── 存为配方:打包 {goals, accepts, config(字幕段+dub+compose+gates)} ───── | COMMENT |
| MEDIUM | renderer/components/tasks/wizard/TaskWizard.tsx | 873 | // ── 开始 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/tasks/wizard/TaskWizard.tsx | 939 | // ── 渲染 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/voiceClone/CloneVoiceWizard.tsx | 189 | // ── 播放(选区试听 / A/B 对比共用一个 audio)─────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/voiceClone/CloneVoiceWizard.tsx | 236 | // ── 生命周期:打开时取最近任务 + 模型状态;关闭时释放会话并重置 ───────────── | COMMENT |
| MEDIUM | renderer/components/voiceClone/CloneVoiceWizard.tsx | 314 | // ── Step1 → 分析 ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/voiceClone/CloneVoiceWizard.tsx | 396 | // ── Step2:选区变化 → 防抖质检(降噪试听随选区失效)────────────────────── | COMMENT |
| MEDIUM | renderer/components/voiceClone/CloneVoiceWizard.tsx | 439 | // ── Step3:进入时自动取参考文本 ───────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/voiceClone/CloneVoiceWizard.tsx | 493 | // ── Step4:创建 ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/voiceClone/CloneVoiceWizard.tsx | 569 | // ── 渲染 ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/subtitleMerge/VideoPreview.tsx | 196 | // ── 迷你时间轴:字幕块在片中的分布(只读展示 + 点击 seek)──────────── | COMMENT |
| MEDIUM | renderer/components/download/DownloadPanel.tsx | 105 | // ── 引擎状态 ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/download/DownloadPanel.tsx | 126 | // ── 输入态 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/download/DownloadPanel.tsx | 137 | // ── 站点 Cookie 档案 ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/download/DownloadPanel.tsx | 214 | // ── 预检态 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/download/DownloadPanel.tsx | 248 | // ── 任务态 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/download/DownloadPanel.tsx | 408 | // ── 交接 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/download/DownloadPanel.tsx | 490 | // ── 任务态动作 ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/download/DownloadPanel.tsx | 527 | // ── 渲染 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/download/DownloadPanel.tsx | 750 | // ── 预检确认列表 ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/download/DownloadPanel.tsx | 916 | // ── 任务态视图 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/components/dubbing/DubbingPanel.tsx | 86 | // ── 检查员模式:待检清单每次动作前实时拉取(不缓存陈旧状态)────────────── | COMMENT |
| MEDIUM | renderer/hooks/useDubbing.ts | 93 | // ── 文件与会话 ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/hooks/useDubbing.ts | 125 | // ── 引擎候选(加载逻辑与新建任务向导共用)──────────────────────────────── | COMMENT |
| MEDIUM | renderer/hooks/useDubbing.ts | 136 | // ── 配置(记忆恢复)────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/hooks/useDubbing.ts | 259 | // ── 进度与阶段 ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/hooks/useDubbing.ts | 319 | // ── 会话生命周期 ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/hooks/useDubbing.ts | 469 | // ── 批量合成 ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/hooks/useDubbing.ts | 533 | // ── 行级操作 ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/hooks/useDubbing.ts | 654 | // ── 播放(行级回放 / 试听 / 顺序播放全部)──────────────────────────────── | COMMENT |
| MEDIUM | renderer/hooks/useDubbing.ts | 760 | // ── 导出 ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/hooks/useDubbing.ts | 808 | // ── 汇总视图 ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/lib/engineModels.ts | 153 | // ── 跨引擎(逐任务选择)辅助 ───────────────────────────────────────────── | COMMENT |
| MEDIUM | renderer/pages/[locale]/tasks/[type].tsx | 392 | // ── 人工检查点:统计、放行、检查配音 ───────────────────────────────────── | COMMENT |
| MEDIUM | types/voiceClone.ts | 43 | // ── 质检报告 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | types/voiceClone.ts | 98 | // ── 引擎参数 ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | types/voiceClone.ts | 196 | // ── 按字幕行选段(向导 Step2,来源含字幕时)───────────────────────────────── | COMMENT |
| MEDIUM | types/voiceClone.ts | 255 | // ── 音色导入导出(.svoice 单文件包)───────────────────────────────────────── | COMMENT |
| MEDIUM | types/voiceClone.ts | 342 | // ── 渲染层视图(voiceClone: IPC 的 data 形状)─────────────────────────────── | COMMENT |
| MEDIUM | types/dubbing.ts | 216 | // ── 对齐引擎(alignment.ts 纯函数的输入输出合同)──────────────────────────── | COMMENT |
| MEDIUM | types/dubbing.ts | 260 | // ── 进度事件(dubbing: IPC 推送)──────────────────────────────────────────── | COMMENT |
| MEDIUM | types/dubbing.ts | 283 | // ── 渲染层视图(dubbing: IPC 的 data 形状)────────────────────────────────── | COMMENT |
| MEDIUM | types/dubbing.ts | 346 | // ── 会话持久化(session.json,P1:重开可恢复行级状态与产物)────────────────── | COMMENT |
| MEDIUM | types/asrProvider.ts | 847 | // ── 左栏「云端听写」分组导航 ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | types/ttsProvider.ts | 717 | // ── 「配音服务」页左栏条目体系(形制 asrProvider 的 CloudEngineView)───────── | COMMENT |
| MEDIUM | types/download.ts | 85 | // ── 下载器二进制分发 ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | types/download.ts | 140 | // ── 纯函数(main / renderer 共用) ───────────────────────────────────────── | COMMENT |
| MEDIUM | types/download.ts | 217 | // ── 站点 Cookie 档案(登录态注入) ────────────────────────────────────────── | COMMENT |
| MEDIUM | types/subtitleMerge.ts | 183 | // ── 统一合成引擎(compose):字幕 × 音轨矩阵 ──────────────────────────────── | COMMENT |
| MEDIUM | extraResources/sherpa/worker/tts-config.js | 119 | // ── 克隆合成的文本切块(内存安全约束)──────────────────────────────────────── | COMMENT |
| MEDIUM | extraResources/sherpa/worker/tts-config.js | 228 | // ── 中文数字归一化(克隆合成的文本前端)───────────────────────────────────── | COMMENT |
| MEDIUM | scripts/pipeline/test-pipeline-units.ts | 52 | // ── taskHasTranslation ────────────────────────────────────────────────────── | COMMENT |
| 84 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | renderer/components/settings/gpu/gpuUtils.ts | 24 | export function isActiveBackendStaleForPlatform( | CODE |
| LOW | renderer/components/settings/gpu/gpuUtils.ts | 47 | export function resolveActiveBackendForPlatform( | CODE |
| LOW | renderer/components/settings/gpu/gpuDownloadUtils.ts | 52 | export function getCompatibleCudaVersions( | CODE |
| LOW | renderer/components/settings/gpu/gpuDownloadUtils.ts | 80 | export function getRecommendedCudaVersion( | CODE |
| LOW | renderer/components/settings/gpu/gpuDownloadUtils.ts | 86 | export function readPersistedDownloadSource(): DownloadSource { | CODE |
| LOW | renderer/components/settings/gpu/gpuDownloadUtils.ts | 124 | export function getRecommendationReasonText( | CODE |
| LOW | renderer/components/tasks/AdvancedSheet.tsx | 71 | function formatAdvancedNumberDraft(value: unknown): string { | CODE |
| LOW | renderer/components/tasks/stageUtils.ts | 261 | export function getTaskProofreadSourcePath( | CODE |
| LOW | renderer/components/tasks/stageUtils.ts | 277 | export function getTaskProofreadTargetPath( | CODE |
| LOW | renderer/components/tasks/stageUtils.ts | 285 | export function getProofreadUnavailableReason( | CODE |
| LOW | renderer/components/resources/ModelLibrarySection.tsx | 88 | function isFasterWhisperModelInstalled( | CODE |
| LOW | renderer/components/subtitleMerge/utils/styleUtils.ts | 99 | export function getSubtitleContainerStyle( | CODE |
| LOW | renderer/hooks/useRadixPointerEventsGuard.ts | 21 | export function useRadixPointerEventsGuard(): void { | CODE |
| LOW | renderer/hooks/useDownloadEndpoints.ts | 18 | export function invalidateDownloadEndpointsCache(): void { | CODE |
| LOW | renderer/lib/funasrDownloadError.ts | 16 | export function isFunasrDownloadCancelled(error: unknown): boolean { | CODE |
| LOW | renderer/lib/funasrDownloadError.ts | 28 | export function formatFunasrDownloadFailureToast( | CODE |
| LOW | renderer/lib/proofreadUtils.ts | 86 | export async function createPendingFileFromVideo( | CODE |
| LOW | renderer/lib/proofreadUtils.ts | 118 | export async function createPendingFileFromSubtitle( | CODE |
| LOW | renderer/lib/providerPanelUtils.ts | 50 | export function resolveSelectedProviderId( | CODE |
| LOW | renderer/lib/providerPanelUtils.ts | 64 | export async function resolveSelectedProviderIdAsync( | CODE |
| LOW | renderer/lib/providerPanelUtils.ts | 88 | export function resolveDefaultTranslateProviderId( | CODE |
| LOW | renderer/lib/providerPanelUtils.ts | 140 | export async function syncTranslateProviderToUserConfig( | CODE |
| LOW | renderer/lib/providerPanelUtils.ts | 151 | export async function syncTestLangsToUserConfig( | CODE |
| LOW | renderer/lib/engineModels.ts | 62 | export function getInstalledModelsForEngine( | CODE |
| LOW | renderer/lib/engineModels.ts | 94 | export function getSelectableModelsForEngine( | CODE |
| LOW | renderer/lib/subtitleOutcome.ts | 28 | export function outcomeSupportsContextKnobs(engine?: string): boolean { | CODE |
| LOW | types/taskSnapshot.ts | 15 | export function isPinnedTaskConfigSnapshot( | CODE |
| LOW | types/taskSnapshot.ts | 32 | export function isTaskSnapshotTranslationEnabled( | CODE |
| LOW | types/dubbing.ts | 87 | export function missingDubbingSpeakerVoiceIds( | CODE |
| LOW | types/dubbing.ts | 112 | export function withDubbingGlobalSpeakerFallback( | CODE |
| LOW | types/transcriptionParams.ts | 79 | export function supportsFasterWhisperAdvancedParams( | CODE |
| LOW | types/transcriptionParams.ts | 85 | export function isValidFasterWhisperAdvancedParamValue( | CODE |
| LOW | types/transcriptionParams.ts | 102 | export function buildFasterWhisperAdvancedParams( | CODE |
| LOW | types/downloadConfig.ts | 59 | export function normalizeDownloadEndpoints( | CODE |
| LOW | types/speakerDiarization.ts | 9 | export function getSpeakerDiarizationMetadataWarning( | CODE |
| LOW | types/speakerDiarization.ts | 25 | export function normalizeSpeakerDiarizationCount(value: unknown): number { | CODE |
| LOW | types/speakerDiarization.ts | 45 | export function shouldExtractAudioForEmbeddedSubtitle( | CODE |
| LOW | types/speakerDiarization.ts | 99 | export function isSpeakerDiarizationStandardTaskContext( | CODE |
| LOW | types/ttsProvider.ts | 548 | export function buildTtsInstanceFromPreset( | CODE |
| LOW | types/provider.ts | 240 | export function promptSupportsEchoAnchoring(prompt?: string): boolean { | CODE |
| LOW | types/proofreadData.ts | 76 | export function hasExplicitSpeakerAssignment(value: object): boolean { | CODE |
| LOW | types/proofreadData.ts | 80 | export function shouldRealignSpeakerAssignment( | CODE |
| LOW | types/proofreadData.ts | 105 | export function normalizePrimarySpeakerId( | CODE |
| LOW | types/proofreadData.ts | 137 | export function sanitizeSpeakerDisplayName(value: unknown): string { | CODE |
| LOW | types/proofreadData.ts | 194 | export function prefixTextWithSpeakerNames( | CODE |
| LOW | types/gpuDevice.ts | 33 | export function sanitizeSelectedCudaDevice(value: unknown): string { | CODE |
| LOW | extraResources/sherpa/worker/sherpa-worker.js | 147 | function buildQwenRecognizerConfig(q, p) { | CODE |
| LOW | extraResources/sherpa/worker/sherpa-worker.js | 172 | function buildFireRedRecognizerConfig(f, tokens, p) { | CODE |
| LOW | extraResources/sherpa/worker/sherpa-worker.js | 190 | function buildParakeetRecognizerConfig(t, tokens, p) { | CODE |
| LOW | extraResources/sherpa/worker/tts-config.js | 299 | function normalizeChineseCloneText(text) { | CODE |
| LOW | …aResources/sherpa/worker/speaker-diarization-config.js | 20 | function buildSpeakerDiarizationConfig(req) { | CODE |
| LOW | scripts/test-translation-cancel.ts | 101 | async function testRateLimiterQueuedAbortReleasesLock(): Promise<void> { | CODE |
| LOW | scripts/test-glossary.ts | 84 | function testNormalizationAndPriority(): void { | CODE |
| LOW | main/translate/index.ts | 32 | function resolveRemoveChinesePunctuation( | CODE |
| LOW | main/translate/utils/untranslated.ts | 124 | function stripNonLinguisticContent(text: string): string { | CODE |
| LOW | main/translate/utils/untranslated.ts | 151 | function sourceScriptDiffersFromTarget( | CODE |
| LOW | main/translate/utils/untranslated.ts | 197 | function hasDifferentKnownLanguageDirection( | CODE |
| LOW | main/translate/utils/untranslated.ts | 253 | export function classifyUntranslatedEvidence( | CODE |
| LOW | main/translate/utils/untranslated.ts | 301 | export function isExactSourceCopyCandidate( | CODE |
| LOW | main/translate/utils/batchConcurrency.ts | 64 | export async function runTranslationBatchesInOrder({ | CODE |
| 161 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | renderer/public/locales/zh/parameters.json | 25 | "placeholder": "搜索参数..." | CODE |
| LOW | renderer/public/locales/zh/download.json | 23 | "placeholder": "粘贴视频链接,一行一条…\n支持从聊天记录等混杂文本中自动识别链接", | CODE |
| LOW | renderer/public/locales/zh/common.json | 227 | "placeholder": "搜索或跳转…", | CODE |
| LOW | renderer/public/locales/zh/glossary.json | 61 | "placeholder": "搜索原文、译文或备注", | CODE |
| LOW⚡ | renderer/public/locales/zh/tasks.json | 211 | "placeholder": "引擎默认:5", | CODE |
| LOW⚡ | renderer/public/locales/zh/tasks.json | 216 | "placeholder": "引擎默认:5", | CODE |
| LOW⚡ | renderer/public/locales/zh/tasks.json | 221 | "placeholder": "引擎默认:0.0 → 1.0 自适应回退", | CODE |
| LOW⚡ | renderer/public/locales/zh/tasks.json | 226 | "placeholder": "引擎默认:2.4", | CODE |
| LOW⚡ | renderer/public/locales/zh/tasks.json | 231 | "placeholder": "引擎默认:-1.0", | CODE |
| LOW⚡ | renderer/public/locales/zh/tasks.json | 236 | "placeholder": "引擎默认:0.6", | CODE |
| LOW | renderer/public/locales/en/parameters.json | 25 | "placeholder": "Search parameters..." | CODE |
| LOW | renderer/public/locales/en/download.json | 23 | "placeholder": "Paste video links, one per line…\nLinks are auto-extracted from mixed text like chat logs", | CODE |
| LOW | renderer/public/locales/en/common.json | 227 | "placeholder": "Search or jump to…", | CODE |
| LOW | renderer/public/locales/en/glossary.json | 61 | "placeholder": "Search source, translation, or note", | CODE |
| LOW⚡ | renderer/public/locales/en/tasks.json | 211 | "placeholder": "Engine default: 5", | CODE |
| LOW⚡ | renderer/public/locales/en/tasks.json | 216 | "placeholder": "Engine default: 5", | CODE |
| LOW⚡ | renderer/public/locales/en/tasks.json | 221 | "placeholder": "Engine default: adaptive 0.0 → 1.0 fallback", | CODE |
| LOW⚡ | renderer/public/locales/en/tasks.json | 226 | "placeholder": "Engine default: 2.4", | CODE |
| LOW⚡ | renderer/public/locales/en/tasks.json | 231 | "placeholder": "Engine default: -1.0", | CODE |
| LOW⚡ | renderer/public/locales/en/tasks.json | 236 | "placeholder": "Engine default: 0.6", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | renderer/hooks/useParameterConfig.tsx | 52 | // Template operations removed as requested | COMMENT |
| HIGH | renderer/hooks/useParameterConfig.tsx | 495 | // Template operations removed as requested | COMMENT |
| HIGH | main/service/configurationManager.ts | 50 | // Templates functionality removed as requested | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | main/service/__tests__/integration.demo.ts | 185 | // Step 1: Process custom parameters | COMMENT |
| LOW⚡ | main/service/__tests__/integration.demo.ts | 192 | // Step 2: Prepare headers (would be used in OpenAI client initialization) | COMMENT |
| LOW⚡ | main/service/__tests__/integration.demo.ts | 199 | // Step 3: Prepare request body (would be used in API call) | COMMENT |
| LOW | main/service/__tests__/integration.demo.ts | 210 | // Step 4: Log processing summary | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | main/service/__tests__/integration.demo.ts | 185 | // Step 1: Process custom parameters | COMMENT |
| LOW⚡ | main/service/__tests__/integration.demo.ts | 192 | // Step 2: Prepare headers (would be used in OpenAI client initialization) | COMMENT |
| LOW⚡ | main/service/__tests__/integration.demo.ts | 199 | // Step 3: Prepare request body (would be used in API call) | COMMENT |
| LOW | main/service/__tests__/integration.demo.ts | 210 | // Step 4: Log processing summary | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | main/service/openai-example.ts | 28 | apiKey: 'your-api-key', | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | renderer/next-env.d.ts | 1 | /// <reference types="next" /> | COMMENT |
| LOW | scripts/sync-gitcode.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/lib/gitcode-sync.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | main/helpers/updater.ts | 101 | // 当自动更新出错时,提供手动下载选项 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/make_icon.py | 35 | # Anchor region on the dark squircle face (robust; excludes glow + watermark). | COMMENT |