Files
aiagent/backend/app/models/agent_learning_pattern.py
renjianbo cffe4a52d6
Some checks failed
CI/CD Pipeline / Backend — Lint & Test (push) Has been cancelled
CI/CD Pipeline / Frontend — Lint & Build (push) Has been cancelled
CI/CD Pipeline / Docker — Build Check (push) Has been cancelled
feat: agent memory management — CRUD API + Android management screen
Backend:
- New /api/v1/agents/{id}/memory endpoints: CRUD for global_knowledge,
  knowledge_entities, learning_patterns, vector_memories + import/export
- Fix scope_id column overflow: 3 model columns expanded to hold compound
  keys (user_id:agent_id format, 73 chars vs old VARCHAR(36))
- Config: allow unknown env vars (extra="ignore") for optional overrides

Android:
- MemoryManageScreen: 4-tab UI (全局知识/知识实体/学习模式/对话记忆)
  with search, delete, and FAB to add new entries
- Import/export via ShareSheet and file picker
- AgentListScreen: long-press dropdown menu → 记忆管理 entry point
- NavGraph: memory_manage/{agentId}/{agentName} route with URL encoding

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-30 02:23:45 +08:00

26 lines
1.6 KiB
Python

"""Agent 自主学习模式表:记录工具使用模式,支持自主学习优化"""
import uuid
from datetime import datetime
from sqlalchemy import Column, String, Text, Float, Integer, DateTime
from app.core.database import Base
class AgentLearningPattern(Base):
"""Agent 学习模式 — 记录工具调用序列与任务类型的关系"""
__tablename__ = "agent_learning_patterns"
id = Column(String(36), primary_key=True, default=lambda: str(uuid.uuid4()))
scope_kind = Column(String(16), nullable=False, index=True, comment="作用域类型: agent/bare")
scope_id = Column(String(255), nullable=False, index=True, comment="作用域 ID: agent_id/user_id")
task_category = Column(String(64), nullable=False, default="general", comment="任务分类")
task_keywords = Column(String(256), default="", comment="任务关键词")
suggested_tools = Column(Text, nullable=False, comment="推荐工具序列 (JSON array)")
effectiveness_score = Column(Float, default=0.0, comment="有效评分 0-1")
total_runs = Column(Integer, default=1, comment="总运行次数")
successful_runs = Column(Integer, default=1, comment="成功次数")
avg_iterations = Column(Float, default=1.0, comment="平均迭代次数")
avg_tool_calls = Column(Float, default=1.0, comment="平均工具调用数")
last_used_at = Column(DateTime, default=datetime.utcnow, comment="最后使用时间")
created_at = Column(DateTime, default=datetime.utcnow, comment="创建时间")
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow, comment="更新时间")