DeepBot 是一个系统级 AI 助手,会更多探索企业生产提效方向。它能够与企业现有系统深度结合,让 AI 深入参与各部门的日常办公提效,通过多 Agent 协作模式实现复杂业务流程的自动化。无论是文档处理、数据分析、系统监控,还是跨部门协作任务,DeepBot 都能通过 AI Agent 技术帮助企业轻松搞定。它支持多任务并行处理、定时任务、技能扩展等功能,同时通过严格的安全机制保护企业系统安全。
- 🎯 多任务并行处理 - 同时处理多个任务,互不干扰
- 🔧 14 个内置工具 - 文件操作、命令执行、浏览器控制、图片生成、AI 对话、跨会话通信、网页内容获取、飞书云文档操作等
- 🧠 记忆系统 - 长期记忆用户偏好和重要信息
- ⏰ 定时任务 - 自动化执行周期性任务
- 🎨 技能扩展 - 通过 Skills 组合工具实现复杂功能
- 🔒 安全限制 - 严格的路径白名单机制,保护系统安全
- 🤖 多模型支持 - 通义千问、OpenAI、Claude 等
- 🌐 外部通讯 - 支持接入飞书等外部平台,实现跨平台交互
- Python: 3.11 或更高版本
- Node.js: 20.0.0 或更高版本(可选,用于运行 JS 脚本)
- pnpm: 10.23.0 或更高版本(可选,用于运行 JS 脚本)
- 操作系统: macOS、Windows、Linux
# 克隆仓库
git clone https://github.com/yourusername/deepbot.git
cd deepbot
# 安装依赖
pnpm install
# 开发模式运行
pnpm run dev# 构建所有平台
pnpm run dist
# 仅构建 macOS
pnpm run dist:mac
# 仅构建 Windows
pnpm run dist:win
# 仅构建 Linux
pnpm run dist:linuxmacOS 构建说明:构建过程会自动对 macOS 应用进行 ad-hoc 签名。这可以避免"应用已损坏"提示,但用户首次启动时仍会看到"无法验证开发者"提示(这是正常的,可以通过右键点击 → 打开来绕过)。
macOS 首次打开 DeepBot 时可能会提示安全警告,选择对应的解决方法:
在终端执行以下命令后重新打开:
sudo xattr -rd com.apple.quarantine /Applications/DeepBot.app方法 1:右键打开
右键点击应用图标,选择"打开",在弹出的对话框中再次点击"打开"。
方法 2:系统设置
- 尝试打开应用(会看到安全提示,点击"取消")
- 打开"系统设置" → "隐私与安全性"
- 向下滚动找到"安全性"部分
- 点击"仍要打开"按钮
- 再次打开应用,在对话框中点击"打开"
DeepBot 采用模块化架构,支持多 Agent 互相对话和协作:
┌─────────────────────────────────────────┐
│ 用户界面 (Electron) │
│ 外部通讯:飞书 (已支持) │
└─────────────────┬───────────────────────┘
│ IPC / WebSocket
┌─────────────────▼───────────────────────┐
│ Gateway (会话管理) │
│ • Session 管理 (每个 Tab 一个) │
│ • 消息队列和路由 │
│ • 连接器管理 (Connector) │
│ • 跨 Tab 消息路由 🆕 │
└─────────────────┬───────────────────────┘
│
┌─────────┼─────────┐
▼ ▼ ▼
Session 1 Session 2 Session N
(Tab 1) (Tab 2) (Tab N)
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────┐
│ Agent Runtime (每个 Session 一个) │
│ • 智能决策和工具编排 │
│ • 自动继续机制 (最多 100 次) │
│ • 操作追踪 (防重复,最多 3 次) │
│ • 独立记忆和上下文 │
│ • 跨 Tab 调用工具 🆕 │
│ • 系统提示词动态组装 🆕 │
└─────────────────┬───────────────────────┘
│
┌─────────────────▼───────────────────────┐
│ 系统提示词组装层 🆕 │
│ • 基础 Agent 提示 (AGENT.md) │
│ • 工具说明 (TOOLS.md) │
│ • 自定义工具说明 (CUSTOM-TOOLS.md) │
│ • 全局记忆 (MEMORY.md) │
│ • 独立记忆 (memory-<tab-id>.md) │
│ • Skills 指令 (SKILL.md) │
│ • 动态加载和实时更新 │
└─────────────────┬───────────────────────┘
│
┌─────────────────▼───────────────────────┐
│ 13 个工具 + 安全检查 │
│ 🔒 路径白名单 • 工作空间隔离 │
│ 🔄 跨 Tab 消息工具 🆕 │
└─────────────────┬───────────────────────┘
│
┌─────────┼─────────┐
▼ ▼ ▼
Skills 定时任务 数据存储
┌─────────────────────────────────────────┐
│ 多 Agent 协作系统 │
└─────────────────┬───────────────────────┘
│
┌─────────┼─────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ 销售 │ │ Gateway │ │ 市场 │
│AI助手 │ │消息路由 │ │AI助手 │
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
└───────────┼───────────┘
│
┌───────────┼───────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│解决方案 │ │ 产品 │ │ 研发 │
│AI助手 │ │AI助手 │ │AI助手 │
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
└───────────┼───────────┘
│
▼
┌─────────┐
│项目管理 │
│AI助手 │
└─────────┘
- Gateway: 管理所有 Session,每个 Tab 对应一个独立 Session,支持跨 Tab 消息路由
- Session: 独立的会话单元,包含独立的 Agent Runtime、记忆和上下文
- Agent Runtime: 基于
@mariozechner/pi-agent-core,负责智能决策和工具编排 - 系统提示词组装层: 动态组装系统提示词,包含基础系统提示、工具说明、记忆文件、Skills 指令等
- Tools: 13 个内置工具,包括跨 Tab 调用工具,支持 Agent 间通信
- 安全检查: 所有文件和命令操作都经过路径白名单验证
- 多 Agent 协作: 不同 Tab 的 Agent 可以互相发送消息,实现协作完成复杂任务
Agent 启动 → 加载基础 Agent 提示 (AGENT.md)
↓
加载工具说明 (TOOLS.md + CUSTOM-TOOLS.md)
↓
加载全局记忆 (MEMORY.md)
↓
加载独立记忆 (memory-<tab-id>.md)
↓
加载 Skills 指令 (各个 SKILL.md)
↓
组装完整系统提示词
↓
发送给 AI 模型
动态更新机制:
- 记忆文件更新时,自动重载所有 Agent 的系统提示词
- Skills 安装/卸载时,自动更新工具说明
- 支持运行时热更新,无需重启应用
DeepBot 支持通过 Connector 系统接入外部平台,实现跨平台交互。
通过飞书机器人与 DeepBot 交互,支持私聊和群聊。
功能特性:
- ✅ 私聊消息(需配对授权)
- ✅ 群聊消息(支持 @提及)
- ✅ 消息去重(防止重复响应)
- ✅ 独立会话管理(每个对话独立 Tab)
- ✅ 发送图片/文件给用户
- ✅ 飞书云文档操作(创建、读取、编辑、删除、评论)
配置步骤:
- 在 DeepBot 中打开「系统设置」→「外部连接」→「飞书」
- 填写飞书应用配置(App ID、App Secret、机器人名称)
- 配置安全策略(私聊策略、群聊策略)
- 点击「保存」并「启动」连接器
详细配置指南:
包含完整的飞书开放平台配置步骤、权限设置、安全策略说明等。
- 🔜 Discord
- 🔜 Slack
- 🔜 企业微信
- 🔜 钉钉
| 工具 | 功能 | 典型用途 |
|---|---|---|
| File Tool | 文件读写操作 | 读取配置、保存数据、搜索文件 |
| Exec Tool | 执行命令行命令 | 运行脚本、系统操作、安装软件 |
| Browser Tool | 浏览器控制 | 网页截图、自动化操作、内容提取 |
| Calendar Tool | 日历管理 | 查看日期、计算时间、日程提醒 |
| Environment Check | 环境检查 | 检测系统信息、验证依赖、诊断问题 |
| Image Generation | AI 图片生成 | 创建图片、设计素材、视觉内容 |
| Web Search | 网页搜索 | 实时信息查询、资料搜集、内容研究 |
| Web Fetch | 网页内容获取 | 获取网页正文、提取文章内容、下载网页数据 |
| Memory Tool | 记忆管理 | 存储用户偏好、读取历史信息 |
| Skill Manager | 技能管理 | 安装/卸载/列出技能包 |
| Scheduled Task | 定时任务 | 创建/管理/执行定时任务 |
| Chat Tool | AI 对话处理 | 工具内部调用 AI、后端 AI 处理、不占用主 Agent 上下文 |
| Connector Tool | 跨 Tab 通信 | Agent 间互相发送消息、多 Agent 协作完成复杂任务 |
| Feishu Doc Tool | 飞书云文档操作 | 创建文档、读取内容、追加/更新/删除块、添加评论、删除文档 |
DeepBot 支持创建自定义工具来扩展功能。所有工具都是内置工具,代码位于 src/main/tools/ 目录。
- 创建工具文件
在 src/main/tools/ 创建新文件(如 my-tool.ts):
import { Type } from '@sinclair/typebox';
import type { ToolPlugin } from './registry/tool-interface';
export const myToolPlugin: ToolPlugin = {
metadata: {
id: 'my-tool',
name: 'my_tool',
description: '我的自定义工具',
version: '1.0.0',
},
create: (options) => ({
name: 'my_tool',
label: '我的工具',
description: '执行自定义操作',
parameters: Type.Object({
input: Type.String({ description: '输入内容' }),
}),
execute: async (toolCallId, params, signal) => {
// 实现工具逻辑
return {
content: [{ type: 'text', text: '执行成功' }],
};
},
}),
};- 在 tool-loader.ts 中加载
编辑 src/main/tools/registry/tool-loader.ts,添加工具导入和加载:
import { myToolPlugin } from '../my-tool';
// 在 loadBuiltinTools() 方法中添加
const myTools = myToolPlugin.create({
workspaceDir: this.workspaceDir,
sessionId: this.sessionId,
configStore,
});
tools.push(myTools);- 添加工具提示词
编辑 src/main/prompts/templates/CUSTOM-TOOLS.md,添加工具使用说明。
以 Email 工具为例,说明文档应包含以下部分:
## Email(邮件发送工具)
### 核心原则
1. 必须先配置 SMTP 账号才能使用
2. 配置文件路径固定,不要告诉用户错误路径
3. 发送失败时,根据错误信息指导用户修复配置
4. 不要重复调用,失败一次就告知用户原因
### 使用前提
**配置文件路径**(按优先级查找):
1. 项目级别:`<workspace>/.deepbot/tools/email-tool/config.json`
2. 用户级别:`~/.deepbot/tools/email-tool/config.json`
**配置文件格式**:
```json
{
"user": "your-email@example.com",
"password": "your-password-or-auth-code",
"smtpServer": "smtp.example.com",
"smtpPort": 465,
"useSsl": true,
"fromName": "Your Name"
}
```
**常见邮箱配置**:
- QQ 邮箱:必须使用授权码(不是 QQ 密码)
- Gmail:必须使用应用专用密码
- 163 邮箱:必须开启 SMTP 服务并使用授权码
### 使用场景
- ✅ 发送通知邮件、报告邮件
- ✅ 发送带附件的邮件
- ✅ 发送 HTML 格式的邮件
- ❌ 不要用于批量营销邮件(可能被封号)
- ❌ 不要发送敏感信息(邮件不加密)
### 示例
1. 发送简单文本邮件:
```json
{
"to": "recipient@example.com",
"subject": "测试邮件",
"body": "这是一封测试邮件"
}
```
2. 发送 HTML 邮件:
```json
{
"to": "team@company.com",
"subject": "项目进度报告",
"body": "<h1>项目进度</h1><ul><li>功能 A:已完成</li></ul>",
"html": true
}
```
3. 发送带附件的邮件:
```json
{
"to": "client@example.com",
"subject": "合同文件",
"body": "请查收附件中的合同",
"attachments": ["~/Documents/contract.pdf"]
}
```
### 错误处理
| 错误信息 | 原因 | 解决方案 |
|---------|------|---------|
| "nodemailer 未安装" | 依赖未安装 | 告诉用户需要安装 nodemailer |
| "邮件工具未配置" | 配置文件不存在 | 告诉用户需要创建配置文件 |
| "认证失败" | 账号或密码错误 | 检查配置中的账号和授权码 |说明文档结构:
- 核心原则:AI 必须遵守的规则
- 使用前提:使用工具前需要满足的条件(如配置文件、依赖安装)
- 使用场景:什么时候用/不用这个工具
- 示例:实际使用案例(从简单到复杂)
- 错误处理:常见错误和解决方案
- 配置文件: 从
~/.deepbot/tools/<tool-name>/config.json读取配置 - 外部依赖: 使用动态
require()加载,避免打包到主项目 - 取消支持: 通过
AbortSignal支持用户取消操作 - 提示词管理: 在
CUSTOM-TOOLS.md中添加工具使用说明,帮助 AI 更好地理解和使用工具
DeepBot 实现了严格的安全限制,确保 AI Agent 只能访问用户明确授权的目录:
只允许访问以下配置的目录及其子目录:
| 目录类型 | 默认路径 | 用途 | 可配置 |
|---|---|---|---|
| 工作目录 | ~ (用户主目录) |
文件读写、命令执行 | ✅ |
| 脚本目录 | ~/.deepbot/scripts |
Python 脚本存储 | ✅ |
| Skill 目录 | ~/.agents/skills |
Skill 包安装 | ✅ |
| 图片目录 | ~/.deepbot/generated-images |
AI 生成图片保存 | ✅ |
工具调用 → 路径安全检查 → 在白名单内?
├─ 是 → 允许执行
└─ 否 → 拒绝执行,返回错误
DeepBot 支持强大的长期记忆功能,可以记住用户的偏好和重要信息。
- 存储位置:
~/.deepbot/memory/MEMORY.md - 格式: Markdown 格式,结构化存储
- 自动注入: 每次对话自动加载到系统提示词
- 实时更新: 记忆更新后自动重载所有 Agent
- 作用范围: 所有 Tab 共享,存储通用偏好和重要信息
每个 Tab(Agent)可以拥有独立的记忆文件,实现真正的多角色协作:
- 独立记忆文件: 每个 Tab 可以有自己的
memory-<tab-id>.md - 独立角色设定: 不同 Tab 可以扮演不同角色(如产品经理、开发工程师、测试工程师)
- 独立工作偏向: 每个 Agent 可以有自己的专业领域和工作方式
- 持久化存储: Tab 的记忆和角色设定会被持久化保存
全局记忆:
用户: "记住:我喜欢简洁的代码"
DeepBot: "已记住你的偏好"
独立记忆:
用户: "创建一个销售分析 Agent"
DeepBot: "已创建新 Tab,这个 Agent 将专注于客户关系管理和销售数据分析"
用户: "记住:你是销售专家,负责客户跟进和销售业绩分析"
销售分析 Agent: "已记住我的职责范围"
- 销售 Agent: 负责客户关系管理和销售流程,记忆中存储客户信息和销售策略
- 市场 Agent: 负责市场分析和营销活动,记忆中存储市场数据和推广方案
- 解决方案 Agent: 负责技术方案设计和客户需求分析,记忆中存储解决方案模板和技术规范
- 产品 Agent: 负责产品规划和需求管理,记忆中存储产品路线图和用户反馈
- 研发 Agent: 负责技术开发和系统实现,记忆中存储技术文档和开发规范
- 项目管理 Agent: 负责项目协调和进度管控,记忆中存储项目计划和资源分配
每个 Agent 都有独立的记忆和专业领域,可以专注于自己的业务范围,实现跨部门高效协作。
支持创建和管理定时任务,自动化执行周期性工作:
- ✅ Cron 表达式支持
- ✅ 专用 Tab 执行(锁定不可关闭)
- ✅ 清空历史上下文
- ✅ 执行历史记录
用户: "每天早上 9 点检查桌面文件"
DeepBot: "已创建定时任务,将在每天 9:00 执行"
通过 Skills 系统可以组合多个工具实现复杂功能。
# 在 DeepBot 中使用 Skill Manager 工具
"安装 weather skill"用户可以创建自己的 Skill 来实现特定功能。Skill 是包含 SKILL.md 文件的目录,使用 YAML frontmatter + Markdown 格式。
mkdir -p ~/.agents/skills/my-skill
cd ~/.agents/skills/my-skill创建 SKILL.md 文件(YAML frontmatter + Markdown 指令):
---
name: my-skill
description: 我的自定义技能,用于处理特定任务
version: 1.0.0
author: Your Name
---
# 我的自定义技能
## 何时使用此技能
当用户需要执行以下操作时使用此技能:
- 操作 1
- 操作 2
## 如何使用
### 步骤 1:读取文件
使用 file_read 工具读取文件:
```json
{
"path": "~/example.txt"
}
```
### 步骤 2:处理数据
对读取的数据进行处理...
### 步骤 3:保存结果
使用 file_write 工具保存结果...
## 注意事项
- 注意事项 1
- 注意事项 2有两种安装方式:
方式 1:直接放置(推荐)
将 Skill 目录放到 ~/.agents/skills/ 下,重启 DeepBot 即可自动加载。
方式 2:使用 Skill Manager
# 在 DeepBot 中使用命令
"安装本地 skill,路径是 ~/.agents/skills/my-skill"- 默认路径:
~/.agents/skills/ - 自动发现: 启动时自动加载所有已安装的 Skills
- 动态管理: 支持运行时安装/卸载
- 📖 Skill 可以调用所有内置工具
- 📝 支持异步操作和错误处理
- 🔧 可以组合多个工具实现复杂功能
DeepBot 支持多种 AI 模型提供商:
- 通义千问 (阿里云) - 默认模型
- OpenAI (GPT-4、GPT-3.5)
- Claude (Anthropic)
在系统设置中配置对应的 API 密钥即可使用。
不建议使用:带有"思考"或"推理"能力的模型
DeepBot 针对标准对话模型进行了优化。带有内置思考/推理模式的模型(如通义千问的 QwQ 系列、OpenAI 的 o1 系列,或其他具有显式推理步骤的模型)可能会导致:
- 思考标签(
<think>...</think>)显示问题 - 响应速度变慢
- 简单任务产生不必要的推理开销
不推荐使用:
- ❌ QwQ-32B-Preview(推理模型)
- ❌ OpenAI o1、o1-mini、o1-preview(推理模型)
- ❌ DeepSeek-R1(推理模型)
- ❌ 其他具有显式思考/推理模式的模型
DeepBot 集成了以下外部服务:
| 服务 | 用途 | 配置位置 |
|---|---|---|
| Tavily API | 网页搜索 | 系统设置 → Web Search |
| Gemini | 图片生成 (Imagen 3) | 系统设置 → Image Generation |
deepbot/
├── src/
│ ├── main/ # 主进程代码
│ │ ├── gateway.ts # 会话管理
│ │ ├── agent-runtime/ # Agent 运行时
│ │ ├── tools/ # 工具系统
│ │ ├── scheduled-tasks/ # 定时任务
│ │ ├── connectors/ # 外部连接器
│ │ └── database/ # 数据存储
│ ├── renderer/ # 渲染进程代码 (React)
│ ├── shared/ # 共享代码
│ └── types/ # 类型定义
├── docs/ # 文档
└── scripts/ # 构建脚本
本项目采用 MIT License 开源协议。
DeepBot 的开发受到以下项目的启发:
- Clawdbot - 提供了架构参考
- @mariozechner/pi-agent-core - AI Agent Runtime
- 作者: K罗@格灵深瞳
- 问题反馈: GitHub Issues
⭐ 如果这个项目对你有帮助,请给一个 Star!
