Todea助理
Kubernetes原生AI平台,带有React聊天UI,用于通过自然语言安装、管理和诊断Linkerd服务网格。支持Google Gemini、Azure OpenAI或完全集群内的Ollama运行时——所有提供者都有相同的分层多代理行为。
建筑
服务
路径
端口
角色
网络
web/
80
React SPA+Express静态服务器
代理中心
servers/agent-hub/
3100
统一LLM网关——通往谷歌、Azure或Ollama的路由;运行根调度程序代理和所有子代理循环
MCP服务器
servers/mcp/
3002
FastMCP工具服务器;通过MCP公开所有原始工具并提供服务 GET /agents 使用子代理配置
Helm代理
servers/mcp/helm_agent/
3400
HTTP包装器 helm 和 kubectl;由MCP服务器调用
OpenSSL代理
servers/mcp/openssl_agent/
3500
X.509证书生成、检查和验证的HTTP包装器
GitHub代理
servers/mcp/github_agent/
3600
围绕GitHub REST API的HTTP包装器
Kubernetes代理
servers/mcp/kubernetes_agent/
3700
HTTP包装器 kubectl
Linkerd代理
servers/mcp/linkerd_agent/
3800
围绕BEL Helm操作和证书管理的HTTP包装器
对话中心
servers/conversation-hub/
3300
所有提供商共享对话+消息存储
培训中心
servers/training-hub/
3500
REST+SSE服务,管理机器学习训练管道
Ollama运行时 (可选)
servers/ollama-runtime/
11434
带有预烤模型的定制Olama图像
多代理层次结构
该系统使用 模型无关的分层代理架构 每个提供商(谷歌、Azure、Ollama)都有相同的行为:
复制 Root Agent (any provider) — pure dispatcher
Sees only 5 virtual tools:
call_kubernetes_agent(task) — pod/log/event diagnostics
call_openssl_agent(task) — cert generate/inspect/verify
call_github_agent(task) — repo file/issue/PR lookups
call_helm_agent(task) — generic Helm/kubectl operations
call_linkerd_agent(task) — BEL install/upgrade/check
Sub-agents (nested loops in agent-hub, any provider):
kubernetes_agent — 9 kubectl tools
openssl_agent — 3 certificate tools
github_agent — 5 GitHub API tools
helm_agent — 8 generic helm/kubectl tools
linkerd_agent — 11 BEL-specific helm/linkerd tools
它是如何工作的:
根代理接收用户的消息,并决定呼叫哪个专家。
agent-hub 拦截 call_*_agent 工具调用和运行 run_sub_agent() 在 sub_agent.py.
sub_agent.py 从以下位置获取子代理的指令和允许的工具列表 GET /agents 然后在MCP服务器上运行与根代理具有相同提供者和模型的非流式代理循环。
子代理循环仅调用其拥有的MCP工具;结果以普通字符串的形式流回根代理。
关键文件:
文件
目的
servers/agent-hub/sub_agent.py
run_sub_agent(name, task, provider, model) --每个提供者嵌套循环
servers/agent-hub/mcp_utils.py
_list_mcp_tools() (根,过滤+虚拟)· _list_all_mcp_tools() (次级代理人)
servers/agent-hub/config.py
DEFAULT_INSTRUCTION (根调度程序提示)
servers/mcp/*/config.py
每个代理人的 AGENT_CONFIG dict(名称、说明、工具列表)
servers/mcp/app.py
FastMCP ASGI+Starlette GET /agents 路线
servers/mcp/helm_agent/mcp_tools.py
通用舵MCP工具(HTTP包装器,而非子流程)
工具所有权
子代理
MCP工具
Kubernetes
get_namespaces, get_nodes, get_pods, get_deployments, get_pod_containers, get_pod_logs, describe_pod, get_events, diagnose_pod_restarts
开放式安全套接层
generate_certificates, inspect_certificate, verify_certificate_chain
GitHub
github_get_file, github_list_directory, github_search_code, github_get_issue, github_get_pr
舵
helm_generic_repo_add, helm_generic_search, helm_generic_upgrade_install, helm_generic_status, helm_generic_list, helm_generic_uninstall, kubectl_apply, kubectl_pods
Linkerd
helm_search_bel_versions, helm_repo_add, install_gateway_api_crds, install_linkerd_control_plane, helm_install_linkerd_crds, helm_install_linkerd_control_plane, helm_upgrade_linkerd, helm_configure_linkerd, helm_uninstall_linkerd, helm_status, linkerd_check
服务地图
复制 Browser
│
│ HTTP (port 8080 via k3d load balancer)
▼
Ingress (Traefik)
├── / → todea-web :80 React SPA + Express
├── /mcp → todea-mcp :3002 MCP tool server + /agents
├── /chat → todea-agent-hub :3100 Unified hub (Google · Azure · Ollama)
├── /models → todea-agent-hub :3100
├── /conversations → todea-agent-hub :3100
├── /settings → todea-agent-hub :3100
└── /healthz → todea-agent-hub :3100
Internal only (no dedicated ingress):
todea-helm-agent :3400 ← called by todea-mcp for all helm/kubectl operations
todea-openssl-agent :3500 ← called by todea-mcp for certificate operations
todea-github-agent :3600 ← called by todea-mcp for GitHub API queries
todea-kubernetes-agent :3700 ← called by todea-mcp for kubectl diagnostics
todea-linkerd-agent :3800 ← called by todea-mcp for BEL Helm operations
todea-conversation-hub :3300 ← called by the agent-hub for conversation storage
todea-training-hub :3500 ← reached via the web pod's proxy at /training-hub
调用图
所有提供程序都遵循相同的模式-区别仅在于调用哪个LLM API。
复制 React UI ──► Agent Hub ──► LLM API (Google / Azure / Ollama)
│ │
│ Root agent sees 5 virtual tools
│ │
│ call_*_agent ──► sub_agent.py (nested loop)
│ │
│ sub-agent calls MCP tools
│ │
│ ┌─────────────────────┴──────────────────────┐
│ MCP Server :3002 (raw tools via FastMCP) │
│ │ │
│ ┌──────┼──────────────────────────────┐ │
│ Helm Kubernetes OpenSSL GitHub Linkerd │
│ :3400 :3700 :3500 :3600 :3800 │
│
└──► Conversation Hub :3300 (history store)
联接台
呼叫者
被呼叫者
如果被呼叫者宕机,则失败?
Hub(任何提供商)
对话Hub
是--聊天和对话列表不可用
Hub(任何提供商)
MCP服务器
否--工具调用已禁用,纯聊天仍然有效
枢纽(谷歌路径)
谷歌API
是-聊天不可用
Hub(Azure路径)
Azure OpenAI
是--聊天不可用
Hub(Ollama路径)
Ollama运行时
是--聊天不可用
MCP服务器
Helm代理
是--所有Helm/kubectl工具都失败
MCP服务器
OpenSSL代理
否--cert工具失败,所有其他工具仍能工作
MCP服务器
GitHub代理
否——GitHub工具失败,所有其他工具仍能正常工作
MCP服务器
Kubernetes代理
否--kubectl诊断工具失败,所有其他工具仍能正常工作
MCP服务器
Linkerd代理
是--所有Linkerd/BEL安装工具都失败
文档
运营
指南
说明
部署(k3d)
k3d集群设置、Helm安装(Gemini、Azure和Ollama路径)、更新、重建单个服务
本地开发
在没有k3d的情况下在本地运行每个服务
代理商和MCP工具
多代理层次结构、工具参考和Linkerd安装顺序
Ollama参考
模型管理、持久性、直播、外部Ollama、工具调用行为
Azure
指南
说明
基础设施
资源组、ACR、AKS集群、GPU点节点池、NVIDIA设备插件
构建和部署
构建映像并将其推送到ACR,创建命名空间和PVC,Helm部署(Gemini和Ollama路径)
培训管道
跑步刮→ 火车→ 通过UI提供服务、更新部署、持续培训CronJob、有用的命令、成本估算
机器学习与培训
指南
说明
训练
训练UI、微调管道和提供自定义Linkerd模型
数据质量
对当前训练数据集的评估——来源、统计数据、关注点和建议
持续训练
计划和事件触发的再培训循环、管道架构、培训策略权衡
源代码之上的RAG
为什么RAG在代码、向量存储选项、分块策略和新的MCP工具设计方面优于训练
模型选择和基础设施
llama3.1:8b vs Qwen2.5-7B-Instruct,AKS vs家用GPU,MLOps工具环境和推荐堆栈
许可证
有关许可条款,请参阅各个目录。