feat: enhance agent orchestration, knowledge flow and UI refinements

This commit is contained in:
2026-03-29 20:31:13 +08:00
parent d85cb9cf35
commit e0fe3ca623
301 changed files with 1197804 additions and 7863 deletions

View File

@@ -1,5 +1,6 @@
from app.models.base import Base
from app.models.user import User
from app.models.folder import Folder
from app.models.document import Document, DocumentChunk
from app.models.task import Task, TaskHistory
from app.models.forum import ForumPost, ForumReply
@@ -17,11 +18,14 @@ from app.models.brain import (
brain_memory_sources,
)
from app.models.todo import DailyTodo, TodoSource
from app.models.reminder import Reminder, ReminderStatus
from app.models.goal import Goal, GoalStatus
from app.models.log import Log, LogType, LogLevel
__all__ = [
"Base",
"User",
"Folder",
"Document",
"DocumentChunk",
"Task",
@@ -45,6 +49,10 @@ __all__ = [
"brain_memory_sources",
"DailyTodo",
"TodoSource",
"Reminder",
"ReminderStatus",
"Goal",
"GoalStatus",
"Log",
"LogType",
"LogLevel",

View File

@@ -1,4 +1,4 @@
from sqlalchemy import Column, String, Text, Boolean, ForeignKey, Integer
from sqlalchemy import Column, String, Text, Boolean, ForeignKey, Integer, JSON
from sqlalchemy.orm import relationship
from app.models.base import BaseModel
@@ -7,9 +7,10 @@ class Agent(BaseModel):
__tablename__ = "agents"
name = Column(String(100), nullable=False)
role = Column(String(100), nullable=False) # master, planner, executor, librarian, analyst
role = Column(String(100), nullable=False) # master, schedule_planner, executor, librarian, analyst
description = Column(Text, nullable=True)
system_prompt = Column(Text, nullable=False)
selected_skill_ids = Column(JSON, default=list, nullable=False)
is_active = Column(Boolean, default=True)
is_default = Column(Boolean, default=False)

View File

@@ -0,0 +1,21 @@
from enum import Enum as PyEnum
from sqlalchemy import Column, Enum, ForeignKey, String, Text
from app.models.base import BaseModel
class GoalStatus(str, PyEnum):
ACTIVE = "active"
DONE = "done"
ARCHIVED = "archived"
class Goal(BaseModel):
__tablename__ = "goals"
user_id = Column(String(36), ForeignKey("users.id"), nullable=False, index=True)
title = Column(String(255), nullable=False)
note = Column(Text, nullable=True)
goal_date = Column(String(10), nullable=False, index=True)
status = Column(Enum(GoalStatus), default=GoalStatus.ACTIVE, nullable=False)

View File

@@ -0,0 +1,21 @@
from enum import Enum as PyEnum
from sqlalchemy import Boolean, Column, DateTime, Enum, ForeignKey, String, Text
from app.models.base import BaseModel
class ReminderStatus(str, PyEnum):
PENDING = "pending"
DONE = "done"
class Reminder(BaseModel):
__tablename__ = "reminders"
user_id = Column(String(36), ForeignKey("users.id"), nullable=False, index=True)
title = Column(String(255), nullable=False)
note = Column(Text, nullable=True)
reminder_at = Column(DateTime, nullable=False, index=True)
status = Column(Enum(ReminderStatus), default=ReminderStatus.PENDING, nullable=False)
is_dismissed = Column(Boolean, default=False, nullable=False)

View File

@@ -9,11 +9,12 @@ class Skill(BaseModel):
name = Column(String(100), nullable=False, unique=True, index=True)
description = Column(Text, nullable=True) # 供 LLM 理解用途
instructions = Column(Text, nullable=False) # Agent 执行时的指令模板
agent_type = Column(String(50), nullable=False, index=True) # master/planner/executor/librarian/analyst
agent_type = Column(String(50), nullable=False, index=True) # master/schedule_planner/executor/librarian/analyst
tools = Column(JSON, default=list) # 引用的工具名称列表
required_context = Column(JSON, default=list) # 需要的前置数据
output_format = Column(Text, nullable=True) # 输出格式要求
visibility = Column(String(20), default="private") # private/team/market
is_builtin = Column(Boolean, default=False, nullable=False)
team_id = Column(String(36), ForeignKey("users.id"), nullable=True)
is_active = Column(Boolean, default=True)
owner_id = Column(String(36), ForeignKey("users.id"), nullable=False)