改用Grok联网搜索并保留每轮信号

This commit is contained in:
Codex
2026-07-09 00:14:20 +08:00
parent 4f50de8def
commit e02d5db495
14 changed files with 465 additions and 110 deletions
+9 -10
View File
@@ -1,8 +1,6 @@
from __future__ import annotations
from hashlib import sha256
from typing import Optional
from sqlalchemy import select
from sqlalchemy.orm import Session
@@ -41,21 +39,22 @@ class AgentRepository:
self.db.flush()
def save_signals(self, run: AgentRun, items: list[SignalItem]) -> list[Signal]:
# 相同来源链接只保存一次,避免日报和仪表盘重复出现同一条情报
# 去重范围限定在同一次运行内,保证每轮情报结果都能完整留档
saved: list[Signal] = []
for item in items:
signal = self.save_or_update_signal(run=run, item=item)
if signal is None:
continue
saved.append(signal)
return saved
def save_or_update_signal(self, run: AgentRun, item: SignalItem) -> Optional[Signal]:
# 同一来源链接只保留一条情报,流式接口和普通接口共用这条去重规则
def save_or_update_signal(self, run: AgentRun, item: SignalItem) -> Signal:
# 同一次运行里相同链接更新为一条,跨运行保留各自结果用于历史对比
source_url_hash = self._source_url_hash(item.source_url)
existing = self.db.scalar(select(Signal).where(Signal.source_url_hash == source_url_hash))
if existing and existing.run_id != run.id:
return None
existing = self.db.scalar(
select(Signal).where(
Signal.run_id == run.id,
Signal.source_url_hash == source_url_hash,
)
)
if existing:
existing.source_type = item.source_type
existing.topic = item.topic