跨平台桌面 AI Agent 客户端 —— 配置 API Key 即可使用,支持多厂商 LLM、MCP、Skill 与内置工具。
Agent Chat 是一款基于 Tauri v2 构建的桌面 AI Agent 应用。前端使用 React + TypeScript,AI 能力基于 Vercel AI SDK,提供流式输出、工具调用、MCP(Model Context Protocol)、规则(Rules)与技能(Skill)等完整能力。所有数据均本地存储,不上传任何第三方服务器。
- 官方 Provider:OpenAI、DeepSeek、Anthropic (Claude)、Google (Gemini)、xAI (Grok)
- OpenAI 兼容接口:智谱 GLM、通义千问、Kimi 等任意
baseURL+ 自定义请求头 - 本地部署模型:Ollama、vLLM、LocalAI 等 OpenAI 兼容服务
- 多 Provider / 多模型并存,可随时切换
- 流式输出,逐 token 渲染
- Markdown 渲染:代码高亮(Shiki)、GFM、LaTeX 数学公式(KaTeX)
- 思考过程(Reasoning)展示、工具调用(Tool Call)可视化
- 重新生成回复、停止生成、消息复制
- 对话分类管理、系统提示词(全局 / 对话级)
- 三层作用域:全局规则 > 分类规则 > 对话规则(高优先级覆盖低优先级)
- 三种触发方式:
always始终生效 /manual手动触发 /requested智能推荐 - 支持 Markdown 与 YAML 两种格式,自动注入系统提示词
- 支持
stdio与 SSE 两种传输方式 - 一键连接 / 断开,工具自动发现与注册
- Server 状态监控(连接中 / 已连接 / 已断开)
- MCP 工具与内置工具统一接入 AI SDK 工具体系
- 遵循 agentskills.io 标准,
{appDataDir}/skills/<name>/SKILL.md目录结构 - 模型自动匹配(渐进式披露):
read_skill读取指令 →run_skill_script执行配套脚本 - 创建 / 编辑 / 导入 / 导出 / 启用禁用
- 严格的 name 与相对路径校验,杜绝路径穿越
| 工具 | 说明 | 是否强制确认 |
|---|---|---|
read_file / write_file / edit_file |
文件读写与精确替换 | 否 |
delete_file |
删除文件(进回收站) | 是 |
list_directory / search_file / search_content |
目录浏览与搜索 | 否 |
execute_command |
执行 Shell 命令 | 是 |
run_skill_script |
执行 Skill 配套脚本 | 是 |
preview_url |
浏览器打开 URL | 否 |
- 三种全局模式:始终询问 / 首次授权 / 完全信任
- 按工具单独覆盖(允许 / 拒绝 / 始终询问)
- 危险操作(
execute_command、delete_file)始终强制确认,不可跳过
- 三栏布局:对话列表 / 对话区域 / 右侧上下文面板(可折叠)
- 亮色 / 暗色 / 跟随系统主题,窗口状态记忆
| 层 | 技术 |
|---|---|
| 桌面框架 | Tauri v2(Rust 后端 + WebView 前端) |
| 前端框架 | React 19 + TypeScript + Vite 7 |
| AI 集成 | Vercel AI SDK(@ai-sdk/*) |
| 状态管理 | Zustand |
| 样式 | Tailwind CSS v4 + Lucide 图标 |
| 对话渲染 | react-markdown + remark-gfm + rehype-katex + shiki |
| 本地存储 | IndexedDB(Dexie) |
| MCP 客户端 | @modelcontextprotocol/sdk |
├── docs/ # 需求与设计文档
│ ├── requirements.md # 需求文档
│ ├── design.md # 设计文档
│ └── ui-design.md # UI 设计
├── src/
│ ├── components/ # 界面组件(chat / layout / settings)
│ ├── pages/ # 路由页面(Chat / Rules / MCP / Skills / Settings 等)
│ ├── stores/ # Zustand 状态(对话、Provider、规则、Skill、MCP、UI)
│ ├── lib/
│ │ ├── ai/ # AI SDK 封装(agent、tools、providers、runAgent)
│ │ ├── db/ # Dexie 数据库层
│ │ ├── mcp/ # MCP 客户端(stdio / SSE / 工具转换)
│ │ └── skills/ # Skill 解析与校验
│ ├── services/ # Tauri invoke 服务层(skillService 等)
│ └── types/ # 类型定义
├── src-tauri/
│ └── src/
│ ├── commands/ # Rust 后端命令(file / shell / search / mcp / system)
│ └── mcp/ # MCP stdio 子进程池
├── cambia/ # 插件内核(Cambia)与 Tauri 适配层
│ ├── crates/ # tauri-plugin-cambia(宿主适配层)
│ └── docs/ # 内核规范、实现方案与计划
├── .github/workflows/ # 多平台 Release 自动构建
└── package.json
- Node.js 20+
- pnpm(本项目的包管理器,版本见
package.json的packageManager字段) - Rust stable(安装 tauri CLI 依赖)
- 对应平台的系统依赖:Windows 需 WebView2、Linux 需
libwebkit2gtk-4.1-dev等(参考 Tauri 官方文档)
# 安装依赖
pnpm install
# 启动前端(仅浏览器预览,无 Tauri 能力)
pnpm dev
# 启动完整桌面应用(Tauri + 前端热更新)
pnpm tauri dev# 构建前端产物(tsc 类型检查 + vite build)
pnpm build
# 打包桌面应用(生成安装包,Windows: NSIS/MSI,macOS: dmg,Linux: AppImage/deb/rpm)
pnpm tauri build推送 v* tag 或手动触发 Release workflow,GitHub Actions 会自动在 Windows / macOS(Apple Silicon + Intel)/ Linux 三个平台构建并创建 Release 草稿。
- 打开 设置 页面,添加 Provider 并填入 API Key、选择模型
- 在顶部选择要使用的模型,即可开始对话
- 需要 Agent 操作本地文件或执行命令时,模型会通过内置工具发起调用,按提示完成授权
- 在 Skills 页面管理技能,Rules 页面配置行为规则,MCP 页面连接 MCP Server
数据存储于应用数据目录:
- 对话 / 消息 / 规则 / MCP 配置:IndexedDB(Dexie)
- Skill 文件:
{appDataDir}/skills/<name>/SKILL.md
- 所有工具调用均需用户授权,危险操作(命令执行、文件删除、脚本执行)强制确认
- Skill 名称与相对路径经过严格校验,防止目录穿越
- 敏感文件系统操作由 Rust 后端执行,前端仅通过 IPC 访问白名单命令
- 数据全部本地存储
本项目基于 GPL-3.0 许可证开源。