DeepChat:本地优先的 AI agent 桌面客户端

DeepChat 是基于 TypeScript 与 Electron 的开源本地优先 AI agent 桌面客户端,把云模型、本地 Ollama、MCP 工具、Skills、会话 Trace 和远程控制收进一个应用,Apache-2.0 许可。这篇文章梳理它的主要功能、安装路径、关键参数、结果查看位置与用户反馈过的坑,并和两个同类客户端并列比较,帮读者判断要不要换过来。

把模型接进桌面聊天框不难,难的是 agent 跑起来之后过程管不住。上下文什么时候被截断、这一轮调用了哪些工具、上一次的结果从哪里来,多数客户端最后只留给你一个回答。

DeepChat 是用 TypeScript 和 Electron 构建的本地优先 AI agent 桌面客户端,接入云端模型或本地 Ollama,把会话与工具调用记录都留在本机。

它面向每天用 agent 干活的人。输入侧是你自己配置的模型提供商、选定的项目文件夹、当前对话启用的 Skills 和 MCP 工具;输出侧是一份可以回看的会话历史,记着请求序列、工具输出和 token 用量。桌面形态意味着它跟着一台机器走,而不是随手打开一个网页就能用。

DeepChat 桌面客户端主界面,左侧会话列表与右侧对话区

主要功能

  • 本地优先的 agent 桌面客户端:DeepChat 自身、ACP agent 和可远程控制的 bot 从同一个类似模型选择的入口进入。长会话带项目文件夹、权限模式、工具输出和可恢复上下文。
  • Tape 与 Trace:会话 Tape 记录结构化的工作历史,用于恢复、继续以及后续的 agent 记忆流。Trace 预览显示请求序列、provider 与 model 元数据、Tape 视图清单、包含的条目以及 token 预算。
  • Skills:从文件夹、ZIP 文件或 URL 安装,按对话启用,加载任务相关的指令、引用和可选脚本,并支持与 Claude Code、Codex、Cursor、Windsurf 等工具之间导入导出。
  • MCP 支持:覆盖 Resources、Prompts、Tools、多种传输方式和 inMemory 服务,提供一键安装。
  • ACP 集成:把符合 Agent Client Protocol 的编码与任务 agent 作为一级条目放进模型选择器。
  • 远程控制:从 Telegram、飞书/Lark、QQBot、Discord、微信 iLink 控制 DeepChat 会话。
  • 多模型管理:兼容 OpenAI、Gemini、Anthropic API 格式的任意提供商,也能连本地 Ollama。近几个版本陆续加入 Requesty、Cloudflare Workers AI、TypeSafe 提供商,以及 OpenAI 的 ChatGPT 登录选项。
  • 记忆与定时任务:编辑或删除记忆前会做一次依赖记忆审查,受影响的反思可以被显式检查和归档,记忆证据用分页 lineage 视图展示派生来源与派生声明。定时任务改成列表加详情的布局,带模板、运行历史和离开保护。

安装与依赖

普通用户走 README 的 Quick Start,它分成 Download and Install、Configure Models、Start Conversations 三步。本次可见的 README 节选只给了这三个小节标题,没有展开每步的具体命令,仓库里没有说明这一步。

从仓库结构看,这是 Electron 项目,根目录有 electron-builder.yml 与 electron.vite.config.ts,包管理用的是 pnpm,因为根目录同时存在 pnpm-lock.yaml 与 pnpm-workspace.yaml。另有一个 Dockerfile.build.linux,用于 Linux 下的构建。

想从源码跑,README 的 Development Guide 分 Install Dependencies、Start Development、Build 三节,具体命令同样没有出现在本次节选里。仓库地址是 https://github.com/ThinkInAIXYZ/deepchat,主要语言 TypeScript(占比 85.0%,其后是 Vue 10.4%),许可证 Apache-2.0。

最短能跑通的用法

README 描述的上手路径只有三步:先安装客户端,再在设置里配置模型提供商,然后开始对话。每一步的命令行细节仓库里没有给出,只能按界面走。

要接云端模型,填各家的 API 密钥;要用本地模型,走 Ollama。要装 Skills,从文件夹、ZIP 或 URL 导入,再在具体对话里启用。要用工具,配好 MCP 服务;MCP 支持一键安装,但 Issue 里出现过 go run 启动的 server 在 DeepChat 里连不上、报 MCP error -32000: Connection closed 的情况,同一个 server 在 VS Code 的 GitHub Copilot 插件里能起来,说明本地启动方式需要按 DeepChat 的要求调整。

关键参数

  • 模型提供商:兼容 OpenAI、Gemini、Anthropic 三种 API 格式的任意端点,加上本地 Ollama。仓库里有 .env.example,但内容未在节选中展开。
  • 权限模式与项目文件夹:长会话的两个核心参数,决定 agent 能碰哪些文件、在哪个目录里工作。
  • Skills 的启用范围按对话走,同一个 Skill 可以在 A 对话开着、在 B 对话关掉。
  • 上下文控制:v1.1.3-beta.1 加入可选的判断模型(judgment model),用来裁剪过期的工具结果,降低上下文占用,需要手动开启。
  • 调试日志:provider 调试日志只在开发构建里输出,正式版里看不到。
  • 定时任务:带模板和运行历史,v1.1.3-beta.2 起改成列表加详情的布局。

结果在哪里看

