TencentDB Agent Memory delivers fully local long-term memory for AI Agents via a 4-tier progressive pipeline, with zero external API dependencies.
This report presents the forensic synthetic code analysis of TencentCloud/TencentDB-Agent-Memory, a TypeScript project with 8,839 GitHub stars. SynthScan v2.0 examined 46,710 lines of code across 155 source files, recording 458 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 23.4 places this repository in the Moderate 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).
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 458 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 |
|---|---|---|---|---|
| MEDIUM | hermes-plugin/memory/memory_tencentdb/__init__.py | 306 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hermes-plugin/memory/memory_tencentdb/__init__.py | 308 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hermes-plugin/memory/memory_tencentdb/__init__.py | 364 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hermes-plugin/memory/memory_tencentdb/__init__.py | 366 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hermes-plugin/memory/memory_tencentdb/__init__.py | 1124 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hermes-plugin/memory/memory_tencentdb/__init__.py | 1126 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 234 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 236 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 325 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 327 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 415 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 417 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 76 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 78 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 185 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 187 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …y/memory_tencentdb/tests/test_gateway_shutdown_leak.py | 70 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …y/memory_tencentdb/tests/test_gateway_shutdown_leak.py | 72 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …y/memory_tencentdb/tests/test_gateway_shutdown_leak.py | 105 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …y/memory_tencentdb/tests/test_gateway_shutdown_leak.py | 107 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …y/memory_tencentdb/tests/test_gateway_shutdown_leak.py | 262 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …y/memory_tencentdb/tests/test_gateway_shutdown_leak.py | 264 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …y/memory_tencentdb/tests/test_gateway_shutdown_leak.py | 466 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …y/memory_tencentdb/tests/test_gateway_shutdown_leak.py | 468 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/memory-tencentdb-ctl.sh | 36 | # ============================================================ | COMMENT |
| MEDIUM | scripts/memory-tencentdb-ctl.sh | 38 | # ============================================================ | COMMENT |
| MEDIUM | scripts/memory-tencentdb-ctl.sh | 82 | # ============================================================ | COMMENT |
| MEDIUM | scripts/memory-tencentdb-ctl.sh | 84 | # ============================================================ | COMMENT |
| MEDIUM | scripts/memory-tencentdb-ctl.sh | 203 | # ============================================================ | COMMENT |
| MEDIUM | scripts/memory-tencentdb-ctl.sh | 209 | # ============================================================ | COMMENT |
| MEDIUM | scripts/memory-tencentdb-ctl.sh | 222 | # ============================================================ | COMMENT |
| MEDIUM | scripts/memory-tencentdb-ctl.sh | 224 | # ============================================================ | COMMENT |
| MEDIUM | scripts/memory-tencentdb-ctl.sh | 380 | # ============================================================ | COMMENT |
| MEDIUM | scripts/memory-tencentdb-ctl.sh | 386 | # ============================================================ | COMMENT |
| MEDIUM | scripts/memory-tencentdb-ctl.sh | 741 | # ============================================================ | COMMENT |
| MEDIUM | scripts/memory-tencentdb-ctl.sh | 748 | # ============================================================ | COMMENT |
| MEDIUM | scripts/memory-tencentdb-ctl.sh | 931 | # ============================================================ | COMMENT |
| MEDIUM | scripts/memory-tencentdb-ctl.sh | 933 | # ============================================================ | COMMENT |
| MEDIUM | scripts/setup-offload.sh | 2 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | scripts/setup-offload.sh | 4 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | scripts/setup-offload.sh | 21 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | scripts/setup-offload.sh | 71 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | scripts/setup-offload.sh | 73 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | scripts/setup-offload.sh | 90 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | scripts/setup-offload.sh | 92 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | scripts/setup-offload.sh | 131 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | scripts/setup-offload.sh | 133 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | scripts/setup-offload.sh | 282 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | scripts/setup-offload.sh | 284 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | scripts/setup-offload.sh | 329 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | scripts/setup-offload.sh | 331 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | scripts/openclaw-after-tool-call-messages.patch.sh | 2 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | scripts/openclaw-after-tool-call-messages.patch.sh | 4 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | scripts/openclaw-after-tool-call-messages.patch.sh | 19 | # ═══════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | scripts/openclaw-after-tool-call-messages.patch.sh | 29 | # ─── 定位 OpenClaw 安装目录 ────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/openclaw-after-tool-call-messages.patch.sh | 122 | # ─── 检测 OpenClaw 版本 ────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/openclaw-after-tool-call-messages.patch.sh | 126 | # ─── 已 patch 检测 ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/openclaw-after-tool-call-messages.patch.sh | 151 | # ─── 备份工具 ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/openclaw-after-tool-call-messages.patch.sh | 161 | # ─── 查找所有候选文件 ──────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/openclaw-after-tool-call-messages.patch.sh | 175 | # ─── 对每个候选文件尝试多种策略 ────────────────────────────────── | COMMENT |
| 189 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tsdown.config.ts | 5 | function collectExternalDependencies(): string[] { | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/__init__.py | 543 | def _ensure_alive_for_request(self) -> bool: | CODE |
| LOW⚡ | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 202 | def test_is_process_alive_returns_false_without_spawn(): | CODE |
| LOW⚡ | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 207 | def test_is_process_alive_true_when_running(): | CODE |
| LOW⚡ | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 213 | def test_is_process_alive_false_after_exit(): | CODE |
| LOW⚡ | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 219 | def test_reap_dead_process_drops_handle(): | CODE |
| LOW⚡ | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 226 | def test_reap_dead_process_keeps_alive_handle(): | CODE |
| LOW⚡ | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 239 | def test_watchdog_starts_after_initialize(provider_with_fake_supervisor): | CODE |
| LOW⚡ | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 245 | def test_watchdog_detects_dead_gateway_and_resurrects(provider_with_fake_supervisor): | CODE |
| LOW⚡ | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 330 | def test_prefetch_recovers_when_stuck_false_and_breaker_closed( | CODE |
| LOW⚡ | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 420 | def test_shutdown_drops_supervisor_blocks_recovery(provider_with_fake_supervisor): | CODE |
| LOW | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 149 | def provider_with_fake_supervisor(monkeypatch, fast_watchdog): | CODE |
| LOW | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 271 | def test_watchdog_picks_up_external_restart_without_respawning( | CODE |
| LOW | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 295 | def test_watchdog_resets_circuit_breaker_on_recovery(provider_with_fake_supervisor): | CODE |
| LOW | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 313 | def test_watchdog_stops_on_shutdown(provider_with_fake_supervisor): | CODE |
| LOW | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 360 | def test_prefetch_respects_open_breaker(provider_with_fake_supervisor): | CODE |
| LOW | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 378 | def test_handle_tool_call_recovers_when_stuck_false(provider_with_fake_supervisor): | CODE |
| LOW | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 396 | def test_sync_turn_recovers_when_stuck_false(provider_with_fake_supervisor): | CODE |
| LOW | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 432 | def test_shutdown_is_idempotent(provider_with_fake_supervisor): | CODE |
| LOW⚡ | …y/memory_tencentdb/tests/test_gateway_shutdown_leak.py | 117 | def _make_fake_gateway_script(tmpdir: pathlib.Path, pid_file: pathlib.Path) -> pathlib.Path: | CODE |
| LOW | …y/memory_tencentdb/tests/test_gateway_shutdown_leak.py | 321 | def test_provider_shutdown_should_stop_supervisor_gateway(self) -> None: | CODE |
| LOW | …y/memory_tencentdb/tests/test_gateway_shutdown_leak.py | 349 | def test_external_gateway_is_not_killed(self) -> None: | CODE |
| LOW | …y/memory_tencentdb/tests/test_gateway_shutdown_leak.py | 396 | def test_second_provider_does_not_reuse_stale_gateway(self) -> None: | CODE |
| LOW | …y/memory_tencentdb/tests/test_gateway_shutdown_leak.py | 509 | def test_real_gateway_graceful_shutdown(self) -> None: | CODE |
| LOW | …y/memory_tencentdb/tests/test_gateway_shutdown_leak.py | 603 | def test_wal_checkpoint_after_capture_and_sigterm(self) -> None: | CODE |
| LOW | scripts/migrate-sqlite-to-tcvdb/config-write.ts | 47 | export function buildMigrationPluginConfigPatch(target: MigrationPluginConfigTarget): Record<string, unknown> { | CODE |
| LOW | scripts/migrate-sqlite-to-tcvdb/config-write.ts | 102 | export async function writeMigrationPluginConfig( | CODE |
| LOW | scripts/migrate-sqlite-to-tcvdb/sqlite-to-tcvdb.ts | 564 | export function resolveMigrationCliOptions(argv: string[]): ResolvedMigrationCliOptions { | CODE |
| LOW | scripts/migrate-sqlite-to-tcvdb/sqlite-to-tcvdb.ts | 640 | export async function collectMigrationPreflight( | CODE |
| LOW | src/config.ts | 689 | function normalizeOffloadRetentionDays(value: number): number { | CODE |
| LOW | src/core/seed/input.ts | 94 | export function validateAndNormalizeRaw( | CODE |
| LOW | src/core/seed/input.ts | 417 | function checkTimestampConsistency(sessions: RawSession[]): TimestampCheckResult { | CODE |
| LOW | src/core/tools/conversation-search.ts | 83 | export async function executeConversationSearch(params: { | CODE |
| LOW | src/core/tools/conversation-search.ts | 249 | export function formatConversationSearchResponse(result: ConversationSearchResult): string { | CODE |
| LOW | src/core/hooks/auto-recall.ts | 272 | async function searchMemoriesWithDetails( | CODE |
| LOW⚡ | src/core/prompts/l1-dedup.ts | 94 | export function formatBatchConflictPrompt(matches: CandidateMatch[]): string { | CODE |
| LOW | src/core/prompts/scene-extraction.ts | 265 | export function buildSceneExtractionPrompt(params: SceneExtractionPromptParams): SceneExtractionPromptResult { | CODE |
| LOW | src/core/report/reporter.ts | 86 | export async function getOrCreateInstanceId(pluginDataDir: string): Promise<string> { | CODE |
| LOW | src/core/scene/filename-normalizer.ts | 74 | export function isNormalizedSceneFilename(name: string): boolean { | CODE |
| LOW | src/core/conversation/l0-recorder.ts | 457 | export async function readConversationMessagesGroupedBySessionId( | CODE |
| LOW | src/core/conversation/l0-recorder.ts | 521 | function extractUserAssistantMessages(messages: unknown[]): ConversationMessage[] { | CODE |
| LOW | src/utils/sanitize.ts | 345 | function escapeControlCharsInJsonStrings(text: string): string { | CODE |
| LOW⚡ | src/utils/clean-context-runner.ts | 65 | export function setPreferredEmbeddedAgentRuntime( | CODE |
| LOW⚡ | src/utils/clean-context-runner.ts | 71 | function resolveInjectedRunEmbeddedPiAgent( | CODE |
| LOW⚡ | src/utils/clean-context-runner.ts | 79 | async function resolveRunEmbeddedPiAgent( | CODE |
| LOW⚡ | src/utils/clean-context-runner.ts | 225 | export function resolveModelFromMainConfig(config: unknown): ModelRef | undefined { | CODE |
| LOW | src/utils/no-think-fetch.ts | 36 | export function isValidDisableThinkingStrategy(value: unknown): value is DisableThinkingStrategy { | CODE |
| LOW | src/utils/memory-cleaner.ts | 285 | function extractShardDateFromFileName( | CODE |
| LOW | src/utils/memory-cleaner.ts | 332 | function computeCutoffMsByLocalDay(nowMs: number, retentionDays: number): number { | CODE |
| LOW | src/utils/time.ts | 203 | export function describeTimeZoneForPrompt(): string { | CODE |
| LOW | src/offload/l3-helpers.ts | 14 | export function normalizeToolCallIdForLookup(id: string): string { | CODE |
| LOW | src/offload/l3-helpers.ts | 82 | export function isAssistantMessageWithToolUse(msg: any): boolean { | CODE |
| LOW | src/offload/l3-helpers.ts | 94 | export function extractToolUseIdFromAssistant(msg: any): string | null { | CODE |
| LOW | src/offload/l3-helpers.ts | 184 | export function replaceAssistantToolUseWithSummary( | CODE |
| LOW | src/offload/l3-helpers.ts | 264 | export function compressNonCurrentToolUseBlocks( | CODE |
| LOW | src/offload/reclaimer.ts | 199 | async function syncRegistryAfterJsonlDeletion(dir: string, logger: PluginLogger): Promise<void> { | CODE |
| LOW | src/offload/mmd-injector.ts | 173 | function findLatestUserMessageIndex(messages: any[]): number { | CODE |
| LOW | src/offload/mmd-injector.ts | 200 | export function findActiveMmdInsertionPoint(messages: any[]): number { | CODE |
| LOW | src/offload/mmd-injector.ts | 294 | export function findHistoryMmdInsertionPoint(messages: any[]): number { | CODE |
| LOW | src/offload/storage.ts | 382 | export function extractConfirmedIdsFromEntries( | CODE |
| 16 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | README.md | 223 | MODEL_API_KEY="your-api-key" | CODE |
| HIGH | README.md | 247 | -e MODEL_API_KEY="your-api-key" \ | CODE |
| HIGH | README.md | 318 | TDAI_LLM_API_KEY="sk-your-api-key-here" | CODE |
| HIGH | README.md | 329 | "apiKey": "your-api-key", | CODE |
| HIGH | README_CN.md | 227 | MODEL_API_KEY="your-api-key" | CODE |
| HIGH | README_CN.md | 251 | -e MODEL_API_KEY="your-api-key" \ | CODE |
| HIGH | README_CN.md | 322 | TDAI_LLM_API_KEY="sk-your-api-key-here" | CODE |
| HIGH | README_CN.md | 333 | "apiKey": "your-api-key", | CODE |
| HIGH | docker/opensource/README-hermes.md | 35 | -e MODEL_API_KEY="your-api-key" \ | CODE |
| HIGH | scripts/install_hermes_memory_tencentdb.sh | 362 | echo " MEMORY_TENCENTDB_LLM_API_KEY=your-api-key" | CODE |
| HIGH | scripts/export-tencent-vdb/export-tencent-vdb.ts | 158 | console.error(' --api-key "your-api-key" \\'); | CODE |
| HIGH | scripts/migrate-sqlite-to-tcvdb/README.md | 56 | --tcvdb-api-key 'your-api-key-here' \ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | SKILL-DIAGNOSTIC-EXPORT.md | 15 | ### Step 1: 确认环境 | COMMENT |
| LOW | SKILL-DIAGNOSTIC-EXPORT.md | 32 | ### Step 2: 执行导出脚本 | COMMENT |
| LOW | SKILL-DIAGNOSTIC-EXPORT.md | 50 | ### Step 3: 确认导出结果 | COMMENT |
| LOW | SKILL-DIAGNOSTIC-EXPORT.md | 70 | ### Step 4: 告知用户后续操作 | COMMENT |
| LOW | src/core/record/l1-extractor.ts | 151 | // Step 1: LLM extraction (scene segmentation + memory extraction) | COMMENT |
| LOW | src/core/record/l1-extractor.ts | 218 | // Step 2: Batch Conflict Detection + Write | COMMENT |
| LOW | src/core/hooks/auto-capture.ts | 298 | // Step 3: Notify scheduler of this conversation round | COMMENT |
| LOW⚡ | src/core/prompts/l1-dedup.ts | 95 | // Step 1: Build unified candidate pool (de-duplicate across all new memories) | COMMENT |
| LOW | src/core/prompts/l1-dedup.ts | 110 | // Step 2: Format unified pool as JSON | COMMENT |
| LOW | src/core/prompts/l1-dedup.ts | 128 | // Step 3: Format each new memory with its related candidate IDs | COMMENT |
| LOW | src/core/prompts/l1-dedup.ts | 155 | // Step 4: Assemble final prompt | COMMENT |
| LOW | src/core/conversation/l0-recorder.ts | 109 | // Step 1: Position slice + extract user/assistant messages. | COMMENT |
| LOW | src/core/conversation/l0-recorder.ts | 190 | // Step 2: Replace polluted user messages with cached original prompt. | COMMENT |
| LOW | src/core/conversation/l0-recorder.ts | 246 | // Step 3: Sanitize and filter | COMMENT |
| LOW | src/core/conversation/l0-recorder.ts | 265 | // Step 4: Write to JSONL file — one message per line (flat format) | COMMENT |
| LOW⚡ | src/utils/pipeline-manager.ts | 478 | // Step 1: cancel the idle timer so it won't fire after we return. | COMMENT |
| LOW⚡ | src/utils/pipeline-manager.ts | 483 | // Step 2: flush pending buffered messages through L1 if any. | COMMENT |
| LOW⚡ | src/utils/pipeline-manager.ts | 491 | // Step 3: wait for L1 to drain. L1 is a single-consumer SerialQueue | COMMENT |
| LOW | src/utils/pipeline-manager.ts | 560 | // Step 1: Flush all L1 idle timers — only enqueue if there are buffered messages | COMMENT |
| LOW⚡ | src/utils/pipeline-manager.ts | 572 | // Step 2: Wait for L1 queue to drain | COMMENT |
| LOW⚡ | src/utils/pipeline-manager.ts | 576 | // Step 3: Flush all L2 schedule timers | COMMENT |
| LOW⚡ | src/utils/pipeline-manager.ts | 584 | // Step 4: Wait for all remaining queues to drain | COMMENT |
| LOW⚡ | src/utils/clean-context-runner.ts | 235 | // Step 1: extract raw model value (string | { primary?: string }) | COMMENT |
| LOW⚡ | src/utils/clean-context-runner.ts | 246 | // Step 2: try direct "provider/model" parse | COMMENT |
| LOW⚡ | src/utils/clean-context-runner.ts | 250 | // Step 3: alias lookup — raw doesn't contain "/", check agents.defaults.models | COMMENT |
| LOW⚡ | src/offload/reclaimer.ts | 91 | // Step 1: Clean expired session JSONL | COMMENT |
| LOW⚡ | src/offload/reclaimer.ts | 98 | // Step 2: Clean orphan ref MD | COMMENT |
| LOW⚡ | src/offload/reclaimer.ts | 105 | // Step 3: Clean expired MMD | COMMENT |
| LOW⚡ | src/offload/reclaimer.ts | 112 | // Step 4: Log rotation | COMMENT |
| LOW⚡ | src/offload/reclaimer.ts | 119 | // Step 5: Registry pruning | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/core/record/l1-extractor.ts | 151 | // Step 1: LLM extraction (scene segmentation + memory extraction) | COMMENT |
| LOW | src/core/record/l1-extractor.ts | 218 | // Step 2: Batch Conflict Detection + Write | COMMENT |
| LOW | src/core/hooks/auto-capture.ts | 298 | // Step 3: Notify scheduler of this conversation round | COMMENT |
| LOW⚡ | src/core/prompts/l1-dedup.ts | 95 | // Step 1: Build unified candidate pool (de-duplicate across all new memories) | COMMENT |
| LOW | src/core/prompts/l1-dedup.ts | 110 | // Step 2: Format unified pool as JSON | COMMENT |
| LOW | src/core/prompts/l1-dedup.ts | 128 | // Step 3: Format each new memory with its related candidate IDs | COMMENT |
| LOW | src/core/prompts/l1-dedup.ts | 155 | // Step 4: Assemble final prompt | COMMENT |
| LOW | src/core/conversation/l0-recorder.ts | 109 | // Step 1: Position slice + extract user/assistant messages. | COMMENT |
| LOW | src/core/conversation/l0-recorder.ts | 190 | // Step 2: Replace polluted user messages with cached original prompt. | COMMENT |
| LOW | src/core/conversation/l0-recorder.ts | 246 | // Step 3: Sanitize and filter | COMMENT |
| LOW | src/core/conversation/l0-recorder.ts | 265 | // Step 4: Write to JSONL file — one message per line (flat format) | COMMENT |
| LOW⚡ | src/utils/pipeline-manager.ts | 478 | // Step 1: cancel the idle timer so it won't fire after we return. | COMMENT |
| LOW⚡ | src/utils/pipeline-manager.ts | 483 | // Step 2: flush pending buffered messages through L1 if any. | COMMENT |
| LOW⚡ | src/utils/pipeline-manager.ts | 491 | // Step 3: wait for L1 to drain. L1 is a single-consumer SerialQueue | COMMENT |
| LOW | src/utils/pipeline-manager.ts | 560 | // Step 1: Flush all L1 idle timers — only enqueue if there are buffered messages | COMMENT |
| LOW⚡ | src/utils/pipeline-manager.ts | 572 | // Step 2: Wait for L1 queue to drain | COMMENT |
| LOW⚡ | src/utils/pipeline-manager.ts | 576 | // Step 3: Flush all L2 schedule timers | COMMENT |
| LOW⚡ | src/utils/pipeline-manager.ts | 584 | // Step 4: Wait for all remaining queues to drain | COMMENT |
| LOW⚡ | src/utils/clean-context-runner.ts | 235 | // Step 1: extract raw model value (string | { primary?: string }) | COMMENT |
| LOW⚡ | src/utils/clean-context-runner.ts | 246 | // Step 2: try direct "provider/model" parse | COMMENT |
| LOW⚡ | src/utils/clean-context-runner.ts | 250 | // Step 3: alias lookup — raw doesn't contain "/", check agents.defaults.models | COMMENT |
| LOW⚡ | src/offload/reclaimer.ts | 91 | // Step 1: Clean expired session JSONL | COMMENT |
| LOW⚡ | src/offload/reclaimer.ts | 98 | // Step 2: Clean orphan ref MD | COMMENT |
| LOW⚡ | src/offload/reclaimer.ts | 105 | // Step 3: Clean expired MMD | COMMENT |
| LOW⚡ | src/offload/reclaimer.ts | 112 | // Step 4: Log rotation | COMMENT |
| LOW⚡ | src/offload/reclaimer.ts | 119 | // Step 5: Registry pruning | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | hermes-plugin/memory/memory_tencentdb/supervisor.py | 90 | except Exception: | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/supervisor.py | 213 | except Exception as e: | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/supervisor.py | 250 | except Exception: | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/supervisor.py | 265 | except Exception: | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/supervisor.py | 293 | except Exception: | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/supervisor.py | 320 | except Exception as e: | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/client.py | 86 | except Exception: | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/client.py | 90 | except Exception as e: | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/client.py | 105 | except Exception as e: | CODE |
| MEDIUM | hermes-plugin/memory/memory_tencentdb/__init__.py | 891 | def _sync(): | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/__init__.py | 534 | except Exception as e: # defensive: never propagate to caller | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/__init__.py | 637 | except Exception as e: # pragma: no cover - defensive | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/__init__.py | 663 | except Exception as e: # pragma: no cover - defensive | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/__init__.py | 715 | except Exception: | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/__init__.py | 784 | except Exception as e: | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/__init__.py | 852 | except Exception as e: | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/__init__.py | 900 | except Exception as e: | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/__init__.py | 971 | except Exception as e: | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/__init__.py | 1040 | except Exception as e: | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/__init__.py | 1063 | except Exception as e: | CODE |
| LOW | …y/memory_tencentdb/tests/test_gateway_shutdown_leak.py | 282 | except Exception: | CODE |
| LOW | …y/memory_tencentdb/tests/test_gateway_shutdown_leak.py | 682 | except Exception: | CODE |
| MEDIUM | …y/memory_tencentdb/tests/test_gateway_shutdown_leak.py | 179 | def _term(_signum, _frame): | CODE |
| LOW | scripts/memory-tencentdb-ctl.sh | 139 | except Exception as e: | CODE |
| LOW | scripts/memory-tencentdb-ctl.sh | 413 | except Exception: | CODE |
| LOW | scripts/memory-tencentdb-ctl.sh | 618 | except Exception: | CODE |
| LOW | scripts/memory-tencentdb-ctl.sh | 671 | except Exception as e: | CODE |
| LOW | scripts/memory-tencentdb-ctl.sh | 780 | except Exception: | CODE |
| LOW | scripts/memory-tencentdb-ctl.sh | 792 | except Exception: | CODE |
| LOW | scripts/bugfix-20260423/bugfix-20260423.sh | 181 | except Exception: | CODE |
| LOW | scripts/bugfix-20260423/bugfix-20260423-full.sh | 181 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | README_CN.md | 221 | # ============ 配置参数说明 ============ | COMMENT |
| LOW | index.ts | 201 | // the zod schema fix landed in v2026.4.24. Older hosts don't understand | COMMENT |
| LOW | hermes-plugin/memory/memory_tencentdb/__init__.py | 41 | COMMENT | |
| LOW | hermes-plugin/memory/memory_tencentdb/__init__.py | 61 | _MAX_INFLIGHT_SYNCS = 4 | COMMENT |
| LOW | hermes-plugin/memory/memory_tencentdb/__init__.py | 381 | # time. Stuck threads (e.g. Gateway hung mid-capture) are tracked in | COMMENT |
| LOW | hermes-plugin/memory/memory_tencentdb/__init__.py | 401 | # it starts near zero at process start, which would make the | COMMENT |
| LOW | scripts/memory-tencentdb-ctl.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/memory-tencentdb-ctl.sh | 21 | # 命令: | COMMENT |
| LOW | scripts/install_hermes_memory_tencentdb.sh | 1 | #!/bin/bash | COMMENT |
| LOW | scripts/install_hermes_memory_tencentdb.sh | 21 | # 以目标用户身份执行(推荐): | COMMENT |
| LOW | scripts/install_hermes_memory_tencentdb.sh | 41 | # 3. ``whoami`` —— 当前 EUID 对应的用户 | COMMENT |
| LOW | scripts/install_hermes_memory_tencentdb.sh | 61 | # 可通过环境变量 MEMORY_TENCENTDB_ROOT 覆盖 | COMMENT |
| LOW | scripts/setup-offload.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/openclaw-after-tool-call-messages.patch.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/bugfix-20260423/bugfix-20260423.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/bugfix-20260423/bugfix-20260423-full.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | src/core/hooks/auto-capture.ts | 141 | } | COMMENT |
| LOW | src/core/scene/scene-extractor.ts | 241 | // Phase 5: Subsequent processing — safe cleanup of soft-deleted files | COMMENT |
| LOW | src/core/conversation/l0-recorder.ts | 141 | } | COMMENT |
| LOW | src/core/conversation/l0-recorder.ts | 181 | ); | COMMENT |
| LOW | src/utils/sanitize.ts | 21 | // Remove offload-injected task context blocks (MMD mermaid diagrams) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | hermes-plugin/memory/memory_tencentdb/supervisor.py | 9 | CODE | |
| LOW | hermes-plugin/memory/memory_tencentdb/client.py | 7 | CODE | |
| LOW | hermes-plugin/memory/memory_tencentdb/__init__.py | 27 | CODE | |
| LOW | …mory_tencentdb/tests/test_memory_tencentdb_recovery.py | 20 | CODE | |
| LOW | …y/memory_tencentdb/tests/test_gateway_shutdown_leak.py | 55 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | index.ts | 350 | // TODO: implement hard per-turn call limit via before_tool_call hook + execute early-return (方案 D) | COMMENT |
| LOW | index.ts | 438 | // TODO: implement hard per-turn call limit via before_tool_call hook + execute early-return (方案 D) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | hermes-plugin/memory/memory_tencentdb/supervisor.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/client.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | hermes-plugin/memory/memory_tencentdb/__init__.py | 42 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | hermes-plugin/memory/memory_tencentdb/supervisor.py | 272 | # Check if process died | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | hermes-plugin/memory/memory_tencentdb/__init__.py | 594 | CODE | |
| LOW | …y/memory_tencentdb/tests/test_gateway_shutdown_leak.py | 603 | CODE |