fix: 代码审查问题修复

- C1 (Critical): 添加 PyYAML 解析 frontmatter,支持多行值和列表
- M1 (Major): 添加 FTS5 查询验证,防止注入攻击
- M2/M3 (Major): 工具类使用显式 wiki_vault_path 参数
- M4 (Major): 集成 aiofiles 实现真正的异步文件 I/O
- M5 (Major): 改用 logger.exception() 记录完整堆栈

Co-Authored-By: Claude Dev <noreply@anthropic.com>
This commit is contained in:
2026-06-26 12:10:41 +08:00
parent dfd8421dc6
commit 62b8fef18a
7 changed files with 142 additions and 45 deletions
+7 -4
View File
@@ -92,11 +92,11 @@ class MCPServer:
wiki_query = WikiQueryTool(self.query_service)
memory_bridge = MemoryBridgeTool(self.query_service)
wiki_status = WikiStatusTool(self.query_service, self.indexer_service, self.graph_service)
wiki_lint = WikiLintTool(self.parser_service, self.query_service, self.graph_service)
wiki_lint = WikiLintTool(self.parser_service, self.query_service, self.graph_service, self.wiki_vault_path)
cross_linker = CrossLinkerTool(self.graph_service)
tag_taxonomy = TagTaxonomyTool(self.query_service)
wiki_synthesize = WikiSynthesizeTool(self.query_service, self.graph_service)
daily_update = DailyUpdateTool(self.query_service, self.indexer_service)
daily_update = DailyUpdateTool(self.query_service, self.indexer_service, self.wiki_vault_path)
# 注册工具
self.tools = {
@@ -151,10 +151,13 @@ class MCPServer:
result = await self.tools[name](**arguments)
return [TextContent(type="text", text=json.dumps(result, ensure_ascii=False, indent=2))]
except Exception as e:
logger.error(f"Error calling tool {name}: {e}")
# 记录完整堆栈用于调试
logger.exception(f"Error calling tool {name} with arguments {arguments}")
# 返回用户友好的错误消息
return [TextContent(type="text", text=json.dumps({
"success": False,
"error": str(e)
"error": str(e),
"tool": name
}, ensure_ascii=False))]
async def run(self) -> None: