Bridge local AI coding agents (Claude Code, Cursor, Gemini CLI, Codex) to messaging platforms (Feishu/Lark, DingTalk, Slack, Telegram, Discord, LINE, WeChat Work). Chat with your AI dev assistant from anywhere — no public IP required for most platforms.
This report presents the forensic synthetic code analysis of chenhg5/cc-connect, a Go project with 15,238 GitHub stars. SynthScan v2.0 examined 252,986 lines of code across 600 source files, recording 822 pattern matches distributed across 8 syntactic categories. The overall adjusted score of 6.4 places this repository in the Low AI signal 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).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
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 822 distinct pattern matches across 8 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⚡ | config.example.toml | 265 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 267 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 276 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 281 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 330 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 332 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 342 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 344 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 546 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 548 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 557 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 559 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 642 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 644 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 652 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 654 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 16 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 18 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 64 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 66 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 102 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 104 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 192 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 195 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 233 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 235 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 248 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 250 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 300 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 302 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 315 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 317 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 377 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 380 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 392 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 395 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 407 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 409 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 446 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 448 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 471 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 473 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 686 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 688 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 713 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 715 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1500 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | config.example.toml | 1504 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | config.example.toml | 1516 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1518 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1554 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1556 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1605 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1607 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1677 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1679 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1754 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1756 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1795 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1797 | # ============================================================================= | COMMENT |
| 364 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | config.example.toml | 1 | # cc-connect configuration | COMMENT |
| LOW | config.example.toml | 21 | # - "en": English | COMMENT |
| LOW | config.example.toml | 41 | COMMENT | |
| LOW | config.example.toml | 61 | [log] | COMMENT |
| LOW | config.example.toml | 81 | # [[providers]] | COMMENT |
| LOW | config.example.toml | 101 | COMMENT | |
| LOW | config.example.toml | 121 | # tool_max_len = 500 # Max chars for tool use messages (default: 500) / 工具调用消息最大字符数(默认 500) | COMMENT |
| LOW | config.example.toml | 141 | # [projects.display] | COMMENT |
| LOW | config.example.toml | 161 | # Unlike idle_timeout_mins, this does not detect stuck agent execution. It | COMMENT |
| LOW | config.example.toml | 181 | # reaps an entire workspace. Set to 0 or leave unset to disable. | COMMENT |
| LOW | config.example.toml | 201 | # | COMMENT |
| LOW | config.example.toml | 221 | # target can escalate, work_dir inaccessible) or if the isolation probe | COMMENT |
| LOW | config.example.toml | 241 | COMMENT | |
| LOW | config.example.toml | 261 | # enabled = false # Enable/disable instant reply (default: false) / 启用/禁用即时确认回复(默认 false) | COMMENT |
| LOW | config.example.toml | 281 | # ============================================================================= | COMMENT |
| LOW | config.example.toml | 301 | # Relay Settings / Relay 设置 | COMMENT |
| LOW | config.example.toml | 321 | # [projects.auto_compress] | COMMENT |
| LOW | config.example.toml | 341 | COMMENT | |
| LOW | config.example.toml | 361 | # -d '{"session_key":"telegram:123:123","prompt":"review latest commit","event":"git:commit"}' | COMMENT |
| LOW | config.example.toml | 381 | # Allow external adapters written in any language to connect at runtime. | COMMENT |
| LOW | config.example.toml | 401 | # [management] | COMMENT |
| LOW | config.example.toml | 421 | # * — match all events / 匹配所有事件 | COMMENT |
| LOW | config.example.toml | 441 | # [[hooks]] | COMMENT |
| LOW | config.example.toml | 461 | # api_key = "sk-xxx" # OpenAI API key | COMMENT |
| LOW | config.example.toml | 481 | # 无论用户发文字还是语音,AI 始终额外发一条语音回复 | COMMENT |
| LOW | config.example.toml | 501 | # # OpenAI TTS 限制请参考:https://platform.openai.com/docs/guides/text-to-speech | COMMENT |
| LOW | config.example.toml | 521 | # base_url = "" # optional: default "https://api.minimaxi.com" / 留空使用默认地址 | COMMENT |
| LOW | config.example.toml | 541 | # api_key = "your-mimo-api-key" | COMMENT |
| LOW | config.example.toml | 561 | # 定义可复用的 prompt 模板作为全局 slash 命令(所有项目通用)。 | COMMENT |
| LOW | config.example.toml | 581 | # Usage / 用法: | COMMENT |
| LOW | config.example.toml | 601 | # name = "daily" | COMMENT |
| LOW | config.example.toml | 621 | # exec = "git checkout -b {{1}}" | COMMENT |
| LOW | config.example.toml | 641 | COMMENT | |
| LOW | config.example.toml | 661 | # 当用户发送的消息首词匹配别名触发词时,自动替换为目标命令。 | COMMENT |
| LOW | config.example.toml | 681 | # /alias add 帮助 /help | COMMENT |
| LOW | config.example.toml | 701 | # [projects.agent] | COMMENT |
| LOW | config.example.toml | 721 | # show_context_indicator = false # Hide the footer's first line: model · [effort ·] out/in/cw/cr · ctx % (default: tru | COMMENT |
| LOW | config.example.toml | 741 | # admin_from must be defined at the [[projects]] level. | COMMENT |
| LOW | config.example.toml | 761 | # admin_from = "*" | COMMENT |
| LOW | config.example.toml | 781 | # [projects.users.roles.member] | COMMENT |
| LOW | config.example.toml | 801 | # silent = true # Suppress "💓" notification (default: true) / 不发送心跳通知(默认 true) | COMMENT |
| LOW | config.example.toml | 821 | # - "acceptEdits" (edit): File edit tools auto-approved; other tools still ask. / 文件编辑自动通过,其他仍需确认。 | COMMENT |
| LOW | config.example.toml | 841 | COMMENT | |
| LOW | config.example.toml | 861 | # 可选:为每个项目单独配置环境变量,注入到 Claude Code 会话中。 | COMMENT |
| LOW | config.example.toml | 881 | # When router_url is set, cc-connect will automatically: | COMMENT |
| LOW | config.example.toml | 901 | # | COMMENT |
| LOW | config.example.toml | 921 | # [[projects.agent.providers.models]] | COMMENT |
| LOW | config.example.toml | 941 | # # China-region accounts may use https://api.minimaxi.com/v1 / 中国区账号可使用 https://api.minimaxi.com/v1 | COMMENT |
| LOW | config.example.toml | 961 | # # For special setups (Bedrock, Vertex, Foundry), use the env map: | COMMENT |
| LOW | config.example.toml | 981 | # normalize_agents: codex | claudecode | all | COMMENT |
| LOW | config.example.toml | 1001 | # cc-connect feishu setup --project <project_name> | COMMENT |
| LOW | config.example.toml | 1021 | # reaction_emoji = "OnIt" # Emoji reaction on incoming messages (default: "OnIt"); set to "none" to disable | COMMENT |
| LOW | config.example.toml | 1041 | # # 机器人间 @通知映射表:friendly_name -> open_id。 | COMMENT |
| LOW | config.example.toml | 1061 | # 3. Add im.message.receive_v1 event and enable WebSocket long-connection mode (recommended) | COMMENT |
| LOW | config.example.toml | 1081 | COMMENT | |
| LOW | config.example.toml | 1101 | COMMENT | |
| LOW | config.example.toml | 1121 | # Telegram (uncomment to enable / 取消注释以启用) | COMMENT |
| LOW | config.example.toml | 1141 | # # so "card" is normalized to "compact". Set "legacy" to disable streaming edits. | COMMENT |
| LOW | config.example.toml | 1161 | # [projects.platforms.options] | COMMENT |
| LOW | config.example.toml | 1181 | # type = "webex" | COMMENT |
| 197 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | INSTALL.md | 19 | ## Step 1: Install cc-connect | COMMENT |
| LOW | INSTALL.md | 70 | ## Step 2: Install your AI Agent | COMMENT |
| LOW | INSTALL.md | 106 | ## Step 3: Create config.toml | COMMENT |
| LOW | INSTALL.md | 171 | ## Step 4: Configure a Messaging Platform | COMMENT |
| LOW | INSTALL.md | 464 | ## Step 5: Run cc-connect | COMMENT |
| LOW | INSTALL.md | 504 | ## Step 6: Chat Commands | COMMENT |
| LOW | INSTALL.md | 528 | ## Step 7: Enable Natural Language Scheduling (Non-Claude-Code Agents) | COMMENT |
| LOW | INSTALL.md | 744 | ## Step 8: Run as Background Service (Optional) | COMMENT |
| LOW⚡ | core/engine_test.go | 7912 | // Step 3: New turn creates Session B and calls getOrCreateInteractiveStateWith. | COMMENT |
| LOW⚡ | core/engine_test.go | 15212 | // Step 2: send a message (this triggers startOrResumeSession + processInteractiveEvents) | COMMENT |
| LOW⚡ | core/engine_test.go | 15222 | // Step 3: verify session name was mapped | COMMENT |
| LOW | core/engine_test.go | 7898 | // Step 1: Old turn created state S1 with old agent. | COMMENT |
| LOW | core/engine_test.go | 7924 | // Step 4: Old goroutine exits and calls cleanup with OLD state pointer. | COMMENT |
| LOW | core/engine_test.go | 15234 | // Step 4: verify /list displays the name | COMMENT |
| LOW⚡ | core/engine.go | 16771 | // Step 1: Check existing binding | COMMENT |
| LOW⚡ | core/engine.go | 16779 | // Step 2: Resolve channel name for convention match | COMMENT |
| LOW | core/engine.go | 16794 | // Step 3: Convention match — check if base_dir/<channel-name> exists | COMMENT |
| LOW | platform/feishu/feishu_test.go | 1298 | // Step 1: opening message @mentions the bot — establishes the thread. | COMMENT |
| LOW | platform/feishu/feishu_test.go | 1312 | // Step 2: follow-up image in the same thread, no @mention — should pass through. | COMMENT |
| LOW | platform/feishu/feishu_test.go | 1329 | // Step 3: image in a *different* thread without @mention — should still be dropped. | COMMENT |
| LOW | platform/feishu/feishu_test.go | 1340 | // Step 4: text without @mention in the active thread — should be dropped | COMMENT |
| LOW | platform/wps-agentspace/wpsagentspace.go | 704 | // Step 1: Get login URL | COMMENT |
| LOW⚡ | platform/wps-agentspace/wpsagentspace.go | 740 | // Step 2: Open browser | COMMENT |
| LOW⚡ | platform/wps-agentspace/wpsagentspace.go | 745 | // Step 3: Poll for token | COMMENT |
| LOW | platform/qq/qq.go | 330 | // Step 1: Try direct URL from message segment (with longer timeout for large files) | COMMENT |
| LOW | platform/qq/qq.go | 346 | // Step 2: Get fresh direct link via NapCat API (CDN URLs expire / have download limits) | COMMENT |
| LOW | platform/qq/qq.go | 390 | // Step 3: Last resort — get_file (downloads to NapCat local or returns base64) | COMMENT |
| LOW | agent/copilot/session.go | 154 | // Step 1: Ping | COMMENT |
| LOW | agent/copilot/session.go | 168 | // Step 2: Create or resume session | COMMENT |
| LOW | agent/claudecode/provider_env_test.go | 341 | // Step 1: simulate the user's first message after `/provider switch minimax`. | COMMENT |
| LOW⚡ | agent/claudecode/provider_env_test.go | 354 | // Step 2: simulate a cc-connect process restart. agent_session_id is | COMMENT |
| LOW⚡ | agent/claudecode/provider_env_test.go | 363 | // Step 3: engine looks up session.ActiveProvider and re-binds it before | COMMENT |
| LOW | agent/codex/provider_resume_test.go | 43 | // Step 1: simulate the user's `/provider switch alt-provider`. | COMMENT |
| LOW⚡ | agent/codex/provider_resume_test.go | 59 | // Step 2: simulate restart — activeIdx is back to -1. | COMMENT |
| LOW⚡ | agent/codex/provider_resume_test.go | 68 | // Step 3: engine calls restoreActiveProviderFromSession → SetActiveProvider. | COMMENT |
| LOW | agent/codex/integration_test.go | 30 | // Step 1: write config.toml via our function | COMMENT |
| LOW | agent/codex/integration_test.go | 56 | // Step 2: write auth.json via our function | COMMENT |
| LOW | agent/codex/integration_test.go | 78 | // Step 3: run codex exec with the generated config | COMMENT |
| LOW | agent/kimi/provider_resume_test.go | 42 | // Step 1: simulate `/provider switch alt-provider`. | COMMENT |
| LOW⚡ | agent/kimi/provider_resume_test.go | 58 | // Step 2: simulate restart — activeIdx is back to -1. | COMMENT |
| LOW⚡ | agent/kimi/provider_resume_test.go | 67 | // Step 3: engine calls restoreActiveProviderFromSession → SetActiveProvider. | COMMENT |
| LOW | agent/opencode/provider_resume_test.go | 43 | // Step 1: simulate `/provider switch alt-provider`. | COMMENT |
| LOW⚡ | agent/opencode/provider_resume_test.go | 59 | // Step 2: simulate restart — activeIdx is back to -1. | COMMENT |
| LOW⚡ | agent/opencode/provider_resume_test.go | 68 | // Step 3: engine calls restoreActiveProviderFromSession → SetActiveProvider. | COMMENT |
| LOW | docs/slack.md | 15 | ## Step 1: Create a Slack App | COMMENT |
| LOW | docs/slack.md | 36 | ## Step 2: Configure Bot User | COMMENT |
| LOW | docs/slack.md | 58 | ## Step 3: Configure Permissions (OAuth Scopes) | COMMENT |
| LOW | docs/slack.md | 81 | ## Step 4: Enable Socket Mode | COMMENT |
| LOW | docs/slack.md | 107 | ## Step 5: Configure Event Subscriptions | COMMENT |
| LOW | docs/slack.md | 133 | ## Step 6: Install App to Workspace | COMMENT |
| LOW | docs/slack.md | 155 | ## Step 7: Configure cc-connect | COMMENT |
| LOW | docs/slack.md | 187 | ## Step 8: Start cc-connect | COMMENT |
| LOW | docs/slack.md | 209 | ## Step 9: Start Chatting | COMMENT |
| LOW | docs/matrix.md | 15 | ## Step 1: Create a Matrix Account | COMMENT |
| LOW | docs/matrix.md | 28 | ## Step 2: Get Your Access Token | COMMENT |
| LOW | docs/matrix.md | 59 | ## Step 3: Find Your User ID (Optional) | COMMENT |
| LOW | docs/matrix.md | 67 | ## Step 4: Configure cc-connect | COMMENT |
| LOW | docs/matrix.md | 104 | ## Step 5: Start cc-connect | COMMENT |
| LOW | docs/matrix.md | 125 | ## Step 6: Start Chatting | COMMENT |
| LOW | docs/telegram.md | 15 | ## Step 1: Create a Telegram Bot | COMMENT |
| 24 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | core/engine_test.go | 7909 | // Step 2: /new runs — unconditional cleanup deletes S1. | COMMENT |
| LOW⚡ | core/engine_test.go | 7912 | // Step 3: New turn creates Session B and calls getOrCreateInteractiveStateWith. | COMMENT |
| LOW⚡ | core/engine_test.go | 15209 | // Step 1: /new "我的新会话" | COMMENT |
| LOW⚡ | core/engine_test.go | 15212 | // Step 2: send a message (this triggers startOrResumeSession + processInteractiveEvents) | COMMENT |
| LOW⚡ | core/engine_test.go | 15222 | // Step 3: verify session name was mapped | COMMENT |
| LOW | core/engine_test.go | 7898 | // Step 1: Old turn created state S1 with old agent. | COMMENT |
| LOW | core/engine_test.go | 7924 | // Step 4: Old goroutine exits and calls cleanup with OLD state pointer. | COMMENT |
| LOW | core/engine_test.go | 15234 | // Step 4: verify /list displays the name | COMMENT |
| LOW⚡ | core/engine.go | 16771 | // Step 1: Check existing binding | COMMENT |
| LOW⚡ | core/engine.go | 16779 | // Step 2: Resolve channel name for convention match | COMMENT |
| LOW | core/engine.go | 16794 | // Step 3: Convention match — check if base_dir/<channel-name> exists | COMMENT |
| LOW | platform/feishu/feishu_test.go | 1298 | // Step 1: opening message @mentions the bot — establishes the thread. | COMMENT |
| LOW | platform/feishu/feishu_test.go | 1312 | // Step 2: follow-up image in the same thread, no @mention — should pass through. | COMMENT |
| LOW | platform/feishu/feishu_test.go | 1329 | // Step 3: image in a *different* thread without @mention — should still be dropped. | COMMENT |
| LOW | platform/feishu/feishu_test.go | 1340 | // Step 4: text without @mention in the active thread — should be dropped | COMMENT |
| LOW | platform/wps-agentspace/wpsagentspace.go | 704 | // Step 1: Get login URL | COMMENT |
| LOW⚡ | platform/wps-agentspace/wpsagentspace.go | 740 | // Step 2: Open browser | COMMENT |
| LOW⚡ | platform/wps-agentspace/wpsagentspace.go | 745 | // Step 3: Poll for token | COMMENT |
| LOW | platform/qq/qq.go | 330 | // Step 1: Try direct URL from message segment (with longer timeout for large files) | COMMENT |
| LOW | platform/qq/qq.go | 346 | // Step 2: Get fresh direct link via NapCat API (CDN URLs expire / have download limits) | COMMENT |
| LOW | platform/qq/qq.go | 390 | // Step 3: Last resort — get_file (downloads to NapCat local or returns base64) | COMMENT |
| LOW | agent/copilot/session.go | 154 | // Step 1: Ping | COMMENT |
| LOW | agent/copilot/session.go | 168 | // Step 2: Create or resume session | COMMENT |
| LOW | agent/claudecode/provider_env_test.go | 341 | // Step 1: simulate the user's first message after `/provider switch minimax`. | COMMENT |
| LOW⚡ | agent/claudecode/provider_env_test.go | 354 | // Step 2: simulate a cc-connect process restart. agent_session_id is | COMMENT |
| LOW⚡ | agent/claudecode/provider_env_test.go | 363 | // Step 3: engine looks up session.ActiveProvider and re-binds it before | COMMENT |
| LOW | agent/codex/provider_resume_test.go | 43 | // Step 1: simulate the user's `/provider switch alt-provider`. | COMMENT |
| LOW⚡ | agent/codex/provider_resume_test.go | 59 | // Step 2: simulate restart — activeIdx is back to -1. | COMMENT |
| LOW⚡ | agent/codex/provider_resume_test.go | 68 | // Step 3: engine calls restoreActiveProviderFromSession → SetActiveProvider. | COMMENT |
| LOW | agent/codex/integration_test.go | 30 | // Step 1: write config.toml via our function | COMMENT |
| LOW | agent/codex/integration_test.go | 56 | // Step 2: write auth.json via our function | COMMENT |
| LOW | agent/codex/integration_test.go | 78 | // Step 3: run codex exec with the generated config | COMMENT |
| LOW | agent/kimi/provider_resume_test.go | 42 | // Step 1: simulate `/provider switch alt-provider`. | COMMENT |
| LOW⚡ | agent/kimi/provider_resume_test.go | 58 | // Step 2: simulate restart — activeIdx is back to -1. | COMMENT |
| LOW⚡ | agent/kimi/provider_resume_test.go | 67 | // Step 3: engine calls restoreActiveProviderFromSession → SetActiveProvider. | COMMENT |
| LOW | agent/opencode/provider_resume_test.go | 43 | // Step 1: simulate `/provider switch alt-provider`. | COMMENT |
| LOW⚡ | agent/opencode/provider_resume_test.go | 59 | // Step 2: simulate restart — activeIdx is back to -1. | COMMENT |
| LOW⚡ | agent/opencode/provider_resume_test.go | 68 | // Step 3: engine calls restoreActiveProviderFromSession → SetActiveProvider. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/engine_test.go | 11547 | {"git", "config", "user.email", "test@test.com"}, | CODE |
| LOW | core/engine_test.go | 11600 | {"git", "config", "user.email", "test@test.com"}, | CODE |
| LOW | core/engine_test.go | 11670 | {"git", "config", "user.email", "test@test.com"}, | CODE |
| LOW | core/bridge.go | 1433 | "type": "select", "placeholder": e.Placeholder, | CODE |
| LOW | config/config.go | 791 | "var", parts[1], "placeholder", match) | CODE |
| LOW | platform/feishu/card.go | 233 | "placeholder": plainText(e.Placeholder), | CODE |
| LOW | platform/cloud-web/card.go | 47 | "type": "select", "placeholder": e.Placeholder, | CODE |
| LOW | agent/pi/session.go | 715 | placeholder, _ := raw["placeholder"].(string) | CODE |
| LOW | agent/pi/session.go | 732 | "placeholder": placeholder, | CODE |
| LOW | docs/bridge-protocol.zh-CN.md | 575 | "placeholder": "选择一个模型", | CODE |
| LOW | docs/bridge-protocol.md | 575 | "placeholder": "Choose a model", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | platform/feishu/feishu.go | 3871 | // Typed syscall checks — more robust than string matching. | COMMENT |
| MEDIUM | agent/claudecode/session_test.go | 789 | // Issue #1736 regression harness: act as a Claude Code stub that | COMMENT |
| MEDIUM | agent/kimi/probe.go | 84 | // To stay robust against future layout tweaks the parser only treats a line | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | config.example.toml | 937 | # # MiniMax — OpenAI-compatible agent provider with 1M context window | COMMENT |
| MEDIUM | agent/claudecode/session.go | 853 | // cached prefix, so on long agentic turns it vastly exceeds the model | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | config.example.toml | 52 | # Set 0 to keep the default. Raise it to send larger files; the /send request | COMMENT |
| LOW | config.example.toml | 1204 | # Set webhook_url to switch from long-poll to webhook. Required for high-traffic | COMMENT |
| LOW | config.example.toml | 1826 | # Set init_command to start claude automatically; adjust prompt_pattern to match | COMMENT |