架构重构: - 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 完整项目架构文档
54 lines
1.3 KiB
Rust
54 lines
1.3 KiB
Rust
// src/agent/team/config.rs
|
|
//
|
|
// 团队配置类型与持久化 (.team/{session_id}/config.json)。
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
/// 团队成员状态
|
|
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
|
|
#[serde(rename_all = "lowercase")]
|
|
pub enum MemberStatus {
|
|
Spawning,
|
|
Working,
|
|
Idle,
|
|
Shutdown,
|
|
}
|
|
|
|
/// 单个成员配置
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct MemberConfig {
|
|
pub name: String,
|
|
pub role: String,
|
|
pub system_prompt: String,
|
|
pub status: MemberStatus,
|
|
}
|
|
|
|
/// 团队配置
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct TeamConfig {
|
|
pub session_id: String,
|
|
pub lead_name: String,
|
|
pub members: Vec<MemberConfig>,
|
|
}
|
|
|
|
impl TeamConfig {
|
|
/// 创建新的团队配置
|
|
pub fn new(session_id: &str) -> Self {
|
|
TeamConfig {
|
|
session_id: session_id.to_string(),
|
|
lead_name: "lead".to_string(),
|
|
members: Vec::new(),
|
|
}
|
|
}
|
|
|
|
/// 添加成员
|
|
pub fn add_member(&mut self, name: &str, role: &str, system_prompt: &str) {
|
|
self.members.push(MemberConfig {
|
|
name: name.to_string(),
|
|
role: role.to_string(),
|
|
system_prompt: system_prompt.to_string(),
|
|
status: MemberStatus::Spawning,
|
|
});
|
|
}
|
|
}
|