正文 :
1. 摘要
用 TRAE SOLO 从零搭建了 Deep Agent AI —— 一个基于 DeepAgents SDK 的企业级多智能体平台。平台实现了 通用智能体 (办公助手)和 应用Skill智能体 (自动分析应用系统并生成可复用技能)的双智能体架构,支持流式对话、技能渐进式披露、自动登录认证、凭证加密隔离等企业级能力。核心亮点是 Skill 智能体能够:用户只需提供一个 URL,AI 即可自动获取页面源码、分析登录表单和功能接口、智能探索关联页面(探索页数自己控制)、增量式生成并保存技能,全程协作引导用户确认。
2. 背景
我是一名企业内部开发人员,日常需要对接多个内部系统(数据管理平台、项目管理平台等)。这些系统各有不同的登录方式和 API 接口,每次想让 AI 助手帮忙操作这些系统,都需要手动编写技能文件(SKILL.md),描述登录流程和接口定义,非常耗时。一个包含 35 个接口的 TAPD 技能,手动编写需要 2-3 小时。
我希望能让 AI 自己去"理解"这些系统,自动生成可复用的技能,这样就能快速将任何内部系统接入 AI 助手,实现自然语言操作业务系统。
3. 实践过程
第一步:搭建基础 Agent 架构
使用 TRAE SOLO,从零开始搭建基于 DeepAgents SDK 的 Agent 核心:
- 任务拆解 :Agent 创建 → 工具注册 → 中间件集成 → 会话持久化 → 系统提示词设计
- SOLO 能力使用 :利用 SOLO 的代码生成能力,快速生成 FastAPI 路由、Pydantic 模型、工具函数等基础代码框架
- 关键 Prompt : “创建一个基于 DeepAgents SDK 的 Agent,集成 SkillsMiddleware 实现渐进式技能披露,使用 PostgresSaver 实现会话持久化”
踩坑 :DeepAgents 的 create_deep_agent 需要同时传入 checkpointer 和 store ,否则会话无法跨重启恢复。最初只用了内存的 MemorySaver,重启后对话丢失,后来切换到 PostgreSQL 持久化。
第二步:实现技能系统和认证链路
技能系统是 Agent 的能力来源,认证链路是操作企业系统的前提:
- 任务拆解 :SKILL.md 文件格式设计 → 技能管理器(CRUD)→ 渐进式披露中间件 → 登录执行器 → 凭证加密存储 → 权限缓存自动续期
- SOLO 能力使用 :让 SOLO 参照 LangChain 工具定义规范,生成 @tool 装饰器包装的工具函数;参照现有 dm-login 技能格式,生成其他平台的登录技能
- 关键 Prompt : “实现一个登录执行器,支持预处理步骤(如获取CSRF Token)、多种登录方式(表单/JSON)、多种成功条件判断,且敏感信息不暴露给大模型”
踩坑 :企业系统的登录通常需要先 GET 登录页获取 CSRF Token,再 POST 登录接口。最初把 CSRF Token 硬编码在技能中,后来改为让大模型分析技能内容自动提取登录配置,实现了通用化。
第三步:实现多智能体切换和流式输出
这是本次最核心的功能升级:
-
任务拆解 :
- 前端:左侧智能体切换栏 → 多智能体会话管理 → SSE 流式渲染 → 历史消息恢复
- 后端:流式聊天 API → agent_type 路由 → 历史消息 API
- Skill 智能体:专用工具集 → 系统提示词 → 增量式生成流程
-
SOLO 能力使用 :
- 让 SOLO 生成 SSE 流式输出的完整实现(后端 StreamingResponse + 前端 ReadableStream)
- 让 SOLO 设计 Skill 智能体的系统提示词,包含完整的交互工作流程
- 让 SOLO 实现大页面 HTML 智能截取算法(提取表单/导航/API调用等关键片段)
-
关键 Prompt :
"在主页聊天框左侧增加一个智能体切换功能,点击不同智能体可切换聊天。 新增一个应用Skill智能体,目的是给用户生成一个应用系统的skills。 第一步引导用户输入URL,拿到源码后分析是否登录页面..."
踩坑 :
- 流式输出格式 :LangGraph 的 stream_mode=“messages” 返回的是 (message_chunk, metadata) 元组,不是直接的文本,需要正确解包
- 花括号转义 :系统提示词模板中使用 str.format() ,但模板中包含 {platform}-{function} 这样的非格式化花括号,导致 KeyError,需要转义为 {{platform}}-{{function}}
- 循环导入 : core.py 的 reload_agent 需要导入 skill_agent ,而 skill_agent 需要导入 core 的 create_volcengine_model ,通过函数内延迟导入解决
第四步:优化 Skill 智能体的交互体验
采纳了全部优化建议,让 Skill 智能体从"工具执行者"转变为"协作引导者":
优化项 实现方式 增量式生成 系统提示词引导Agent分阶段产出、逐步确认 自动验证 save_skill 内置接口可达性探测 智能去重 save_skill 内置冲突检测,提示合并/覆盖 协作引导 关键决策点让用户参与,先展示分析洞察再决策 防御性设计 覆盖7种异常场景处理策略 质量自检 save_skill 校验ID格式/名称/描述/必填字段 大页面截取 fetch_page_source 智能提取表单/导航/API调用
4. 成果展示
项目架构
┌──────────────────────────────────────────────────────┐
│ 前端 (index.html) │
│ ┌──────────┐ ┌──────────────────────────────────┐ │
│ │ 智能体 │ │ 流式聊天区域 │ │
│ │ 切换栏 │ │ SSE实时渲染 + 光标动画 │ │
│ │ 🤖 通用 │ │ │ │
│ │ 🔧 Skill │ │ │ │
│ └──────────┘ └──────────────────────────────────┘ │
└──────────────────────────────────────────────────────┘
│
POST /api/chat/stream
{message, thread_id, agent_type}
│
▼
┌──────────────────────────────────────────────────────┐
│ 后端 (FastAPI + DeepAgents) │
│ │
│ agent_type="general" → 通用智能体 (7个工具) │
│ agent_type="skill" → Skill智能体 (8个工具) │
│ │
│ 共享: PostgresSaver + PostgresStore + SkillManager │
└──────────────────────────────────────────────────────┘
Skill 智能体交互流程
用户提供URL → fetch_page_source → 分析页面类型
├─ 登录页 → 生成登录Skill → 提示配置凭证 → 探索系统功能
└─ 功能页 → 分析接口 → 用户确认 → 按模块分组生成Skill
核心功能截图说明
- 智能体切换 :左侧深色侧边栏,支持通用/Skill双智能体切换,切换时保留各自聊天记录
- 流式输出 :AI回复实时渲染,带闪烁光标动画,体验类似 ChatGPT
- 技能管理 :卡片式展示,支持AI一键生成完整技能定义
- 凭证配置 :密码AES加密存储,按用户+平台隔离
技术栈
层级 技术 AI SDK DeepAgents + LangChain + LangGraph 大模型 火山引擎 Doubao(OpenAI兼容接口) Web框架 FastAPI + Uvicorn 持久化 PostgreSQL(会话+记忆+业务数据) 认证 Fernet/AES加密 + bcrypt哈希 前端 原生HTML/CSS/JS + SSE流式
5. 效果与总结
提效效果
场景 传统方式 使用Skill智能体 提效 生成35个接口的TAPD技能 手动编写2-3小时 提供URL,AI自动分析5分钟 90%+ 生成登录技能 手动分析登录流程30分钟 AI自动识别表单+CSRF,1分钟 95%+ 新系统接入 编写技能+配置凭证1小时 提供URL,AI全流程引导10分钟 80%+
SOLO 在流程中做了什么
- 代码生成 :从零生成了整个项目的基础架构,包括 FastAPI 路由、Pydantic 模型、工具函数
- 架构设计 :帮助设计多智能体架构、流式输出方案、会话隔离策略
- 问题排查 :快速定位花括号转义、循环导入、流式格式等技术问题
- 优化建议 :主动提出增量式生成、质量自检、智能去重等优化方案
可复用方法
- 双智能体架构模式 :通用智能体 + 专用智能体,共享基础设施但独立工具集和提示词,可扩展到更多垂直场景
- 增量式生成 + 协作引导 :AI 不再一次性完成所有步骤,而是分阶段产出、逐步确认,用户始终掌控方向
- 技能即代码(Skill as Code) :用 SKILL.md 文件定义 AI 的能力,支持版本管理和热更新
- 敏感信息隔离模式 :凭证在工具内部获取和使用,永不暴露给大模型,确保企业安全


