feat: Agent 全栈升级——模块化重构、Hooks/Skills/Memory/SubAgent/Team 子系统、审计与任务持久化
架构重构: - Agent Runtime 由单文件拆为 runtime/ 目录 12 模块(熔断/流式执行/Token预算/文件缓存/权限等) - Agent Tools 由单文件拆为 tools/ 目录 20+ 模块(filesystem/astro/memory/skill/subagent/team 等) - 解析器体系重构(common.rs 836行变更),各解析器同步升级 - Download 服务重构(562行),反爬策略强化 - LLM 客户端重构(266行),流式调用优化 新子系统: - Hooks 生命周期系统(9种事件类型,PreToolUse/PostToolUse 支持输入输出拦截) - Skills 双层加载系统(system-reminder 轻量注入 + LoadSkillTool 按需加载,notify 文件监听热更新) - Memory 项目记忆管理(类型/提取/去重/衰减/保活/选择策略/护栏 7 模块) - SubAgent 上下文隔离子代理运行器(独立 ReAct 循环 + Hook 管道) - Team 多智能体团队协作(文件 inbox 通信、lead/teammate 协调) - TaskBoard DAG 任务依赖管理 - Trajectory 会话轨迹、Terminal 终止信号、Autonomous 自主模式、Background 异步通知 数据库: - agent_tasks 表(DAG 依赖模式,blocked_by JSON 数组) - agent_audit_log 表(工具调用审计:名称/状态/耗时/输出预览) - agent_identity 迁移(消息/审计/任务的 agent_name 归属,agent_team_members 团队注册表) API: - GET /chat/metrics 聚合指标端点 - GET /chat/sessions/:id/audit 会话审计查询 - GET /chat/questions + POST /chat/answer 人机交互问答 工程: - 新增依赖:serde_yaml、notify、glob、walkdir、lru - Skills 目录含 methodology/plotting/presentation 三个初始 SKILL.md - CLAUDE.md 完整项目架构文档
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
-- 智能体任务持久化表
|
||||
-- 支持 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);
|
||||
@@ -0,0 +1,19 @@
|
||||
-- 智能体审计日志表
|
||||
-- 记录所有工具调用的详细信息:工具名称、执行状态、耗时、输出预览
|
||||
--
|
||||
-- status: OK (成功) / FAIL (失败) / SESSION_STOP (会话终止)
|
||||
|
||||
CREATE TABLE IF NOT EXISTS agent_audit_log (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
session_id TEXT NOT NULL,
|
||||
step INTEGER NOT NULL DEFAULT 0,
|
||||
tool_name TEXT,
|
||||
status TEXT NOT NULL CHECK(status IN ('OK', 'FAIL', 'SESSION_STOP')),
|
||||
elapsed_ms INTEGER NOT NULL DEFAULT 0,
|
||||
output_preview TEXT,
|
||||
created_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_audit_log_session ON agent_audit_log(session_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_audit_log_created ON agent_audit_log(created_at);
|
||||
@@ -0,0 +1,36 @@
|
||||
-- 智能体身份隔离与团队协作支持
|
||||
--
|
||||
-- 为子代理(delegate_research)和多智能体团队(spawn_teammate)
|
||||
-- 提供 agent 粒度的消息隔离、审计追踪和任务归属。
|
||||
--
|
||||
-- 所有 ALTER TABLE 使用 DEFAULT 值,保证向后兼容:
|
||||
-- 现有数据自动标记为 'lead',旧代码无需修改。
|
||||
|
||||
-- 1. agent_messages: 消息归属
|
||||
ALTER TABLE agent_messages ADD COLUMN agent_name TEXT NOT NULL DEFAULT 'lead';
|
||||
|
||||
-- 2. agent_audit_log: 审计归属
|
||||
ALTER TABLE agent_audit_log ADD COLUMN agent_name TEXT NOT NULL DEFAULT 'lead';
|
||||
|
||||
-- 3. agent_tasks: 任务分配目标(支持角色路由)
|
||||
ALTER TABLE agent_tasks ADD COLUMN owner TEXT NOT NULL DEFAULT '';
|
||||
|
||||
-- 4. 新建: 团队成员注册表
|
||||
CREATE TABLE IF NOT EXISTS agent_team_members (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
session_id TEXT NOT NULL,
|
||||
agent_name TEXT NOT NULL,
|
||||
agent_role TEXT NOT NULL,
|
||||
status TEXT NOT NULL DEFAULT 'active'
|
||||
CHECK(status IN ('spawning', 'active', 'idle', 'shutdown')),
|
||||
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,
|
||||
UNIQUE(session_id, agent_name)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_team_members_session ON agent_team_members(session_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_team_members_status ON agent_team_members(session_id, status);
|
||||
|
||||
-- 重建 agent_messages 索引(包含 agent_name 过滤加速)
|
||||
CREATE INDEX IF NOT EXISTS idx_agent_messages_agent ON agent_messages(session_id, agent_name);
|
||||
Reference in New Issue
Block a user