Skip to content

任务追踪 (Git 风格)

miqi/agent/trace/ 实现了类似 Git 的轻量级任务追踪系统(2026-05-15 上线),替代了旧的 Lessons 经验系统。

核心组件

组件 文件 功能
TraceStore store.py SQLite WAL 存储 + FTS5 全文索引
TaskTrace model.py 任务追踪数据模型
Embedder embedder.py fastembed 向量嵌入 + 余弦相似度搜索
migrate migrate.py LESSONS.jsonl → TaskTrace 迁移工具

数据模型

@dataclass
class TaskStep:
    """工具调用步骤"""
    tool_name: str           # 工具名称
    args_summary: str        # 参数摘要 (≤200 字符)
    result_summary: str      # 结果摘要 (≤200 字符)
    timestamp: float         # Unix 时间戳

@dataclass
class TaskTrace:
    """完整任务追踪"""
    trace_hash: str          # SHA256 唯一标识
    parent_hash: str | None  # 父任务 hash (支持 DAG)
    session_id: str          # 所属会话 ID
    task_name: str           # 任务名称
    goal: str                # 任务目标描述
    tool_calls: List[TaskStep]  # 工具调用链
    outcome: Literal["success", "partial", "failure"]
    outcome_notes: str       # 结果说明
    embedding: List[float] | None  # 向量嵌入
    metadata: Dict[str, Any] # 扩展元数据

追踪流程

graph TB START[任务开始] START -->|task_begin name, goal| CHAIN[工具调用链] CHAIN -->|tool_A - tool_B - tool_C| END[任务结束] END -->|task_end outcome, notes| AUTO[自动处理] AUTO --> E1[1. 生成 embedding - fastembed] AUTO --> E2[2. 写入 TraceStore - SQLite] AUTO --> E3[3. FTS5 索引更新]

相似任务检索

通过语义嵌入实现相似任务搜索:

# Agent 开始新任务时自动注入相似历史任务
similar = store.search_similar(
    goal="download papers about MOF simulation",
    top_k=3,
    threshold=0.65
)
# → 注入到系统提示词,帮助 Agent 参考历史经验

嵌入模型

默认使用 intfloat/multilingual-e5-small

  • 支持中英文混合查询
  • 本地运行,无需外部 API
  • 模型大小约 92MB
  • 首次使用时自动下载

CLI 命令

miqi trace log              # 查看追踪列表
miqi trace show <hash>      # 查看追踪详情
miqi trace search <query>   # 语义搜索
miqi trace export           # 导出 JSON
miqi trace import <file>    # 导入数据
miqi trace migrate          # 从 LESSONS 迁移

与旧 Lessons 的对比

特性 Legacy Lessons Task Trace
数据结构 自然语言文本 结构化 Step 链
检索方式 关键词匹配 语义向量搜索
上下文注入 默认注入所有 Top-K 相似注入
关系建模 parent_hash DAG
持久化 JSONL 文件 SQLite WAL