Conversation
- 新增 PromptChangedEvent 事件类,用于传递提示词变更信息 - 扩展 FileWatcher 支持监控 prompt.txt、poll_prompt.txt、qa_persona.txt 文件 - 实现提示词变更处理逻辑,区分配置文件与提示词文件的重载 - 在 main.py 中订阅提示词变更事件并打印更新日志 - 更新 __all__ 导出列表,包含 PromptChangedEvent
There was a problem hiding this comment.
🌸 Sakura AI 审查报告 - ⚡️ 快速审查
💬 审查评论
评分:7/10
🟡 重要问题(建议修复)
🟡 core/config/file_watcher.py:125
问题: 文件路径匹配使用 endswith("config.json") 可能会误匹配 xxxconfig.json
建议: 使用 endswith("/config.json") 或 Path(file_path).name == "config.json" 进行精确匹配
🟡 core/config/file_watcher.py:149-154
问题: _get_prompt_type 使用简单的 endswith 匹配,可能与 PROMPT_FILES 常量不一致
建议: 改为基于 PROMPT_FILES 常量的字典映射,确保一致性:
PROMPT_TYPE_MAP = {
"prompt.txt": "summary",
"poll_prompt.txt": "poll",
"qa_persona.txt": "qa_persona"
}
def _get_prompt_type(self, file_path: str) -> str:
filename = Path(file_path).name
return PROMPT_TYPE_MAP.get(filename, "unknown")🟡 core/config/file_watcher.py:129
问题: _handle_prompt_changed 返回值为 None,但创建的 async task 没有被 await,如果后续需要依赖这个 task 会出问题
建议: 确保调用者了解这是"即发即弃"(fire-and-forget)的操作,或者改为返回 task 引用
💡 优化建议
💡 core/config/file_watcher.py:176-192
问题: _load_prompt_content 方法中的 import 放在函数内部,虽然避免了循环导入,但每次调用都会执行 import
建议: 如果担心循环导入,可以在文件顶部使用 TYPE_CHECKING:
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from core.infrastructure.config.prompt_manager import load_prompt💡 core/config/file_watcher.py:157
问题: _handle_prompt_changed 的职责较重,包含内容加载和事件发布
建议: 考虑拆分为两个方法,提高可测试性
💡 main.py:167-174
问题: on_prompt_changed 回调函数只做了日志记录,没有实际业务逻辑
建议: 添加注释说明这是占位实现,未来会添加具体的提示词更新逻辑,例如:
# TODO: 未来实现具体的提示词更新逻辑
# - 重新加载 AI 配置
# - 清除相关缓存
# - 通知相关模块💡 core/config/events.py:21-22
问题: content 字段包含完整的提示词内容,对于大型提示词可能会占用较多内存
建议: 考虑添加 content_length 字段,让 content 变为可选字段,或者在日志中只显示长度而非完整内容
总体评价
优点:
- ✅ 事件驱动架构设计合理,符合项目现有的架构模式
- ✅ 防抖逻辑处理得当,避免了频繁重载
- ✅ 向后兼容性考虑周全(
_trigger_reload保留了默认参数) - ✅ 使用
Literal类型限制提示词类型,类型安全 - ✅ 错误处理较为完善,有异常捕获和日志记录
需要改进:
- 🟡 文件路径匹配不够严谨,可能存在边界情况误匹配
- 🟡
_get_prompt_type与PROMPT_FILES常量分离,容易出现不一致 - 💡 可以提取一些常量和辅助方法,提高代码可维护性
整体来说,这是一个功能完整、设计合理的实现,没有严重的 bug 或安全问题,主要是细节上的一些优化建议。
代码质量评分:7/10
AI审查决策:请人工复审
🟡 重要问题 (3个)
-
core/config/file_watcher.py:125
-
core/config/file_watcher.py:149-154
-
core/config/file_watcher.py:129
💡 优化建议 (12条)
🏷️ 标签建议
✅ 已自动应用的标签
- enhancement (98%) - PR标题明确标注为'feat',代码变更新增了提示词变更事件(PromptFileChangedEvent)及文件监控逻辑,属于典型的新功能增强
|
📝 已更新 Release v1.7.3 描述 ✅ 变更已记录到 GitHub Releases 📦 附件正在打包中,请稍候... |
Uh oh!
There was an error while loading. Please reload this page.