Repository Analysis

Tencent/WeKnora

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

3.1 Likely human-written View on GitHub
3.1
Adjusted Score
3.1
Raw Score
100%
Time Factor
2026-05-30
Last Push
15,802
Stars
Go
Language
500,517
Lines of Code
1559
Files
1130
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 30MEDIUM 120LOW 980

Pattern Findings

1130 matches across 16 categories. Click a row to expand file-level details.

Over-Commented Block687 hits · 684 pts
SeverityFileLineSnippet
LOWdocker-compose.yml41 - ./config/config.yaml:/app/config/config.yaml
LOWdocker-compose.yml481 volumes:
LOWdocker-compose.yml561 # - redis :复用 WeKnora-redis 的 DB 1(WeKnora 自己用 DB 0)
LOWcmd/server/bootstrap.go21// may be promoted to system administrator when the deployment has no
LOWcmd/server/main.go1// Package main is the main package for the WeKnora server
LOWfrontend/src/composables/useResourcePins.ts1// useResourcePins – per-(user, tenant) favorites + per-user recents for
LOWfrontend/src/composables/useListUrlState.ts1// useListUrlState keeps a list view's filter state (sidebar scope, creator
LOWfrontend/src/composables/useFont.ts1import { ref } from 'vue'
LOWfrontend/src/composables/useFont.ts21// system sans, PingFang, and Helvetica are all visually close enough
LOWfrontend/src/composables/useFont.ts221 }
LOWfrontend/src/wailsjs/runtime/runtime.d.ts101// *Windows only*
LOWfrontend/src/stores/settings.ts421 },
LOWfrontend/src/stores/auth.ts101 // middleware (see internal/middleware/rbac.go). A user who flips this
LOWfrontend/src/utils/workspaceNotifyContent.ts1// Shared content renderer for the post-login and post-tenant-switch
LOWfrontend/src/utils/loginNotify.ts1// Rich "you're now in {workspace} as {role}" notification for the
LOWfrontend/src/utils/finalAnswer.ts1// finalAnswer.ts
LOW…ntend/src/components/knowledge-processing-timeline.vue41}
LOW…ntend/src/components/knowledge-processing-timeline.vue101const nowTick = ref(Date.now())
LOW…ntend/src/components/knowledge-processing-timeline.vue121// Tracks consecutive fetch failures so the "更新于" caption can surface
LOW…ntend/src/components/knowledge-processing-timeline.vue201}
LOW…ntend/src/components/knowledge-processing-timeline.vue301// shouldPollNow encodes the per-tick "do I fetch?" decision. Split
LOW…ntend/src/components/knowledge-processing-timeline.vue341 try {
LOWfrontend/src/api/knowledge-base/index.ts21}
LOWfrontend/src/views/settings/Settings.vue221 key: string
LOW…ntend/src/views/chat/components/AgentStreamDisplay.vue1101 // "\n\n" before a tool call (see e.g. qwen3 emitting blank lines between
LOWfrontend/src/views/agent/AgentEditorModal.vue2041 return t('agentEditor.agentType.kbMismatch.generic');
LOWfrontend/src/views/agent/AgentEditorModal.vue2541// 监听知识库启用状态变化:
LOWfrontend/src/views/knowledge/KnowledgeBase.vue221 // those as tenant-owned so the role gate applies (Admin+ can manage,
LOWfrontend/src/views/knowledge/KnowledgeBase.vue241// active switcher rather than "how this KB became visible to me". Presence
LOWfrontend/src/views/knowledge/KnowledgeBaseList.vue1041// 是否在共享区展示「可编辑 / 仅查看」二级分组:仅对中间档(contributor / editor)
LOWfrontend/src/views/knowledge/KnowledgeBaseList.vue1341// no authority to use.
LOW…nd/src/views/knowledge/settings/KBChunkingSettings.vue221 file_types: string[]
LOWfrontend/src/views/knowledge/wiki/WikiBrowser.vue701// Per-type pagination state for the sidebar. 4万-page wikis used to load
LOWfrontend/src/views/knowledge/wiki/WikiBrowser.vue721 initialized: boolean // true once the first page has been fetched
LOWfrontend/src/views/knowledge/wiki/WikiBrowser.vue761// Log swaps the reader into a dedicated feed view below.
LOWfrontend/src/views/knowledge/wiki/WikiBrowser.vue941}
LOWfrontend/src/views/knowledge/wiki/WikiBrowser.vue1041// type-filtered pages, soft-deleted neighbors), NOT pages we can
LOWfrontend/src/views/knowledge/wiki/WikiBrowser.vue1161 for (const n of data.nodes) {
LOWfrontend/src/views/knowledge/wiki/WikiBrowser.vue1181// ego mode, "X / Y 个节点" in overview)
LOWfrontend/src/views/knowledge/wiki/WikiBrowser.vue1301// The outer scroll container — the RecycleScroller runs in page-mode and
LOWfrontend/src/views/knowledge/wiki/WikiBrowser.vue1561// loadMoreIndexSection.
LOWfrontend/src/views/knowledge/wiki/WikiBrowser.vue1621}
LOWfrontend/src/views/knowledge/wiki/WikiBrowser.vue1661 const label = getTypeLabel(type)
LOWfrontend/src/views/knowledge/wiki/WikiBrowser.vue1701 } catch (e) {
LOWfrontend/src/views/knowledge/wiki/WikiBrowser.vue2161 data.nodes = data.nodes.filter(n => !toRemove.has(n.slug))
LOWfrontend/src/views/knowledge/wiki/WikiBrowser.vue2501// Color map for node types
LOWfrontend/src/views/knowledge/wiki/WikiBrowser.vue2741 // node has neighbors the user hasn't loaded yet. Without this signal
LOWfrontend/src/views/knowledge/wiki/WikiBrowser.vue2901 } else {
LOWfrontend/src/views/knowledge/wiki/WikiBrowser.vue3461let graphNodeElsRef: { g: SVGGElement; circle: SVGCircleElement; text: SVGTextElement; activeRing: SVGCircleElement; nod
LOW…end/src/views/knowledge/components/FAQEntryManager.vue1021// role is irrelevant — only the share grant counts. tenant_id comparison
LOWconfig/agent_type_presets.yaml1# Agent Type Presets for Smart-Reasoning Mode
LOWconfig/agent_type_presets.yaml21#
LOWdocreader/splitter/header_hook.py41# 初始化表头Hook配置(提供默认配置:支持Markdown表格、代码块)
LOWdocreader/utils/__init__.py1#
LOWinternal/handler/tenant.go21// through the REST API endpoints
LOWinternal/handler/tenant.go41// - config: Application configuration
LOWinternal/handler/tenant.go81 Name string `json:"name" binding:"required,min=1,max=128"`
LOWinternal/handler/tenant.go121 ))
LOWinternal/handler/tenant.go401
LOWinternal/handler/tenant.go461 secutils.SanitizeForLog(updatedTenant.Name),
627 more matches not shown…
Decorative Section Separators102 hits · 312 pts
SeverityFileLineSnippet
MEDIUMdocker-compose.dev.yml312 # ---------------------------------------------------------------------------
MEDIUMdocker-compose.dev.yml325 # ---------------------------------------------------------------------------
MEDIUMdocker-compose.yml489 # ---------------------------------------------------------------------------
MEDIUMdocker-compose.yml504 # ---------------------------------------------------------------------------
MEDIUMdocker-compose.yml556 # ---------------------------------------------------------------------------
MEDIUMdocker-compose.yml572 # ---------------------------------------------------------------------------
MEDIUMfrontend/src/views/knowledge/wiki/WikiBrowser.vue2013// ─── Bloom: additive neighbor expansion ──────────────────────────────────
MEDIUMconfig/agent_type_presets.yaml31 # --------------------------------------------------------------------------
MEDIUMconfig/agent_type_presets.yaml34 # --------------------------------------------------------------------------
MEDIUMconfig/agent_type_presets.yaml65 # --------------------------------------------------------------------------
MEDIUMconfig/agent_type_presets.yaml68 # --------------------------------------------------------------------------
MEDIUMconfig/agent_type_presets.yaml97 # --------------------------------------------------------------------------
MEDIUMconfig/agent_type_presets.yaml100 # --------------------------------------------------------------------------
MEDIUMconfig/agent_type_presets.yaml143 # --------------------------------------------------------------------------
MEDIUMconfig/agent_type_presets.yaml148 # --------------------------------------------------------------------------
MEDIUMconfig/agent_type_presets.yaml188 # --------------------------------------------------------------------------
MEDIUMconfig/agent_type_presets.yaml190 # --------------------------------------------------------------------------
MEDIUMmcp-server/weknora_mcp_server.py137 # ── UUID pattern (8-4-4-4-12 hex) ──────────────────────────────────────
MEDIUMinternal/datasource/scheduler_test.go14// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/scheduler_test.go16// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/scheduler_test.go149// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/scheduler_test.go151// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/connector/feishu/client.go317// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/connector/feishu/client.go324// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/connector/feishu/client.go440// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/connector/feishu/client.go442// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/connector/feishu/connector_test.go17// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/connector/feishu/connector_test.go19// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/connector/feishu/connector_test.go232// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/connector/feishu/connector_test.go234// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/connector/feishu/connector_test.go354// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/connector/feishu/connector_test.go356// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/connector/feishu/connector_test.go414// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/connector/feishu/connector_test.go416// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/connector/feishu/connector_test.go638// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/connector/feishu/connector_test.go640// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/connector/feishu/connector_test.go838// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/connector/feishu/connector_test.go840// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/connector/feishu/connector_test.go945// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/connector/feishu/connector_test.go947// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/connector/feishu/connector_test.go982// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/datasource/connector/feishu/connector_test.go984// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/im/service.go301// ── Redis key prefixes ──────────────────────────────────────────────────────
MEDIUMinternal/im/service.go758// ── WebSocket leader election ───────────────────────────────────────────────
MEDIUMinternal/im/service.go857// ── Cross-instance /stop via StreamManager ───────────────────────────────────
MEDIUMinternal/im/service.go1645// ── Agent tool call progress formatting ──────────────────────────────
MEDIUMinternal/im/service.go1649// ─────────────────────────────────────────────────────────────────────
MEDIUMinternal/im/service.go2363// ── File message handling ──────────────────────────────────────────────
MEDIUMinternal/im/service.go2368// ────────────────────────────────────────────────────────────────────────
MEDIUMinternal/im/ratelimit.go21// ──────────────────────────────────────────────────────────────────────────────
MEDIUMinternal/im/ratelimit.go23// ──────────────────────────────────────────────────────────────────────────────
MEDIUMinternal/im/ratelimit.go106// ──────────────────────────────────────────────────────────────────────────────
MEDIUMinternal/im/ratelimit.go108// ──────────────────────────────────────────────────────────────────────────────
MEDIUMinternal/im/qaqueue.go292// ── Redis global concurrency gate ────────────────────────────────────────────
MEDIUMinternal/im/qaqueue.go354// ── Redis global per-user counting ──────────────────────────────────────────
MEDIUMinternal/im/qaqueue.go386// ── Metrics logging ─────────────────────────────────────────────────────────
MEDIUMinternal/im/feishu/adapter.go487// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/im/feishu/adapter.go489// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/im/feishu/adapter.go561// ──────────────────────────────────────────────────────────────────────
MEDIUMinternal/im/feishu/adapter.go572// ──────────────────────────────────────────────────────────────────────
42 more matches not shown…
Hyper-Verbose Identifiers117 hits · 126 pts
SeverityFileLineSnippet
LOWfrontend/vite.config.ts19function resolveVueOfficePptxEntry(): string {
LOWfrontend/src/composables/preferenceStorage.ts81export function migratePreferencesIntoUser(): void {
LOWfrontend/src/wailsjs/go/main/App.d.ts12export function GetDesktopHTTPBindPublicSetting():Promise<boolean>;
LOWfrontend/src/wailsjs/go/main/App.d.ts14export function GetDesktopHTTPPortSetting():Promise<number>;
LOWfrontend/src/wailsjs/go/main/App.d.ts16export function GetDesktopListenPublicActive():Promise<boolean>;
LOWfrontend/src/wailsjs/go/main/App.d.ts18export function SetDesktopHTTPBindPublicSetting(arg1:boolean):Promise<void>;
LOWfrontend/src/wailsjs/go/main/App.d.ts20export function SetDesktopHTTPPortSetting(arg1:number):Promise<void>;
LOWfrontend/src/wailsjs/go/main/App.js21export function GetDesktopHTTPBindPublicSetting() {
LOWfrontend/src/wailsjs/go/main/App.js25export function GetDesktopHTTPPortSetting() {
LOWfrontend/src/wailsjs/go/main/App.js29export function GetDesktopListenPublicActive() {
LOWfrontend/src/wailsjs/go/main/App.js33export function SetDesktopHTTPBindPublicSetting(arg1) {
LOWfrontend/src/wailsjs/go/main/App.js37export function SetDesktopHTTPPortSetting(arg1) {
LOWfrontend/src/wailsjs/runtime/runtime.d.ts103export function WindowSetSystemDefaultTheme(): void;
LOWfrontend/src/wailsjs/runtime/runtime.d.ts203export function WindowSetBackgroundColour(R: number, G: number, B: number, A: number): void;
LOWfrontend/src/wailsjs/runtime/runtime.d.ts290export function RequestNotificationAuthorization(): Promise<boolean>;
LOWfrontend/src/wailsjs/runtime/runtime.d.ts294export function CheckNotificationAuthorization(): Promise<boolean>;
LOWfrontend/src/wailsjs/runtime/runtime.d.ts302export function SendNotificationWithActions(options: NotificationOptions): Promise<void>;
LOWfrontend/src/wailsjs/runtime/runtime.d.ts306export function RegisterNotificationCategory(category: NotificationCategory): Promise<void>;
LOWfrontend/src/wailsjs/runtime/runtime.d.ts310export function RemoveNotificationCategory(categoryId: string): Promise<void>;
LOWfrontend/src/wailsjs/runtime/runtime.d.ts314export function RemoveAllPendingNotifications(): Promise<void>;
LOWfrontend/src/wailsjs/runtime/runtime.d.ts318export function RemovePendingNotification(identifier: string): Promise<void>;
LOWfrontend/src/wailsjs/runtime/runtime.d.ts322export function RemoveAllDeliveredNotifications(): Promise<void>;
LOWfrontend/src/wailsjs/runtime/runtime.d.ts326export function RemoveDeliveredNotification(identifier: string): Promise<void>;
LOWfrontend/src/wailsjs/runtime/runtime.js76export function WindowSetSystemDefaultTheme() {
LOWfrontend/src/wailsjs/runtime/runtime.js164export function WindowSetBackgroundColour(R, G, B, A) {
LOWfrontend/src/wailsjs/runtime/runtime.js256export function RequestNotificationAuthorization() {
LOWfrontend/src/wailsjs/runtime/runtime.js260export function CheckNotificationAuthorization() {
LOWfrontend/src/wailsjs/runtime/runtime.js268export function SendNotificationWithActions(options) {
LOWfrontend/src/wailsjs/runtime/runtime.js272export function RegisterNotificationCategory(category) {
LOWfrontend/src/wailsjs/runtime/runtime.js276export function RemoveNotificationCategory(categoryId) {
LOWfrontend/src/wailsjs/runtime/runtime.js280export function RemoveAllPendingNotifications() {
LOWfrontend/src/wailsjs/runtime/runtime.js284export function RemovePendingNotification(identifier) {
LOWfrontend/src/wailsjs/runtime/runtime.js288export function RemoveAllDeliveredNotifications() {
LOWfrontend/src/wailsjs/runtime/runtime.js292export function RemoveDeliveredNotification(identifier) {
LOWfrontend/src/stores/organization.ts348 async function fetchSharedKnowledgeBases() {
LOWfrontend/src/utils/workspaceNotifyContent.ts73export function renderWorkspaceNotifyContent(
LOWfrontend/src/utils/tenantSwitch.ts24export function navigateAfterTenantSwitch(): void {
LOWfrontend/src/utils/tenantSwitch.ts49export function consumePendingTenantSwitchToast(): PendingTenantSwitchToast | null {
LOWfrontend/src/utils/tenantSwitch.ts86export function persistLastActiveTenantPreference(
LOWfrontend/src/utils/tdesign-icon-offline.ts39export function installTDesignIconOfflineGuard(): void {
LOWfrontend/src/utils/security.ts118function protectProviderImageSrcInHTML(html: string): string {
LOWfrontend/src/utils/security.ts270function getProtectedFileRequestHeaders(): Record<string, string> {
LOWfrontend/src/utils/security.ts298export async function hydrateProtectedFileImages(root: ParentNode | null | undefined): Promise<void> {
LOWfrontend/src/utils/tool-capabilities.ts208export function kbSatisfiesAgentRequirements(
LOWfrontend/src/utils/tool-capabilities.ts230export function kbSatisfiesToolRequirements(
LOWfrontend/src/utils/knowledgeTrace.ts2export function knowledgeSpansPayloadHasTrace(
LOWfrontend/src/utils/finalAnswer.ts37export function unwrapFinalAnswerWrappers(content: string): string {
LOWfrontend/src/components/modelEditorSourceState.ts5export function shouldShowOllamaUnavailableTip(
LOWfrontend/src/components/doc-content.vue154function onTraceDrawerWindowResize() {
LOWfrontend/src/api/chat-history.ts48export function getTenantChatHistoryConfig() {
LOWfrontend/src/api/chat-history.ts53export function updateTenantChatHistoryConfig(config: ChatHistoryConfig) {
LOWfrontend/src/api/web-search.ts42export function updateTenantWebSearchConfig(config: WebSearchConfig) {
LOWfrontend/src/api/web-search-provider.ts65export function listWebSearchProviderTypes(): Promise<WebSearchProviderTypeInfo[]> {
LOWfrontend/src/api/web-search-provider.ts84export async function putWebSearchProviderCredentials(
LOWfrontend/src/api/web-search-provider.ts92export async function deleteWebSearchProviderCredentialField(
LOWfrontend/src/api/retrieval.ts20export function updateTenantRetrievalConfig(config: RetrievalConfig) {
LOWfrontend/src/api/organization/index.ts428export async function searchSearchableOrganizations(
LOWfrontend/src/api/organization/index.ts633export async function listOrganizationSharedKnowledgeBases(orgId: string): Promise<ApiResponse<OrganizationSharedKnowled
LOWfrontend/src/api/organization/index.ts673export async function updateAgentSharePermission(agentId: string, shareId: string, req: UpdateSharePermissionRequest): P
LOWfrontend/src/api/organization/index.ts703export async function listOrganizationSharedAgents(orgId: string): Promise<ApiResponse<OrganizationSharedAgentItem[]>> {
57 more matches not shown…
Magic Placeholder Names24 hits · 122 pts
SeverityFileLineSnippet
HIGHmcp-server/PROJECT_SUMMARY.md134export WEKNORA_API_KEY="your_api_key"
HIGHmcp-server/EXAMPLES.md393 "WEKNORA_API_KEY": "your_api_key"
HIGHmcp-server/INSTALL.md188Environment=WEKNORA_API_KEY=your_api_key
HIGHdocs/BUILTIN_MCP_SERVICES.md71 '{"api_key": "your-api-key"}'::jsonb, -- 认证配置
HIGHdocs/OIDC认证调用流程.md568 # secret: <YOUR_SECRET_HERE>
HIGHdocs/wiki/核心功能/内置MCP服务管理.md65 '{"api_key": "your-api-key"}'::jsonb,
HIGHdocs/wiki/API参考/API文档概览.md25X-API-Key: your_api_key
HIGHdocs/api/agent.md385--header 'X-API-Key: your_api_key'
HIGHdocs/api/vector-store.md157 "api_key": "your_api_key",
HIGHdocs/api/model.md61--header 'X-API-Key: your_api_key'
HIGHdocs/api/model.md65--header 'X-API-Key: your_api_key'
HIGHdocs/api/model.md123--header 'X-API-Key: your_api_key' \
HIGHdocs/api/model.md141--header 'X-API-Key: your_api_key' \
HIGHdocs/api/model.md162--header 'X-API-Key: your_api_key' \
HIGHdocs/api/model.md184--header 'X-API-Key: your_api_key' \
HIGHdocs/api/model.md207--header 'X-API-Key: your_api_key' \
HIGHdocs/api/model.md232--header 'X-API-Key: your_api_key' \
HIGHdocs/api/model.md251--header 'X-API-Key: your_api_key' \
HIGHdocs/api/model.md270--header 'X-API-Key: your_api_key' \
HIGHdocs/api/model.md323--header 'X-API-Key: your_api_key'
HIGHdocs/api/model.md341--header 'X-API-Key: your_api_key'
HIGHdocs/api/model.md371--header 'X-API-Key: your_api_key' \
HIGHdocs/api/model.md400--header 'X-API-Key: your_api_key'
HIGHdocs/api/README.md35X-API-Key: your_api_key
Verbosity Indicators44 hits · 84 pts
SeverityFileLineSnippet
LOW…rc/views/knowledge/settings/DataSourceEditorDialog.vue99// Step 2: Resources
LOWconfig/config.yaml54 ## Step 1: Entity Extraction and Attribute Enrichment
LOWconfig/config.yaml58 ## Step 2: Relationship Extraction and Verification
LOWdocreader/splitter/splitter.py131 # Step 1: Split text by separators recursively
LOWdocreader/splitter/splitter.py133 # Step 2: Extract protected content positions
LOWdocreader/splitter/splitter.py135 # Step 3: Merge splits with protected content to ensure integrity
LOWdocreader/splitter/splitter.py141 # Step 4: Merge splits into final chunks with overlap
LOWdocreader/splitter/splitter.py144 # Step 5: Validate chunks and test restoration
LOWinternal/datasource/connector/feishu/client.go397 // Step 1: create export task
LOWinternal/datasource/connector/feishu/client.go403 // Step 2: poll until ready (max 60s, every 2s)
LOWinternal/datasource/connector/feishu/client.go426 // Step 3: download file using file_token (NOT ticket)
LOW…rnal/application/repository/knowledge_finalize_test.go215 // Step 2: caller A snapshots the row with counter=5 in memory.
LOW…rnal/application/repository/knowledge_finalize_test.go220 // Step 3: an enrichment subtask decrements concurrently.
LOW…rnal/application/repository/knowledge_finalize_test.go224 // Step 4: caller A persists an unrelated change. The in-memory copy
LOW…rnal/application/repository/knowledge_finalize_test.go229 // Step 5: the live counter is still 4, not clobbered back to 5.
LOWinternal/application/service/message.go493 // Step 1: Keyword search (direct PG ILIKE)
LOWinternal/application/service/message.go503 // Step 2: Vector search via chat history knowledge base (if configured)
LOWinternal/application/service/message.go516 // Step 3: Merge results based on mode
LOWinternal/application/service/message.go528 // Step 4: Fetch partner messages (Q&A counterparts) to ensure complete pairs
LOWinternal/application/service/message.go531 // Step 5: Group by request_id to merge Q&A pairs
LOWinternal/application/service/knowledgebase.go632 // Step 1: Delete the knowledge base record first (mark as deleted)
LOWinternal/application/service/knowledgebase.go647 // Step 2: Enqueue async task for heavy cleanup operations
LOWinternal/application/service/knowledgebase.go693 // Step 1: Get all knowledge entries in this knowledge base
LOWinternal/application/service/knowledgebase.go704 // Step 2: Delete all knowledge entries and their resources
LOWinternal/application/service/knowledge_process.go2034 // Step 2: Update knowledge status and metadata
LOWinternal/application/service/knowledge_process.go2056 // Step 3: Trigger async re-parsing based on knowledge type
LOWinternal/application/service/knowledge_process.go2975 // Step 2: Store images and update markdown references
LOWinternal/application/service/knowledge_process.go3005 // Step 3: Split into chunks using Go chunker
LOWinternal/application/service/knowledge_process.go3055 // Step 4: Process chunks (vectorize + index + enqueue async tasks)
LOWinternal/application/service/chat_pipeline/merge.go55 // Step 1: Select input
LOWinternal/application/service/chat_pipeline/merge.go58 // Step 2: Initial dedup
LOWinternal/application/service/chat_pipeline/merge.go61 // Step 3: Inject history references
LOWinternal/application/service/chat_pipeline/merge.go76 // Step 4: Resolve parent chunks
LOWinternal/application/service/chat_pipeline/merge.go79 // Step 5: Group by knowledge/chunkType and merge overlapping ranges
LOWinternal/application/service/chat_pipeline/merge.go82 // Step 6: Populate FAQ answers
LOWinternal/application/service/chat_pipeline/merge.go85 // Step 7: Expand short contexts
LOWinternal/application/service/chat_pipeline/merge.go91 // Step 8: Final dedup — catches exact duplicates plus partial content overlaps
LOWinternal/infrastructure/chunker/splitter.go287 // Step 1: Find protected spans
LOWinternal/infrastructure/chunker/splitter.go290 // Step 2: Split non-protected regions by separators, keep protected as atomic units.
LOWinternal/infrastructure/chunker/splitter.go295 // Step 3: Merge units into chunks with overlap
LOWinternal/event/example_test.go65 // Step 1: Query received
LOWinternal/event/example_test.go72 // Step 2: Query rewrite
LOWinternal/event/example_test.go79 // Step 3: Retrieval
LOWinternal/event/example_test.go86 // Step 4: Rerank
Excessive Try-Catch Wrapping53 hits · 51 pts
SeverityFileLineSnippet
LOWrerank_server_demo.py52except Exception as e:
LOWdocreader/config.py29 except Exception:
LOWdocreader/main.py87 except Exception:
LOWdocreader/main.py174 except Exception as e:
LOWdocreader/splitter/splitter.py475 except Exception as e:
LOWdocreader/splitter/splitter.py514 except Exception as e:
LOWdocreader/utils/__init__.py61 except Exception as e:
LOWdocreader/utils/__init__.py81 except Exception as e:
LOWdocreader/parser/pdf_parser.py93 except Exception as e:
LOWdocreader/parser/registry.py92 except Exception as e:
LOWdocreader/parser/docx_parser.py337 except Exception as e:
LOWdocreader/parser/docx_parser.py340 except Exception as e:
LOWdocreader/parser/docx_parser.py1517 except Exception as e:
LOWdocreader/parser/docx_parser.py1525 except Exception as e:
LOWdocreader/parser/docx_parser.py1531 except Exception as e:
LOWdocreader/parser/docx_parser.py135 except Exception as exc:
LOWdocreader/parser/docx_parser.py179 except Exception as e:
LOWdocreader/parser/docx_parser.py205 except Exception as e:
LOWdocreader/parser/docx_parser.py284 except Exception as backup_error:
LOWdocreader/parser/docx_parser.py559 except Exception as e:
LOWdocreader/parser/docx_parser.py581 except Exception as e:
LOWdocreader/parser/docx_parser.py846 except Exception as e:
LOWdocreader/parser/docx_parser.py931 except Exception as e:
LOWdocreader/parser/docx_parser.py1009 except Exception as e:
LOWdocreader/parser/docx_parser.py1027 except Exception as e:
LOWdocreader/parser/docx_parser.py1128 except Exception as e:
LOWdocreader/parser/docx_parser.py1165 except Exception as e:
LOWdocreader/parser/docx_parser.py1286 except Exception as e:
LOWdocreader/parser/docx_parser.py1319 except Exception as e:
LOWdocreader/parser/docx_parser.py1477 except Exception as blob_error:
LOWdocreader/parser/chain_parser.py62 except Exception:
LOWdocreader/parser/doc_parser.py48 except Exception as e:
LOWdocreader/parser/doc_parser.py124 except Exception as e:
LOWdocreader/parser/web_parser.py89 except Exception as e:
LOWdocreader/parser/web_parser.py106 except Exception as e:
LOWmcp-server/run.py41 except Exception as e:
LOWmcp-server/test_module.py89 except Exception as e:
LOWmcp-server/test_module.py148 except Exception as e:
LOWmcp-server/test_module.py168 except Exception as e:
LOWmcp-server/test_module.py191 except Exception as e:
LOWmcp-server/test_module.py218 except Exception as e:
LOWmcp-server/test_module.py249 except Exception as e:
LOWmcp-server/main.py158 except Exception as e:
LOWmcp-server/run_server.py43 except Exception as e:
LOWmcp-server/weknora_mcp_server.py1204 except Exception as preflight_err:
LOWmcp-server/weknora_mcp_server.py1258 except Exception as e:
LOWscripts/cloud-image/prepare.sh100except Exception:
LOW…s/preloaded/data-processor/scripts/format_converter.py149 except Exception as e:
LOW…s/preloaded/data-processor/scripts/format_converter.py182 except Exception as e:
LOW…s/preloaded/data-processor/scripts/format_converter.py200 except Exception as e:
LOWskills/preloaded/data-processor/scripts/extract_info.py148 except Exception as e:
LOWskills/preloaded/data-processor/scripts/extract_info.py183 except Exception as e:
LOWskills/preloaded/data-processor/scripts/analyze.py193 except Exception as e:
Synthetic Comment Markers4 hits · 30 pts
SeverityFileLineSnippet
HIGHinternal/middleware/access_test.go24// EnableCrossTenantAccess flag set as requested. EnableRBAC is left at
HIGHinternal/types/interfaces/wiki_page.go272 // that do not have AI-generated document questions or recommended FAQ entries.
HIGHinternal/application/repository/wiki_page.go663// the KB has no FAQ entries or AI-generated document questions (typical for
HIGHinternal/application/service/custom_agent.go620 // document chunks carry AI-generated questions (question_generation is skipped
Self-Referential Comments10 hits · 26 pts
SeverityFileLineSnippet
MEDIUMdocreader/parser/excel_parser.py90 # Create a chunk for this row with position tracking
MEDIUMdocreader/parser/docx_parser.py373 # Create an estimated page mapping
MEDIUMdocreader/parser/docx_parser.py963 # Create the final text with proper ordering
MEDIUMdocreader/parser/docx_parser.py1112 # Create a new image
MEDIUMdocreader/parser/docx_parser.py1154 # Create a temporary file
MEDIUMdocreader/parser/chain_parser.py29 # Create a custom FirstParser with specific parser classes
MEDIUMdocreader/parser/chain_parser.py103 # Create a custom PipelineParser with specific parser classes
MEDIUMdocreader/parser/doc_parser.py191 # Create a temporary directory to store the converted file
MEDIUMmcp-server/weknora_mcp_server.py56 # Create a persistent session for connection pooling and performance
MEDIUMmcp-server/weknora_mcp_server.py1126 # Create a knowledge-base-bound chat session with strategy configuration.
Unused Imports24 hits · 24 pts
SeverityFileLineSnippet
LOWrerank_server_demo.py5
LOWdocreader/parser/markdown_parser.py16
LOWdocreader/parser/registry.py2
LOWdocreader/parser/__init__.py16
LOWdocreader/parser/__init__.py17
LOWdocreader/parser/__init__.py18
LOWdocreader/parser/__init__.py19
LOWdocreader/parser/__init__.py20
LOWdocreader/parser/__init__.py21
LOWdocreader/parser/__init__.py22
LOWdocreader/parser/__init__.py23
LOWdocreader/parser/__init__.py23
LOWdocreader/parser/__init__.py24
LOWmcp-server/test_module.py20
LOWmcp-server/test_module.py24
LOWmcp-server/test_imports.py7
LOWmcp-server/test_imports.py14
LOWmcp-server/test_imports.py14
LOWmcp-server/test_imports.py28
LOWmcp-server/test_imports.py33
LOWmcp-server/__init__.py12
LOWmcp-server/__init__.py12
LOWmcp-server/main.py30
LOWmcp-server/main.py31
Deep Nesting27 hits · 22 pts
SeverityFileLineSnippet
LOWrerank_server_demo.py67
LOWdocreader/splitter/splitter.py186
LOWdocreader/splitter/splitter.py412
LOWdocreader/utils/request.py87
LOWdocreader/utils/__init__.py46
LOWdocreader/utils/__init__.py66
LOWdocreader/utils/endecode.py23
LOWdocreader/parser/pdf_parser.py34
LOWdocreader/parser/excel_parser.py43
LOWdocreader/parser/docx_parser.py1170
LOWdocreader/parser/docx_parser.py1325
LOWdocreader/parser/docx_parser.py1425
LOWdocreader/parser/docx_parser.py104
LOWdocreader/parser/docx_parser.py210
LOWdocreader/parser/docx_parser.py803
LOWdocreader/parser/docx_parser.py862
LOWdocreader/parser/docx_parser.py981
LOWdocreader/parser/docx_parser.py1055
LOWdocreader/parser/doc_parser.py103
LOWdataset/qa_dataset.py219
LOWmcp-server/main.py107
LOWmcp-server/weknora_mcp_server.py1002
LOWmcp-server/weknora_mcp_server.py323
LOW…s/preloaded/data-processor/scripts/format_converter.py132
LOWskills/preloaded/data-processor/scripts/extract_info.py135
LOWskills/preloaded/data-processor/scripts/analyze.py166
LOW…oaded/openmaic-classroom/scripts/rag-to-requirement.py46
Fake / Example Data19 hits · 20 pts
SeverityFileLineSnippet
LOWfrontend/src/components/UserMenu.vue317 email: 'user@example.com',
LOWfrontend/src/components/UserMenu.vue665 email: user.email || 'user@example.com',
LOWinternal/agent/prompts_wiki.go103 "name": "Acme Corp",
LOWinternal/agent/prompts_wiki.go188 "name": "Acme Corp",
LOWinternal/agent/prompts_wiki.go403- "Acme Corp" → "Acme Corporation" (same company, abbreviation)
LOWinternal/application/service/wiki_ingest_dedup_test.go160// filter keeps legitimate merge candidates like "Acme Corp" ↔ "Acme Corporation".
LOWinternal/application/service/wiki_ingest_dedup_test.go164 nameGramSets: gramsPerSurface([]string{"Acme Corp"}),
LOWinternal/application/service/wiki_ingest_dedup.go35 // is excluded while "Acme Corp" vs "Acme Corporation" (Jaccard ≈ 0.5)
LOWinternal/application/service/wiki_ingest_test.go15 {"Acme Corp", "acme-corp"},
LOW…ternal/infrastructure/chunker/heading_splitter_test.go13 body := strings.Repeat("Lorem ipsum dolor sit amet consectetur adipiscing elit. ", 4)
LOW…ternal/infrastructure/chunker/heading_splitter_test.go13 body := strings.Repeat("Lorem ipsum dolor sit amet consectetur adipiscing elit. ", 4)
LOW…ternal/infrastructure/chunker/heading_splitter_test.go34 if strings.Contains(c.Content, "## Section B") && strings.Contains(c.Content, "Lorem ipsum") {
LOW…ternal/infrastructure/chunker/heading_splitter_test.go73 body := strings.Repeat("Lorem ipsum dolor sit amet consectetur adipiscing elit. ", 4)
LOW…ternal/infrastructure/chunker/heading_splitter_test.go73 body := strings.Repeat("Lorem ipsum dolor sit amet consectetur adipiscing elit. ", 4)
LOWinternal/infrastructure/chunker/strategy_test.go120 body := strings.Repeat("Lorem ipsum dolor sit amet. ", 40)
LOWinternal/infrastructure/chunker/strategy_test.go120 body := strings.Repeat("Lorem ipsum dolor sit amet. ", 40)
LOWdocs/api/organization.md620 "email": "admin@example.com",
LOWcli/acceptance/testdata/wire/auth_status.success.json1{"ok":true,"data":{"profile":"","user_id":"usr_abc","email":"user@example.com","tenant_id":42,"tenant_name":"Acme"}}
LOWcli/acceptance/contract/wire_test.go238 resp.Data.User = &sdk.AuthUser{ID: "usr_abc", Email: "user@example.com", TenantID: 42}
AI Slop Vocabulary5 hits · 14 pts
SeverityFileLineSnippet
MEDIUMcmd/desktop/main.go41// and instead uses robust DOM-traversal via el.closest() plus a Y-position
MEDIUMfrontend/package-lock.json4461 "resolved": "https://mirrors.tencent.com/npm/robust-predicates/-/robust-predicates-3.0.3.tgz",
MEDIUMinternal/searchutil/normalize.go11// NormalizeKeywordScores normalizes keyword match scores in-place using robust percentile bounds.
MEDIUM…ion/repository/retriever/opensearch/repository_test.go215// parseMajorMinor — robust semver parsing
MEDIUMcli/cmd/doctor/doctor.go277// but type-assertion is structurally more robust to scheme renames.
Redundant / Tautological Comments9 hits · 12 pts
SeverityFileLineSnippet
LOWdocreader/splitter/splitter.py239 # Check if adding this split would exceed chunk size
LOWdocreader/parser/docx_parser.py192 # Check if the generated text is empty
LOWdocreader/parser/docx_parser.py654 # Check if the document contains images to optimize processing speed
LOWdocreader/parser/docx_parser.py878 # Check if there are images
LOWdocreader/parser/docx_parser.py944 if line_data.content_sequence: # Check if we have processed_content
LOWdocreader/parser/doc_parser.py145 # Check if antiword is installed
LOWdocreader/parser/doc_parser.py183 # Check if LibreOffice or OpenOffice is installed
LOWdocreader/parser/doc_parser.py251 # Check if path is set in environment variable
LOWscripts/migrate.sh26# Check if migrate tool is installed
Docstring Block Structure2 hits · 10 pts
SeverityFileLineSnippet
HIGHdocreader/utils/endecode.py24Convert image to base64 encoded string. This function handles multiple image input formats and converts them to
HIGHdocreader/utils/endecode.py79Decode a base64 encoded image string back to bytes. This function converts a base64 encoded string representation o
Slop Phrases2 hits · 5 pts
SeverityFileLineSnippet
MEDIUMconfig/prompt_templates/agent_system_prompt.yaml278 * **MCP Tools (dynamic):** Any tools whose names do NOT start with `wiki_` and are not the built-in `thinking` / `
MEDIUMconfig/prompt_templates/fallback.yaml75 content: "Sorry, I'm unable to answer this question at the moment. Please try rephrasing your question, or contact c
Dead Code1 hit · 2 pts
SeverityFileLineSnippet
MEDIUMdocreader/auth.py129