Consider it done. The open-source AI agent that works out of the box · 想到,就能做到。开源、开箱即用的 AI Agent。
This report presents the forensic synthetic code analysis of makecindy/cindy, a TypeScript project with 1,920 GitHub stars. SynthScan v2.0 examined 2,242,537 lines of code across 6779 source files, recording 8159 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 4.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 8159 distinct pattern matches across 12 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 |
|---|---|---|---|---|
| LOW | docs/client-log-upload-implementation-plan.md | 235 | export function escapeMainLogContinuationLines(msg: string): string; | CODE |
| LOW | packages/auth-client/src/sessionRealm.ts | 65 | export function serializeAuthSessionRecord( | CODE |
| LOW | packages/auth-client/src/sessionRealm.ts | 78 | export function parseAccountDeletionReceiptRecord( | CODE |
| LOW | packages/auth-client/src/sessionRealm.ts | 92 | export function serializeAccountDeletionReceiptRecord( | CODE |
| LOW | packages/browser-control-runtime/src/runtime.ts | 225 | export function createBrowserControlRuntime( | CODE |
| LOW | packages/browser-control-runtime/src/unavailable.ts | 10 | export function createUnavailableBrowserRuntime( | CODE |
| LOW | …wser-control-runtime/src/shim/plugin-config-runtime.ts | 22 | export function resolveEffectiveEnableState(params: EffectiveEnableStateParams): { | CODE |
| LOW | …wser-control-runtime/src/shim/ssrf-runtime-internal.ts | 14 | export function registerManagedProxyBrowserCdpBypass(_url?: string): (() => void) | undefined { | CODE |
| LOW | …ages/browser-control-runtime/src/shim/media-runtime.ts | 38 | export function isImageProcessorUnavailableError(err: unknown): boolean { | CODE |
| LOW | …ges/browser-control-runtime/src/shim/plugin-runtime.ts | 11 | export function startLazyPluginServiceModule(): LazyPluginServiceHandle { | CODE |
| LOW | …wser-control-runtime/src/shim/agent-harness-runtime.ts | 25 | export function selectDefaultNodeFromList(): never { | CODE |
| LOW | …er-control-runtime/src/shim/runtime-config-snapshot.ts | 39 | export function getRuntimeConfigSourceSnapshot(): OpenClawConfig | null { | CODE |
| LOW | …ckages/browser-control-runtime/src/shim/runtime-env.ts | 33 | export function registerUnhandledRejectionHandler(handler: UnhandledRejectionHandler): () => void { | CODE |
| LOW | …es/browser-control-runtime/src/shim/gateway-runtime.ts | 73 | export function resolveNodeCommandAllowlist(): string[] { | CODE |
| LOW | …es/browser-control-runtime/src/shim/gateway-runtime.ts | 76 | export function respondUnavailableOnNodeInvokeError(): never { | CODE |
| LOW | …ges/browser-control-runtime/src/shim/_local/tmp-dir.ts | 40 | export function resolvePreferredOpenClawTmpDir( | CODE |
| LOW | …ages/browser-control-runtime/src/shim/_local/errors.ts | 16 | export function collectErrorGraphCandidates( | CODE |
| LOW | …s/browser-control-runtime/src/shim/_local/oom-score.ts | 68 | function shouldWrapChildForOomScore(options: OomWrapOptions | undefined): boolean { | CODE |
| LOW | …s/browser-control-runtime/src/shim/_local/oom-score.ts | 99 | export function prepareOomScoreAdjustedSpawn( | CODE |
| LOW | …s/browser-control-runtime/src/shim/_local/oom-score.ts | 119 | export function wrapArgvForChildOomScoreRaise( | CODE |
| LOW | …s/browser-control-runtime/src/shim/_local/oom-score.ts | 136 | export function hardenedEnvForChildOomWrap( | CODE |
| LOW | …/_generated/leaf/src/infra/net/undici-family-policy.ts | 12 | export function resolveUndiciAutoSelectFamily(): boolean | undefined { | CODE |
| LOW | …/_generated/leaf/src/infra/net/undici-family-policy.ts | 30 | export function createUndiciAutoSelectFamilyConnectOptions( | CODE |
| LOW | …/_generated/leaf/src/infra/net/undici-family-policy.ts | 43 | export function resolveUndiciAutoSelectFamilyConnectOptions(): | CODE |
| LOW | …trol-runtime/src/_generated/leaf/src/infra/net/ssrf.ts | 70 | function normalizeSsrFPolicyHostnames(values?: string[]): string[] { | CODE |
| LOW | …trol-runtime/src/_generated/leaf/src/infra/net/ssrf.ts | 78 | function normalizeSsrFPolicyForComparison(policy?: SsrFPolicy) { | CODE |
| LOW | …trol-runtime/src/_generated/leaf/src/infra/net/ssrf.ts | 141 | export function ssrfPolicyFromHttpBaseUrlAllowedHostname(baseUrl: string): SsrFPolicy | undefined { | CODE |
| LOW | …trol-runtime/src/_generated/leaf/src/infra/net/ssrf.ts | 157 | function normalizeSsrFPolicyOrigin(value: string): string | undefined { | CODE |
| LOW | …trol-runtime/src/_generated/leaf/src/infra/net/ssrf.ts | 174 | function normalizeSsrFPolicyOrigins(values?: string[]): string[] { | CODE |
| LOW | …trol-runtime/src/_generated/leaf/src/infra/net/ssrf.ts | 187 | export function ssrfPolicyFromHttpBaseUrlAllowedOrigin(baseUrl: string): SsrFPolicy | undefined { | CODE |
| LOW | …trol-runtime/src/_generated/leaf/src/infra/net/ssrf.ts | 192 | export function ssrfPolicyFromHttpBaseUrlFakeIpHostnameAllowlist( | CODE |
| LOW⚡ | …trol-runtime/src/_generated/leaf/src/infra/net/ssrf.ts | 224 | export function normalizeHostnameAllowlist(values?: string[]): string[] { | CODE |
| LOW⚡ | …trol-runtime/src/_generated/leaf/src/infra/net/ssrf.ts | 228 | export function isPrivateNetworkAllowedByPolicy(policy?: SsrFPolicy): boolean { | CODE |
| LOW⚡ | …trol-runtime/src/_generated/leaf/src/infra/net/ssrf.ts | 232 | function shouldSkipPrivateNetworkChecks(hostname: string, policy?: SsrFPolicy): boolean { | CODE |
| LOW | …trol-runtime/src/_generated/leaf/src/infra/net/ssrf.ts | 272 | export function isHostnameAllowedByPattern(hostname: string, pattern: string): boolean { | CODE |
| LOW | …trol-runtime/src/_generated/leaf/src/infra/net/ssrf.ts | 349 | function isBlockedHostnameNormalized(normalized: string): boolean { | CODE |
| LOW | …trol-runtime/src/_generated/leaf/src/infra/net/ssrf.ts | 371 | function assertAllowedHostOrIpOrThrow(hostnameOrIp: string, policy?: SsrFPolicy): void { | CODE |
| LOW | …trol-runtime/src/_generated/leaf/src/infra/net/ssrf.ts | 377 | function resolveHostnamePolicyChecks( | CODE |
| LOW | …trol-runtime/src/_generated/leaf/src/infra/net/ssrf.ts | 404 | function assertAllowedResolvedAddressesOrThrow( | CODE |
| LOW | …trol-runtime/src/_generated/leaf/src/infra/net/ssrf.ts | 416 | function assertAllowedTrustedHostnameResolvedAddressesOrThrow( | CODE |
| LOW | …trol-runtime/src/_generated/leaf/src/infra/net/ssrf.ts | 544 | export async function resolvePinnedHostnameWithPolicy( | CODE |
| LOW | …trol-runtime/src/_generated/leaf/src/infra/net/ssrf.ts | 584 | export function assertHostnameAllowedWithPolicy(hostname: string, policy?: SsrFPolicy): string { | CODE |
| LOW | …trol-runtime/src/_generated/leaf/src/infra/net/ssrf.ts | 602 | function resolvePinnedDispatcherLookup( | CODE |
| LOW | …me/src/_generated/leaf/src/infra/net/undici-runtime.ts | 45 | function applyMissingConnectOptions( | CODE |
| LOW | …me/src/_generated/leaf/src/infra/net/undici-runtime.ts | 67 | function isUndiciGlobalDispatcherDeps(value: unknown): value is UndiciGlobalDispatcherDeps { | CODE |
| LOW | …me/src/_generated/leaf/src/infra/net/undici-runtime.ts | 92 | function stripIpServernameFromConnectOptions(options: unknown): unknown { | CODE |
| LOW | …me/src/_generated/leaf/src/infra/net/undici-runtime.ts | 107 | function stripIpServernameFromConnect(connect: unknown): unknown { | CODE |
| LOW | …me/src/_generated/leaf/src/infra/net/undici-runtime.ts | 115 | function createIpSafeProxyClientFactory(): UndiciProxyClientFactory { | CODE |
| LOW | …me/src/_generated/leaf/src/infra/net/undici-runtime.ts | 161 | export function loadUndiciGlobalDispatcherDeps(): UndiciGlobalDispatcherDeps { | CODE |
| LOW | …runtime/src/_generated/leaf/src/infra/net/proxy-env.ts | 67 | export function hasEnvHttpProxyConfigured( | CODE |
| LOW | …runtime/src/_generated/leaf/src/infra/net/proxy-env.ts | 88 | export function resolveEnvHttpProxyAgentOptions( | CODE |
| LOW | …runtime/src/_generated/leaf/src/infra/net/proxy-env.ts | 102 | export function hasEnvHttpProxyAgentConfigured(env: NodeJS.ProcessEnv = process.env): boolean { | CODE |
| LOW | …runtime/src/_generated/leaf/src/infra/net/proxy-env.ts | 107 | export function shouldUseEnvHttpProxyForUrl( | CODE |
| LOW | …nerated/leaf/src/infra/net/proxy/active-proxy-state.ts | 33 | function parseActiveManagedProxyLoopbackMode( | CODE |
| LOW | …nerated/leaf/src/infra/net/proxy/active-proxy-state.ts | 42 | function readInheritedActiveManagedProxyLoopbackMode(): ActiveManagedProxyLoopbackMode | undefined { | CODE |
| LOW | …nerated/leaf/src/infra/net/proxy/active-proxy-state.ts | 55 | export function registerActiveManagedProxyUrl( | CODE |
| LOW | …nerated/leaf/src/infra/net/proxy/active-proxy-state.ts | 108 | export function stopActiveManagedProxyRegistration( | CODE |
| LOW⚡ | …nerated/leaf/src/infra/net/proxy/active-proxy-state.ts | 127 | export function getActiveManagedProxyLoopbackMode(): ActiveManagedProxyLoopbackMode | undefined { | CODE |
| LOW⚡ | …nerated/leaf/src/infra/net/proxy/active-proxy-state.ts | 137 | export function getActiveManagedProxyTlsOptions(): ManagedProxyTlsOptions | undefined { | CODE |
| LOW⚡ | …nerated/leaf/src/infra/net/proxy/active-proxy-state.ts | 142 | export function resetActiveManagedProxyStateForTests(): void { | CODE |
| 5920 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …s/browser-control-runtime/src/shim/security-runtime.ts | 13 | // ── filesystem containment (real upstream fs-safe) ─────────────────────────── | COMMENT |
| MEDIUM | …s/browser-control-runtime/src/shim/security-runtime.ts | 30 | // ── SSRF / hostname policy (real upstream ssrf.ts) ─────────────────────────── | COMMENT |
| MEDIUM | …s/browser-control-runtime/src/shim/security-runtime.ts | 42 | // ── external content + secret compare (real upstream leaves) ───────────────── | COMMENT |
| MEDIUM | …es/browser-control-runtime/src/shim/gateway-runtime.ts | 60 | // ── dropped-path stubs (gateway server / node-host / CLI client) ───────────── | COMMENT |
| MEDIUM | packages/maker-remote-ssh/src/ConnectionPool.ts | 121 | // ── internals ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/maker-remote-ssh/src/RemoteHost.ts | 89 | // ── Remote TCP forwarding (OpenSSH `ssh -R` 等价物) ───────────────────────── | COMMENT |
| MEDIUM | packages/maker-remote-ssh/src/RemoteHost.ts | 410 | // ── channels (Phase B) ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/maker-remote-ssh/src/RemoteHost.ts | 528 | // ── remote TCP forwarding (ssh -R) ──────────────────────────────────────── | COMMENT |
| MEDIUM | packages/maker-remote-ssh/src/RemoteHost.ts | 952 | // ── internals ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/maker-remote-ssh/src/sshConfig.ts | 373 | // ── internals ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/maker-remote-ssh/src/bootstrap/installer.ts | 210 | // ── Codex credential sync ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/maker-remote-ssh/src/bootstrap/installer.ts | 317 | // ── helpers ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/maker-remote-ssh/src/bootstrap/installer.ts | 356 | // ── line parsers ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ges/maker-remote-ssh/src/bootstrap/bootstrap-script.ts | 142 | # ── ensure bundled Node ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ges/maker-remote-ssh/src/bootstrap/bootstrap-script.ts | 235 | # ── verify existing agent install (idempotent re-run case) ───────────────── | COMMENT |
| MEDIUM | …ges/maker-remote-ssh/src/bootstrap/bootstrap-script.ts | 311 | # ── install agent ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …kages/maker-remote-ssh/src/__tests__/sshConfig.test.ts | 31 | // ── per-test scratch file ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …kages/maker-remote-ssh/src/__tests__/sshConfig.test.ts | 56 | // ── readSshConfig ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …kages/maker-remote-ssh/src/__tests__/sshConfig.test.ts | 103 | // ── expandHome — Windows 路径形态 ───────────────────────────────────────────── | COMMENT |
| MEDIUM | …kages/maker-remote-ssh/src/__tests__/sshConfig.test.ts | 141 | // ── upsertHost + readSshConfig round-trip ──────────────────────────────────── | COMMENT |
| MEDIUM | …kages/maker-remote-ssh/src/__tests__/sshConfig.test.ts | 226 | // ── updateHostFields — the separator regression test ──────────────────────── | COMMENT |
| MEDIUM | …kages/maker-remote-ssh/src/__tests__/sshConfig.test.ts | 374 | // ── removeHost ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/maker-remote-ssh/src/__tests__/filteredAgent.test.ts | 26 | // ── helpers ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/maker-remote-ssh/src/__tests__/filteredAgent.test.ts | 67 | // ── fingerprint helpers ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/maker-remote-ssh/src/__tests__/filteredAgent.test.ts | 93 | // ── FilteredAgent.getIdentities ────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/device-link/src/client.ts | 148 | // ─── host 注入契约 ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/device-link/src/client.ts | 472 | // ─── 客户端实现 ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/device-link/src/client.ts | 555 | // ─── 生命周期 ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/device-link/src/client.ts | 812 | // ─── 出站 API ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/device-link/src/client.ts | 1060 | // ─── 内部:请求配对 ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/device-link/src/client.ts | 1210 | // ─── 内部:连接管理 ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/device-link/src/client.ts | 1539 | // ─── 内部:入站分发 ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/device-link/src/protocol.ts | 51 | // ─── 错误码 ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | packages/device-link/src/protocol.ts | 95 | // ─── 连接层 payload ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | packages/device-link/src/protocol.ts | 97 | // ─── 隧道层 payload ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/device-link/src/protocol.ts | 195 | // ─── REST 管理面(GET /api/device-link/devices)──────────────────────────────── | COMMENT |
| MEDIUM | packages/anthropic-responses-bridge/src/types.ts | 11 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/anthropic-responses-bridge/src/types.ts | 13 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/anthropic-responses-bridge/src/types.ts | 70 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/anthropic-responses-bridge/src/types.ts | 72 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/anthropic-responses-bridge/src/types.ts | 136 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/anthropic-responses-bridge/src/types.ts | 138 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/anthropic-responses-bridge/src/translate-sse.ts | 256 | // ── message_start ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/anthropic-responses-bridge/src/translate-sse.ts | 298 | // ── output_item.added ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/anthropic-responses-bridge/src/translate-sse.ts | 341 | // ── output_text.delta ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/anthropic-responses-bridge/src/translate-sse.ts | 380 | // ── reasoning_summary_text.delta(可见思考文本)────────────────────────────── | COMMENT |
| MEDIUM | …ckages/anthropic-responses-bridge/src/translate-sse.ts | 421 | // ── function_call_arguments.delta ────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/anthropic-responses-bridge/src/translate-sse.ts | 438 | // ── output_item.done ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/anthropic-responses-bridge/src/translate-sse.ts | 509 | // ── response.completed / incomplete ──────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/anthropic-responses-bridge/src/translate-sse.ts | 569 | // ── 工具 ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/types.ts | 94 | // ── Inbound events ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/types.ts | 284 | // ── Outbound spec ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/channelIM.ts | 32 | // ── inbound subscriptions ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/channelIM.ts | 37 | // ── outbound ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/channelIM.ts | 64 | // ── optional capabilities ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/channelIM.ts | 75 | // ── status ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/feishu/wsClient.ts | 45 | // ── module state ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/feishu/wsClient.ts | 181 | // ── SDK logger interceptor ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/feishu/wsClient.ts | 235 | // ── start / stop ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | packages/lizi-im/src/feishu/wsClient.ts | 423 | // ── lifecycle announcement ──────────────────────────────────────────────────── | COMMENT |
| 1205 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …generated/extension/src/browser/screenshot-annotate.ts | 1 | /* eslint-disable */ | COMMENT |
| LOW | packages/maker-remote-ssh/src/RemoteHost.ts | 81 | truncated?: boolean; | COMMENT |
| LOW | packages/maker-remote-ssh/src/sshConfig.ts | 221 | const parsed = SSHConfig.parse(existing) as SshConfigSection[]; | COMMENT |
| LOW | …ges/maker-remote-ssh/src/bootstrap/bootstrap-script.ts | 241 | # PATH 没 node (mac CI 账户常见), 走 fallback 用 bundled $NODE_BIN | COMMENT |
| LOW | …ges/maker-remote-ssh/src/bootstrap/bootstrap-script.ts | 341 | rm -rf "node_modules/@anthropic-ai" | COMMENT |
| LOW | packages/voice-input-core/src/VoiceInputController.ts | 41 | }; | COMMENT |
| LOW | packages/voice-input-core/src/VoiceInputController.ts | 101 | private latestTranscriptSource: 'partial' | 'stable' = 'partial'; | COMMENT |
| LOW | packages/voice-input-core/src/DictationRefiner.ts | 41 | const MAX_REPLY_TO_MESSAGE_CHARS = 500; | COMMENT |
| LOW | packages/voice-input-core/src/DictationRefiner.ts | 261 | // Treats LARGE divergence as out-of-bounds: output that is long, >=3x the | COMMENT |
| LOW | packages/embedding-client/src/client.ts | 461 | ); | COMMENT |
| LOW | packages/embedding-client/src/client.ts | 501 | // 组装后再校验一次"整批自洽" —— 上面那次只看了**新取回的**那部分。 | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 201 | // 通知被控端,被控端调它原来的本地 setter(setSessionModelEffort/Fast)写真实存储。选中模型仍走 | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 221 | // 在被控端。被控端 handler 校验布尔后转发给自身 renderer 写真实草稿(无 sender 依赖、无本机 | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 241 | // —— 读模型(被控端本地 DB 是数据真相)—— | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 261 | // 幂等,不动 sessions / 磁盘)。控制端项目选择器的删除入口与本机语义对等; | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 361 | // 重命名输入框 Magic 按钮:被控端读自己 DB 里的最新对话素材、用自己的 provider 凭证 | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 401 | // CHANNEL_NOT_ALLOWED → 控制端按 unknown 处理(不置灰)。 | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 421 | 'maker:plugins:get-state', | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 441 | // - 老被控端无此 channel → CHANNEL_NOT_ALLOWED,控制端渲染"设备版本过旧"占位。 | COMMENT |
| LOW | packages/device-link/src/allowlist.ts | 461 | // 准入论证同 fs:list-dir:同账号 + 显式 opt-in 下控制端本就能驱动 agent 执行任意命令。 | COMMENT |
| LOW | packages/device-link/src/client.ts | 2261 | ); | COMMENT |
| LOW | packages/device-link/src/client.ts | 2801 | || this.stopped | COMMENT |
| LOW | packages/lizi-im/src/feishu/wsClient.ts | 601 | } | COMMENT |
| LOW | packages/lizi-im/src/telegram/index.ts | 741 | // 且只有 owner 能回答它。命令卡 / 会话选择卡(/ctr 等)不传这个开关 —— 它们的回调必须 | COMMENT |
| LOW | packages/model-providers/src/registry.ts | 141 | // 剥掉 detail 再下发:它可能是上游原始响应体,而这份视图会过 IPC 到 renderer、 | COMMENT |
| LOW | packages/model-providers/src/classification.ts | 141 | // Qwen/Qwen3-Embedding-8B、Qwen/Qwen3-Reranker-8B),下面全部关键词/前缀判定 | COMMENT |
| LOW | packages/model-providers/src/classification.ts | 161 | // dall-e(OpenAI 图像)id 里没有 "image" 字样,靠关键词兜底会漏网(2026-07 review: | COMMENT |
| LOW | packages/model-providers/src/classification.ts | 181 | if (/moderation/.test(id)) return 'other'; | COMMENT |
| LOW | packages/model-providers/src/classification.ts | 201 | // "audio" 却是走 Chat Completions 的正常聊天模型(带音频输入/输出),不是纯语音 | COMMENT |
| LOW | …ckages/maker-scheduler/src/__tests__/scheduler.test.ts | 1001 | expect(sch.nextFireAt).toBe(Date.UTC(2026, 0, 1, 0, 10, 30)); | COMMENT |
| LOW | packages/maker-scheduler/src/engine/scheduler.ts | 301 | // In-flight run 心跳定时器:inflight registry 非空时运行(fireOne / runNow / | COMMENT |
| LOW | packages/maker-scheduler/src/engine/scheduler.ts | 321 | // sessionIdToRunId: sessionId → runId(正向,resolveInflightRunForSession 读) | COMMENT |
| LOW | packages/maker-scheduler/src/engine/scheduler.ts | 821 | // 'changed' 让列表 revalidate 新的 nextFireAt。 | COMMENT |
| LOW | packages/maker-scheduler/src/engine/scheduler.ts | 921 | } | COMMENT |
| LOW | packages/maker-scheduler/src/engine/scheduler.ts | 1361 | // 都要重算 nextFireAt: | COMMENT |
| LOW | packages/maker-scheduler/src/engine/scheduler.ts | 2421 | * 2. abort 后再过 runStallAbortGraceMs 仍不 settle → 强制收回槽位(见 | COMMENT |
| LOW | packages/maker-scheduler/src/engine/scheduler.ts | 2441 | // 上,runner 根本没启动(review #944 第五轮 P1); | COMMENT |
| LOW | packages/maker-scheduler/src/engine/scheduler.ts | 2621 | // 但**排期照旧要恢复**:run 行的终态与 schedule 的下次触发是两件独立的事。 | COMMENT |
| LOW | …ckages/file-browser-core/src/search/RipgrepSearcher.ts | 121 | COMMENT | |
| LOW | …ckages/file-browser-core/src/__tests__/scanner.test.ts | 101 | describe('file-browser scanner path boundaries', () => { | COMMENT |
| LOW | packages/maker-shared/src/mathMarkdown.ts | 21 | // | COMMENT |
| LOW | packages/maker-shared/src/clientEndpoints.ts | 81 | // skillhubApiBaseUrl)。退役时清单体系尚无已发布的 packaged/mobile 消费者, | COMMENT |
| LOW | packages/maker-shared/src/deviceLinkContract.ts | 281 | 'maker:set-session-model-pref', | COMMENT |
| LOW | packages/maker-shared/src/deviceLinkContract.ts | 361 | 'fs:list-dir', | COMMENT |
| LOW | packages/lizi-mcps/src/providers.ts | 121 | // ctx 注入:agent 实际跑在哪个 chat session 里,backend 必须以那个 session | COMMENT |
| LOW | packages/lizi-mcps/src/providers.ts | 201 | // exchange 二段式凭证 + as:'media'/as:'file' 双路落地),MCP 壳与 mivo | COMMENT |
| LOW | packages/lizi-mcps/src/providers.ts | 221 | // client secret 留在 XDT server broker、不随包分发;回调钉死 53682 端口), | COMMENT |
| LOW | packages/lizi-mcps/src/types.ts | 461 | | 'cindy_orca' | COMMENT |
| LOW | packages/lizi-mcps/src/scheduler/update.ts | 101 | if ((patch as { targetSessionId?: string | null }).targetSessionId === null) { | COMMENT |
| LOW | packages/lizi-mcps/src/browser/tools.ts | 161 | // Server-enforced ceiling on a single tool result (~50k tokens). A huge page / | COMMENT |
| LOW | packages/lizi-mcps/src/browser/tools.ts | 381 | try { | COMMENT |
| LOW | packages/maker-cc-manager/src/bin/cc-mgr.ts | 241 | // undefined。如果不 guard, 后面 `${child.pid}` 写出字面 "undefined", shell 把 | COMMENT |
| LOW | packages/maker-cc-manager/src/bin/cc-mgr.ts | 281 | // can locate the bundled node interpreter regardless of host system PATH. | COMMENT |
| LOW | packages/anthropic-compat-proxy/src/transform.ts | 561 | return Buffer.from(JSON.stringify(parsed), 'utf8'); | COMMENT |
| LOW | packages/anthropic-compat-proxy/src/transform.ts | 881 | // 未消费块前移(错位重排);无候选 → 非 trailing 合成占位。 | COMMENT |
| LOW | packages/anthropic-compat-proxy/src/transform.ts | 1261 | COMMENT | |
| LOW | packages/anthropic-compat-proxy/src/server.ts | 61 | const REQUEST_TOO_LARGE_DRAIN_TIMEOUT_MS = 10 * 1000; | COMMENT |
| LOW | packages/anthropic-compat-proxy/src/server.ts | 761 | // 请求处理层解析好的出站代理;undefined = 直连(与扩展前字节级一致)。 | COMMENT |
| LOW | packages/anthropic-compat-proxy/src/server.ts | 841 | // ── 客户端中断传播 ──────────────────────────────────────────────────────── | COMMENT |
| LOW | packages/anthropic-compat-proxy/src/server.ts | 1161 | // 必须在 writeHead 前判定:改名会改变 body 长度,上游 content-length 必须删掉, | COMMENT |
| 581 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/design-previews/login-all-hifi/index.html | 523 | function textSlotHtml({ cls = '', text, top, tone = 'placeholder', align = 'center' }){ | CODE |
| LOW | docs/design-previews/login-all-hifi/index.html | 768 | const hint = ctx.ssoRequired ? textSlotHtml({ cls: 'lp-sso-required-hint', text: t('ssoRequired'), top: 380, tone: ' | CODE |
| LOW | docs/design-previews/login-all-hifi/index.html | 798 | ? textSlotHtml({ cls: 'lp-binding-sent', text: t('codeSentTo', { identifier: S.ctx.contact }), tone: 'placeholde | CODE |
| LOW | docs/design-previews/login-all-hifi/index.html | 799 | : textSlotHtml({ cls: 'lp-binding-sent', text: S.ctx.contact, tone: 'placeholder' })) + | CODE |
| LOW | packages/auth-client/src/__tests__/client.test.ts | 226 | email: "user@example.com", | CODE |
| LOW | packages/auth-client/src/__tests__/client.test.ts | 244 | email: "user@example.com", | CODE |
| LOW | …e/src/_generated/leaf/src/security/external-content.ts | 337 | * sender: "user@example.com", | COMMENT |
| LOW | …-input-core/src/__tests__/VoiceInputController.test.ts | 937 | segmentIds: ['placeholder'], | CODE |
| LOW | …kages/maker-shared/src/__tests__/messageSearch.test.ts | 137 | oldString: 'placeholder', | CODE |
| LOW | packages/wechat-ilink/src/__tests__/protocol.test.ts | 203 | token: "fake-token", | CODE |
| LOW | packages/wechat-ilink/src/__tests__/protocol.test.ts | 267 | Authorization: "Bearer fake-token", | CODE |
| LOW | packages/wechat-ilink/src/__tests__/protocol.test.ts | 278 | token: "fake-token", | CODE |
| LOW | packages/wechat-ilink/src/__tests__/protocol.test.ts | 309 | token: "fake-token", | CODE |
| LOW | packages/wechat-ilink/src/__tests__/protocol.test.ts | 350 | token: "fake-token", | CODE |
| LOW | packages/wechat-ilink/src/__tests__/protocol.test.ts | 445 | token: "fake-token", | CODE |
| LOW | packages/wechat-ilink/src/__tests__/protocol.test.ts | 462 | token: "fake-token", | CODE |
| LOW | packages/wechat-ilink/src/__tests__/protocol.test.ts | 481 | token: "fake-token", | CODE |
| LOW | packages/wechat-ilink/src/__tests__/protocol.test.ts | 493 | token: "fake-token", | CODE |
| LOW | packages/wechat-ilink/src/__tests__/protocol.test.ts | 505 | token: "fake-token", | CODE |
| LOW | …kages/wechat-ilink/src/__tests__/authorization.test.ts | 16 | bot_token: "fake-token", | CODE |
| LOW | …kages/wechat-ilink/src/__tests__/authorization.test.ts | 43 | token: "fake-token", | CODE |
| LOW | …kages/wechat-ilink/src/__tests__/authorization.test.ts | 60 | bot_token: "fake-token-2", | CODE |
| LOW | …kages/wechat-ilink/src/__tests__/authorization.test.ts | 69 | localTokens: async () => ["old-fake-token"], | CODE |
| LOW | …kages/wechat-ilink/src/__tests__/authorization.test.ts | 89 | requestBodies.filter((body) => body.includes("old-fake-token")), | CODE |
| LOW | packages/lizi-mcps/src/browser/browserMcpServer.test.ts | 259 | for (const field of ['css', 'role', 'name', 'text', 'label', 'placeholder', 'testId']) { | CODE |
| LOW | …ckages/maker-core/src/contacts/__tests__/store.test.ts | 53 | { platform: 'email', value: 'neo@example.org', label: '云岚早期' }, | CODE |
| LOW | …mponents/chat/__tests__/ErrorBannerCodexOAuth.test.tsx | 85 | identity: 'user@example.com', | CODE |
| LOW | …mponents/chat/__tests__/ErrorBannerCodexOAuth.test.tsx | 216 | identity: 'user@example.com', | CODE |
| LOW | …mponents/chat/__tests__/ErrorBannerCodexOAuth.test.tsx | 223 | identity: 'user@example.com', | CODE |
| LOW | …mponents/chat/__tests__/ErrorBannerCodexOAuth.test.tsx | 589 | identity: 'user@example.com', | CODE |
| LOW | …mponents/chat/__tests__/ErrorBannerCodexOAuth.test.tsx | 594 | identity: 'user@example.com', | CODE |
| LOW | …mponents/chat/__tests__/ErrorBannerCodexOAuth.test.tsx | 767 | identity: 'user@example.com', | CODE |
| LOW | …s/login/__tests__/LoginPage.errorCopy.harness.test.tsx | 72 | await client.verifyCode('email', 'user@example.com', '123456'); | CODE |
| LOW | …/__tests__/LoginPage.identifierFormat.harness.test.tsx | 116 | target: { value: 'user@example.com' }, | CODE |
| LOW | …/__tests__/LoginPage.identifierFormat.harness.test.tsx | 121 | email: 'user@example.com', | CODE |
| LOW | …esktop/src/renderer/__tests__/mentionRefFormat.test.ts | 76 | expect(extractMentionRefs('user@example.com')).toEqual(['example.com']); | CODE |
| LOW | …ktop/src/renderer/hooks/__tests__/useCodexAuth.test.ts | 39 | identity: 'user@example.com', | CODE |
| LOW | …ktop/src/renderer/hooks/__tests__/useCodexAuth.test.ts | 132 | identity: 'user@example.com', | CODE |
| LOW | …ktop/src/renderer/hooks/__tests__/useCodexAuth.test.ts | 154 | identity: 'user@example.com', | CODE |
| LOW | …ktop/src/renderer/hooks/__tests__/useCodexAuth.test.ts | 159 | identity: 'user@example.com', | CODE |
| LOW | …ktop/src/renderer/hooks/__tests__/useCodexAuth.test.ts | 173 | identity: 'user@example.com', | CODE |
| LOW | …ktop/src/renderer/hooks/__tests__/useCodexAuth.test.ts | 217 | identity: 'user@example.com', | CODE |
| LOW | …ktop/src/renderer/hooks/__tests__/useCodexAuth.test.ts | 224 | identity: 'user@example.com', | CODE |
| LOW | …ktop/src/renderer/hooks/__tests__/useCodexAuth.test.ts | 250 | identity: 'user@example.com', | CODE |
| LOW | …ktop/src/renderer/hooks/__tests__/useCodexAuth.test.ts | 284 | identity: 'user@example.com', | CODE |
| LOW | …ktop/src/renderer/hooks/__tests__/useCodexAuth.test.ts | 310 | identity: 'user@example.com', | CODE |
| LOW | …ktop/src/renderer/hooks/__tests__/useCodexAuth.test.ts | 342 | identity: 'user@example.com', | CODE |
| LOW | …ktop/src/renderer/hooks/__tests__/useCodexAuth.test.ts | 368 | identity: 'user@example.com', | CODE |
| LOW | …ktop/src/renderer/hooks/__tests__/useCodexAuth.test.ts | 392 | identity: 'user@example.com', | CODE |
| LOW | …ktop/src/renderer/hooks/__tests__/useCodexAuth.test.ts | 425 | identity: 'user@example.com', | CODE |
| LOW | …ktop/src/renderer/hooks/__tests__/useCodexAuth.test.ts | 871 | identity: 'user@example.com', | CODE |
| LOW⚡ | apps/desktop/src/renderer/i18n/locales/ja/common.json | 887 | "placeholder": "wss://asr.example.com/v1/realtime", | CODE |
| LOW⚡ | apps/desktop/src/renderer/i18n/locales/ja/common.json | 893 | "placeholder": "音声認識モデル ID" | CODE |
| LOW⚡ | apps/desktop/src/renderer/i18n/locales/ja/common.json | 900 | "placeholder": "ASR API キーを入力", | CODE |
| LOW | apps/desktop/src/renderer/i18n/locales/ja/common.json | 1000 | "placeholder": "自分の話し方に合わせたルールを書きます。" | CODE |
| LOW | apps/desktop/src/renderer/i18n/locales/ja/common.json | 1416 | "placeholder": "テンプレートを選択…" | CODE |
| LOW | apps/desktop/src/renderer/i18n/locales/ja/common.json | 1650 | "placeholder": "OpenAI プラットフォーム API key を貼り付け", | CODE |
| LOW | apps/desktop/src/renderer/i18n/locales/ja/common.json | 2271 | "placeholder": "ここにカスタム指示を入力してください。Claude / Codex のシステムプロンプト末尾に追加されます。\n\n· {{appName}} の内蔵セッションのみに適用されます。既存のセッション | CODE |
| LOW | apps/desktop/src/renderer/i18n/locales/ja/common.json | 2508 | "placeholder": "カスタム adb パス", | CODE |
| LOW | apps/desktop/src/renderer/i18n/locales/ja/common.json | 4610 | "placeholder": "ファイルを絞り込み", | CODE |
| 138 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …s/claude-code/__tests__/translator-silent-stop.test.ts | 65 | return ctx.log.warn.mock.calls.some( | CODE |
| CRITICAL | …desktop/src/renderer/components/new-chat/ChatInput.tsx | 1872 | const node = view.state.schema.nodes.pastedTextChip.create({ text, display }); | CODE |
| CRITICAL | …in/maker-ipc/__tests__/agent-input-coordinator.test.ts | 413 | const call = mocks.logger.warn.mock.calls.at(-1); | CODE |
| CRITICAL | …main/im/shared/__tests__/turnRunnerSendOutcome.test.ts | 2046 | mocks.feishuIm.sendText.mock.calls.some(([, text]) => String(text).includes('错误')), | CODE |
| CRITICAL | …p/src/main/maker-host/__tests__/codexProxyHost.test.ts | 3937 | const line = String(mockState.logger.info.mock.calls.at(-1)?.[0] ?? ''); | CODE |
| CRITICAL | …p/src/main/maker-host/__tests__/codexProxyHost.test.ts | 4014 | const line = String(mockState.logger.info.mock.calls.at(-1)?.[0] ?? ''); | CODE |
| CRITICAL | apps/mobile/src/session/newSessionCreation.ts | 412 | const discardResult = await task.params.transport.maker.worktree.discardPrecreated({ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …maker-remote-ssh/src/bootstrap/cc-manager-installer.ts | 139 | // Step 1: probe — make sure node is there. If not, abort (require bootstrap first). | COMMENT |
| LOW⚡ | …maker-remote-ssh/src/bootstrap/cc-manager-installer.ts | 148 | // Step 2: upload cc-mgr.mjs. | COMMENT |
| LOW | …maker-remote-ssh/src/bootstrap/cc-manager-installer.ts | 161 | // Step 3: optional proxy upload. | COMMENT |
| LOW | …maker-remote-ssh/src/bootstrap/cc-manager-installer.ts | 176 | // Step 4: verify (re-probe). | COMMENT |
| LOW⚡ | packages/github-client/src/client.ts | 1496 | // Step 1: current head | COMMENT |
| LOW⚡ | packages/github-client/src/client.ts | 1499 | // Step 2: base tree sha —— 从 head commit 拿 tree.sha | COMMENT |
| LOW⚡ | packages/github-client/src/client.ts | 1505 | // Step 3: 构造 tree entries;base64 走 blob upload,utf-8 走内联 content。 | COMMENT |
| LOW | packages/github-client/src/client.ts | 1535 | // Step 6: ref update(fast-forward only,不 force) | COMMENT |
| LOW⚡ | …op/src/renderer/components/ui/toast/ToastContainer.tsx | 63 | // Step 1: 清除所有残留的 FLIP transform,确保测量的是自然布局位置 | COMMENT |
| LOW⚡ | …op/src/renderer/components/ui/toast/ToastContainer.tsx | 69 | // Step 2: 测量每个元素的自然布局位置(无 transform 偏移) | COMMENT |
| LOW⚡ | …op/src/renderer/components/ui/toast/ToastContainer.tsx | 76 | // Step 3: 对非退场的元素做 FLIP(退场的 toast 原地淡出,不参与位移动画) | COMMENT |
| LOW | …op/src/renderer/components/ui/toast/ToastContainer.tsx | 100 | // Step 4: 存储自然布局位置(不含 transform),供下次 FLIP 比较 | COMMENT |
| LOW⚡ | …er/__tests__/composerDraftAttachmentsRoundTrip.test.ts | 51 | // Step 1: save prev draft (if there was one and it's not the same session). | COMMENT |
| LOW⚡ | …er/__tests__/composerDraftAttachmentsRoundTrip.test.ts | 60 | // Step 2: restore new session's attachments. b1e9827 守卫:首挂 (prevId === undefined) | COMMENT |
| LOW | apps/desktop/src/main/updateService.ts | 1232 | // Step 1: prefer manifest (so we don't relaunch into a stale intermediate version). | COMMENT |
| LOW | apps/desktop/src/main/updateService.ts | 1258 | // Step 2: local patch may already match latest → skip download. | COMMENT |
| LOW | apps/desktop/src/main/updateService.ts | 1276 | // Step 3: download (re-using the manifest we already have). Route through | COMMENT |
| LOW⚡ | apps/desktop/src/main/localDb/backup.ts | 264 | // Step 1: .bak.clean 优先 | COMMENT |
| LOW⚡ | apps/desktop/src/main/localDb/backup.ts | 272 | // Step 2: 回落到最新 .bak.{ISO}(从最新到最旧逐个尝试) | COMMENT |
| LOW⚡ | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 649 | // Step 2: invalidate in-memory caches so ensureCcManagerInstalledOrInstall | COMMENT |
| LOW⚡ | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 654 | // Step 3: re-run full install pipeline with forceReinstall=true. Without | COMMENT |
| LOW⚡ | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 662 | // Step 4: clear pending banner state (broadcasts available=null so UI | COMMENT |
| LOW | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 444 | // Step 1: ensure bundled node + claude-code shim. Piggy-back on | COMMENT |
| LOW | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 501 | // Step 2: upload cc-mgr.mjs bundle. Re-resolve in case dev/packaged layout | COMMENT |
| LOW | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 635 | // Step 1: kill existing daemon via pidfile (cmdline-verified) + clean sock/pid. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …maker-remote-ssh/src/bootstrap/cc-manager-installer.ts | 139 | // Step 1: probe — make sure node is there. If not, abort (require bootstrap first). | COMMENT |
| LOW⚡ | …maker-remote-ssh/src/bootstrap/cc-manager-installer.ts | 148 | // Step 2: upload cc-mgr.mjs. | COMMENT |
| LOW | …maker-remote-ssh/src/bootstrap/cc-manager-installer.ts | 161 | // Step 3: optional proxy upload. | COMMENT |
| LOW | …maker-remote-ssh/src/bootstrap/cc-manager-installer.ts | 176 | // Step 4: verify (re-probe). | COMMENT |
| LOW⚡ | packages/github-client/src/client.ts | 1496 | // Step 1: current head | COMMENT |
| LOW⚡ | packages/github-client/src/client.ts | 1499 | // Step 2: base tree sha —— 从 head commit 拿 tree.sha | COMMENT |
| LOW⚡ | packages/github-client/src/client.ts | 1505 | // Step 3: 构造 tree entries;base64 走 blob upload,utf-8 走内联 content。 | COMMENT |
| LOW | packages/github-client/src/client.ts | 1535 | // Step 6: ref update(fast-forward only,不 force) | COMMENT |
| LOW⚡ | …op/src/renderer/components/ui/toast/ToastContainer.tsx | 63 | // Step 1: 清除所有残留的 FLIP transform,确保测量的是自然布局位置 | COMMENT |
| LOW⚡ | …op/src/renderer/components/ui/toast/ToastContainer.tsx | 69 | // Step 2: 测量每个元素的自然布局位置(无 transform 偏移) | COMMENT |
| LOW⚡ | …op/src/renderer/components/ui/toast/ToastContainer.tsx | 76 | // Step 3: 对非退场的元素做 FLIP(退场的 toast 原地淡出,不参与位移动画) | COMMENT |
| LOW | …op/src/renderer/components/ui/toast/ToastContainer.tsx | 100 | // Step 4: 存储自然布局位置(不含 transform),供下次 FLIP 比较 | COMMENT |
| LOW⚡ | …er/__tests__/composerDraftAttachmentsRoundTrip.test.ts | 51 | // Step 1: save prev draft (if there was one and it's not the same session). | COMMENT |
| LOW⚡ | …er/__tests__/composerDraftAttachmentsRoundTrip.test.ts | 60 | // Step 2: restore new session's attachments. b1e9827 守卫:首挂 (prevId === undefined) | COMMENT |
| LOW | apps/desktop/src/main/updateService.ts | 1232 | // Step 1: prefer manifest (so we don't relaunch into a stale intermediate version). | COMMENT |
| LOW | apps/desktop/src/main/updateService.ts | 1258 | // Step 2: local patch may already match latest → skip download. | COMMENT |
| LOW | apps/desktop/src/main/updateService.ts | 1276 | // Step 3: download (re-using the manifest we already have). Route through | COMMENT |
| LOW⚡ | apps/desktop/src/main/localDb/backup.ts | 272 | // Step 2: 回落到最新 .bak.{ISO}(从最新到最旧逐个尝试) | COMMENT |
| LOW⚡ | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 649 | // Step 2: invalidate in-memory caches so ensureCcManagerInstalledOrInstall | COMMENT |
| LOW⚡ | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 654 | // Step 3: re-run full install pipeline with forceReinstall=true. Without | COMMENT |
| LOW⚡ | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 662 | // Step 4: clear pending banner state (broadcasts available=null so UI | COMMENT |
| LOW | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 444 | // Step 1: ensure bundled node + claude-code shim. Piggy-back on | COMMENT |
| LOW | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 501 | // Step 2: upload cc-mgr.mjs bundle. Re-resolve in case dev/packaged layout | COMMENT |
| LOW | apps/desktop/src/main/remote-ssh/cc-manager-install.ts | 635 | // Step 1: kill existing daemon via pidfile (cmdline-verified) + clean sock/pid. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …ges/maker-remote-ssh/src/bootstrap/bootstrap-script.ts | 183 | elif command -v wget >/dev/null 2>&1; then DL="wget" | CODE |
| HIGH | …ges/maker-remote-ssh/src/bootstrap/bootstrap-script.ts | 379 | elif [ "$AGENT_KIND" = "codex" ]; then | CODE |
| HIGH | …r/features/scheduler/components/ScheduleFormDialog.tsx | 64 | print(json.dumps({ | CODE |
| HIGH | apps/desktop/src/main/remote-ssh/index.ts | 1311 | elif [ -e "$p" ]; then | CODE |
| HIGH | apps/desktop/src/main/remote-ssh/index.ts | 1417 | elif [ -d "$entry" ]; then | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/legal/notices/sbom/desktop-win.spdx.json | 16087 | "downloadLocation": "https://github.com/mourner/robust-predicates", | CODE |
| MEDIUM | docs/legal/notices/sbom/desktop-macos.spdx.json | 11728 | "downloadLocation": "https://github.com/mourner/robust-predicates", | CODE |
| MEDIUM | docs/legal/notices/sbom/desktop-linux.spdx.json | 11718 | "downloadLocation": "https://github.com/mourner/robust-predicates", | CODE |
| MEDIUM | packages/maker-remote-ssh/src/bootstrap/installer.ts | 233 | // logged-in users get a seamless start; thereafter the two are independent. | COMMENT |
| MEDIUM | packages/file-browser-core/src/__tests__/ignore.test.ts | 71 | // robust across platforms. | COMMENT |
| MEDIUM | …/desktop/src/renderer/__tests__/fileChipCursor.test.ts | 49 | // anchor the slice on that handler so the assertion is robust to other | COMMENT |
| MEDIUM | …/desktop/src/renderer/hooks/useSessionRunningStatus.ts | 227 | // 状态判断更 robust。存量 pending 若存在(理论上不会:起新 turn 就清了),覆盖掉。 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | packages/anthropic-compat-proxy/src/transform.ts | 884 | // 下标) —— 即"同 id exchange"边界。依据 agentic loop 串行:下一个 exchange | COMMENT |
| MEDIUM | apps/desktop/src/main/hook-control/turnObserver.ts | 199 | // 在长 agentic turn 里看到"正在干什么", 而不是盯着 👀 表情干等。 | COMMENT |
| MEDIUM | apps/desktop/src/main/cindy-brain/forge.ts | 644 | // icon_source 是打包期 overlay:源码仍保留 scaffold 占位图,只有用户 | COMMENT |
| MEDIUM | apps/desktop/src/main/im/shared/turnRunner.ts | 1742 | // 长 agentic turn 里看到"正在干什么", 而不是盯占位符干等结果。 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ktop/src/main/scheduler-host/python-client/protocol.py | 4 | CODE | |
| LOW | …/src/main/scheduler-host/python-client/maker_client.py | 4 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/voice-input-core/src/DictationRefiner.ts | 80 | * {@link DictationRefinerOptions.systemPrompt} (don't forget to bump | COMMENT |