Skip to content

Apcoev/deepbot

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

71 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DeepBot Terminal

🤖 通用桌面 AI 助手 | 智能、安全、可扩展

License: MIT Node.js TypeScript Electron

English | 简体中文


📖 简介

DeepBot Terminal 是一个系统 AI 助手,相比于 OpenClaw 的 Geek 风格,DeepBot 提供更便捷的安装使用方式,DeepBot 会更多探索企业生产提效方向。它能够与企业现有系统深度结合,让 AI 深入参与各部门的日常办公提效,通过多 Agent 协作模式实现复杂业务流程的自动化。无论是文档处理、数据分析、系统监控,还是跨部门协作任务,DeepBot 都能通过 AI Agent 技术帮助企业轻松搞定。它支持多任务并行处理、定时任务、技能扩展等功能,同时通过严格的安全机制保护企业系统安全。

✨ 核心特性

  • 🎯 多任务并行处理 - 同时处理多个任务,互不干扰
  • 🔧 13 个内置工具 - 文件操作、命令执行、浏览器控制、图片生成、AI 对话、跨会话通信、网页内容获取等
  • 🧠 记忆系统 - 长期记忆用户偏好和重要信息
  • 定时任务 - 自动化执行周期性任务
  • 🎨 技能扩展 - 通过 Skills 组合工具实现复杂功能
  • 🔒 安全限制 - 严格的路径白名单机制,保护系统安全
  • 🤖 多模型支持 - 通义千问、OpenAI、Claude 等
  • 🌐 外部通讯 - 支持接入飞书等外部平台,实现跨平台交互

📝 更新日志

2026-03-04: ✨ 多 Agent 互相对话和调度:支持不同 Tab 之间的 Agent 互相发送消息、协作完成复杂任务,实现真正的多 Agent 系统; 2026-03-03: ✨ 长期记忆功能:支持 100 轮对话记忆,自动压缩会话;每个 Tab(Agent)可以拥有独立的记忆文件、角色设定和工作偏向,实现真正的多角色协作
2026-03-01: 🔧 浏览器工具优化:更健壮的浏览器自动化操作,提高成功率 | 🔧 构建优化:安装包体积减小
2026-02-28: ✨ 飞书集成:支持私聊和群聊,独立会话管理 | ✨ Web Fetch Tool:网页内容获取工具 | ✨ Chat Tool:后台 AI 对话处理 | 🔧 流式输出优化、AutoContinue 改进、前端体验优化


🚀 快速开始

环境要求

  • Python: 3.11 或更高版本(推荐使用 Conda 管理)
  • Conda: 推荐安装 Miniconda 或 Anaconda
  • 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:linux

macOS 构建说明:构建过程会自动对 macOS 应用进行 ad-hoc 签名。这可以避免"应用已损坏"提示,但用户首次启动时仍会看到"无法验证开发者"提示(这是正常的,可以通过右键点击 → 打开来绕过)。

macOS 安装问题

macOS 首次打开 DeepBot 时可能会提示安全警告,选择对应的解决方法:

提示"应用已损坏"

在终端执行以下命令后重新打开:

sudo xattr -rd com.apple.quarantine /Applications/DeepBot.app

提示"无法验证开发者"

方法 1:右键打开

右键点击应用图标,选择"打开",在弹出的对话框中再次点击"打开"。

方法 2:系统设置

  1. 尝试打开应用(会看到安全提示,点击"取消")
  2. 打开"系统设置" → "隐私与安全性"
  3. 向下滚动找到"安全性"部分
  4. 点击"仍要打开"按钮
  5. 再次打开应用,在对话框中点击"打开"

🏗️ 架构设计

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 调用工具 🆕                  │
└─────────────────┬───────────────────────┘
                  │
┌─────────────────▼───────────────────────┐
│         13 个工具 + 安全检查             │
│    🔒 路径白名单 • 工作空间隔离          │
│    🔄 跨 Tab 消息工具 🆕                 │
└─────────────────┬───────────────────────┘
                  │
        ┌─────────┼─────────┐
        ▼         ▼         ▼
    Skills   定时任务   数据存储

