AI Slop Code Risk Monitor

Tencent/WeKnora

SlopCodeMonitor badge for Tencent/WeKnora Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

Open-source LLM knowledge platform: turn raw documents into a queryable RAG, an autonomous reasoning agent, and a self-maintaining Wiki.

3.0 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for Tencent/WeKnora, a Go project with 36,108 GitHub stars. SynthScan examined 1,346,780 lines of code across 5026 source files, recording 3351 pattern matches distributed across 22 syntactic categories. The legacy adjusted pattern signal is 3.0 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

3.0
Adjusted Signal
3.0
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
36.1K
Stars
Go
Language
1.3M
Lines of Code
5.0K
Files
3.4K
Pattern Hits
2026-10-31
Scan Date
0.01
HC Hit Rate

Risk Review · Payload v1

Use each vector to guide manual verification of the underlying findings.

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 11.3/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 2950 finding(s).

Hallucinated Dependency & Supply Chain Risk 0.7/100 · LOW

Are imports declared and package/API names verified? 121 finding(s).

Agent Over-Engineering Ratio 6.2/100 · LOW

Are wrappers, guards, and repeated structures necessary? 1306 finding(s).

PR Review Velocity Impact 13.5/100 · LOW

Which changes need focused human review? 3351 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 3HIGH 35MEDIUM 174LOW 3139

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 3351 distinct pattern matches across 22 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Over-Commented Block1684 hits · 1669 pts
SeverityFileLineSnippetContext
LOWdocker-compose.dev.yml381 # Langfuse 自建栈(dev 对称版)COMMENT
LOWdocker-compose.yml61 # - /var/run/docker.sock:/var/run/docker.sockCOMMENT
LOWdocker-compose.yml81 # requires Docker Compose v2.24+ (Jan 2024) and would break parsing onCOMMENT
LOWdocker-compose.yml101 # 时区,默认为Asia/ShanghaiCOMMENT
LOWdocker-compose.yml301 # Redis 频道命名空间后缀(多部署共享同一 Redis 时隔离用)COMMENT
LOWdocker-compose.yml321 - IMAGE_HOST_KEEP_URL=${IMAGE_HOST_KEEP_URL:-}COMMENT
LOWdocker-compose.yml781 - weaviateCOMMENT
LOWdocker-compose.yml841 ports:COMMENT
LOWcmd/server/bootstrap.go21// may be promoted to system administrator when the deployment has noCOMMENT
LOWcmd/server/bootstrap.go61 // not abort startup — bootstrap is best-effort.COMMENT
LOWcmd/server/main.go1// Package main is the main package for the WeKnora serverCOMMENT
LOWdocker/sandbox-pty-prompt.sh1# WeKnora interactive PTY prompt: classic \u@\h:\W\$COMMENT
LOWdocker/scripts/wk-chrome.sh1#!/bin/shCOMMENT
LOWdocker/scripts/start-desktop.sh1#!/bin/shCOMMENT
LOWdocker/scripts/start-desktop.sh21# response at all (a bad handshake on the backend, for every session on theCOMMENT
LOWdocker/scripts/chrome-wk.sh1#!/bin/shCOMMENT
LOWdocker/scripts/wk-display.sh1#!/usr/bin/env bashCOMMENT
LOWdocker/scripts/tests/smoke-flows.sh1#!/usr/bin/env bashCOMMENT
LOWfrontend/src/composables/useResourcePins.ts1// useResourcePins – per-(user, tenant) favorites + per-user recents forCOMMENT
LOWfrontend/src/composables/useListUrlState.ts1// useListUrlState keeps a list view's filter state (sidebar scope, creatorCOMMENT
LOWfrontend/src/composables/useFont.ts1import { ref } from 'vue'COMMENT
LOWfrontend/src/composables/useFont.ts21// system sans, PingFang, and Helvetica are all visually close enoughCOMMENT
LOWfrontend/src/composables/useFont.ts221 }COMMENT
LOWfrontend/src/wailsjs/runtime/runtime.d.ts101// *Windows only*COMMENT
LOWfrontend/src/stores/auth.ts41 const selectedTenantName = ref<string | null>(null)COMMENT
LOWfrontend/src/stores/auth.ts101COMMENT
LOWfrontend/src/stores/auth.ts121 // bit in DevTools will get a 403 the moment they hit a guarded endpoint.COMMENT
LOWfrontend/src/utils/workspaceNotifyContent.ts1// Shared content renderer for the post-login and post-tenant-switchCOMMENT
LOWfrontend/src/utils/wikiLineDiff.ts1// Line-level diff for the wiki revision viewer. Deliberately small: theCOMMENT
LOWfrontend/src/utils/loginNotify.ts1// Rich "you're now in {workspace} as {role}" notification for theCOMMENT
LOWfrontend/src/utils/imageAttrDisplay.ts1import type {COMMENT
LOWfrontend/src/utils/finalAnswer.ts1// finalAnswer.tsCOMMENT
LOWfrontend/src/components/UserMenu.vue361// ---------- Tenant switcher submenu ----------COMMENT
LOWfrontend/src/components/ModelEditorDialog.vue3061 // 容器留点呼吸:避免选项贴着 popup 圆角COMMENT
LOW…ntend/src/components/knowledge-processing-timeline.vue41 stall_state?: stringCOMMENT
LOW…ntend/src/components/knowledge-processing-timeline.vue101const expandedRows = ref<Set<string>>(new Set(['__root__']))COMMENT
LOW…ntend/src/components/knowledge-processing-timeline.vue121// expanded unless the user has spoken. Discoverability + respectCOMMENT
LOW…ntend/src/components/knowledge-processing-timeline.vue141// watchers, watchdogs, fetchInFlight gates routing through tickCOMMENT
LOW…ntend/src/components/knowledge-processing-timeline.vue261// 1. If we have data: still live while parse_status is pollingCOMMENT
LOW…ntend/src/components/knowledge-processing-timeline.vue301}COMMENT
LOW…ntend/src/components/knowledge-processing-timeline.vue321)COMMENT
LOW…ntend/src/components/knowledge-processing-timeline.vue341// the tree quiesces (so wiki ingest's 30s-debounced subspanCOMMENT
LOW…tend/src/components/credentials/CredentialResource.vue181// Local view state per field. Source of truth is props.meta, but we trackCOMMENT
LOWfrontend/src/api/knowledge-base/index.ts61// - source 'env' → KB uses the tenant's env-configured storeCOMMENT
LOWfrontend/src/api/knowledge-base/index.ts81// attribute panel dynamically. The types/constants below mirror the v1 shapeCOMMENT
LOWfrontend/src/api/image-gallery/index.ts1import { get, post } from '@/utils/request';COMMENT
LOWfrontend/src/i18n/memoryKeyReferences.test.ts1import assert from 'node:assert/strict'COMMENT
LOWfrontend/src/views/settings/Settings.vue301// 以「页面里至少有 1 个有意义的写操作所要求的最低角色」为基准,把基础设COMMENT
LOWfrontend/src/views/settings/TenantMembers.vue601const invitationsError = ref('')COMMENT
LOWfrontend/src/views/chat/components/botmsg.vue301COMMENT
LOW…ntend/src/views/chat/components/AgentStreamDisplay.vue1301// -----------------------------------------------------------------------------COMMENT
LOW…ntend/src/views/chat/components/AgentStreamDisplay.vue2221 // Drop thinking cards that are entirely empty (no title and no body). SomeCOMMENT
LOWfrontend/src/views/agent/AgentList.vue1381 else next.add(key)COMMENT
LOWfrontend/src/views/agent/AgentEditorModal.vue3361};COMMENT
LOWfrontend/src/views/agent/AgentEditorModal.vue4041// 监听知识库启用状态变化:COMMENT
LOWfrontend/src/views/knowledge/kbListMerge.ts1// Pure helpers backing the "All" scope of the knowledge-base list.COMMENT
LOWfrontend/src/views/knowledge/KnowledgeBase.vue301// tenant role does NOT grant edit/manage — only the share grant does.COMMENT
LOWfrontend/src/views/knowledge/KnowledgeBase.vue321// (Contributor+) or tenant Admin+ in the home tenant.COMMENT
LOWfrontend/src/views/knowledge/KnowledgeBaseList.vue761// 左侧空间选择:默认根据当前角色决定。COMMENT
LOWfrontend/src/views/knowledge/KnowledgeBaseList.vue1021}COMMENT
1624 more matches not shown…
Hyper-Verbose Identifiers1026 hits · 1121 pts
SeverityFileLineSnippetContext
LOWfrontend/vite.config.ts56function resolveVueOfficePptxEntry(): string {CODE
LOWfrontend/src/composables/preferenceStorage.ts81export function migratePreferencesIntoUser(): void {CODE
LOW…tend/src/composables/useChatAttachmentPreviewDrawer.ts21export function provideChatAttachmentPreviewDrawer(): ChatAttachmentPreviewDrawerContext {CODE
LOW…tend/src/composables/useChatAttachmentPreviewDrawer.ts46export function useChatAttachmentPreviewDrawer(): ChatAttachmentPreviewDrawerContext | null {CODE
LOWfrontend/src/composables/useChatReferencesDrawer.ts41export function provideChatReferencesDrawer(): ChatReferencesDrawerContext {CODE
LOWfrontend/src/composables/useChatScrollFollow.ts92export function useDeferredTimelineCompletion(done: Readonly<Ref<boolean>>, reading: Readonly<Ref<boolean>>) {CODE
LOWfrontend/src/composables/useProtectedImageRecovery.ts6export function useProtectedImageRecovery(CODE
LOW…ntend/src/composables/useConfigSkillInstallProgress.ts26export function useConfigSkillInstallProgress(options?: {CODE
LOWfrontend/src/composables/useDocumentPictureInPicture.ts8export function useDocumentPictureInPicture(selected: Ref<boolean>, title: () => string) {CODE
LOWfrontend/src/config/deploymentCapabilities.ts32export function isDeploymentCapabilitySupported(CODE
LOWfrontend/src/config/settingsRoute.ts12export function integrationTabFromSection(section: string): IntegrationTab {CODE
LOW⚡frontend/src/wailsjs/go/main/App.d.ts16export function GetDesktopHTTPBindPublicSetting():Promise<boolean>;CODE
LOW⚡frontend/src/wailsjs/go/main/App.d.ts18export function GetDesktopHTTPPortSetting():Promise<number>;CODE
LOW⚡frontend/src/wailsjs/go/main/App.d.ts20export function GetDesktopListenPublicActive():Promise<boolean>;CODE
LOW⚡frontend/src/wailsjs/go/main/App.d.ts30export function SetDesktopHTTPBindPublicSetting(arg1:boolean):Promise<void>;CODE
LOW⚡frontend/src/wailsjs/go/main/App.d.ts32export function SetDesktopHTTPPortSetting(arg1:number):Promise<void>;CODE
LOW⚡frontend/src/wailsjs/go/main/App.js29export function GetDesktopHTTPBindPublicSetting() {CODE
LOW⚡frontend/src/wailsjs/go/main/App.js33export function GetDesktopHTTPPortSetting() {CODE
LOW⚡frontend/src/wailsjs/go/main/App.js37export function GetDesktopListenPublicActive() {CODE
LOWfrontend/src/wailsjs/go/main/App.js57export function SetDesktopHTTPBindPublicSetting(arg1) {CODE
LOWfrontend/src/wailsjs/go/main/App.js61export function SetDesktopHTTPPortSetting(arg1) {CODE
LOWfrontend/src/wailsjs/runtime/runtime.d.ts103export function WindowSetSystemDefaultTheme(): void;CODE
LOWfrontend/src/wailsjs/runtime/runtime.d.ts203export function WindowSetBackgroundColour(R: number, G: number, B: number, A: number): void;CODE
LOW⚡frontend/src/wailsjs/runtime/runtime.d.ts290export function RequestNotificationAuthorization(): Promise<boolean>;CODE
LOW⚡frontend/src/wailsjs/runtime/runtime.d.ts294export function CheckNotificationAuthorization(): Promise<boolean>;CODE
LOW⚡frontend/src/wailsjs/runtime/runtime.d.ts302export function SendNotificationWithActions(options: NotificationOptions): Promise<void>;CODE
LOW⚡frontend/src/wailsjs/runtime/runtime.d.ts306export function RegisterNotificationCategory(category: NotificationCategory): Promise<void>;CODE
LOW⚡frontend/src/wailsjs/runtime/runtime.d.ts310export function RemoveNotificationCategory(categoryId: string): Promise<void>;CODE
LOW⚡frontend/src/wailsjs/runtime/runtime.d.ts314export function RemoveAllPendingNotifications(): Promise<void>;CODE
LOW⚡frontend/src/wailsjs/runtime/runtime.d.ts318export function RemovePendingNotification(identifier: string): Promise<void>;CODE
LOW⚡frontend/src/wailsjs/runtime/runtime.d.ts322export function RemoveAllDeliveredNotifications(): Promise<void>;CODE
LOW⚡frontend/src/wailsjs/runtime/runtime.d.ts326export function RemoveDeliveredNotification(identifier: string): Promise<void>;CODE
LOWfrontend/src/wailsjs/runtime/runtime.js76export function WindowSetSystemDefaultTheme() {CODE
LOWfrontend/src/wailsjs/runtime/runtime.js164export function WindowSetBackgroundColour(R, G, B, A) {CODE
LOW⚡frontend/src/wailsjs/runtime/runtime.js256export function RequestNotificationAuthorization() {CODE
LOW⚡frontend/src/wailsjs/runtime/runtime.js260export function CheckNotificationAuthorization() {CODE
LOW⚡frontend/src/wailsjs/runtime/runtime.js268export function SendNotificationWithActions(options) {CODE
LOW⚡frontend/src/wailsjs/runtime/runtime.js272export function RegisterNotificationCategory(category) {CODE
LOW⚡frontend/src/wailsjs/runtime/runtime.js276export function RemoveNotificationCategory(categoryId) {CODE
LOW⚡frontend/src/wailsjs/runtime/runtime.js280export function RemoveAllPendingNotifications() {CODE
LOW⚡frontend/src/wailsjs/runtime/runtime.js284export function RemovePendingNotification(identifier) {CODE
LOW⚡frontend/src/wailsjs/runtime/runtime.js288export function RemoveAllDeliveredNotifications() {CODE
LOW⚡frontend/src/wailsjs/runtime/runtime.js292export function RemoveDeliveredNotification(identifier) {CODE
LOWfrontend/src/stores/localizedResourceCache.ts11export function isLocalizedSnapshotUsable(CODE
LOWfrontend/src/stores/localizedResourceCache.ts20export function shouldReuseLocalizedInflight(CODE
LOWfrontend/src/stores/localizedResourceCache.ts33export function shouldForceLocalizedRefetch(CODE
LOWfrontend/src/stores/editorResources.ts27export function pickUsableStorageProvider(CODE
LOWfrontend/src/stores/editorResources.ts256 function resolveUsableStorageProvider(candidate?: string): string {CODE
LOWfrontend/src/stores/editorResources.ts310 async function ensureTenantRetrievalConfig(force = false): Promise<void> {CODE
LOWfrontend/src/stores/uploadQueue.ts343export function createListRefreshThrottle(CODE
LOWfrontend/src/stores/modelProvidersState.ts58export function credentialLabelForModelType(CODE
LOWfrontend/src/stores/chatResources.ts160 async function fetchKnowledgeBasesForList(CODE
LOWfrontend/src/stores/chatResources.ts266 async function ensureAgentKnowledgeBases(agentId: string, sourceTenantId?: string, force = false): Promise<any[]> {CODE
LOWfrontend/src/stores/chatResources.ts276 function invalidateKnowledgeBaseDetail(kbId?: string) {CODE
LOWfrontend/src/stores/organization.ts159 function adjustOrganizationResourceCount(CODE
LOWfrontend/src/stores/organization.ts460 async function fetchSharedKnowledgeBases(options?: { force?: boolean }) {CODE
LOWfrontend/src/stores/organization.ts518 function invalidateSearchableOrganizations(organizationId?: string) {CODE
LOWfrontend/src/stores/organization.ts527 function invalidateOrganizationData(options: InvalidateOrganizationDataOptions) {CODE
LOWfrontend/src/stores/organization.ts544 async function fetchSearchableOrganizations(CODE
LOWfrontend/src/stores/organization.ts575 function clearSearchableOrganizations() {CODE
966 more matches not shown…
Decorative Section Separators126 hits · 390 pts
SeverityFileLineSnippetContext
MEDIUMdocker-compose.dev.yml380 # ---------------------------------------------------------------------------COMMENT
MEDIUMdocker-compose.dev.yml393 # ---------------------------------------------------------------------------COMMENT
MEDIUMdocker-compose.yml783 # ---------------------------------------------------------------------------COMMENT
MEDIUMdocker-compose.yml798 # ---------------------------------------------------------------------------COMMENT
MEDIUMdocker-compose.yml850 # ---------------------------------------------------------------------------COMMENT
MEDIUMdocker-compose.yml866 # ---------------------------------------------------------------------------COMMENT
MEDIUM…/src/views/knowledge/KnowledgeBaseFolderCounts.test.ts95// ── Breadcrumb ──────────────────────────────────────────────────────────────COMMENT
MEDIUM…/src/views/knowledge/KnowledgeBaseFolderCounts.test.ts157// ── Sub-folders as list entries ─────────────────────────────────────────────COMMENT
MEDIUM…/src/views/knowledge/KnowledgeBaseFolderCounts.test.ts216// ── Wording ─────────────────────────────────────────────────────────────────COMMENT
MEDIUM…/src/views/knowledge/KnowledgeBaseFolderCounts.test.ts253// ── Empty state ─────────────────────────────────────────────────────────────COMMENT
MEDIUMfrontend/src/views/knowledge/wiki/WikiBrowser.vue3390// ─── Bloom: additive neighbor expansion ──────────────────────────────────COMMENT
MEDIUM⚡config/agent_type_presets.yaml31 # --------------------------------------------------------------------------COMMENT
MEDIUM⚡config/agent_type_presets.yaml34 # --------------------------------------------------------------------------COMMENT
MEDIUMconfig/agent_type_presets.yaml67 # --------------------------------------------------------------------------COMMENT
MEDIUMconfig/agent_type_presets.yaml70 # --------------------------------------------------------------------------COMMENT
MEDIUM⚡config/agent_type_presets.yaml101 # --------------------------------------------------------------------------COMMENT
MEDIUM⚡config/agent_type_presets.yaml104 # --------------------------------------------------------------------------COMMENT
MEDIUM⚡config/agent_type_presets.yaml148 # --------------------------------------------------------------------------COMMENT
MEDIUM⚡config/agent_type_presets.yaml153 # --------------------------------------------------------------------------COMMENT
MEDIUM⚡config/agent_type_presets.yaml195 # --------------------------------------------------------------------------COMMENT
MEDIUM⚡config/agent_type_presets.yaml197 # --------------------------------------------------------------------------COMMENT
MEDIUMmcp-server/weknora_mcp_server.py240 # ── UUID pattern (8-4-4-4-12 hex) ──────────────────────────────────────COMMENT
MEDIUMmcp-server/weknora_mcp_server.py693# ---------------------------------------------------------------------------COMMENT
MEDIUMmcp-server/weknora_mcp_server.py702# ---------------------------------------------------------------------------COMMENT
MEDIUMmcp-server/weknora_mcp_server.py1130# ---------------------------------------------------------------------------COMMENT
MEDIUMmcp-server/weknora_mcp_server.py1132# ---------------------------------------------------------------------------COMMENT
MEDIUMinternal/datasource/scheduler_test.go14// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUMinternal/datasource/scheduler_test.go16// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUMinternal/datasource/scheduler_test.go165// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUMinternal/datasource/scheduler_test.go167// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUMinternal/datasource/connector/feishu/core/client.go606// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUMinternal/datasource/connector/feishu/core/client.go613// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUMinternal/datasource/connector/feishu/core/client.go736// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUMinternal/datasource/connector/feishu/core/client.go738// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUMinternal/datasource/connector/feishu/core/client.go868// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUMinternal/datasource/connector/feishu/core/client.go872// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…asource/connector/feishu/wiki/connector_golden_test.go15// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…asource/connector/feishu/wiki/connector_golden_test.go22// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…asource/connector/feishu/wiki/connector_stream_test.go301// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…asource/connector/feishu/wiki/connector_stream_test.go303// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…nal/datasource/connector/feishu/wiki/connector_test.go30// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…nal/datasource/connector/feishu/wiki/connector_test.go32// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…nal/datasource/connector/feishu/wiki/connector_test.go251// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…nal/datasource/connector/feishu/wiki/connector_test.go253// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…nal/datasource/connector/feishu/wiki/connector_test.go390// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…nal/datasource/connector/feishu/wiki/connector_test.go392// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…nal/datasource/connector/feishu/wiki/connector_test.go577// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…nal/datasource/connector/feishu/wiki/connector_test.go579// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…nal/datasource/connector/feishu/wiki/connector_test.go900// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…nal/datasource/connector/feishu/wiki/connector_test.go902// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…nal/datasource/connector/feishu/wiki/connector_test.go1111// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…nal/datasource/connector/feishu/wiki/connector_test.go1113// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…nal/datasource/connector/feishu/wiki/connector_test.go1298// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…nal/datasource/connector/feishu/wiki/connector_test.go1300// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…nal/datasource/connector/feishu/wiki/connector_test.go1335// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…nal/datasource/connector/feishu/wiki/connector_test.go1337// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…nal/datasource/connector/feishu/wiki/connector_test.go1829// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM…nal/datasource/connector/feishu/wiki/connector_test.go1831// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUMinternal/datasource/connector/feishu/wiki/paths_test.go15// ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUMinternal/datasource/connector/feishu/wiki/paths_test.go18// ──────────────────────────────────────────────────────────────────────COMMENT
66 more matches not shown…
Structural Annotation Overuse53 hits · 102 pts
SeverityFileLineSnippetContext
LOW…rc/views/knowledge/settings/DataSourceEditorDialog.vue243// Step 2: ResourcesCOMMENT
LOW⚡config/config.yaml57 ## Step 1: Entity Extraction and Attribute EnrichmentCOMMENT
LOW⚡config/config.yaml61 ## Step 2: Relationship Extraction and VerificationCOMMENT
LOW⚡docreader/splitter/splitter.py132 # Step 1: Split text by separators recursivelyCOMMENT
LOW⚡docreader/splitter/splitter.py134 # Step 2: Extract protected content positionsCOMMENT
LOW⚡docreader/splitter/splitter.py136 # Step 3: Merge splits with protected content to ensure integrityCOMMENT
LOW⚡docreader/splitter/splitter.py142 # Step 4: Merge splits into final chunks with overlapCOMMENT
LOW⚡docreader/splitter/splitter.py145 # Step 5: Validate chunks and test restorationCOMMENT
LOWinternal/datasource/CONNECTOR_IMPLEMENTATION_GUIDE.md13## Step 1: Create Connector Package StructureCOMMENT
LOWinternal/datasource/CONNECTOR_IMPLEMENTATION_GUIDE.md24## Step 2: Define Platform Types (types.go)COMMENT
LOWinternal/datasource/CONNECTOR_IMPLEMENTATION_GUIDE.md70## Step 3: Implement API Client (client.go)COMMENT
LOWinternal/datasource/CONNECTOR_IMPLEMENTATION_GUIDE.md113## Step 4: Implement Connector Interface (connector.go)COMMENT
LOWinternal/datasource/CONNECTOR_IMPLEMENTATION_GUIDE.md295## Step 5: Register in ContainerCOMMENT
LOWinternal/datasource/CONNECTOR_IMPLEMENTATION_GUIDE.md334## Step 6: Add Connector Type ConstantCOMMENT
LOWinternal/datasource/CONNECTOR_IMPLEMENTATION_GUIDE.md345## Step 7: Add MetadataCOMMENT
LOWinternal/datasource/CONNECTOR_IMPLEMENTATION_GUIDE.md363## Step 8: Test Your ConnectorCOMMENT
LOW⚡internal/datasource/connector/feishu/core/client.go691 // Step 1: create export taskCOMMENT
LOW⚡internal/datasource/connector/feishu/core/client.go697 // Step 2: retain the same ticket while waiting on shared API limits. A wallCOMMENT
LOWinternal/datasource/connector/feishu/core/client.go722 // Step 3: download file using file_token (NOT ticket)COMMENT
LOW⚡…rnal/application/repository/knowledge_finalize_test.go348 // Step 2: caller A snapshots the row with counter=5 in memory.COMMENT
LOW⚡…rnal/application/repository/knowledge_finalize_test.go353 // Step 3: an enrichment subtask decrements concurrently.COMMENT
LOW⚡…rnal/application/repository/knowledge_finalize_test.go357 // Step 4: caller A persists an unrelated change. The in-memory copyCOMMENT
LOW⚡…rnal/application/repository/knowledge_finalize_test.go362 // Step 5: the live counter is still 4, not clobbered back to 5.COMMENT
LOWinternal/application/service/message.go616 // Step 1: Keyword search (dialect-aware LIKE in the repository)COMMENT
LOWinternal/application/service/message.go627 // Step 2: Vector search via chat history knowledge base (if configured)COMMENT
LOWinternal/application/service/message.go640 // Step 3: Merge results based on modeCOMMENT
LOW⚡internal/application/service/message.go659 // Step 4: Fetch partner messages (Q&A counterparts) to ensure complete pairsCOMMENT
LOW⚡internal/application/service/message.go662 // Step 5: Group by request_id to merge Q&A pairsCOMMENT
LOWinternal/application/service/knowledgebase.go990 // Step 1: Delete the knowledge base record first (mark as deleted)COMMENT
LOWinternal/application/service/knowledgebase.go1038 // Step 2: Enqueue async task for heavy cleanup operationsCOMMENT
LOWinternal/application/service/knowledgebase.go1129 // Step 1: Get all knowledge entries in this knowledge baseCOMMENT
LOWinternal/application/service/knowledgebase.go1149 // Step 2: Delete all knowledge entries and their resourcesCOMMENT
LOWinternal/application/service/knowledge_process.go3058 // Step 2: Update knowledge status and metadataCOMMENT
LOWinternal/application/service/knowledge_process.go3070 // Step 3: Trigger async re-parsing based on knowledge typeCOMMENT
LOWinternal/application/service/knowledge_process.go4174 // Step 2: Store images and update markdown referencesCOMMENT
LOWinternal/application/service/knowledge_process.go4242 // Step 3: Split into chunks using Go chunker. Line endings and inlineCOMMENT
LOWinternal/application/service/knowledge_process.go4302 // Step 4: Process chunks (vectorize + index + enqueue async tasks)COMMENT
LOW⚡internal/application/service/chat_pipeline/merge.go55 // Step 1: Select inputCOMMENT
LOW⚡internal/application/service/chat_pipeline/merge.go58 // Step 2: Initial dedupCOMMENT
LOW⚡internal/application/service/chat_pipeline/merge.go61 // Step 3: Inject history referencesCOMMENT
LOW⚡internal/application/service/chat_pipeline/merge.go76 // Step 4: Resolve parent chunksCOMMENT
LOW⚡internal/application/service/chat_pipeline/merge.go79 // Step 5: Group by knowledge/chunkType and merge overlapping rangesCOMMENT
LOW⚡internal/application/service/chat_pipeline/merge.go82 // Step 6: Populate FAQ answersCOMMENT
LOW⚡internal/application/service/chat_pipeline/merge.go85 // Step 7: Expand short contextsCOMMENT
LOW⚡internal/application/service/chat_pipeline/merge.go91 // Step 8: Final dedup — catches exact duplicates plus partial content overlapsCOMMENT
LOW…plication/service/chat_pipeline/extract_entity_test.go330 const prose = "## Step 1: Entity Extraction\n1. Romeo and Juliet is a play"CODE
LOW⚡internal/infrastructure/chunker/splitter.go294 // Step 1: Find protected spansCOMMENT
LOW⚡internal/infrastructure/chunker/splitter.go297 // Step 2: Split non-protected regions by separators, keep protected as atomic units.COMMENT
LOW⚡internal/infrastructure/chunker/splitter.go302 // Step 3: Merge units into chunks with overlapCOMMENT
LOW⚡internal/event/example_test.go65 // Step 1: Query receivedCOMMENT
LOW⚡internal/event/example_test.go72 // Step 2: Query rewriteCOMMENT
LOW⚡internal/event/example_test.go79 // Step 3: RetrievalCOMMENT
LOW⚡internal/event/example_test.go86 // Step 4: RerankCOMMENT
Empty Error Handlers18 hits · 90 pts
SeverityFileLineSnippetContext
HIGHdocreader/preprocess_worker.py132except (EOFError, BrokenPipeError):CODE
HIGHdocreader/tests/test_sandbox_executor.py89except ProcessLookupError:CODE
HIGHdocreader/tests/test_ssrf_proxy.py105except Exception:CODE
HIGHdocreader/tests/preprocess_worker_fixture.py53except (EOFError, BrokenPipeError):CODE
HIGHdocreader/utils/tempfile.py29except OSError:CODE
HIGHdocreader/utils/tempfile.py33except OSError:CODE
HIGHdocreader/utils/ssrf.py283except ValueError:CODE
HIGHdocreader/parser/pdf_parser.py1597except FileNotFoundError:CODE
HIGHdocreader/parser/pdf_parser.py1573except OSError:CODE
HIGHdocreader/parser/pdf_parser.py1696except StopIteration:CODE
HIGHdocreader/parser/docx_parser.py1139except OSError:CODE
HIGHdocreader/parser/pptx_media.py34except OSError:CODE
HIGHdocreader/parser/doc_parser.py124except subprocess.TimeoutExpired:CODE
HIGHdocreader/parser/doc_parser.py137except OSError:CODE
HIGHdocreader/parser/doc_parser.py115except OSError:CODE
HIGHdocreader/parser/doc_parser.py149except OSError:CODE
HIGHdocreader/parser/doc_parser.py163except OSError:CODE
HIGHinternal/application/service/tenant_skill_verify.py205except Exception:CODE
Verbosity Indicators45 hits · 90 pts
SeverityFileLineSnippetContext
LOW…rc/views/knowledge/settings/DataSourceEditorDialog.vue243// Step 2: ResourcesCOMMENT
LOW⚡config/config.yaml57 ## Step 1: Entity Extraction and Attribute EnrichmentCOMMENT
LOW⚡config/config.yaml61 ## Step 2: Relationship Extraction and VerificationCOMMENT
LOW⚡docreader/splitter/splitter.py132 # Step 1: Split text by separators recursivelyCOMMENT
LOW⚡docreader/splitter/splitter.py134 # Step 2: Extract protected content positionsCOMMENT
LOW⚡docreader/splitter/splitter.py136 # Step 3: Merge splits with protected content to ensure integrityCOMMENT
LOW⚡docreader/splitter/splitter.py142 # Step 4: Merge splits into final chunks with overlapCOMMENT
LOW⚡docreader/splitter/splitter.py145 # Step 5: Validate chunks and test restorationCOMMENT
LOW⚡internal/datasource/connector/feishu/core/client.go691 // Step 1: create export taskCOMMENT
LOW⚡internal/datasource/connector/feishu/core/client.go697 // Step 2: retain the same ticket while waiting on shared API limits. A wallCOMMENT
LOWinternal/datasource/connector/feishu/core/client.go722 // Step 3: download file using file_token (NOT ticket)COMMENT
LOW⚡…rnal/application/repository/knowledge_finalize_test.go348 // Step 2: caller A snapshots the row with counter=5 in memory.COMMENT
LOW⚡…rnal/application/repository/knowledge_finalize_test.go353 // Step 3: an enrichment subtask decrements concurrently.COMMENT
LOW⚡…rnal/application/repository/knowledge_finalize_test.go357 // Step 4: caller A persists an unrelated change. The in-memory copyCOMMENT
LOW⚡…rnal/application/repository/knowledge_finalize_test.go362 // Step 5: the live counter is still 4, not clobbered back to 5.COMMENT
LOWinternal/application/service/message.go616 // Step 1: Keyword search (dialect-aware LIKE in the repository)COMMENT
LOWinternal/application/service/message.go627 // Step 2: Vector search via chat history knowledge base (if configured)COMMENT
LOWinternal/application/service/message.go640 // Step 3: Merge results based on modeCOMMENT
LOW⚡internal/application/service/message.go659 // Step 4: Fetch partner messages (Q&A counterparts) to ensure complete pairsCOMMENT
LOW⚡internal/application/service/message.go662 // Step 5: Group by request_id to merge Q&A pairsCOMMENT
LOWinternal/application/service/knowledgebase.go990 // Step 1: Delete the knowledge base record first (mark as deleted)COMMENT
LOWinternal/application/service/knowledgebase.go1038 // Step 2: Enqueue async task for heavy cleanup operationsCOMMENT
LOWinternal/application/service/knowledgebase.go1129 // Step 1: Get all knowledge entries in this knowledge baseCOMMENT
LOWinternal/application/service/knowledgebase.go1149 // Step 2: Delete all knowledge entries and their resourcesCOMMENT
LOWinternal/application/service/knowledge_process.go3058 // Step 2: Update knowledge status and metadataCOMMENT
LOWinternal/application/service/knowledge_process.go3070 // Step 3: Trigger async re-parsing based on knowledge typeCOMMENT
LOWinternal/application/service/knowledge_process.go4174 // Step 2: Store images and update markdown referencesCOMMENT
LOWinternal/application/service/knowledge_process.go4242 // Step 3: Split into chunks using Go chunker. Line endings and inlineCOMMENT
LOWinternal/application/service/knowledge_process.go4302 // Step 4: Process chunks (vectorize + index + enqueue async tasks)COMMENT
LOW⚡internal/application/service/chat_pipeline/merge.go55 // Step 1: Select inputCOMMENT
LOW⚡internal/application/service/chat_pipeline/merge.go58 // Step 2: Initial dedupCOMMENT
LOW⚡internal/application/service/chat_pipeline/merge.go61 // Step 3: Inject history referencesCOMMENT
LOW⚡internal/application/service/chat_pipeline/merge.go76 // Step 4: Resolve parent chunksCOMMENT
LOW⚡internal/application/service/chat_pipeline/merge.go79 // Step 5: Group by knowledge/chunkType and merge overlapping rangesCOMMENT
LOW⚡internal/application/service/chat_pipeline/merge.go82 // Step 6: Populate FAQ answersCOMMENT
LOW⚡internal/application/service/chat_pipeline/merge.go85 // Step 7: Expand short contextsCOMMENT
LOW⚡internal/application/service/chat_pipeline/merge.go91 // Step 8: Final dedup — catches exact duplicates plus partial content overlapsCOMMENT
LOW…plication/service/chat_pipeline/extract_entity_test.go330 const prose = "## Step 1: Entity Extraction\n1. Romeo and Juliet is a play"CODE
LOW⚡internal/infrastructure/chunker/splitter.go294 // Step 1: Find protected spansCOMMENT
LOW⚡internal/infrastructure/chunker/splitter.go297 // Step 2: Split non-protected regions by separators, keep protected as atomic units.COMMENT
LOW⚡internal/infrastructure/chunker/splitter.go302 // Step 3: Merge units into chunks with overlapCOMMENT
LOW⚡internal/event/example_test.go65 // Step 1: Query receivedCOMMENT
LOW⚡internal/event/example_test.go72 // Step 2: Query rewriteCOMMENT
LOW⚡internal/event/example_test.go79 // Step 3: RetrievalCOMMENT
LOW⚡internal/event/example_test.go86 // Step 4: RerankCOMMENT
Excessive Try-Catch Wrapping94 hits · 88 pts
SeverityFileLineSnippetContext
LOWrerank_server_demo.py52except Exception as e:CODE
LOWdocreader/config.py29 except Exception:CODE
LOWdocreader/preprocess.py253 except Exception:CODE
LOWdocreader/preprocess_worker.py109 except Exception:CODE
LOWdocreader/main.py95 except Exception:CODE
LOWdocreader/main.py143 except Exception:CODE
LOWdocreader/main.py265 except Exception as e:CODE
LOWdocreader/main.py316 except Exception as e:CODE
LOWdocreader/main.py363 except Exception:CODE
LOWdocreader/tests/test_ssrf_proxy.py105 except Exception:CODE
LOWdocreader/splitter/splitter.py487 except Exception as e:CODE
LOWdocreader/splitter/splitter.py526 except Exception as e:CODE
MEDIUMdocreader/parser/pdf_parser.py1437def _page_geometry(page):CODE
LOW⚡docreader/parser/pdf_parser.py719 except Exception:CODE
LOW⚡docreader/parser/pdf_parser.py725 except Exception:CODE
LOW⚡docreader/parser/pdf_parser.py730 except Exception:CODE
LOWdocreader/parser/pdf_parser.py223 except Exception:CODE
LOWdocreader/parser/pdf_parser.py703 except Exception:CODE
LOWdocreader/parser/pdf_parser.py764 except Exception:CODE
LOWdocreader/parser/pdf_parser.py781 except Exception:CODE
LOWdocreader/parser/pdf_parser.py809 except Exception:CODE
LOWdocreader/parser/pdf_parser.py826 except Exception:CODE
LOWdocreader/parser/pdf_parser.py1360 except Exception:CODE
LOWdocreader/parser/pdf_parser.py1430 except Exception:CODE
LOWdocreader/parser/pdf_parser.py1440 except Exception:CODE
LOWdocreader/parser/pdf_parser.py1563 except Exception:CODE
LOWdocreader/parser/pdf_parser.py1588 except Exception:CODE
LOWdocreader/parser/pdf_parser.py1710 except Exception:CODE
LOWdocreader/parser/pdf_parser.py1870 except Exception:CODE
LOWdocreader/parser/pdf_parser.py1920 except Exception:CODE
LOWdocreader/parser/pdf_parser.py1927 except Exception:CODE
LOWdocreader/parser/pdf_parser.py2106 except Exception as e:CODE
LOWdocreader/parser/pdf_parser.py2222 except Exception:CODE
LOWdocreader/parser/pdf_parser.py2254 except Exception:CODE
LOWdocreader/parser/image_preprocess.py375 except Exception as e:CODE
LOWdocreader/parser/opendataloader_parser.py101 except Exception as e:CODE
LOWdocreader/parser/html_parser.py55 except Exception as exc: # never fail a parse the full conversion can serveCODE
LOWdocreader/parser/markitdown_parser.py89 except Exception as exc:CODE
LOWdocreader/parser/markitdown_parser.py117 except Exception as exc:CODE
LOWdocreader/parser/markitdown_parser.py151 except Exception:CODE
LOWdocreader/parser/registry.py131 except Exception as e:CODE
LOW⚡docreader/parser/docx_parser.py469 except Exception as e:CODE
LOW⚡docreader/parser/docx_parser.py472 except Exception as e:CODE
LOW⚡docreader/parser/docx_parser.py1639 except Exception as e:CODE
LOW⚡docreader/parser/docx_parser.py1647 except Exception as e:CODE
LOW⚡docreader/parser/docx_parser.py1653 except Exception as e:CODE
LOWdocreader/parser/docx_parser.py263 except Exception as exc:CODE
LOWdocreader/parser/docx_parser.py307 except Exception as e:CODE
LOWdocreader/parser/docx_parser.py337 except Exception as e:CODE
LOWdocreader/parser/docx_parser.py416 except Exception as backup_error:CODE
LOWdocreader/parser/docx_parser.py692 except Exception as e:CODE
LOWdocreader/parser/docx_parser.py714 except Exception as e:CODE
LOWdocreader/parser/docx_parser.py979 except Exception as e:CODE
LOWdocreader/parser/docx_parser.py1064 except Exception as e:CODE
LOWdocreader/parser/docx_parser.py1142 except Exception as e:CODE
LOWdocreader/parser/docx_parser.py1160 except Exception as e:CODE
LOWdocreader/parser/docx_parser.py1250 except Exception as e:CODE
LOWdocreader/parser/docx_parser.py1287 except Exception as e:CODE
LOWdocreader/parser/docx_parser.py1408 except Exception as e:CODE
LOWdocreader/parser/docx_parser.py1441 except Exception as e:CODE
34 more matches not shown…
Modern AI Meta-Vocabulary22 hits · 71 pts
SeverityFileLineSnippetContext
MEDIUMCHANGELOG.md146- **NEW**: **Model catalog** — model integration is rebuilt on protocol, vendor and catalog layers (#3470, #3589): 27 buCODE
MEDIUMfrontend/src/utils/wikiToolReferences.test.ts50 <content># RAG\n\nFull **Markdown** body.</content>CODE
MEDIUMfrontend/src/utils/wikiToolReferences.test.ts58 assert.equal(refs[0]?.content, '# RAG\n\nFull **Markdown** body.')CODE
MEDIUM⚡config/agent_type_presets.yaml32 # RAG Q&A — classic evidence-based retrieval over chunk indexes.COMMENT
MEDIUM⚡config/agent_type_presets.yaml102 # Hybrid RAG + Wiki — single agent that orchestrates both indexes.COMMENT
MEDIUM⚡config/agent_type_presets.yaml102 # Hybrid RAG + Wiki — single agent that orchestrates both indexes.COMMENT
MEDIUM⚡config/agent_type_presets.yaml138 # - KB has wiki + chunks → full "wiki-first, RAG-verify" workflowCOMMENT
MEDIUM⚡config/agent_type_presets.yaml139 # - KB has only chunks → fallback to pure RAG (see prompt's "Fallback rules")COMMENT
MEDIUM⚡config/agent_type_presets.yaml186 # ChunkTypeTableColumn chunks, which are produced by the normal RAGCOMMENT
MEDIUMconfig/prompt_templates/intent_prompts.yaml2# Used to override the default RAG system prompt when the query intentCOMMENT
MEDIUM⚡docreader/tests/test_html_parser.py126 self.assertIn("# 深入理解 RAG 的召回策略", content)CODE
MEDIUMinternal/event/SUMMARY.md61│ └── main.go # 完整的 RAG 流程演示CODE
MEDIUMinternal/mcpserver/tools_ask.go30// agentic MCP calls without changing unrelated chat endpoints.COMMENT
MEDIUMcli/README.md99# 9. Inspect a document's chunks for RAG retrieval debugCOMMENT
MEDIUMcli/cmd/mcp/mcp.go4// the JSON-RPC 2.0 wire protocol agentic IDEs use to call external tools.COMMENT
MEDIUMcli/cmd/model/create.go132 // Mode-specific guardrails: a remote model needs a provider to routeCOMMENT
MEDIUMcli/skills/weknora-rag-search/SKILL.md8# WeKnora — retrieval & RAG queriesCOMMENT
MEDIUMcli/skills/weknora-rag-search/references/chat.md1# `chat` and `session ask` — RAG answers and raw streamsCOMMENT
MEDIUMwebsite-docs/02-architecture/04-rag-pipeline.md1# 检索问答全流程(RAG Pipeline)COMMENT
MEDIUMwebsite-docs/02-architecture/04-rag-pipeline.md300## 完整 RAG 流程图 {#_4-完整-rag-流程图}COMMENT
MEDIUMwebsite-docs/03-features/07-agent.md617### Agent 模式与普通 RAG 问答模式 {#_9-agent-模式与普通-rag-问答模式}COMMENT
MEDIUMwebsite-docs/05-clients/02-cli.md343### chat — 流式 RAG 问答(`cli/cmd/chat/chat.go`)COMMENT
Fake / Example Data70 hits · 69 pts
SeverityFileLineSnippetContext
LOWfrontend/src/utils/pageSnapshot.ts129 return collapse(control.getAttribute('placeholder') || control.getAttribute('title') || control.getAttribute('name'))CODE
LOWfrontend/src/utils/pageSnapshot.ts145 isSecretLabel(label, control.getAttribute('name'), control.id, control.getAttribute('placeholder'))CODE
LOWfrontend/src/utils/pageSnapshot.ts320 ? field.box.querySelector('input')?.getAttribute('placeholder')CODE
LOWfrontend/src/utils/pageSnapshot.ts321 : field.control.getAttribute('placeholder'))CODE
LOWfrontend/src/components/UserMenu.vue289 email: authStore.user?.email || 'user@example.com',CODE
LOWfrontend/src/i18n/embed.ts549 "placeholder": "直接向模型提问",CODE
LOWfrontend/src/i18n/embed.ts1147 "placeholder": "直接向模型提問",CODE
LOWfrontend/src/i18n/embed.ts1745 "placeholder": "モデルに直接質問",CODE
LOWfrontend/src/i18n/embed.ts2343 "placeholder": "Ask questions directly to the model",CODE
LOWfrontend/src/views/system/ModelCatalogFieldControl.vue2 <t-input v-if="kind === 'text'" :model-value="modelValue" :placeholder="placeholder" class="field-control--text"CODE
LOWfrontend/src/views/system/ModelCatalogFieldControl.vue5 :placeholder="placeholder" class="field-control--number" @update:model-value="emit('update:modelValue', $event)" />CODE
LOWinternal/handler/system_password_reset_test.go87 ID: "admin-user", Username: "admin", Email: "admin@example.com",CODE
LOWinternal/handler/system_password_reset_test.go92 "email": "admin@example.com", "new_password": "FreshPass9",CODE
LOWinternal/middleware/auth_role_test.go246 svc.seedActive("placeholder", 8, types.TenantRoleAdmin)CODE
LOWinternal/datasource/connector/feishu/core/board_test.go31 TenantAccessToken: "fake-token", Expire: 7200,CODE
LOWinternal/datasource/connector/feishu/core/board_test.go147 TenantAccessToken: "fake-token", Expire: 7200,CODE
LOWinternal/datasource/connector/feishu/core/board_test.go203 TenantAccessToken: "fake-token", Expire: 7200,CODE
LOWinternal/datasource/connector/feishu/core/board_test.go393 TenantAccessToken: "fake-token", Expire: 7200,CODE
LOW…/datasource/connector/feishu/core/client_retry_test.go24 TenantAccessToken: "fake-token",CODE
LOW…/datasource/connector/feishu/core/client_retry_test.go220 _, _ = io.WriteString(w, `{"code":0,"tenant_access_token":"fake-token","expire":7200,"pad":"`)CODE
LOW…asource/connector/feishu/wiki/connector_golden_test.go67 writeJSON(w, core.TokenResponse{ApiResponse: core.ApiResponse{Code: 0}, TenantAccessToken: "fake-token", Expire: 7200}CODE
LOW…asource/connector/feishu/wiki/connector_stream_test.go23 writeJSON(w, core.TokenResponse{ApiResponse: core.ApiResponse{Code: 0}, TenantAccessToken: "fake-token", Expire: 7200}CODE
LOW…asource/connector/feishu/wiki/connector_stream_test.go373 TenantAccessToken: "fake-token",CODE
LOW…nal/datasource/connector/feishu/wiki/connector_test.go43 TenantAccessToken: "fake-token",CODE
LOW…nal/datasource/connector/feishu/wiki/connector_test.go157 TenantAccessToken: "fake-token",CODE
LOW…nal/datasource/connector/feishu/wiki/connector_test.go1270 TenantAccessToken: "fake-token",CODE
LOW…nal/datasource/connector/feishu/wiki/connector_test.go1353 TenantAccessToken: "fake-token",CODE
LOW…nal/datasource/connector/feishu/wiki/connector_test.go1476 TenantAccessToken: "fake-token",CODE
LOW…nal/datasource/connector/feishu/wiki/connector_test.go1627 writeJSON(w, core.TokenResponse{ApiResponse: core.ApiResponse{Code: 0}, TenantAccessToken: "fake-token", Expire: 7200}CODE
LOW…nal/datasource/connector/feishu/wiki/connector_test.go1700 writeJSON(w, core.TokenResponse{ApiResponse: core.ApiResponse{Code: 0}, TenantAccessToken: "fake-token", Expire: 7200}CODE
LOW…ce/connector/feishu/wiki/connector_convergence_test.go45 writeJSON(w, core.TokenResponse{ApiResponse: core.ApiResponse{Code: 0}, TenantAccessToken: "fake-token", Expire: 7200}CODE
LOWinternal/datasource/connector/feishu/wiki/paths_test.go39 TenantAccessToken: "fake-token", Expire: 7200,CODE
LOW…asource/connector/feishu/drive/connector_paths_test.go48 TenantAccessToken: "fake-token", Expire: 7200,CODE
LOW…l/datasource/connector/feishu/drive/pagination_test.go100 TenantAccessToken: "fake-token",CODE
LOW…datasource/connector/feishu/drive/drive_blocks_test.go41 writeJSON(w, core.TokenResponse{ApiResponse: core.ApiResponse{Code: 0}, TenantAccessToken: "fake-token", Expire: 7200}CODE
LOWinternal/datasource/connector/confluence/types_test.go35 "username": "user@example.com",CODE
LOWinternal/datasource/connector/confluence/types_test.go47 "edition": "cloud", "base_url": "https://team.atlassian.net/wiki", "username": "user@example.com",CODE
LOWinternal/datasource/connector/confluence/types_test.go50 if err != nil || !cfg.cloud() || cfg.username != "user@example.com" || cfg.secret != "token" {CODE
LOWinternal/datasource/connector/confluence/types_test.go65 "username": "user@example.com", "api_token": "token",CODE
LOWinternal/agent/prompts_wiki.go148 "name": "Acme Corp",CODE
LOWinternal/agent/prompts_wiki.go233 "name": "Acme Corp",CODE
LOWinternal/agent/prompts_wiki.go497- "Acme Corp" → "Acme Corporation" (same company, abbreviation)CODE
LOWinternal/agent/tools/sandbox_edit_test.go278 mustEditSandboxArgs(path, "placeholder", "这不是一个\"大干快上\"的夜晚", false),CODE
LOWinternal/application/repository/wiki_page_test.go907 partial.Title = "Acme Corp"CODE
LOWinternal/application/repository/wiki_page_test.go958 assert.Greater(t, wikiTrigramJaccard(wikiTitleTrigrams("Acme Corporation"), wikiTitleTrigrams("Acme Corp")), 0.0)CODE
LOWinternal/application/service/wiki_ingest_dedup_test.go221// filter keeps legitimate merge candidates like "Acme Corp" ↔ "Acme Corporation".COMMENT
LOWinternal/application/service/wiki_ingest_dedup_test.go225 nameGramSets: gramsPerSurface([]string{"Acme Corp"}),CODE
LOW…nal/application/service/user_token_persistence_test.go45 user := persistedTestUser(t, 0, "user@example.com", "Secure9!")CODE
LOW…nal/application/service/user_token_persistence_test.go62 user := persistedTestUser(t, 1, "user@example.com", "Secure9!")CODE
LOW…nal/application/service/user_token_persistence_test.go92 user := persistedTestUser(t, 1, "user@example.com", "Secure9!")CODE
LOWinternal/application/service/wiki_ingest_dedup.go42 // is excluded while "Acme Corp" vs "Acme Corporation" (Jaccard ≈ 0.5)COMMENT
LOWinternal/application/service/wiki_ingest_dedup.go208// model formatting drift such as "Acme Corp" vs "acme corp".COMMENT
LOWinternal/application/service/user_oidc_verify_test.go82 "email": "user@example.com",CODE
LOWinternal/application/service/user_oidc_verify_test.go109 if got, _ := claims["email"].(string); got != "user@example.com" {CODE
LOWinternal/application/service/user_oidc_verify_test.go135 forgedPayload["email"] = "admin@example.com"CODE
LOWinternal/application/service/user_oidc_verify_test.go332 "email": "admin@example.com",CODE
LOWinternal/application/service/user_oidc_verify_test.go402 if info.Email != "user@example.com" {CODE
LOWinternal/application/service/wiki_page_revision_test.go115 edit.Title = "Acme Corp"CODE
LOWinternal/application/service/wiki_ingest_test.go46 {"Acme Corp", "acme-corp"},CODE
LOW…ternal/infrastructure/chunker/heading_splitter_test.go13 body := strings.Repeat("Lorem ipsum dolor sit amet consectetur adipiscing elit. ", 4)CODE
10 more matches not shown…
Deep Nesting80 hits · 65 pts
SeverityFileLineSnippetContext
LOWrerank_server_demo.py67CODE
LOWdocreader/preprocess_worker.py34CODE
LOWdocreader/main.py271CODE
LOWdocreader/tests/test_source_locator_pdf.py53CODE
LOWdocreader/tests/test_web_parser.py100CODE
LOWdocreader/tests/test_epub_external_images.py50CODE
LOWdocreader/tests/test_xlsx_percent_format.py114CODE
LOWdocreader/tests/test_pdf_router.py115CODE
LOWdocreader/tests/test_pdf_router.py163CODE
LOWdocreader/tests/test_epub_parser.py170CODE
LOWdocreader/tests/test_epub_parser.py357CODE
LOWdocreader/tests/test_excel_parser.py21CODE
LOWdocreader/tests/test_excel_parser.py223CODE
LOWdocreader/tests/test_request_memory.py37CODE
LOWdocreader/tests/test_docreader_memory.py117CODE
LOWdocreader/tests/test_ssrf_proxy.py60CODE
LOWdocreader/tests/test_ssrf_proxy.py68CODE
LOWdocreader/tests/preprocess_worker_fixture.py15CODE
LOWdocreader/tests/test_image_preprocess.py263CODE
LOWdocreader/tests/test_pdf_embedded_images.py328CODE
LOWdocreader/tests/test_pdf_embedded_images.py353CODE
LOWdocreader/tests/test_docreader_stream.py40CODE
LOWdocreader/splitter/splitter.py187CODE
LOWdocreader/splitter/splitter.py424CODE
LOWdocreader/splitter/header_hook.py143CODE
LOWdocreader/utils/ssrf_proxy.py90CODE
LOWdocreader/utils/request.py87CODE
LOWdocreader/utils/ssrf.py163CODE
LOWdocreader/utils/endecode.py23CODE
LOWdocreader/utils/endecode.py138CODE
LOWdocreader/parser/excel_convert.py49CODE
LOWdocreader/parser/pdf_parser.py344CODE
LOWdocreader/parser/pdf_parser.py638CODE
LOWdocreader/parser/pdf_parser.py1648CODE
LOWdocreader/parser/pdf_parser.py1894CODE
LOWdocreader/parser/pdf_parser.py2300CODE
LOWdocreader/parser/opendataloader_parser.py75CODE
LOWdocreader/parser/ppt_convert.py37CODE
LOWdocreader/parser/markdown_parser.py176CODE
LOWdocreader/parser/docx_merge.py24CODE
LOWdocreader/parser/docx_merge.py98CODE
LOWdocreader/parser/markitdown_parser.py40CODE
LOWdocreader/parser/xlsx_merge.py168CODE
LOWdocreader/parser/excel_parser.py87CODE
LOWdocreader/parser/docx_parser.py99CODE
LOWdocreader/parser/docx_parser.py118CODE
LOWdocreader/parser/docx_parser.py1292CODE
LOWdocreader/parser/docx_parser.py1447CODE
LOWdocreader/parser/docx_parser.py1547CODE
LOWdocreader/parser/docx_parser.py103CODE
LOWdocreader/parser/docx_parser.py232CODE
LOWdocreader/parser/docx_parser.py342CODE
LOWdocreader/parser/docx_parser.py936CODE
LOWdocreader/parser/docx_parser.py995CODE
LOWdocreader/parser/docx_parser.py1114CODE
LOWdocreader/parser/docx_parser.py1163CODE
LOWdocreader/parser/xmind_parser.py34CODE
LOWdocreader/parser/xmind_parser.py142CODE
LOWdocreader/parser/epub_parser.py69CODE
LOWdocreader/parser/doc_parser.py141CODE
20 more matches not shown…
Magic Placeholder Names10 hits · 50 pts
SeverityFileLineSnippetContext
HIGH…tend/src/views/integrations/ApiIntegrationSettings.vue1085 const apiKeyHeader = ` -H "X-API-Key: ${apiKey.value ? '<API_KEY>' : '<YOUR_API_KEY>'}"`CODE
HIGH…tend/src/views/integrations/ApiIntegrationSettings.vue1085 const apiKeyHeader = ` -H "X-API-Key: ${apiKey.value ? '<API_KEY>' : '<YOUR_API_KEY>'}"`CODE
HIGHfrontend/src/views/integrations/ClawSkillLanding.vue134 return `export WEKNORA_BASE_URL="${base}"\nexport WEKNORA_API_KEY="sk-your-api-key"`CODE
HIGHfrontend/src/views/integrations/mcpServerIntegration.ts6export const MCP_TOKEN_PLACEHOLDER = '<YOUR_TOKEN>'CODE
HIGHmcp-server/PROJECT_SUMMARY.md134export WEKNORA_API_KEY="your_api_key"CODE
HIGHmcp-server/EXAMPLES.md421 "WEKNORA_API_KEY": "your_api_key"CODE
HIGHmcp-server/INSTALL.md188Environment=WEKNORA_API_KEY=your_api_keyCODE
HIGHwebsite-docs/05-clients/03-go-sdk.md499 client.WithAPIKey("your-api-key"),CODE
HIGHwebsite-docs/05-clients/03-go-sdk.md551 client.WithAPIKey("your-api-key"))CODE
HIGHwebsite-docs/05-clients/03-go-sdk.md610 client.WithAPIKey("your-api-key"))CODE
AI Slop Vocabulary14 hits · 42 pts
SeverityFileLineSnippetContext
MEDIUMcmd/desktop/main.go45// and instead uses robust DOM-traversal via el.closest() plus a Y-positionCOMMENT
MEDIUMfrontend/package-lock.json4763 "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz",CODE
MEDIUMfrontend/src/components/css/chat-timeline-loading.less4// One full gradient width (background-size is 200%) so the loop is seamless.COMMENT
MEDIUMdocreader/parser/image_preprocess.py249 """Outer SUPPORTING line for one side: robust slope + outward shift.STRING
MEDIUMinternal/searchutil/normalize.go11// NormalizeKeywordScores normalizes keyword match scores in-place using robust percentile bounds.COMMENT
MEDIUM…ion/repository/retriever/opensearch/repository_test.go247// parseMajorMinor — robust semver parsingCOMMENT
MEDIUMcli/cmd/doctor/doctor.go288// but type-assertion is structurally more robust to scheme renames.COMMENT
MEDIUMcli/acceptance/e2e/e2e_test.go48 // the most robust path for CI and local e2e alike.COMMENT
MEDIUM⚡.github/workflows/dsh-plugin.yml9# tool calls through the harness agent loop against a mock backendCOMMENT
MEDIUM⚡.github/workflows/dsh-plugin.yml12# The e2e job pins the harness version so a plugin change is the only thing thatCOMMENT
MEDIUM⚡.github/workflows/dsh-plugin.yml14# is allowed to fail: it exists to notice a harness breaking change early, sinceCOMMENT
MEDIUM.github/workflows/dsh-plugin.yml30 # Monday 03:00 UTC: catch a harness release that breaks the plugin.COMMENT
MEDIUM.github/workflows/dsh-plugin.yml42 # The harness release this plugin is verified against. Bump it together withCOMMENT
MEDIUMwebsite-docs/package-lock.json3764 "resolved": "https://mirrors.tencent.com/npm/robust-predicates/-/robust-predicates-3.0.3.tgz",CODE
Modern Structural Boilerplate41 hits · 41 pts
SeverityFileLineSnippetContext
LOWdocreader/auth.py27logger = logging.getLogger(__name__)CODE
LOWdocreader/config.py6logger = logging.getLogger(__name__)CODE
LOWdocreader/preprocess.py23logger = logging.getLogger(__name__)CODE
LOWdocreader/preprocess_worker.py12logger = logging.getLogger(__name__)CODE
LOWdocreader/main.py57logger = logging.getLogger(__name__)CODE
LOWdocreader/splitter/splitter.py32logger = logging.getLogger(__name__)CODE
LOWdocreader/utils/tempfile.py5logger = logging.getLogger(__name__)CODE
LOWdocreader/utils/request.py10logger = logging.getLogger(__name__)CODE
LOWdocreader/utils/request.py17def set_request_id(request_id: str) -> None:CODE
LOWdocreader/utils/endecode.py20logger = logging.getLogger(__name__)CODE
LOWdocreader/models/document.py88 def set_content(self, content: str) -> None:CODE
LOWdocreader/parser/excel_convert.py13logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/pdf_parser.py36logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/image_preprocess.py40logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/opendataloader_parser.py30logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/ppt_convert.py13logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/markdown_parser.py27logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/html_parser.py16logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/docx_merge.py12logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/markitdown_parser.py24logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/docx2_parser.py7logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/xlsx_merge.py11logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/excel_parser.py30logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/registry.py21logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/docx_parser.py52logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/concurrency.py6logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/__init__.py28__all__ = [CODE
LOWdocreader/parser/base_parser.py9logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/parser.py9logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/xlsx_repair.py12logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/image_parser.py8logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/pptx_media.py17logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/epub_parser.py23logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/chain_parser.py16logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/doc_parser.py17logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/doc_parser.py167logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/web_parser.py20logger = logging.getLogger(__name__)CODE
LOWdocreader/parser/mhtml_parser.py22logger = logging.getLogger(__name__)CODE
LOWmcp-server/__init__.py14__all__ = ["WeKnoraClient", "run"]CODE
LOWmcp-server/upload_paths.py11def set_active_transport(transport: str) -> None:CODE
LOWmcp-server/weknora_mcp_server.py28logger = logging.getLogger(__name__)CODE
Unused Imports38 hits · 38 pts
SeverityFileLineSnippetContext
LOWrerank_server_demo.py5CODE
LOWdocreader/tests/test_pdf_router.py11CODE
LOWdocreader/utils/ssrf_proxy.py7CODE
LOWdocreader/utils/ssrf.py7CODE
LOWdocreader/parser/excel_convert.py3CODE
LOWdocreader/parser/opendataloader_parser.py11CODE
LOWdocreader/parser/ppt_convert.py3CODE
LOWdocreader/parser/markdown_parser.py16CODE
LOWdocreader/parser/docx_merge.py3CODE
LOWdocreader/parser/xlsx_merge.py3CODE
LOWdocreader/parser/source_locator.py11CODE
LOWdocreader/parser/__init__.py16CODE
LOWdocreader/parser/__init__.py17CODE
LOWdocreader/parser/__init__.py18CODE
LOWdocreader/parser/__init__.py19CODE
LOWdocreader/parser/__init__.py20CODE
LOWdocreader/parser/__init__.py21CODE
LOWdocreader/parser/__init__.py22CODE
LOWdocreader/parser/__init__.py23CODE
LOWdocreader/parser/__init__.py24CODE
LOWdocreader/parser/__init__.py24CODE
LOWdocreader/parser/__init__.py25CODE
LOWdocreader/parser/xlsx_repair.py3CODE
LOWdocreader/parser/pptx_media.py3CODE
LOWdocreader/parser/doc_parser.py6CODE
LOWmcp-server/test_module.py34CODE
LOWmcp-server/test_module.py35CODE
LOWmcp-server/__init__.py12CODE
LOWmcp-server/__init__.py12CODE
LOWmcp-server/upload_paths.py3CODE
LOWmcp-server/main.py34CODE
LOWmcp-server/main.py35CODE
LOWmcp-server/check_imports.py17CODE
LOWmcp-server/check_imports.py24CODE
LOWmcp-server/check_imports.py31CODE
LOWdocs/images/readme/src/generate.py13CODE
LOWexamples/mcp-demo/server.py18CODE
LOWexamples/mcp-demo/test_tools.py4CODE
Hallucination Indicators3 hits · 35 pts
SeverityFileLineSnippetContext
CRITICALfrontend/src/views/agent/AgentEditorModal.vue3030 formData.value.config.question_suggestions.starters.items.splice(index, 1);CODE
CRITICAL…src/views/knowledge/components/UploadConfirmDialog.vue809 uiState.value.imageActions.ocr.on.map((cond) =>CODE
CRITICAL⚡dataset/tests/test_qa_dataset_model.py144 self.client.chat.completions.create.assert_not_called()CODE
Synthetic Comment Markers4 hits · 30 pts
SeverityFileLineSnippetContext
HIGH…ntend/src/views/knowledge/KnowledgeBaseEditorModal.vue746// AI-generated knowledge-base description (edit mode only). Kept outsideCOMMENT
HIGHinternal/middleware/access_test.go24// EnableCrossTenantAccess flag set as requested. EnableRBAC is left atCOMMENT
HIGHinternal/types/interfaces/wiki_page.go393 // that do not have AI-generated document questions or recommended FAQ entries.COMMENT
HIGHinternal/application/repository/wiki_page.go1311// the KB has no FAQ entries or AI-generated document questions (typical forCOMMENT
Self-Referential Comments8 hits · 20 pts
SeverityFileLineSnippetContext
MEDIUMdocreader/parser/excel_parser.py142 # Create a chunk for this row with position trackingCOMMENT
MEDIUMdocreader/parser/docx_parser.py505 # Create an estimated page mappingCOMMENT
MEDIUMdocreader/parser/docx_parser.py1096 # Create the final text with proper orderingCOMMENT
MEDIUMdocreader/parser/docx_parser.py1234 # Create a new imageCOMMENT
MEDIUMdocreader/parser/docx_parser.py1276 # Create a temporary fileCOMMENT
MEDIUMdocreader/parser/chain_parser.py29 # Create a custom FirstParser with specific parser classesSTRING
MEDIUMdocreader/parser/chain_parser.py103 # Create a custom PipelineParser with specific parser classesSTRING
MEDIUMdocreader/parser/doc_parser.py273 # Create a temporary directory to store the converted fileCOMMENT
Docstring Block Structure3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHdocreader/utils/endecode.py24Convert image to base64 encoded string. This function handles multiple image input formats and converts them toSTRING
HIGHdocreader/utils/endecode.py79Decode a base64 encoded image string back to bytes. This function converts a base64 encoded string representation oSTRING
HIGHdocreader/parser/web_parser.py246Parse web page content into a Document object. Args: content: URL encoded as bytes ReturnsSTRING
Redundant / Tautological Comments9 hits · 12 pts
SeverityFileLineSnippetContext
LOWdocreader/splitter/splitter.py250 # Check if adding this split would exceed chunk sizeCOMMENT
LOWdocreader/parser/docx_parser.py324 # Check if the generated text is emptyCOMMENT
LOWdocreader/parser/docx_parser.py787 # Check if the document contains images to optimize processing speedCOMMENT
LOWdocreader/parser/docx_parser.py1011 # Check if there are imagesCOMMENT
LOWdocreader/parser/docx_parser.py1077 if line_data.content_sequence: # Check if we have processed_contentCODE
LOWdocreader/parser/doc_parser.py220 # Check if antiword is installedCOMMENT
LOWdocreader/parser/doc_parser.py258 # Check if LibreOffice or OpenOffice is installedCOMMENT
LOWdocreader/parser/doc_parser.py354 # Check if path is set in environment variableCOMMENT
LOWscripts/migrate.sh26# Check if migrate tool is installedCOMMENT
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMconfig/prompt_templates/fallback.yaml84 content: "Sorry, I'm unable to answer this question at the moment. Please try rephrasing your question, or contact cCODE
Dead Code1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMdocreader/auth.py129CODE
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWscripts/build-anydoc-lib.sh8# Usage:COMMENT