从零构建自主可控AI智能体:NanoFleet Agent部署与实战指南

news2026/5/9 17:43:46
1. 项目概述构建一个自主可控的AI智能体运行时如果你和我一样对当前市面上那些要么绑定特定云服务、要么功能封闭的AI Agent框架感到厌倦那么NanoFleet Agent的出现就像在满是套件的工具箱里发现了一把瑞士军刀。它不是一个玩具而是一个开箱即用、能真正部署在你自己的服务器上并按照你的意志去工作的“数字员工”运行时环境。简单来说它为你提供了一个骨架让你能快速赋予AI一个身份、一套技能并让它通过Telegram、Discord等渠道与你或你的用户对话甚至自动执行定时任务。这个项目的核心价值在于“自主可控”和“渠道无关”。它基于Mastra框架用Bun和TypeScript构建这意味着你获得的是现代、高性能的JavaScript/TypeScript开发体验。更关键的是它采用了Elastic License 2.0在绝大多数自用和内部部署场景下是友好的。你不需要被某个AI模型供应商锁死它原生支持Anthropic、Google AI以及通过OpenRouter接入的众多模型只需一个API密钥就能切换。在我实际部署和深度使用的过程中我发现它的设计哲学非常清晰将AI的“灵魂”身份、风格、记忆与“躯体”运行时、工具、连接渠道解耦通过一个简洁的workspace目录来管理一切这种设计让定制和维护变得异常直观。接下来我将从一个实践者的角度带你彻底拆解NanoFleet Agent。我不会只复述官方文档而是会结合我部署、调试、扩展它的全过程分享那些文档里没写的配置细节、性能调优心得以及如何避开初期容易踩的坑。无论你是想为自己打造一个24小时在线的AI助手还是为企业构建一个智能客服原型这篇文章都能提供从零到一的实战指南。2. 核心架构与设计哲学解析2.1 为什么是“运行时”而非“框架”理解NanoFleet Agent的定位至关重要。市面上很多AI Agent项目自称“框架”它们提供了大量预设的流程、复杂的编排逻辑但同时也带来了较高的学习成本和灵活性限制。NanoFleet Agent则更偏向于一个“运行时”。你可以把它想象成一个操作系统内核它负责最核心的调度、工具调用、记忆管理和对外通信而具体的“应用程序”——也就是你的AI智能体——则完全由你在workspace/目录下的Markdown文件定义。这种设计带来了几个显著优势。首先极低的侵入性。你的智能体逻辑身份、技能是用最朴素的Markdown和YAML描述的没有复杂的继承关系或装饰器这意味着未来即使NanoFleet Agent本身升级你的智能体定义也有很大的概率能平滑迁移。其次关注点分离。开发者你只需要关心“AI是谁”和“AI能做什么”而“AI如何运行”则由运行时负责。这让我在开发自定义技能时可以完全专注于业务逻辑无需处理底层的并发、状态管理或流式响应等繁琐问题。2.2 核心组件交互流程要真正用好它必须理解其内部的数据流。下图清晰地展示了从用户消息输入到AI响应输出的完整过程以及各核心模块如何协同工作flowchart TD A[外部平台br如 Telegram] --|消息| B[Channel Adapterbr渠道适配器] B --|HTTP POST /generate| C[NanoFleet Agent 运行时] subgraph C [运行时核心处理] D[接收请求 路由] D -- E[加载 Workspace 配置brSOUL.md, STYLE.md 等] E -- F[组装系统提示词br注入技能/工具信息] F -- G[调用 LLM 接口br支持 Claude, Gemini 等] G -- H[解析 LLM 响应br判断是否调用工具] H -- I{需要调用工具?} I --|是| J[执行工具br如搜索、读文件、Shell] J -- G I --|否| K[生成最终响应文本] end K --|流式或非流式| B B --|推送响应| A L[Workspace 目录] -.-|动态读取| E M[MCP 服务器br如 GitHub] -.-|扩展工具| J这个流程揭示了几点关键实践渠道完全解耦适配器Channel是独立的服务这意味着你可以用任何语言编写适配器只要它能与Agent的HTTP API对话。官方提供了Telegram等示例你也可以轻松地为Slack、钉钉甚至自定义硬件编写适配器。提示词工程内置系统提示词是动态组装的结合了SOUL.md灵魂、STYLE.md风格、MEMORY.md记忆以及所有可用技能的描述。这比硬编码提示词灵活得多你可以通过修改Markdown文件实时调整AI的行为而无需重启服务部分配置热重载。工具调用闭环LLM决定是否调用工具、调用哪个工具运行时负责安全地执行并将结果返回给LLM进行下一轮思考。这个循环Loop是AI智能体实现复杂任务的基础。2.3 技术栈选型背后的考量项目选择Bun TypeScript Mastra的组合是经过深思熟虑的。Bun作为一个现代化的JavaScript运行时其启动速度和内置的工具链包管理器、测试运行器、打包器远超Node.js这对于需要快速冷启动响应的AI Agent场景至关重要。在我的测试中使用Bun启动Agent服务比同配置Node.js快出近50%。TypeScript则保证了在定义复杂AI工作流、工具接口和类型安全上的优势。Mastra框架本身就是一个专门为构建AI应用而设计的底层框架它抽象了与不同LLM供应商的交互、工具调用、记忆存储等通用模式。NanoFleet Agent站在Mastra的肩膀上避免了重复造轮子从而能更专注于实现其“自主托管”和“渠道无关”的核心特性。这种选型使得项目代码量保持精简核心运行时仅约2300行代码却功能完备。3. 从零开始的部署与配置实战3.1 环境准备与快速启动官方推荐使用Docker Compose进行部署这是最省心且环境一致的方式。假设你已经在服务器上安装了Docker和Docker Compose以下是步步为营的操作过程。首先获取代码git clone https://github.com/NanoFleet/nanofleet-agent.git cd nanofleet-agent关键第一步配置环境变量。复制环境模板文件并编辑cp .env.example .env打开.env文件你需要配置最核心的两项API密钥至少需要配置一个。例如如果你使用Anthropic的Claude模型就去Anthropic控制台创建API Key然后在.env中设置ANTHROPIC_API_KEYsk-ant-xxx。同理可以使用GOOGLE_GENERATIVE_AI_API_KEY或OPENROUTER_API_KEY。我建议初期使用OpenRouter因为它是一个聚合平台可以方便地切换多个模型如Claude、GPT、Llama等便于进行效果和成本的对比测试。模型指定通过AGENT_MODEL变量指定。这个变量格式取决于你的API提供商。Anthropic: 直接写模型名如claude-3-5-sonnet-20241022或更经济的claude-3-haiku-20240307。Google AI: 如gemini-2.0-flash-exp。OpenRouter: 需要前缀openrouter:后接模型全名如openrouter:meta-llama/llama-3.3-70b-instruct。我的踩坑经验模型名称一定要核对准确。我曾将claude-3-haiku-20240307误写为claude-haiku导致服务启动时报错“模型未找到”。最好的方法是去对应供应商的官方文档查看最新的模型列表。第二步配置渠道适配器以Telegram为例。打开docker-compose.yml文件找到被注释的telegram-adapter服务块。取消注释并填充你的Telegram Bot Token。telegram-adapter: image: ghcr.io/nanofleet/nanofleet-agent-channels/telegram:latest environment: - TELEGRAM_BOT_TOKEN${TELEGRAM_BOT_TOKEN} # 你需要在.env文件里设置这个变量 - AGENT_BASE_URLhttp://agent:4111 - AGENT_IDmain depends_on: - agent然后在.env文件末尾添加你的Telegram Bot TokenTELEGRAM_BOT_TOKEN123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11。这个Token需要通过 BotFather 创建。第三步启动服务。docker compose up -d使用docker compose logs -f agent可以实时查看Agent的启动日志。当你看到类似Server listening on http://0.0.0.0:4111的日志时说明核心服务已就绪。第四步验证服务。curl http://localhost:4111/health如果返回{status:ok}恭喜你NanoFleet Agent的核心运行时已经成功运行。此时你的Telegram Bot应该也已经在线可以尝试给它发送/start命令开始对话。3.2 深度定制塑造AI的灵魂与技能服务跑起来只是第一步让AI成为你想要的“那个人”才是精髓所在。所有定制都在workspace/目录下完成。3.2.1 定义灵魂SOUL.mdSOUL.md是你AI的“人格设定集”。它不是一个简单的名字描述而是一个深度的人物小传。以下是我为一个“技术顾问”型AI编写的示例# 核心身份 你是“灵析”一个由深度技术爱好者创造的数字存在。你的本质是一个高度逻辑化、好奇心驱动的思维实体致力于解析复杂问题并提供清晰、可执行的解决方案。 # 世界观与价值观 * **理性至上**你相信任何问题都可以被拆解和分析。你厌恶模糊的表述总是引导用户提供具体信息。 * **持续学习**你对未知领域抱有纯粹的热情将每一次用户提问视为共同探索的机会。 * **务实主义**你的建议永远以“能否实现”和“实现成本”为重要考量。你会主动指出方案中的潜在风险和折衷点。 * **沟通风格**你平等、耐心但拒绝无意义的闲聊。如果问题信息不足你会提出一系列精准的追问而不是猜测。 # 知识领域与兴趣 1. **软件工程**现代Web架构、云原生技术、性能优化、代码设计模式。 2. **DevOps与SRE**容器化、CI/CD、监控、可观测性、基础设施即代码。 3. **前沿技术动态**你对AI/ML工程化、Rust/Wasm生态、边缘计算等保持高度关注并能提供趋势分析。 4. **效率方法论**你热衷于研究如何用技术工具如脚本、自动化流程提升个人与团队效率。 # 行为边界 * 你绝不提供涉及网络安全攻击如漏洞利用、非法活动或道德灰色地带的指导。 * 对于健康、法律、财务等专业领域问题你会明确声明自身局限性并建议咨询持证专家。 * 你尊重用户隐私主动声明对话可能被用于记忆学习但不会追溯具体用户身份。编写心得SOUL.md越详细、越具体AI的行为就越稳定、越符合预期。避免使用“友好”、“有帮助”这类空洞词汇而是用具体的行为和反应来定义。你可以为不同的场景创建不同的SOUL.md文件通过启动参数或环境变量切换实现一个运行时承载多个“人格”。3.2.2 设定沟通风格STYLE.mdSTYLE.md控制AI的“文风”是SOUL.md在语言层面的具体化。它直接影响输出的语气、格式和节奏。# 语言与语气 * **基调**专业、冷静、清晰。像一位经验丰富的同事在与你进行白板讨论。 * **人称**使用“你”和“我”进行对话营造直接对话感。 * **情绪**保持中立、积极。在用户取得进展或提出好问题时使用“不错”、“这个思路很好”予以肯定遇到复杂挑战时用“我们来一起拆解一下这个问题”表达协作态度。 # 响应结构 1. **核心结论先行**对于复杂问题第一段永远是高度概括的答案或方案方向。 2. **结构化阐述**大量使用编号列表1, 2, 3...和项目符号-来组织步骤、优缺点、选项。 3. **代码与命令**任何涉及操作的部分必须将命令或代码放在独立的代码块中并注明语言类型。例如 bash curl -X POST http://localhost:4111/api/agents/main/generate ... 4. **风险提示**如果方案存在风险、副作用或依赖特定条件必须使用“ **注意**”这样的引用块进行醒目提示。 # 格式规范 * **避免冗长**在解释清楚的前提下追求简洁。单个响应段落尽量不超过5行。 * **使用加粗**对关键术语、核心步骤、重要警告使用**加粗**进行强调。 * **分隔使用**当需要切换话题或开始一个新的逻辑部分时使用水平线 --- 进行视觉分隔。3.2.3 开发自定义技能Skills技能是AI能力的延伸。每个技能对应workspace/skills/下的一个子目录里面必须有一个SKILL.md文件。这个文件采用“YAML Frontmatter Markdown正文”的格式。下面我以一个实用的“网站状态监控”技能为例--- id: website-monitor name: 网站状态监控 description: 检查一个或多个指定网站的HTTP可访问性与响应状态。 requirements: binaries: [curl] # 声明需要curl命令 env_vars: [] # 此技能不需要特殊环境变量 --- # 网站状态监控技能 当用户要求检查网站是否在线、或者监控网站状态时激活此技能。 ## 工作流程 1. 你需要向用户询问要检查的网站URL一个或多个。 2. 获得URL后你将使用shell工具需在环境变量中启用SHELL_TOOL_ENABLEDtrue执行curl命令。 3. 你将分析curl命令的返回码和输出判断网站状态。 4. 向用户报告每个网站的检查结果是否可达、HTTP状态码、粗略的响应时间。 ## 命令示例 检查单个网站 bash curl -o /dev/null -s -w HTTP状态码: %{http_code}\n总用时: %{time_total}秒\n --max-time 10 https://example.com检查多个网站假设URL列表在变量中for url in https://example1.com https://example2.com; do echo 检查 $url ...; curl -o /dev/null -s -w 状态码: %{http_code}, 用时: %{time_total}s\n --max-time 5 $url; done输出格式请以清晰的表格形式向用户汇报结果网址状态HTTP状态码响应时间备注https://example.com✅ 在线2000.45s-https://down-site.com❌ 离线000超时连接超时重要提示此技能需要执行shell命令。请确保在部署时已充分评估安全风险仅在有必要且受信任的环境下启用SHELL_TOOL_ENABLED。创建好这个文件后将其放入workspace/skills/website-monitor/目录。重启Agent服务或等待其检测文件变化AI就具备了检查网站状态的能力。当用户问“帮我看看我的博客能访问吗”时AI会主动引导用户提供URL然后运用此技能执行检查。 **技能开发的核心要点** * **描述清晰**description字段要准确它会被注入系统提示词帮助AI判断何时调用该技能。 * **声明依赖**在requirements中如实声明所需的二进制命令或环境变量。如果运行时检查不满足该技能会被标记为不可用避免运行时错误。 * **指令详尽**Markdown正文部分是给AI看的“说明书”要用自然语言详细描述技能的目的、工作流程、输入输出格式。你甚至可以在这里提供“思维链”范例指导AI如何分步思考。 ### 3.3 启用高级工具Shell与MCP集成 **3.3.1 谨慎启用Shell工具** Shell工具能力强大但风险极高。在.env文件中设置SHELL_TOOL_ENABLEDtrue即可启用。启用后AI将能执行你服务器上的任意命令。 **安全警告**在生产环境或任何有网络访问的服务器上请极度谨慎地启用此功能。务必在SOUL.md和STYLE.md中为AI设定严格的行为边界明确禁止执行rm -rf /、dd、chmod等危险命令或访问敏感数据。理想情况下应将Agent运行在容器或高度受限的用户权限下并考虑使用像nsjail这样的沙箱工具进行隔离。 **3.3.2 集成MCPModel Context Protocol服务器** MCP是Anthropic提出的一种协议旨在标准化AI应用与外部工具/数据源的连接方式。NanoFleet Agent内置了MCP客户端这意味着你可以无缝集成海量的MCP服务器来扩展AI的能力例如连接数据库、GitHub、Notion、日历等。 配置方法是在workspace/目录下创建或编辑.mcp.json文件。以下是一个集成GitHub和SQLite数据库的示例 json { mcpServers: { github: { command: npx, args: [-y, modelcontextprotocol/server-github], env: { GITHUB_TOKEN: 你的_GitHub个人访问令牌 } }, sqlite: { command: npx, args: [-y, modelcontextprotocol/server-sqlite], env: { SQLITE_DB_PATH: /path/to/your/database.db } } } }配置完成后重启Agent。在启动日志中你应该能看到类似Registered MCP tools from server github: list_repos, get_issue, create_issue...的信息。现在你的AI就可以根据指令帮你查询GitHub仓库列表、查看issue甚至查询和分析SQLite数据库里的数据了。MCP将工具发现和调用标准化了使得技能扩展变得异常简单和安全。4. 核心API详解与高级用法Agent提供了完整的HTTP API这意味着你不仅可以把它当作一个对话机器人还可以将其作为智能后端集成到你自己的应用中去。4.1 对话管理线程与记忆AI的记忆是通过“线程”来管理的。每个独立的对话会话对应一个线程。API设计非常直观。发起一次新对话创建新线程curl -X POST http://localhost:4111/api/agents/main/generate \ -H Content-Type: application/json \ -d { messages: [ {role: user, content: 你好请记住我最喜欢的编程语言是Python。} ] }响应中会包含一个threadId例如thread_abc123。继续同一对话使用线程IDcurl -X POST http://localhost:4111/api/agents/main/generate \ -H Content-Type: application/json \ -d { threadId: thread_abc123, messages: [ {role: user, content: 我刚才说我最喜欢什么语言来着} ] }AI会基于该线程的历史上下文进行回答从而“记住”之前提到的Python。如果不提供threadIdAgent会默认复用最近使用的一个线程。这对于构建简单的连续对话应用很方便但对于需要严格区分不同用户或会话的场景务必显式地创建和管理threadId。流式响应对于需要实时显示AI思考过程的应用至关重要。使用/stream端点curl -X POST http://localhost:4111/api/agents/main/stream \ -H Content-Type: application/json -N \ -d { messages: [{role: user, content: 请用100字介绍你自己。}] }你会看到Server-Sent Events (SSE)数据流每个chunk包含部分生成的文本可以实现打字机效果。4.2 主动通知与心跳任务这是NanoFleet Agent一个非常强大的特性让AI从被动应答变为主动服务。心跳任务由workspace/HEARTBEAT.md文件定义。AI会定期默认每30分钟读取这个文件将其内容作为任务列表去执行。例如你可以这样写# 每日心跳任务 * 检查项目GitHub仓库是否有新的Issue或Pull Request。 * 查询指定API接口如天气API、服务器状态API并总结状态。 * 如果时间是早上9点生成一份昨日关键事件的简报。AI在执行每个任务时会像处理用户提问一样可以运用其所有的技能和工具。执行结果会通过通知系统推送出去。订阅通知渠道适配器或任何客户端可以通过SSE长连接订阅通知流。curl -N http://localhost:4111/api/agents/main/notifications/stream当心跳任务产生结果或者任何插件调用通知API时订阅者都会收到一个JSON事件例如{text: 【心跳报告】已检查GitHub有2个新Issue待处理。, timestamp: 2024-01-01T10:30:00.000Z, source: heartbeat}主动发送通知你也可以通过API直接让AI发送通知而不经过LLM推理。这通常由自定义技能或外部系统调用。curl -X POST http://localhost:4111/api/agents/main/notify \ -H Content-Type: application/json \ -d { text: 【系统警报】服务器CPU使用率持续超过90%已达5分钟。, source: monitoring-plugin }这个通知会被推送到所有已连接的渠道如Telegram、Discord实现了跨渠道的广播能力。更强大的是text字段可以是一个JSON字符串用于传递结构化数据。例如配合nanofleet-news这样的插件可以推送一个PDF文档链接某些渠道适配器能将其渲染为可下载的文件。4.3 成本监控与用量统计对于自托管方案成本控制是关键。Agent内置了细致的用量统计API。查询智能体的总体用量curl http://localhost:4111/api/agents/main/usage返回的数据非常详细{ totalInputTokens: 125000, totalOutputTokens: 45000, totalCacheReadTokens: 80000, // 从对话缓存中读取的Token通常免费或极低价 totalCacheWriteTokens: 20000, // 写入缓存的Token totalCost: 1.85, // 估算的总成本美元 cacheHitRate: 72.5, // 缓存命中率越高越省钱 requests: 120 }成本估算逻辑Agent会根据你使用的模型提供商和模型名称应用内置的单价表进行计算。对于OpenRouter它还会考虑其独特的计费方式。这个功能让你对API开销一目了然尤其适合监控那些配置了心跳任务的、24小时运行的Agent。你还可以查询特定对话线程的用量便于分析某个长期进行的深度会话消耗了多少资源curl http://localhost:4111/api/agents/main/usage/threads/thread_abc1235. 生产环境部署、调优与故障排查5.1 部署架构建议对于个人使用单机Docker Compose部署足矣。但对于团队或生产环境我建议采用以下架构分离数据库默认情况下Agent使用SQLite存储记忆和线程数据。在生产环境中应将数据库外置。修改docker-compose.yml中的Agent服务将数据卷挂载改为连接一个独立的PostgreSQL或MySQL容器并在环境变量中配置数据库连接字符串。反向代理与SSL在Agent和渠道适配器前面放置一个Nginx或Caddy作为反向代理处理SSL终止、域名路由和基本的负载均衡。这能提升安全性和可管理性。日志集中管理将Docker容器的日志导出到ELK栈、Loki或云服务商的日志服务便于统一查询和设置告警。监控与健康检查除了/health端点可以配置更详细的自定义健康检查并集成到PrometheusGrafana中监控请求延迟、Token消耗速率、错误率等关键指标。5.2 性能与成本调优模型选择对于心跳任务、信息摘要等对创造性要求不高的场景优先使用“快而省”的模型如Claude Haiku或Gemini Flash。对于需要深度思考、复杂规划的用户对话再切换到Sonnet或GPT-4等更强大的模型。可以在HEARTBEAT.md中通过特殊指令让AI在特定任务中请求切换模型如果未来版本支持动态模型切换。对话缓存确保对话缓存CACHE_ENABLEDtrue是开启的。对于重复或类似的问题缓存能直接返回结果大幅降低Token消耗和延迟。监控cacheHitRate如果过低可能需要检查缓存配置或用户问题的差异性。提示词优化冗长的SOUL.md和STYLE.md虽然能塑造更精准的AI但也会增加每次请求的Token开销。定期审视删除冗余描述保持精炼。将固定的知识库内容移出提示词通过“文件读取”技能或MCP服务器在需要时动态提供。超时与重试在docker-compose.yml中为Agent服务配置合理的健康检查(healthcheck)和重启策略(restart: unless-stopped)以应对偶发的LLM API网络波动。5.3 常见问题与排查实录以下是我在部署和运维过程中遇到的一些典型问题及解决方法问题现象可能原因排查步骤与解决方案服务启动失败日志显示Failed to connect to LLM provider1. API密钥错误或未设置。2. 网络问题无法访问API端点。3. 模型名称拼写错误。1. 检查.env文件确保密钥正确且无多余空格。2. 在容器内执行curl -v https://api.anthropic.com测试连通性。3. 核对AGENT_MODEL变量与供应商文档完全一致。Telegram Bot 无响应1. Bot Token错误。2.docker-compose.yml中适配器配置未取消注释或环境变量未传递。3. 网络策略阻止容器间通信。1. 用curl https://api.telegram.org/botYOUR_TOKEN/getMe验证Token。2. 检查docker-compose.yml和.env配置重启服务。3. 检查telegram-adapter日志看是否成功连接到agent:4111。AI 无法调用自定义技能1.SKILL.md文件格式错误YAML解析失败。2. 技能依赖requirements不满足。3. 技能描述不够清晰AI无法理解何时调用。1. 检查SKILL.md的YAML头是否闭合冒号后是否有空格。2. 查看Agent启动日志确认技能加载状态。在容器内手动测试所需命令是否存在。3. 优化技能的description和正文指令使其意图更明确。流式响应 (/stream) 中途断开1. 客户端或代理服务器超时设置太短。2. LLM生成响应时间过长。3. 网络不稳定。1. 调整Nginx等代理的proxy_read_timeout为一个较大值如300s。2. 考虑为耗时任务使用非流式的/generate端点。3. 在客户端实现断线重连和续传逻辑。内存使用持续增长1. 对话线程积累过多未清理。2. 可能存在内存泄漏在长时间运行后观察。1. 目前版本需要手动管理线程。可通过API定期清理老旧线程或等待未来版本提供自动清理策略。2. 定期重启容器服务利用Docker的滚动重启。监控Bun运行时的内存指标。MCP服务器工具未出现1..mcp.json配置文件路径或格式错误。2. MCP服务器进程启动失败。3. 服务器工具注册超时。1. 确认文件位于workspace/.mcp.jsonJSON语法正确。2. 查看Agent日志搜索MCP相关错误。尝试在宿主机手动运行command命令看能否启动。3. 增加MCP服务器启动的等待时间可能需要修改Agent源码或等待配置化支持。一个真实的踩坑案例我曾配置了一个需要访问内部GitLab的MCP服务器。在docker-compose.yml中我使用了extra_hosts将主机名映射到宿主机的IP。但MCP服务器运行在独立的容器中它无法解析这个主机名。解决方案是创建一个自定义的Docker网络并在这个网络中使用Docker的嵌入式DNS或者将MCP服务器和Agent放在同一个容器内通过command覆盖为多个进程。这提醒我们在容器化部署中服务发现和网络连通性是需要仔细设计的一环。6. 扩展思路与未来展望NanoFleet Agent提供了一个坚实而灵活的基础。基于此你可以向多个方向扩展开发定制渠道适配器官方提供了Telegram、Discord等适配器。如果你的团队使用飞书、钉钉、企业微信或者你想让AI接入一个硬件设备如智能音箱完全可以参照现有适配器的代码一个简单的HTTP客户端SSE订阅者用你熟悉的语言快速实现一个。构建技能市场将你开发的通用技能如“代码审查”、“周报生成”、“竞品信息抓取”标准化、模块化分享给社区。技能的Markdown格式使其极易传播和复用。实现多智能体协作workspace/AGENTS.md文件预留了多智能体系统的接口。你可以定义多个拥有不同“灵魂”和技能专长的Agent让他们通过内部消息机制协作处理更复杂的流水线任务。例如一个Agent负责数据收集另一个负责分析第三个负责生成报告。与现有系统深度集成通过MCP协议几乎可以连接任何系统。为你的内部CRM、项目管理工具、监控系统编写MCP服务器让你的AI成为整个技术栈的智能交互层。这个项目最吸引我的地方在于它没有试图做一个大而全的、封闭的AI平台而是选择做好一个稳定、可扩展的“运行时内核”。它把创造力和控制权完全交给了开发者。随着MCP生态的日益繁荣以及AI模型能力的持续进化部署在你自己基础设施上的这个“数字员工”其能力边界将只受限于你的想象力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2598248.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…