多 Agent 协作架构 🆕

┌─────────────────────────────────────────┐
│           多 Agent 协作系统               │
└─────────────────┬───────────────────────┘
                  │
        ┌─────────┼─────────┐
        ▼         ▼         ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ 销售     │ │ Gateway │ │ 市场     │
│AI助手    │ │消息路由  │ │AI助手    │
└────┬────┘ └────┬────┘ └────┬────┘
     │           │           │
     └───────────┼───────────┘
                 │
     ┌───────────┼───────────┐
     ▼           ▼           ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│解决方案  │ │ 产品     │  │ 研发    │
│AI助手    │ │AI助手   │  │AI助手   │
└────┬────┘ └────┬────┘ └────┬────┘
     │           │           │
     └───────────┼───────────┘
                 │
                 ▼
           ┌─────────┐
           │项目管理  │
           │AI助手   │
           └─────────┘

架构说明

  • Gateway: 管理所有 Session,每个 Tab 对应一个独立 Session,支持跨 Tab 消息路由
  • Session: 独立的会话单元,包含独立的 Agent Runtime、记忆和上下文
  • Agent Runtime: 基于 @mariozechner/pi-agent-core,负责智能决策和工具编排
  • Tools: 13 个内置工具,包括跨 Tab 调用工具,支持 Agent 间通信
  • 安全检查: 所有文件和命令操作都经过路径白名单验证
  • 多 Agent 协作: 不同 Tab 的 Agent 可以互相发送消息,实现协作完成复杂任务

🌐 外部通讯 (Connector)

DeepBot 支持通过 Connector 系统接入外部平台,实现跨平台交互。

已支持平台

飞书 (Feishu)

通过飞书机器人与 DeepBot 交互,支持私聊和群聊。

功能特性

  • ✅ 私聊消息(需配对授权)
  • ✅ 群聊消息(支持 @提及)
  • ✅ 消息去重(防止重复响应)
  • ✅ 独立会话管理(每个对话独立 Tab)

配置步骤

  1. 在 DeepBot 中打开「系统设置」→「外部连接」→「飞书」
  2. 填写飞书应用配置(App ID、App Secret、机器人名称)
  3. 配置安全策略(私聊策略、群聊策略)
  4. 点击「保存」并「启动」连接器

详细配置指南

📖 飞书机器人配置指南

包含完整的飞书开放平台配置步骤、权限设置、安全策略说明等。

未来计划

  • 🔜 Discord
  • 🔜 Slack
  • 🔜 企业微信
  • 🔜 钉钉

🔧 13 个内置工具

工具 功能 典型用途
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 协作完成复杂任务

创建自定义工具

DeepBot 支持创建自定义工具来扩展功能。所有工具都是内置工具,代码位于 src/main/tools/ 目录。

快速开始

  1. 创建工具文件

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: '执行成功' }],
      };
    },
  }),
};
  1. 在 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);
  1. 添加工具提示词

编辑 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 目录 ~/.deepbot/skills Skill 包安装
图片目录 ~/.deepbot/generated-images AI 生成图片保存

安全检查流程

工具调用 → 路径安全检查 → 在白名单内?
                           ├─ 是 → 允许执行
                           └─ 否 → 拒绝执行,返回错误

🧠 记忆系统

DeepBot 支持强大的长期记忆功能,可以记住用户的偏好和重要信息。

全局记忆

  • 存储位置: ~/.deepbot/memory/MEMORY.md
  • 格式: Markdown 格式,结构化存储
  • 自动注入: 每次对话自动加载到系统提示词
  • 实时更新: 记忆更新后自动重载所有 Agent
  • 作用范围: 所有 Tab 共享,存储通用偏好和重要信息

独立记忆(多 Agent 支持)

