TAgent 是一个基于 Java 17、Spring Boot、Spring AI 和 DDD 分层构建的 AI Agent 工程实践项目。 它不是只封装一次模型调用,而是覆盖了一次 Agent 请求从接入、路由、运行时装配、规划执行、RAG、记忆、MCP 工具治理、人工审批、执行中干预,到 SSE 流式输出和全链路观测的完整过程。
# Add to your Claude Code skills
git clone https://github.com/pengmoubuaixuexi/TAgentLast scanned: 6/21/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-06-21T08:34:08.001Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}TAgent is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by pengmoubuaixuexi. TAgent 是一个基于 Java 17、Spring Boot、Spring AI 和 DDD 分层构建的 AI Agent 工程实践项目。 它不是只封装一次模型调用,而是覆盖了一次 Agent 请求从接入、路由、运行时装配、规划执行、RAG、记忆、MCP 工具治理、人工审批、执行中干预,到 SSE 流式输出和全链路观测的完整过程。. It has 108 GitHub stars.
Yes. TAgent passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/pengmoubuaixuexi/TAgent" and add it to your Claude Code skills directory (see the Installation section above).
TAgent is primarily written in Java. It is open-source under pengmoubuaixuexi on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh TAgent against similar tools.
No comments yet. Be the first to share your thoughts!
🚀 A Production-Grade AI Agent Engineering Framework
🇬🇧 English | 🇨🇳 中文
不只是简单的模型封装,而是覆盖 Agent 请求的完整生命周期:接入、路由、运行时装配、规划执行、RAG、记忆、MCP 工具治理、人工审批、执行中干预,到 SSE 流式输出和全链路观测。
TAgent 是一个基于 Java 17、Spring Boot、Spring AI 和 DDD 分层架构 构建的企业级 AI Agent 工程实践项目。
它覆盖了一次 Agent 请求从接入、路由、运行时装配、规划执行、RAG、记忆、MCP 工具治理、人工审批、执行中干预,到 SSE 流式输出和全链路观测的完整过程。
本仓库是脱敏后的公开版本,不包含真实密钥、运行日志、历史对话、临时报告、数据库备份和个人文件。

