增加代码知识库;修复文档处理内容;增加API设置

This commit is contained in:
2026-05-16 20:20:10 +08:00
parent 69b49d28b2
commit 7aa3ce3294
119 changed files with 182273 additions and 793 deletions

View File

@@ -0,0 +1,46 @@
from __future__ import annotations
from typing import Iterable, List
from app.services.code_kb.schema import CodeGraphContext, CodeSearchHit
def _clip(value: str, limit: int) -> str:
value = value or ""
if len(value) <= limit:
return value
return value[:limit].rstrip() + "\n...[truncated]"
def format_evidence_context(
hits: Iterable[CodeSearchHit],
graph_contexts: Iterable[CodeGraphContext],
max_code_chars: int = 1000,
max_text_chars: int = 800,
) -> str:
context_by_node = {item.node_id: item for item in graph_contexts}
blocks: List[str] = []
for hit in hits:
item = hit.evidence
graph = context_by_node.get(item.node_id)
lines = [
f"[Function Evidence #{hit.rank}]",
f"node_id: {item.node_id}",
f"name: {item.name}",
f"qualified_name: {item.qualified_name}",
f"file: {item.file}",
f"lines: {item.start_line}-{item.end_line}",
f"similarity: {hit.similarity:.4f}",
f"signature: {_clip(item.signature, 300)}",
f"summary: {_clip(item.summary, max_text_chars)}",
f"logic_flow: {_clip(item.logic_flow, max_text_chars)}",
f"calls: {', '.join(item.calls[:20]) or '-'}",
f"called_by: {', '.join(item.called_by[:20]) or '-'}",
]
if graph:
lines.append(f"call_chain_evidence: {'; '.join(graph.call_chains[:12]) or '-'}")
if item.code_snippet:
lines.extend(["code_snippet:", _clip(item.code_snippet, max_code_chars)])
blocks.append("\n".join(lines))
return "\n\n---\n\n".join(blocks)