每个 Tab(Agent)可以拥有独立的记忆文件,实现真正的多角色协作:

  • 独立记忆文件: 每个 Tab 可以有自己的 memory-<tab-id>.md
  • 独立角色设定: 不同 Tab 可以扮演不同角色(如产品经理、开发工程师、测试工程师)
  • 独立工作偏向: 每个 Agent 可以有自己的专业领域和工作方式
  • 持久化存储: Tab 的记忆和角色设定会被持久化保存

使用场景

全局记忆

用户: "记住:我喜欢简洁的代码"
DeepBot: "已记住你的偏好"

独立记忆

用户: "创建一个销售分析 Agent"
DeepBot: "已创建新 Tab,这个 Agent 将专注于客户关系管理和销售数据分析"

用户: "记住:你是销售专家,负责客户跟进和销售业绩分析"
销售分析 Agent: "已记住我的职责范围"

多 Agent 协作示例

  1. 销售 Agent: 负责客户关系管理和销售流程,记忆中存储客户信息和销售策略
  2. 市场 Agent: 负责市场分析和营销活动,记忆中存储市场数据和推广方案
  3. 解决方案 Agent: 负责技术方案设计和客户需求分析,记忆中存储解决方案模板和技术规范
  4. 产品 Agent: 负责产品规划和需求管理,记忆中存储产品路线图和用户反馈
  5. 研发 Agent: 负责技术开发和系统实现,记忆中存储技术文档和开发规范
  6. 项目管理 Agent: 负责项目协调和进度管控,记忆中存储项目计划和资源分配

每个 Agent 都有独立的记忆和专业领域,可以专注于自己的业务范围,实现跨部门高效协作。


⏰ 定时任务

支持创建和管理定时任务,自动化执行周期性工作:

功能特性

  • ✅ Cron 表达式支持
  • ✅ 专用 Tab 执行(锁定不可关闭)
  • ✅ 清空历史上下文
  • ✅ 执行历史记录

使用示例

用户: "每天早上 9 点检查桌面文件"
DeepBot: "已创建定时任务,将在每天 9:00 执行"

🎨 技能扩展 (Skills)

通过 Skills 系统可以组合多个工具实现复杂功能。

安装现有 Skill

# 在 DeepBot 中使用 Skill Manager 工具
"安装 weather skill"

创建自定义 Skill

用户可以创建自己的 Skill 来实现特定功能。Skill 是包含 SKILL.md 文件的目录,使用 YAML frontmatter + Markdown 格式。

1. 创建 Skill 目录

mkdir -p ~/.deepbot/skills/my-skill
cd ~/.deepbot/skills/my-skill

2. 创建 SKILL.md 文件

创建 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

3. 安装 Skill

有两种安装方式:

方式 1:直接放置(推荐)

将 Skill 目录放到 ~/.deepbot/skills/ 下,重启 DeepBot 即可自动加载。

方式 2:使用 Skill Manager

# 在 DeepBot 中使用命令
"安装本地 skill,路径是 ~/.deepbot/skills/my-skill"

Skill 目录

  • 默认路径: ~/.deepbot/skills/
  • 自动发现: 启动时自动加载所有已安装的 Skills
  • 动态管理: 支持运行时安装/卸载

Skill 开发文档

  • 📖 Skill 可以调用所有内置工具
  • 📝 支持异步操作和错误处理
  • 🔧 可以组合多个工具实现复杂功能

🤖 支持的 AI 模型

DeepBot 支持多种 AI 模型提供商:

  • 通义千问 (阿里云) - 默认模型
  • OpenAI (GPT-4、GPT-3.5)
  • Claude (Anthropic)

配置 API 密钥

在系统设置中配置对应的 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 的开发受到以下项目的启发:


📧 联系方式


⭐ 如果这个项目对你有帮助,请给一个 Star!

About

DeepBot Terminal 是一个系统 AI 助手,相比于 OpenClaw 的 Geek 风格,DeepBot 提供更便捷的安装使用方式,DeepBot 会更多探索企业生产提效方向

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 93.8%
  • CSS 5.0%
  • Other 1.2%