1. 项目概述与核心价值如果你和我一样每天需要在多个AI模型之间来回切换——写代码时用Claude查资料时用GPT跑本地模型时又得打开Ollama的命令行——那么你肯定也受够了这种碎片化的体验。更别提那些复杂的工具调用、技能配置光是管理不同平台的API密钥就够让人头疼了。DeepChat的出现就像是为这个混乱的AI工具世界带来了一股清流。它不是一个简单的聊天客户端而是一个真正意义上的“AI智能体工作台”把模型、工具、技能和远程控制全部整合到了一个优雅的桌面应用中。简单来说DeepChat是一个功能强大的开源AI智能体平台。它的核心目标很明确让你在一个地方用最顺手的方式调用所有你想用的AI能力。无论是云端的大模型如GPT-4、Claude 3、Gemini还是本地部署的Ollama模型甚至是那些能执行代码、联网搜索、处理文件的智能体Agent你都能在DeepChat里统一管理和使用。它基于Electron构建提供了Windows、macOS和Linux的全平台支持并且完全开源采用对商业友好的Apache 2.0协议。我最初是被它的“多模型统一管理”吸引的。但用下来发现它的真正杀手锏在于对MCP模型上下文协议和ACP智能体客户端协议的原生深度集成。这意味着你可以把DeepChat当作一个“智能体操作系统”让不同的AI能力像乐高积木一样组合起来完成复杂的自动化工作流。比如你可以创建一个会话让模型先调用MCP工具去搜索引擎获取最新资讯再调用另一个MCP工具分析数据并生成图表最后通过ACP调度一个专门的代码生成智能体来编写分析报告。这一切都在一个界面内流畅完成。2. 核心架构与设计理念解析DeepChat的设计哲学是“聚合与解耦”。它没有试图重新发明轮子去造一个AI模型而是选择成为连接所有现有AI能力的“超级枢纽”。这个设计理念体现在其清晰的架构分层上理解这一点对于高效使用和深度定制至关重要。2.1 分层架构从界面到协议DeepChat的架构可以粗略分为四层应用层UI UX基于Vue和Electron构建的跨平台桌面客户端。这是用户直接交互的部分提供了多会话标签页、完整的Markdown渲染基于CodeMirror、主题切换、会话管理等能力。它的设计目标是极致的流畅性和非阻塞体验让你像使用浏览器一样自然地使用多个AI模型。服务层核心运行时这是DeepChat的“大脑”。它负责会话状态管理、消息路由、模型调用调度以及协议适配。最关键的是它内置了MCP服务器和ACP客户端。MCP服务器让DeepChat能够加载和执行各种工具如代码执行器、网页抓取器ACP客户端则允许DeepChat将外部的智能体运行时如Claude Desktop的智能体作为一等公民集成进来并为其提供专属的工作空间UI。协议层MCP ACP这是DeepChat区别于普通聊天客户端的核心。MCP协议由Anthropic提出定义了一套模型与工具之间安全、标准化的通信方式。DeepChat完整实现了MCP的三大核心能力资源Resources、提示词Prompts和工具Tools。ACP协议则定义了智能体与客户端之间的交互标准DeepChat通过集成ACP可以将任何兼容的智能体直接变成一个可选的“模型”。连接层模型提供商这是最底层负责与实际的AI服务通信。DeepChat支持几乎所有主流的模型提供商API格式OpenAI、Anthropic、Google AI等这意味着只要一个服务提供了兼容的API端点就可以轻松接入DeepChat。对于本地模型它深度集成了Ollama提供了图形化的模型拉取、管理和运行界面无需触碰命令行。这种分层架构带来了巨大的灵活性。作为用户你享受的是开箱即用的统一体验。作为开发者或企业你可以基于清晰的接口进行定制例如替换UI主题、增加自定义的模型提供商、或者开发私有的MCP工具。2.2 为什么是“智能体平台”而非“聊天工具”很多AI工具标榜自己是“All-in-One”但往往只是把多个聊天窗口塞进一个应用。DeepChat的“平台”思维体现在它对“工作流”和“能力扩展”的重视上。以会话为中心的智能体化在DeepChat中每个会话不仅可以选一个模型更可以绑定一组技能Skills和工具Tools。技能是一组针对特定任务的指令、参考文件和资产能让模型在该会话中表现得像一个领域专家。例如开启“代码审查”技能后模型在分析代码时会自动采用更严格的审查标准和 checklist。工具即函数可视化调用通过MCP任何能力执行命令、读写文件、查询数据库都可以被封装成一个工具。DeepChat提供了极其友好的工具调用界面当模型决定使用工具时工具参数会以清晰的表单形式展示执行结果和过程会在一个独立的调试窗口中呈现并且支持自动格式化。这大大降低了使用门槛也让调试变得直观。远程控制与协同DeepChat支持通过Telegram、飞书/Lark、QQ机器人等渠道进行远程控制。你可以将桌面上的一个会话绑定到远程端点然后在外出时通过手机发送消息、创建新会话、切换模型或停止生成。这个功能对于需要长时间运行AI任务如数据分析、内容生成流水线的场景非常实用实现了“随时随地接管”的协同体验。3. 核心功能深度体验与配置指南了解了架构我们来看看如何实际使用这些强大的功能。我会结合自己的踩坑经验分享最实用的配置步骤和技巧。3.1 模型配置一站式管理你的AI“武器库”DeepChat支持数十家模型提供商配置逻辑却统一而简洁。基础配置步骤打开DeepChat点击左下角的设置图标齿轮状。在侧边栏选择“模型提供商”。你会看到一个长长的支持列表。点击你想配置的提供商例如“OpenAI”。通常只需要填入API Key和Base URL如果使用第三方代理或自建服务。对于Ollama如果你已在本地运行DeepChat通常能自动发现你只需要在模型选择器中刷新即可。实操心得与避坑指南API密钥管理建议在DeepChat中配置好常用模型后利用其“会话模板”功能。你可以创建一个配置了特定模型、技能和系统提示词的会话然后将其保存为模板。以后新建类似任务时直接使用模板省去重复配置的麻烦。Ollama本地模型这是DeepChat的一大亮点。你不需要在命令行里敲ollama run了。在DeepChat的Ollama设置界面你可以直接看到本地已下载的模型列表并对其进行拉取Pull、删除操作。更棒的是当你选择一个Ollama模型开始聊天时如果该模型未运行DeepChat会自动在后台为你启动它。注意首次使用Ollama集成请确保你的Ollama服务正在运行通常运行ollama serve。DeepChat默认尝试连接http://localhost:11434。如果你的Ollama安装在别的主机或使用了不同端口需要在设置中修改连接地址。模型回退与负载均衡高级用法对于企业用户DeepChat的架构允许你开发自定义的“模型提供商”。你可以实现一个代理提供商根据策略如费用、延迟、内容策略将请求路由到不同的后端API或者在某个服务不可用时自动切换到备用服务。3.2 MCP工具赋予模型“手和脚”MCP是DeepChat的灵魂功能。它让模型不再只是“空谈”而是能真正操作你的系统。内置工具开箱即用DeepChat预置了几个非常实用的内存inMemoryMCP工具服务器代码执行器模型可以编写Python、JavaScript等代码并直接在安全沙箱中执行将结果返回给你。这对于快速验证代码片段、进行数据计算非常有用。网页抓取器模型可以请求获取某个URL的网页内容。结合搜索功能可以让AI的答案基于最新的网页信息而不仅仅是其训练数据。文件操作模型可以读取指定目录下的文件列表或文件内容需用户授权辅助进行代码分析、文档总结等。添加自定义MCP服务器这才是发挥MCP威力的地方。社区有大量开源的MCP服务器比如操作数据库的、控制智能家居的、管理云资源的。在设置中进入“MCP服务器”页面。点击“添加服务器”。你可以通过三种方式添加文件夹指向一个本地MCP服务器项目的目录通常包含package.json和入口文件。ZIP文件下载的MCP服务器压缩包。URL直接输入一个可公开访问的MCP服务器地址对于Stdio或SSE传输协议。DeepChat支持多种传输协议Transportstdio命令行程序、sseHTTP服务器、streamablehttp。大部分社区服务器使用stdio。配置时你需要指定可执行文件的命令和参数。例如一个Node.js写的MCP服务器命令可能是node参数是/path/to/server/index.js。一个真实案例连接MCP-SQLite服务器我想让AI能查询我的本地SQLite数据库。我找到了一个开源的mcp-server-sqlite项目。我全局安装了它npm install -g mcp-server-sqlite。在DeepChat的MCP设置中添加一个新服务器。传输协议选择stdio。命令填写npx如果你全局安装也可以直接填mcp-server-sqlite。参数填写mcp-server-sqlite如果直接用npx以及数据库路径参数例如--db-path /Users/me/mydata.db。保存后在聊天界面当我对模型说“帮我查一下上个月的销售数据”模型就会识别出它可以调用SQLite工具并生成一个查询。DeepChat会弹出一个窗口让我确认执行这个查询确认后结果就会返回给模型并整合到它的回答中。3.3 技能系统打造领域专家技能Skills是DeepChat中一个兼容性极强的功能它与Claude Code、Cursor等主流AI编码助手的技能格式兼容。技能是什么你可以把它理解为一个针对特定任务的“增强包”。一个技能通常包含instructions一组系统级的提示词指导模型在该会话中如何扮演角色、遵循什么流程。files相关的参考文件、代码模板、数据样本等。assets图片、图标等资源。scripts可选可执行的脚本用于更复杂的预处理或后处理。如何使用技能在设置中进入“技能”页面。你可以“安装”技能来源可以是本地文件夹、ZIP包或一个URL很多技能托管在GitHub上。安装后技能会出现在你的技能库中。技能默认不启用。当你创建一个新会话或进入现有会话时点击输入框上方的“技能”按钮或类似图标然后勾选你想在这个会话中启用的技能。启用后该会话中的所有交互都会受到技能指令的影响。内置技能推荐DeepChat自带了一些非常实用的技能例如Code Review在进行代码审查时会自动引导模型关注安全性、性能、可读性等关键点。PDFDOCX优化模型处理和分析PDF、Word文档的能力。Frontend Design当讨论前端设计时提供相关的组件库、样式规范作为参考。MCP Building指导你如何创建自己的MCP服务器。经验分享创建自定义技能我经常需要处理用户反馈所以我创建了一个“用户反馈分析”技能。我新建了一个文件夹命名为user-feedback-analyzer。在里面创建了一个skill.json文件定义了技能的名称、描述和作者。创建了一个instructions.md文件写下了详细的指令“你是一个用户反馈分析专家。请将用户反馈分类为‘Bug’、‘功能建议’、‘使用咨询’。提取关键信息并生成一份包含优先级建议的摘要报告。”我还可以放入一个template.md文件作为报告生成的模板。在DeepChat中我通过“从文件夹安装”加载了这个技能。现在每当我要分析反馈时就新建一个会话启用这个技能然后把反馈内容贴进去AI就会以专家的角色来工作了。3.4 ACP智能体集成召唤“外援”ACP协议允许DeepChat与外部独立的智能体程序协同工作。这些智能体通常是功能更专注、更强大的AI程序比如专门写代码的Claude Code智能体或者专门做设计的智能体。配置与使用在设置中启用“ACP智能体”功能。DeepChat内置了一些常见的ACP智能体配置你可以直接启用。你也可以添加“自定义命令”指向你自己部署的ACP兼容智能体。启用后这些智能体会像普通模型一样出现在模型选择器中。当你选择一个ACP智能体开始会话时界面会发生变化。通常会有一个专属的“工作空间”区域用于展示智能体的结构化计划Plan、工具调用步骤和终端输出。这提供了比纯聊天更丰富、更可控的交互体验。与普通模型的区别普通模型会话是“一问一答”的聊天模式。而ACP智能体会话更像是“委派一个任务”。智能体接收目标后会自己制定计划、调用工具、执行步骤并将过程和结果结构化的展示出来。你可以在过程中进行干预或提供额外输入。这对于复杂的、多步骤的任务如“基于这个API文档创建一个React前端项目”非常高效。4. 高级工作流与实战场景搭建掌握了单个功能后我们可以将它们组合起来构建自动化的工作流。这里我分享两个自己常用的高阶用法。4.1 场景一AI辅助研究与报告撰写目标快速研究一个新技术话题并生成一份结构化的中文报告。所需组件一个联网搜索能力通过MCP工具调用Brave Search或模拟浏览器搜索。一个文档处理技能如内置的“文档协作”技能。一个强大的文本生成模型如GPT-4或Claude 3。搭建步骤创建会话模板新建一个会话选择Claude 3 Sonnet模型因其长上下文和强推理能力。在技能中启用“文档协作”技能。在MCP服务器中确保联网搜索工具已配置并启用。将这个会话保存为“技术研究模板”。启动研究从模板新建会话。我的第一条消息是“请研究一下WebGPU技术的最新发展现状、主要特性、与WebGL的对比以及它在2024年的应用前景。请使用联网搜索获取最新信息并最终生成一份包含摘要、技术细节、对比表格和应用案例的中文报告。”观察与交互模型会识别出需要搜索并调用MCP搜索工具。DeepChat会弹出工具调用确认框显示它要搜索的查询词。我确认后工具会返回搜索结果摘要。模型会阅读这些摘要并可能发起多轮搜索以获取更全面的信息。报告生成信息收集完毕后模型会开始撰写报告。由于启用了“文档协作”技能它的输出会更加结构化可能会主动使用标题、列表、表格等格式。我可以随时中断要求它扩展某个部分或者调整报告的重点。最终输出报告完成后我可以直接复制Markdown内容或者利用DeepChat的“导出”功能如果支持将会话内容导出。优势整个过程在一个界面内完成无需在浏览器、聊天窗口、文档编辑器之间反复切换。AI负责了最耗时的信息搜集和初步整合工作我只需要进行方向指导和最终润色。4.2 场景二自动化代码调试与优化目标对一个报错的Python脚本进行诊断和修复。所需组件代码执行MCP工具。代码审查技能。一个擅长代码的模型如DeepSeek Coder或Claude 3 Opus。搭建步骤准备环境在DeepChat中确保代码执行器MCP服务已启用。新建会话选择DeepSeek Coder模型并启用“代码审查”技能。提交问题我将报错的Python脚本和完整的错误信息粘贴到聊天框。我的提示词是“这是我的脚本它运行时抛出了以下错误。请分析错误原因修复代码并解释你的修复思路。你可以直接执行修复后的代码进行验证。”智能诊断与修复模型会先分析代码和错误。在“代码审查”技能的影响下它可能会先检查一些常见陷阱如变量作用域、类型错误、库版本兼容性。然后它提出修复方案。关键的一步来了它可以直接调用代码执行工具运行修复后的代码验证与迭代代码执行工具返回结果成功输出或新的错误。模型根据结果进行判断。如果成功它会给出总结如果还有问题它会进入下一轮调试。这一切都在聊天记录中清晰可见工具调用的输入输出都被完整记录方便回溯。获取最终方案经过几轮交互我得到了一个可以正常工作的脚本以及一份详细的调试报告。优势将“代码分析”、“修改建议”和“运行验证”三个步骤闭环在同一个环境中极大提升了调试效率。模型不再是“纸上谈兵”而是能真正动手验证其方案的有效性。5. 常见问题排查与性能优化即使设计得再完善在实际使用中也可能遇到问题。下面是我遇到的一些典型问题及解决方法。5.1 模型连接与响应问题问题现象可能原因排查步骤与解决方案配置了API Key但模型无响应或报错“连接失败”。1. API Key错误或过期。2. 网络问题如代理设置。3. 模型提供商服务异常。4. Base URL配置错误对于第三方代理或自建服务。1.检查API Key去提供商控制台确认Key有效且有余额。2.检查网络在DeepChat设置中配置网络代理如果需要。尝试在终端用curl命令测试API端点是否可达。3.检查服务状态访问模型提供商的官方状态页面。4.核对Base URL确保URL末尾没有多余的斜杠并且是完整的v1聊天补全端点例如https://api.openai.com/v1。Ollama模型列表为空或连接失败。1. Ollama服务未运行。2. DeepChat连接地址配置错误。3. 防火墙阻止了连接。1.启动Ollama在终端运行ollama serve。2.检查地址在DeepChat的Ollama设置中确认地址是http://localhost:11434默认。如果Ollama运行在别的机器需改为对应IP和端口。3.拉取模型在DeepChat的Ollama管理界面点击“拉取模型”输入模型名如llama3.2:1b。模型响应速度极慢。1. 网络延迟高。2. 本地Ollama模型硬件资源不足CPU/内存/GPU。3. 选择了过大的模型。1.切换模型尝试换用响应更快的云端模型或更小的本地模型。2.监控资源如果是本地模型打开系统活动监视器查看CPU/内存占用。考虑关闭其他大型应用。3.检查提示词过长的上下文或复杂的系统提示词会增加处理时间。5.2 MCP工具调用失败问题现象可能原因排查步骤与解决方案工具调用时提示“服务器未响应”或“启动失败”。1. MCP服务器命令或路径错误。2. 依赖缺失对于Node.js/Python服务器。3. 传输协议不匹配。1.检查命令在设置中确认MCP服务器的“命令”和“参数”填写正确。对于本地脚本确保有可执行权限。2.安装依赖在MCP服务器所在目录运行npm install或pip install -r requirements.txt。3.检查协议确认你选择的传输协议stdio/sse与服务器实际提供的协议一致。查看服务器文档。工具被调用但返回错误或空结果。1. 工具参数传递错误。2. 工具运行时权限不足如文件读取。3. 工具逻辑本身有Bug。1.查看调试窗口DeepChat的工具调用调试窗口会显示发送的参数和返回的原始数据。核对参数是否符合工具要求。2.检查权限对于文件操作类工具确认DeepChat是否有权访问目标路径。3.测试工具尝试在命令行手动运行MCP服务器并用标准MCP客户端测试以隔离是否是DeepChat的问题。5.3 性能与资源优化建议会话管理DeepChat支持多标签页但每个活跃的会话尤其是使用了流式响应的都会占用内存。对于不用的会话及时关闭。可以利用“会话置顶”功能将重要会话固定其余的定期清理。本地模型选择在Ollama中选择与你的硬件匹配的模型参数规模。例如8GB内存的电脑运行7B参数的模型比较流畅尝试运行70B模型就很可能崩溃。从较小的模型如llama3.2:1b或qwen2.5:3b开始测试。上下文长度在模型设置中注意上下文长度参数。设置过大会增加每次请求的令牌数影响速度和成本对于付费API。除非必要不要盲目调到最大值。技能启用策略不要在所有会话中启用所有技能。技能会向模型发送额外的指令和文件增加提示词长度可能影响模型的核心对话性能。按需启用专会专用。6. 开发与定制释放开源力量作为开源项目DeepChat为开发者提供了广阔的定制空间。如果你不满足于开箱即用的功能这里有一些方向。6.1 项目结构与开发环境搭建项目采用现代前端技术栈Vue 3 TypeScript Vite Electron。# 克隆项目 git clone https://github.com/ThinkInAIXYZ/deepchat.git cd deepchat # 安装依赖 (使用 pnpm) pnpm install # 安装运行时依赖一些必要的本地模块 pnpm run installRuntime # 启动开发模式 pnpm run devWindows用户特别注意如果pnpm install失败提示无权限创建符号链接请到系统“设置”-“开发者设置”中开启“开发者模式”或者使用管理员权限运行终端。开发模式启动后你会看到两个窗口Electron主进程的控制台和渲染进程的Vue应用窗口。热重载功能使得修改前端代码能即时生效。6.2 如何添加一个新的模型提供商这是最常见的定制需求之一。假设你想接入一个名为“AwesomeAI”的新服务。研究API确认AwesomeAI的聊天补全API是否兼容OpenAI格式这是最普遍的。查看其API文档找到端点URL、请求头、请求体格式。创建提供商文件在src/renderer/src/services/llm/providers/目录下复制一个现有提供商如openai.ts作为模板新建awesomeai.ts。实现核心接口修改文件主要实现sendMessage方法根据AwesomeAI的API规范构建HTTP请求。需要处理API密钥的传递方式可能在请求头Authorization中也可能在请求体中、消息数组的格式转换等。注册提供商在src/renderer/src/services/llm/providers/index.ts文件中导入并注册你的新提供商。添加UI配置在src/renderer/src/components/settings/ModelProviderSettings.vue或相关组件中添加AwesomeAI的配置表单字段使其能出现在设置界面。添加图标在src/renderer/src/assets/llm-icons/目录下放置一个AwesomeAI的图标SVG格式最佳。测试在开发模式下打开设置配置你的AwesomeAI API Key新建会话选择该提供商进行测试。6.3 开发一个简单的MCP服务器如果你想为DeepChat增加一个自定义工具比如一个“天气查询”工具最好的方式是开发一个MCP服务器。初始化项目使用modelcontextprotocol/sdk创建一个Node.js项目。mkdir mcp-server-weather cd mcp-server-weather npm init -y npm install modelcontextprotocol/sdk编写服务器代码创建一个index.js文件定义工具如get_weather接收城市名参数调用第三方天气API返回结果。// 简化示例 const { Server } require(modelcontextprotocol/sdk); const server new Server({ name: weather }, { version: 1.0.0 }); server.setRequestHandler(tools/list, () ({ tools: [{ name: get_weather, description: Get current weather for a city, inputSchema: { type: object, properties: { city: { type: string } }, required: [city] } }] })); server.setRequestHandler(tools/call, async (request) { if (request.params.name get_weather) { const city request.params.arguments?.city; // 调用真实天气API const weather await fetchWeather(city); return { content: [{ type: text, text: Weather in ${city}: ${weather} }] }; } }); server.listen();在DeepChat中配置将开发好的MCP服务器目录路径添加到DeepChat的MCP服务器设置中选择stdio协议命令为node参数为你的index.js文件路径。使用在聊天中模型现在可以调用get_weather工具了。通过这种方式你可以将任何内部系统、数据库或API的能力安全地暴露给AI模型使用极大地扩展了DeepChat的应用边界。