-- 智能体任务持久化表 -- 支持 DAG 依赖模式 (blocked_by) 和任务状态生命周期 -- -- Status lifecycle: -- pending -> in_progress -> completed -- (可回退: in_progress -> pending) -- -- blocked_by 存储 JSON 数组格式: ["task_id_1", "task_id_2"] -- 应用层负责验证 DAG 有效性(无自引用、无循环依赖) CREATE TABLE IF NOT EXISTS agent_tasks ( id INTEGER PRIMARY KEY AUTOINCREMENT, session_id TEXT NOT NULL, task_id TEXT NOT NULL, content TEXT NOT NULL DEFAULT '', status TEXT NOT NULL DEFAULT 'pending' CHECK(status IN ('pending', 'in_progress', 'completed')), blocked_by TEXT NOT NULL DEFAULT '[]', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (session_id) REFERENCES agent_sessions(session_id) ON DELETE CASCADE ); -- 按会话查询任务(最常用) CREATE INDEX IF NOT EXISTS idx_agent_tasks_session ON agent_tasks(session_id); -- 按状态过滤(用于恢复/展示) CREATE INDEX IF NOT EXISTS idx_agent_tasks_status ON agent_tasks(session_id, status); -- 保证同一会话内 task_id 唯一 CREATE UNIQUE INDEX IF NOT EXISTS idx_agent_tasks_session_task ON agent_tasks(session_id, task_id);