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 13,962 GitHub stars. SynthScan v2.0 examined 237,062 lines of code across 565 source files, recording 764 pattern matches distributed across 8 syntactic categories. The overall adjusted score of 6.5 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 764 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 | 325 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 327 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 337 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 339 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 541 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 543 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 552 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 554 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 637 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 639 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 647 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 649 | # ============================================================================= | 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 | 295 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 297 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 310 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 312 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 372 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 375 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 387 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 390 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 402 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 404 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 441 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 443 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 466 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 468 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 681 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 683 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 708 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 710 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1437 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | config.example.toml | 1441 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | config.example.toml | 1453 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1455 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1491 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1493 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1542 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1544 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1668 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1670 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1699 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1701 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1745 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 1747 | # ============================================================================= | COMMENT |
| 354 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 | # the target response from the relay command when visibility is "none". | COMMENT |
| LOW | config.example.toml | 321 | # [projects.observe] | COMMENT |
| LOW | config.example.toml | 341 | # to trigger agent prompts or shell commands. | COMMENT |
| LOW | config.example.toml | 361 | # -H "Content-Type: application/json" \ | COMMENT |
| LOW | config.example.toml | 381 | # [bridge] | COMMENT |
| LOW | config.example.toml | 401 | COMMENT | |
| LOW | config.example.toml | 421 | # http — POST JSON to a URL with event payload | COMMENT |
| LOW | config.example.toml | 441 | # ============================================================================= | COMMENT |
| LOW | config.example.toml | 461 | # # 备选:Groq(更快,有免费额度) | COMMENT |
| LOW | config.example.toml | 481 | # Requires ffmpeg for WAV → Opus conversion (needed by Feishu audio messages). | COMMENT |
| LOW | config.example.toml | 501 | # base_url = "" # optional: leave empty for default endpoint / 留空使用默认地址 | COMMENT |
| LOW | config.example.toml | 521 | # # 每个项目/Agent 可单独覆盖音色;key 与 [[projects]].name 一致。 | COMMENT |
| LOW | config.example.toml | 541 | # ============================================================================= | COMMENT |
| LOW | config.example.toml | 561 | # 2. Exec commands — execute shell command directly | COMMENT |
| LOW | config.example.toml | 581 | # name = "finduser" | COMMENT |
| LOW | config.example.toml | 601 | # Exec 命令 — 直接执行 shell 命令 | COMMENT |
| LOW | config.example.toml | 621 | # exec = "npm run build" | COMMENT |
| LOW | config.example.toml | 641 | # Messages containing any of these words will be blocked and NOT forwarded to | COMMENT |
| LOW | config.example.toml | 661 | # [[aliases]] | COMMENT |
| LOW | config.example.toml | 681 | # ============================================================================= | COMMENT |
| LOW | config.example.toml | 701 | # | COMMENT |
| LOW | config.example.toml | 721 | # # 禁用该项目的指定命令 | COMMENT |
| LOW | config.example.toml | 741 | # 💡 TIP: Send /whoami or /status to the bot to get your User ID for allow_from / admin_from. | COMMENT |
| LOW | config.example.toml | 761 | # When [projects.users] is configured, each user is matched to a role. | COMMENT |
| LOW | config.example.toml | 781 | # Heartbeat — periodic awareness check / 心跳 — 周期性巡检 | COMMENT |
| LOW | config.example.toml | 801 | # HEARTBEAT.md example / HEARTBEAT.md 示例: | COMMENT |
| LOW | config.example.toml | 821 | # | COMMENT |
| LOW | config.example.toml | 841 | COMMENT | |
| LOW | config.example.toml | 861 | # ANTHROPIC_AUTH_TOKEN = "sk-kimi-xxx" | COMMENT |
| LOW | config.example.toml | 881 | # | COMMENT |
| LOW | config.example.toml | 901 | # [[projects.agent.providers]] | COMMENT |
| LOW | config.example.toml | 921 | # # Some providers (e.g. SiliconFlow) don't support Claude's adaptive thinking. | COMMENT |
| LOW | config.example.toml | 941 | # model = "MiniMax-M2.7" | COMMENT |
| LOW | config.example.toml | 961 | # # For Bedrock/Vertex/Foundry that don't support adaptive thinking, | COMMENT |
| LOW | config.example.toml | 981 | # | COMMENT |
| LOW | config.example.toml | 1001 | [[projects.platforms]] | COMMENT |
| LOW | config.example.toml | 1021 | # # 设为 true 时,群聊中无需 @机器人 也会响应所有消息(默认 false) | COMMENT |
| LOW | config.example.toml | 1041 | # # event; cc-connect buffers them and dispatches a single multi-image message once | COMMENT |
| LOW | config.example.toml | 1061 | # [[projects.platforms]] | COMMENT |
| LOW | config.example.toml | 1081 | # 3. Fill in client_id (AppKey) and client_secret (AppSecret) below | COMMENT |
| LOW | config.example.toml | 1101 | # 订阅应用会话消息事件,如 kso.app_chat.message | COMMENT |
| LOW | config.example.toml | 1121 | COMMENT | |
| LOW | config.example.toml | 1141 | # 1. Create an account on your Matrix homeserver (matrix.org or self-hosted) | COMMENT |
| LOW | config.example.toml | 1161 | # auto_join = true # auto-join room invites (default true) / 自动加入被邀请的房间(默认 true) | COMMENT |
| LOW | config.example.toml | 1181 | COMMENT | |
| 156 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 | 7776 | // Step 3: New turn creates Session B and calls getOrCreateInteractiveStateWith. | COMMENT |
| LOW⚡ | core/engine_test.go | 14989 | // Step 2: send a message (this triggers startOrResumeSession + processInteractiveEvents) | COMMENT |
| LOW⚡ | core/engine_test.go | 14999 | // Step 3: verify session name was mapped | COMMENT |
| LOW | core/engine_test.go | 7762 | // Step 1: Old turn created state S1 with old agent. | COMMENT |
| LOW | core/engine_test.go | 7788 | // Step 4: Old goroutine exits and calls cleanup with OLD state pointer. | COMMENT |
| LOW | core/engine_test.go | 15011 | // Step 4: verify /list displays the name | COMMENT |
| LOW⚡ | core/engine.go | 16420 | // Step 1: Check existing binding | COMMENT |
| LOW⚡ | core/engine.go | 16428 | // Step 2: Resolve channel name for convention match | COMMENT |
| LOW | core/engine.go | 16443 | // Step 3: Convention match — check if base_dir/<channel-name> exists | COMMENT |
| LOW | platform/feishu/feishu_test.go | 1164 | // Step 1: opening message @mentions the bot — establishes the thread. | COMMENT |
| LOW | platform/feishu/feishu_test.go | 1178 | // Step 2: follow-up image in the same thread, no @mention — should pass through. | COMMENT |
| LOW | platform/feishu/feishu_test.go | 1195 | // Step 3: image in a *different* thread without @mention — should still be dropped. | COMMENT |
| LOW | platform/feishu/feishu_test.go | 1206 | // 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 |
| 17 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | core/engine_test.go | 7773 | // Step 2: /new runs — unconditional cleanup deletes S1. | COMMENT |
| LOW⚡ | core/engine_test.go | 7776 | // Step 3: New turn creates Session B and calls getOrCreateInteractiveStateWith. | COMMENT |
| LOW⚡ | core/engine_test.go | 14986 | // Step 1: /new "我的新会话" | COMMENT |
| LOW⚡ | core/engine_test.go | 14989 | // Step 2: send a message (this triggers startOrResumeSession + processInteractiveEvents) | COMMENT |
| LOW⚡ | core/engine_test.go | 14999 | // Step 3: verify session name was mapped | COMMENT |
| LOW | core/engine_test.go | 7762 | // Step 1: Old turn created state S1 with old agent. | COMMENT |
| LOW | core/engine_test.go | 7788 | // Step 4: Old goroutine exits and calls cleanup with OLD state pointer. | COMMENT |
| LOW | core/engine_test.go | 15011 | // Step 4: verify /list displays the name | COMMENT |
| LOW⚡ | core/engine.go | 16420 | // Step 1: Check existing binding | COMMENT |
| LOW⚡ | core/engine.go | 16428 | // Step 2: Resolve channel name for convention match | COMMENT |
| LOW | core/engine.go | 16443 | // Step 3: Convention match — check if base_dir/<channel-name> exists | COMMENT |
| LOW | platform/feishu/feishu_test.go | 1164 | // Step 1: opening message @mentions the bot — establishes the thread. | COMMENT |
| LOW | platform/feishu/feishu_test.go | 1178 | // Step 2: follow-up image in the same thread, no @mention — should pass through. | COMMENT |
| LOW | platform/feishu/feishu_test.go | 1195 | // Step 3: image in a *different* thread without @mention — should still be dropped. | COMMENT |
| LOW | platform/feishu/feishu_test.go | 1206 | // 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 | 11411 | {"git", "config", "user.email", "test@test.com"}, | CODE |
| LOW | core/engine_test.go | 11464 | {"git", "config", "user.email", "test@test.com"}, | CODE |
| LOW | core/engine_test.go | 11534 | {"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 | 643 | placeholder, _ := raw["placeholder"].(string) | CODE |
| LOW | agent/pi/session.go | 660 | "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 | config.example.toml | 932 | # # MiniMax — OpenAI-compatible agent provider with 1M context window | COMMENT |
| MEDIUM | README.md | 52 | Thanks to [Kimi](https://www.kimi.com/code/?aff=cc-connect) for sponsoring this project! [Kimi K2.7 Code](https://platfo | CODE |
| MEDIUM | agent/claudecode/session.go | 817 | // cached prefix, so on long agentic turns it vastly exceeds the model | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | platform/feishu/feishu.go | 3523 | // Typed syscall checks — more robust than string matching. | COMMENT |
| MEDIUM | agent/kimi/probe.go | 66 | // To stay robust against future layout tweaks the parser only treats a line | 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 | 1199 | # Set webhook_url to switch from long-poll to webhook. Required for high-traffic | COMMENT |
| LOW | config.example.toml | 1730 | # Set init_command to start claude automatically; adjust prompt_pattern to match | COMMENT |