feat(v2): 架构与算法优化二轮——推理机不变量外提、知识库匹配预编译、协作循环增量索引
- inference.py(/chat/legacy 热路径):kb.match 循环不变量外提(原每步全量重扫+重排序, 最坏 O(steps×rules×patterns));fired 查重 list→set - knowledge.py:Rule patterns 注册侧懒缓存小写副本(原每条规则每次匹配重复 lower); match() 文本只 lower 一次(原逐规则重复);load() 的 yaml 文件名集合提到循环外 - worker.py:本地端点生成器 httpx.AsyncClient 懒建复用(原每步新建/销毁连接, 对齐 ArchitectClient 惯用法;协作循环最多 10 次生成免重复建连) - pipeline.py(协作循环):plan_by_id O(1) 步定义查找;done 集合增量维护 (原每轮重建 progress+archive 扫描);领域只解析一次(原 _artifact_name 每步 全领域 kb.match);_deps_done 支持传入预填集合(保持旧签名兼容) - v2stats.py:回合数分布改增量聚合(sum/max/分桶计数),summary() O(n)→O(1), 不再持有无界 list(修长时运行内存增长) - gateway/agent.py + api.py:AgentService 运行计数 O(1) 化(原 register 全量扫描), 状态迁移收敛到 _transition_state 单一入口(api.py cancel/异常两处绕过点一并接入, 消除计数与状态脱节隐患);21 项 agent 测试全绿(两轮全量 230 passed 复核)
This commit is contained in:
+2
-2
@@ -647,7 +647,7 @@ try:
|
||||
except Exception as exc:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
info.state = "failed"
|
||||
service._transition_state(info, "failed")
|
||||
info.error = str(exc)
|
||||
info.finished_at = __import__("time").time()
|
||||
service._write_status(info)
|
||||
@@ -674,7 +674,7 @@ try:
|
||||
return {"ok": False, "detail": f"任务已结束({info.state})"}
|
||||
if info.asyncio_task is not None:
|
||||
info.asyncio_task.cancel()
|
||||
info.state = "failed"
|
||||
service._transition_state(info, "failed")
|
||||
info.error = "cancelled_by_user"
|
||||
info.finished_at = __import__("time").time()
|
||||
service._write_status(info)
|
||||
|
||||
Reference in New Issue
Block a user