用户请求
-> Filter / SSE Controller
-> UnifiedAgentRouter
-> Fixed / Auto / Flow
-> Advisor + LLM
-> MCP 工具执行
-> SSE 流式响应
request_tool 主动描述能力缺口 → PgVector 匹配真实 MCP 工具 → 与 Agent 常驻工具合并/run 查看近期快照,并用 /runId-stepN 从指定步骤修正重跑steer 重做当前步骤、answer_now 跳过剩余步骤、cancel 中止执行ask_user,通过 SSE 向用户收集补充信息,再回填继续执行| 能力 | 实现 |
|---|---|
| 三种 Agent 模式 | Fixed 单步直答、Auto 分析执行闭环、Flow DAG 编排 |
| 数据库驱动装配 | Agent、Client、Model、Prompt、Advisor、RAG、MCP 关系由数据库配置 |
| 统一 Agent 路由 | 一次模型调用选择 Agent,并输出可能缺失的工具能力;已选 Agent 也可按配置预推断 |
| 动态 MCP 工具 | 路由预推断与 request_tool 元工具并存,结合工具目录中文化、意图扩写、PgVector 语义匹配按请求临时补挂 |
| MCP 自愈 | 懒探活、失败重试、超时重连、dead-client 重建、冷却与熔断 |
| 工具治理 | 非执行步禁工具、未知工具纠正、参数提示、轮次预算、跨 MCP 并行 |
| Flow 计划确认 | Flow 计划解析后暂停,支持用户查看、编辑、确认后继续 DAG 执行 |
| Run ID 步骤重做 | Redis TTL 快照保存运行步骤,支持 /run 查看、/runId-stepN 定点重做 |
| Agentic RAG | SIMPLE、HyDE、FUSION、DECOMPOSE 四种查询策略 |
| 四层记忆 | Working、Chat、Long-Term、Episodic Memory |
| 流式干预 | Auto、Flow、Fixed 均支持立即回答、引导与取消执行 |
| 主动追问 | ask_user 通过 SSE 向用户请求补充信息,默认关闭、按 session 限次和超时 |
| 人机协同 | 高风险工具调用通过 SSE 请求人工批准或拒绝 |
| 可解释输出 | 工具进度、RAG evidence、Memory evidence、步骤状态 |
| 全链路观测 | Prometheus、ELK、Jaeger、event_log、LLM 成本与 MCP 健康页 |
请求进入 POST /api/v1/agent/auto_agent 后依次经过:
MdcTraceFilter:写入 request、trace、user、tenant、session 等上下文RateLimitFilter:按用户、会话或 IP 进行限流IdempotencyFilter:同步请求支持幂等,SSE 长连接端点直接放行AiAgentController:创建 ResponseBodyEmitter、注册审批通道并立即发送 ackExecuteCommandEntity,交给 Dispatch 异步执行ack 会携带干预能力是否开启,前端据此决定是否显示执行中的操作栏。
AgentDispatchService 负责:
UnifiedAgentRouter 选择最合适的 agent_idagent.dynamic-tools.infer-on-selected-agent 决定是否继续推断缺失工具能力missing_tool_descs,由 agent.dynamic-tools 配置决定是否在本次请求中预补工具agent.request-tool.enabled=true 时调用 request_tool 动态装载真实 MCP 工具strategy,分派到 Fixed、Auto 或 Flow适合直接问答或单轮工具任务:
准备上下文 -> 注入 Advisor -> 合并工具 -> LLM 流式生成 -> 保存记忆 -> 输出
也支持 MCP 工具调用、RAG、长期记忆、steer 重做、answer_now 提前结束。
适合目标明确但需要自主分析、执行和检查的任务:
| 步骤 | 职责 | 是否开放工具 |
|---|---|---|
| Step1 | 分析任务、判断完成度 | ❌ |
| Step2 | 执行具体任务 | ✅ |
| Step3 | 质量检查与 Reflexion | ❌ |
| Step4 | 汇总最终结果 | ❌ |
Auto 会循环执行,直到任务完成或达到 maxStep。Step3 判断失败时,可携带结构化 critique 返回 Step2 修正。
适合可拆解、存在依赖关系的复杂任务:
| 步骤 | 职责 | 是否开放工具 |
|---|---|---|
| Step1 | 分析需要的工具能力 | ❌ |
| Step2 | 生成带 DEPENDS_ON 的步骤计划 |
❌ |
| Step3 | 将计划解析为 DAG | - |
| Step4 | 按依赖关系并行执行并最终整合 | ✅ |
DAG 中依赖已经满足的步骤可以并行,不同 MCP Server 的工具可以并行,同一个 MCP Server 复用同一连接时保持串行。
Flow 还可以开启计划确认:Step2 生成计划、Step3 解析为 DAG 后先暂停,把计划以工具卡片形式展示给用户;用户可以直接确认,也可以编辑步骤标题、内容和依赖关系后再继续执行。这个能力只属于 Flow 策略,不影响 Fixed 和 Auto 的默认直跑流程。
每次 Agent 运行都会生成一个 Run ID,用来串联本次请求的 SSE、ChatMemory、event_log 和 Redis 运行快照。
/run 展示当前会话近期运行,只展开运行摘要;选择某个 Run ID 后再展示可重做步骤。/runId-stepN 修正要求 后,系统继承源运行的 Agent 和前置步骤,并从目标步骤继续生成新回答。固定给每个 Agent 挂大量工具,会增加上下文、工具幻觉和选错工具的概率。TAgent 将工具拆成"常驻工具"和"按请求动态补充工具"。动态补充支持两条互补路径:路由阶段根据 missing_tool_descs 预推断,或模型在真实执行中通过 request_tool 主动描述能力缺口。
UnifiedAgentRouter
-> missing_tool_descs(路由预推断)
或 Advisor / LLM
-> request_tool(needs)(执行期补充)
-> 每条能力描述生成 embedding
-> PgVector 查询 mcp_tool_vector
-> 每类能力取 Top-K
-> 相对距离阈值过滤
-> 多类结果并集去重
-> 懒创建或复用 MCP callback
-> 常驻工具 + 动态工具
-> 注入本次请求 / run
工具资产由两部分组成:
ai_mcp_tool_catalog:真实工具名、MCP、原始描述、中文描述和中文意图mcp_tool_vector:用于语义检索的工具向量request_tool 属于元工具,不算业务执行工具;它可以在 Flow 的工具分析/规划阶段提前为后续 DAG 执行步补齐能力。路由预推断则适合在请求开始前补齐较明确的能力缺口。当前工具匹配采用 embedding-only,不回退 BM25 或 LLM rerank。向量服务不可用时宁可跳过动态补挂,也不盲目匹配无关工具。
MCP 调用不是直接执行裸 callback,而是经过 MeteredToolCallback、RobustToolCallingManager 和 McpClientRegistry 三层治理。
Registry 维护 MCP Client、工具与 MCP 的映射、重建工厂、最近成功时间、连续失败次数和熔断状态。
自愈路径包括:
MeteredToolCallback 内部 delegate重连后对模型暴露的 ToolDefinition 保持稳定,因此工具参数提示不会因 callback 切换而丢失。
Advisor 由数据库配置,并按 order 参与请求:
| Advisor | 作用 |
|---|---|
| Semantic Cache | 相似问题命中后直接短路后续链路 |
| Long-Term Memory | 注入长期画像和语义记忆,结束后异步抽取新记忆 |
| Episodic Memory | 注入当前会话或跨会话摘要 |
| Prompt Injection | 检测潜在提示词注入 |
| PII Mask | 对输入或输出中的敏感信息进行处理 |
| Agentic RAG | 判断是否检索以及选择查询策略 |
| Rag Answer | 执行混合检索、rerank、父子文档替换和引用组装 |
| Chat Memory | 只读历史上下文,完整回答由应用层写入 |
| CoVe | 对回答声明进行检索核验与观测 |
RAG Router 会先判断是否需要检索,再从四种策略中选择:
| 策略 | 说明 |
|---|---|
| SIMPLE | 重写原始查询后直接检索 |
| HYDE | 先生成假想文档,再用其语义进行检索 |
| FUSION | 生成多个查询变体,并通过 RRF 融合结果 |
| DECOMPOSE | 将多跳问题拆成多个子查询并行检索 |
检索链路:
Query Planning
-> PgVector 语义召回
-> Elasticsearch BM25
-> RRF 融合
-> Cross Encoder / LLM Rerank
-> Child 命中替换为 Parent Document
-> 注入编号引用
-> rag_evidence SSE
| 记忆层 | 存储 | 用途 |
|---|---|---|
| Working Memory | Redis | 保存 Auto/Flow 步骤中间产物,支持步骤间读取和断线后的完成态回放 |
| Chat Memory | MySQL + Redis Cache | 保存多轮聊天历史和滚动摘要 |
| Long-Term Memory | MySQL Meta + PgVector | 保存用户画像、技能、偏好、计划和情况,支持语义召回 |
| Episodic Memory | MySQL | 保存会话阶段性摘要和近期经历 |
长期记忆包含:
Auto、Flow、Fixed 三种模式均支持 steer、answer_now 和 cancel。
POST /api/v1/agent/steer
Content-Type: application/json
{
"sessionId": "session_demo_001",
"idea": "请重点从工程落地和风险控制角度分析"
}
行为:
当模型缺少完成任务所必需的信息,或用户意图存在多种合理理解需要拍板时,可以调用 ask_user 主动向用户追问。
流程:
Advisor + LLM
-> ask_user tool_call
-> user_input_required SSE
-> 用户补充回填
-> ask_user tool result
-> 继续下一轮推理
设计边界:
agent.user-input.enabled=false 时完全不广播 ask_user,默认不影响原链路UserInputGate 按 sessionId 限制追问次数,并支持超时自动放行ask_user 与人工审批互不复用 ID:审批管工具授权,ask_user 管需求澄清高风险工具可配置为执行前审批:
human_approval_required SSE 事件POST /api/v1/agent/approval
Content-Type: application/json
{
"approvalId": "approval-id-from-sse",
"approved": true
}
| 事件 | 用途 |
|---|---|
ack |
确认连接建立并返回干预开关 |
step_start / step_end |
展示 Agent 当前步骤 |
token |
逐 token 渲染回答 |
tool_call_start / tool_call_end / tool_call_error |
展示工具进度 |
human_approval_required |
请求人工审批 |
user_input_required |
模型通过 ask_user 请求用户补充信息 |
rag_evidence |
展示知识库引用依据 |
memory_evidence |
展示记忆召回依据 |
data |
返回步骤结果或最终结果 |
TAgent 同时记录模型、工具和 Agent 步骤:
LlmObservationRecorder:模型、耗时、Token、缓存 Token、billing scopeai_event_log:步骤输入输出、路由、工具、干预和最终结果WireTraceRecorder:在不消费下游响应体的前提下记录流式 wire 信息页面:
http://localhost:8099/observe.htmlhttp://localhost:8099/observe-mcp.html| 模块 | 说明 |
|---|---|
ai-agent-station-study-api |
接口、DTO 和统一响应 |
ai-agent-station-study-app |
Spring Boot 启动、配置、静态页面和 Mapper XML |
ai-agent-station-study-domain |
Agent 路由、执行策略、RAG、记忆、MCP 与安全治理 |
ai-agent-station-study-infrastructure |
DAO、Repository、缓存和外部存储适配 |
ai-agent-station-study-trigger |
HTTP Controller、管理接口和任务触发 |
ai-agent-station-study-types |
通用类型、异常和任务调度组件 |
docs/dev-ops |
Docker、SQL 迁移、Grafana、Pro |