会话过程看 Tape 和 Trace:Tape 是结构化的工作历史,Trace 预览里能看到请求序列、provider 与 model 元数据、Tape 视图清单、实际包含的条目和 token 预算。这两处是它和其他聊天客户端差别最大的地方。

定时任务的执行结果在运行历史里;记忆的派生关系在分页 lineage 视图里。数据落在本机,Issue 里有用户直接翻本地数据存储的数据库来核对会话是否完整,说明这不是纯内存方案。

实际使用中的坑

下面几条都来自仓库 Issue,当前状态都是已解决,但暴露过的问题形态值得先知道。

  • 快捷键全局拦截:同时打开 DeepChat 和其他应用时,其他应用里的 command+o、command+w 不生效,关掉 DeepChat 就恢复。用户指出大部分快捷键本应在窗口获得焦点后才拦截。评论 11 条,已解决。
  • 调用 MCP 工具进入死循环:用户让它新增一条商机记录,回复反复重复同样的步骤,最后只能手动取消。提问者拿它和 Cursor 调用 MCP tool 的效果做了对比,认为差距明显。评论 10 条,已解决。
  • 对话历史无法加载:Windows 11 下 v1.0.6-beta.5 只能加载最近聊天记录,侧边栏看不到的旧对话就取不出来。用户检查了本地数据库,数据其实是完整的,客户端自带的数据库修复功能也显示未发现 schema 问题。评论 9 条,已解决。
  • 复制回答带上思考内容:以 DeepSeek R1 为例,点「复制回答为 Markdown」会把 <think> 里的思考内容一起复制进去,多数场景下这部分并不需要。评论 9 条,已解决。

和同类放在一起看

项目适合谁部署方式主要限制什么情况下选它更合适项目地址
DeepChat长期跑 agent 会话、需要回看工具调用与 token 用量的开发者Electron 桌面应用,从 Releases 取安装包;也可按源码流程用 pnpm 构建要自己配模型提供商和密钥,自带可用的对话入口;桌面形态绑定单机需要把 MCP、Skills、会话 Trace 和远程控制放在一起用时DeepChat
ChatGPTNextWeb/NextChat想立刻开始对话、不愿先折腾 provider 配置的人按仓库简介,注册即可对话,不需要 API key未逐一核实只想开箱聊天、不在意会话过程留痕时ChatGPTNextWeb/NextChat
NanmiCoder/cc-haha以 Claude Code 为主线、要一个跨平台桌面工作区的人仓库没有说明未逐一核实工作重心就在 Claude Code 及其 agent 生态上时NanmiCoder/cc-haha

如果工作重心是 Claude Code,cc-haha 这种围绕单一 CLI 生态做的工作区更贴;如果只是想随手打开就能聊天,NextChat 那一句「不需要 API key,注册即用」正好点中 DeepChat 的短板。DeepChat 要你先把 provider 和密钥配好,功能面铺得更宽,第一次打开时的设置成本明显更高。真正值得选它的场景,是需要把会话过程、工具输出和 token 用量留下来反复查看。

适合谁

适合手上同时有好几个模型来源、又想把 agent 的中间过程留下来的人,比如需要对照 MCP 工具调用结果排查问题的开发者,或者要把同一套 Skills 在多个对话里反复启用的内容与研究岗位。也适合需要从 Telegram、飞书这类消息应用远程触发会话的人。

不适合只想找个地方和模型聊天的人。配置提供商、理解 Tape 与 Trace 的读法、管好权限模式,这些都要花时间;仓库里对新手友好的分步命令也没有补齐。Star 数 6356、Fork 745,开放 Issue 只有 5 个,项目仍在活跃迭代,最新版本是 v1.1.3-beta.3。

焚评:这个项目的量化评分

本项目的选题来自 焚.com(一个按公开公式给 GitHub 项目打分的站)。焚评当前总分 10.0 分(满分 10)。下表是各维度的得分:

评分维度得分
热度动量(权重 25%)10.0 / 10
开发活跃(权重 25%)10.0 / 10
社区响应(权重 15%)10.0 / 10
文档质量(权重 15%)10.0 / 10
发布节奏(权重 10%)10.0 / 10
风险控制(权重 10%)10.0 / 10

评分口径、权重与计算方式见焚.com 的评分方法页;数据随 GitHub 指标刷新,具体数值以焚.com 当前页面为准。本文正文为诀.com 独立撰写,评分数据由焚.com 授权引用。

内容核验说明

收录价值在于它把 agent 的中间过程留了下来:Tape 与 Trace 能看到请求序列、工具输出和 token 预算,多数聊天客户端不给这些。文章写清了安装路径、关键参数、结果查看位置和 Issue 里出现过的坑,并和两个同类客户端做了取舍对照。适合同时接多个模型来源、要靠工具调用记录排查问题的开发者;只想开箱聊天的人配置成本偏高。

文中的 Star、Fork、Issue 数量与版本信息取自仓库公开页面,诀.com 未独立验证;焚评评分由焚.com 授权引用,随 GitHub 指标刷新。Issue 案例为提交者报告,当前状态均为已解决,本站没有做过复现测试。README 节选未展开安装与开发命令,本文如实标为缺失。

项目来源与说明

开源项目:ThinkInAIXYZ(ThinkInAIXYZ)

本文由诀.com 编辑基于该项目的公开信息独立撰写,属原创解读,不是对项目文档的翻译或转载;文中提到的功能与参数以官方仓库为准,代码与文档版权归原作者所有。

查看项目仓库