LingFlow 自优化钩子系统 - 使用指南
集成日期: 2026-03-31 状态: ✅ 已启用
🎯 系统概述
自优化钩子系统已成功集成到LingFlow启动流程中。该系统会在特定事件自动触发,检查代码质量,并在必要时提示用户运行优化。
集成验证
🚀 自动启动
Hooks系统现在在LingFlow启动时自动初始化:
from lingflow.bootstrap import bootstrap
# 启动LingFlow(hooks默认启用)
status = bootstrap()
# status['hooks'] 包含钩子实例
启动顺序
- 版本信息加载
- 日志系统初始化
- 智能压缩器初始化
- 上下文管理器初始化
- 钩子系统初始化 ← 新增
- 会话恢复显示
📋 触发场景
场景1: 代码审查得分低
触发条件: 代码审查得分 < 70
from lingflow.hooks import get_global_hook
hook = get_global_hook()
# 模拟代码审查完成
review_result = {
"overall_score": 65, # 低于阈值70
"dimensions": {
"structure": 70,
"naming": 60,
"complexity": 65,
}
}
# 触发检查
hook.on_code_review_complete(review_result)
# 如果得分低,会提示用户是否启动优化
输出示例:
============================================================
🔍 检测到需要优化的问题
============================================================
原因: 代码审查得分 (65) 低于阈值 (70)
优先级: medium
当前值: 65
阈值: 70
------------------------------------------------------------
是否启动自优化? [y/N]
场景2: 测试覆盖率下降
触发条件: 测试覆盖率下降 > 5%
# 模拟测试完成
test_result = {
"coverage": 85, # 从90%下降到85%
"duration": 10,
"failed": 2,
"total": 100,
}
hook.on_test_complete(test_result)
场景3: 性能下降
触发条件: 执行时间增加 > 50%
# 模拟性能测量
metrics = {
"execution_time": 15, # 比基线10秒增加了50%
"memory_usage_mb": 250,
"response_time_ms": 500,
}
hook.on_performance_measure(metrics)
场景4: 代码规模增长
触发条件: 新增代码行数 > 500
# 模拟Git提交
commit_info = {
"new_lines": 600,
"deleted_lines": 100,
"new_files": 3,
}
hook.on_git_commit(commit_info)
🔧 手动控制
获取全局钩子
检查优化状态
# 检查是否有优化在运行
is_running = hook.is_optimization_running()
print(f"优化运行中: {is_running}")
# 获取优化结果(如果完成)
result = hook.get_optimization_result()
if result:
print(f"优化分数: {result.best_score}")
print(f"最佳参数: {result.best_params}")
取消优化
🎨 集成到工作流
集成到代码审查流程
from lingflow.hooks import get_global_hook
def run_code_review():
"""运行代码审查"""
# ... 运行审查逻辑
review_result = {
"overall_score": calculate_score(),
"dimensions": get_dimensions(),
}
# 自动触发优化检查
hook = get_global_hook()
hook.on_code_review_complete(review_result)
return review_result
集成到测试流程
from lingflow.hooks import get_global_hook
def run_tests():
"""运行测试套件"""
# ... 运行测试
test_result = {
"coverage": get_coverage(),
"duration": get_duration(),
"failed": get_failed_count(),
"total": get_total_count(),
}
# 自动触发优化检查
hook = get_global_hook()
hook.on_test_complete(test_result)
return test_result
集成到Git Hooks
在 .git/hooks/post-commit:
#!/bin/bash
# 获取本次提交的统计信息
new_lines=$(git diff --shortstat HEAD~1 HEAD | grep -oP '\d+(?= insertion)')
new_files=$(git diff --name-only --diff-filter=A HEAD~1 HEAD | wc -l)
# 调用Python脚本
python - <<EOF
from lingflow.hooks import get_global_hook
hook = get_global_hook()
hook.on_git_commit({
"new_lines": $new_lines,
"new_files": $new_files,
})
EOF
📊 触发阈值配置
默认阈值(可在 lingflow/self_optimizer/config.py 中修改):
| 触发类型 | 阈值 | 说明 |
|---|---|---|
| 质量下降 | review_score < 70 | 代码审查得分低于70 |
| 结构违规 | complexity > 15 | 圈复杂度超过15 |
| 性能下降 | 执行时间增加 > 50% | 性能下降超过50% |
| 规模增长 | 新增行数 > 500 | 单次新增代码超过500行 |
| 技术债务 | 覆盖率下降 > 5% | 测试覆盖率下降超过5% |
| 时间间隔 | 距上次优化 > 7天 | 超过7天未优化 |
🔍 调试和监控
查看启动状态
from lingflow.bootstrap import bootstrap
status = bootstrap(hooks=True, verbose=True)
print(f"版本: {status['version']}")
print(f"Hooks: {status['hooks']}")
print(f"错误: {status['errors']}")
测试触发器
from lingflow.hooks import get_global_hook
hook = get_global_hook()
# 测试触发条件
context = {
"review_score": 65,
"coverage_drop": 0,
"execution_time": 0,
}
should_trigger, info = hook.trigger.check_all_conditions(context)
print(f"应该触发: {should_trigger}")
print(f"原因: {info.reason}")
print(f"优先级: {info.priority}")
⚙️ 高级配置
禁用自动启动
如果不想在启动时自动初始化hooks:
自定义触发器
from lingflow.hooks import get_global_hook
from lingflow.self_optimizer.config import OptimizationConfig
hook = get_global_hook()
# 自定义配置
custom_config = OptimizationConfig(
triggers={
"quality": {"review_score_below": 60}, # 更严格
}
)
hook.trigger.config = custom_config
🧪 测试
运行集成测试:
# 完整集成测试
python test_hooks_integration.py
# 单独测试bootstrap
python -c "from lingflow.bootstrap import bootstrap; print(bootstrap(hooks=True))"
# 测试触发检测
python -c "
from lingflow.hooks import get_global_hook
hook = get_global_hook()
should, info = hook.trigger.check_all_conditions({'review_score': 65})
print(f'Trigger: {should}, Reason: {info.reason}')
"
✅ 验收清单
- [x] Bootstrap集成(hooks自动初始化)
- [x] 全局钩子可访问
- [x] 触发检测工作正常
- [x] 事件处理器工作正常
- [x] 优化状态查询工作
- [x] 测试全部通过(5/5)
📝 注意事项
- 用户交互: 默认情况下,触发优化会询问用户确认
- 后台运行: 优化在独立进程运行,不阻塞主流程
- 并发控制: 同时只能运行一个优化任务
- 结果持久化: 优化结果保存为Markdown报告
🎉 总结
LingFlow自优化钩子系统现已完全集成并可正常工作。
关键特性: - ✅ 自动检测代码质量问题 - ✅ 智能触发优化流程 - ✅ 无侵入式集成 - ✅ 可配置的触发阈值 - ✅ 完整的测试覆盖
下一步: 1. 根据实际使用调整触发阈值 2. 添加更多触发类型 3. 集成到CI/CD流程
LingFlow 自优化系统 - 让代码质量持续改进 🚀