DeepBot is a system-level AI assistant built for both personal productivity and enterprise workflows — one-click setup, seamless experience, and native Feishu integration.
SaferSkills independently audited deepbot (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<div align="center">
<img src="banner.jpg" alt="DeepBot Terminal" width="500"/>
<p>
Bring AI into your enterprise workflows — a real working partner, not just a chatbot
</div>
DeepBot is a system-level AI assistant focused on enterprise productivity. It integrates deeply with existing enterprise systems, enabling AI to participate in day-to-day operations across departments through multi-Agent collaboration — automating complex business workflows. Whether it's document processing, data analysis, system monitoring, or cross-department coordination, DeepBot handles it through AI Agent technology. It supports parallel task execution, scheduled tasks, and skill extensions, all protected by strict security controls.
# Clone the repository
git clone https://github.com/kevinluosl/deepbot.git
cd deepbot
# Install dependencies
pnpm install
# Start in development mode
pnpm run dev# Build for all platforms
pnpm run dist
# macOS (with code signing + notarization, requires Apple Developer account)
pnpm run dist:mac
# macOS local build (no signing, no notarization — for development/testing)
pnpm run dist:mac:local
# Windows only
pnpm run dist:win`dist:mac` vs `dist:mac:local`:
dist:mac | dist:mac:local | |
|---|---|---|
| Code signing | ✅ Apple Developer ID | ❌ None |
| Notarization | ✅ Apple notarization | ❌ None |
| Gatekeeper | ✅ Passes verification | ❌ Triggers security warnings |
| Requirements | Apple Developer account + .env credentials | None |
To use dist:mac, configure the following in your .env file:
# Apple signing and notarization (macOS Electron builds only)
[email protected]
APPLE_ID_PASSWORD=your-app-specific-password
APPLE_APP_SPECIFIC_PASSWORD=your-app-specific-password
APPLE_TEAM_ID=your-team-idYou can generate an app-specific password at appleid.apple.com. The Team ID can be found in your Apple Developer account.
| Use case | Production release | Local development / testing |
Note: dist:mac:local builds will trigger macOS security warnings on first launch — see the section below for how to handle them.Docker deployment is available for Linux servers. If you need the Docker version, please contact the author.
Note for macOS builds: Signed builds (dist:mac) pass Gatekeeper verification and work without issues. Local builds (dist:mac:local) are unsigned and will trigger security warnings — see below for solutions.
When using dist:mac:local (unsigned builds), macOS may show security warnings on first launch:
#### "App is damaged"
Run this in Terminal, then reopen the app:
sudo xattr -rd com.apple.quarantine /Applications/DeepBot.app#### "Cannot verify developer"
Option 1: Right-click to open
Right-click the app icon, select "Open", then click "Open" again in the dialog.
Option 2: System Settings
DeepBot uses a modular architecture with support for multi-Agent communication and collaboration:
┌─────────────────────────────────────────┐
│ User Interface (Electron) │
│ External Communication: Feishu │
└─────────────────┬───────────────────────┘
│ IPC / WebSocket
┌─────────────────▼───────────────────────┐
│ Gateway (Session Management) │
│ • Session per Tab │
│ • Message queue & routing │
│ • Connector management │
│ • Cross-Tab message routing 🆕 │
└─────────────────┬───────────────────────┘
│
┌─────────┼─────────┐
▼ ▼ ▼
Session 1 Session 2 Session N
(Tab 1) (Tab 2) (Tab N)
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────┐
│ Agent Runtime (one per Session) │
│ • Intelligent decision & orchestration│
│ • Auto-continue (up to 100 times) │
│ • Operation tracking (max 3 retries) │
│ • Independent memory & context │
│ • Cross-Tab calling tool 🆕 │
│ • Dynamic system prompt assembly 🆕 │
└─────────────────┬───────────────────────┘
│
┌─────────────────▼───────────────────────┐
│ System Prompt Assembly Layer 🆕 │
│ • Base Agent prompt (AGENT.md) │
│ • Tool instructions (TOOLS.md) │
│ • Custom tool instructions │
│ • Global memory (MEMORY.md) │
│ • Per-tab memory (memory-<tab>.md) │
│ • Skills instructions (SKILL.md) │
│ • Dynamic loading & live updates │
└─────────────────┬───────────────────────┘
│
┌─────────────────▼───────────────────────┐
│ 14 Tools + Security Check │
│ 🔒 Path whitelist • Workspace isolation│
│ 🔄 Cross-Tab messaging tool 🆕 │
└─────────────────┬───────────────────────┘
│
┌─────────┼─────────┐
▼ ▼ ▼
Skills Scheduled Data Storage
Tasks┌─────────────────────────────────────────┐
│ Enterprise Multi-Agent System │
└─────────────────┬───────────────────────┘
│
┌─────────┼─────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Sales │ │ Gateway │ │Marketing│
│AI Agent │ │Message │ │AI Agent │
└────┬────┘ │Router │ └────┬────┘
│ └────┬────┘ │
└───────────┼───────────┘
│
┌───────────┼───────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│Solutions│ │Product │ │ R&D │
│AI Agent │ │AI Agent │ │AI Agent │
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
└───────────┼───────────┘
│
▼
┌─────────┐
│Project │
│Manager │
│AI Agent │
└─────────┘@mariozechner/pi-agent-core, handles intelligent decision-making and tool orchestration.#### System Prompt Assembly Flow 🆕
Agent starts → Load base Agent prompt (AGENT.md)
↓
Load tool instructions (TOOLS.md + CUSTOM-TOOLS.md)
↓
Load global memory (MEMORY.md)
↓
Load per-tab memory (memory-<tab-id>.md)
↓
Load Skills instructions (SKILL.md files)
↓
Assemble complete system prompt
↓
Send to AI modelDynamic Updates:
DeepBot connects to external platforms via the Connector system for cross-platform interaction.
#### Feishu (Lark)
Interact with DeepBot through a Feishu bot, supporting both direct messages and group chats.
Features:
Setup:
Detailed Configuration Guide:
📖 Feishu Bot Configuration Guide (Chinese)
Interact with DeepBot via WeChat, supporting private and group chats.
Features:
#### WeCom (WeChat Work)
Interact with DeepBot via WeCom applications.
Features:
#### Smart KF (Customer Service)
External customer service powered by WeCom KF API.
Features:
| Tool | Function | Typical Use Cases |
|---|---|---|
| File Tool | File read/write | Read configs, save data, search files |
| Exec Tool | Run shell commands | Execute scripts, system operations, install packages |
| Browser Tool | Browser automation | Screenshots, web automation, content extraction |
| Calendar Tool | Calendar management | Check dates, calculate time, schedule reminders |
| Environment Check | System inspection | Detect system info, verify dependencies, diagnose issues |
| Image Generation | AI image generation | Create images, design assets, visual content |
| Media Analysis | Image/video analysis | Image description, video understanding, OCR (DeepBot provider only) |
| Doc Analysis | Document analysis | Read PDF/Word/Excel/PPT content (requires markitdown) |
| Web Search | Web search (Tavily) | Real-time queries, research, data collection |
| Web Fetch | Fetch web content | Extract articles, download page data |
| Memory Tool | Memory management | Store preferences, retrieve historical context |
| Skill Manager | Skill management | Install, uninstall, and list skill packages |
| Scheduled Task | Task scheduling | Create and manage cron-based tasks |
| Chat Tool | AI conversation | Internal AI calls, backend processing, isolated from main Agent context |
| Cross Tab Call | Cross-Tab messaging | Inter-Agent communication for multi-Agent collaboration |
| Feishu Send | Feishu messaging | Send text, images, files to Feishu users |
| Feishu Doc Tool | Feishu document ops | Create, read, append, update, delete blocks, add comments |
| WeChat Send | WeChat messaging | Send text, images, files to WeChat users |
| WeCom Send | WeCom messaging | Send text, images, files to WeCom users |
| Smart KF Send | Smart KF messaging | Send text, images, files to customer service users |
| System Command | System commands | Clear session and other system-level operations |
All tools use the unified ToolPlugin interface and live in src/main/tools/.
#### Quick Start
Create a new file in src/main/tools/ (e.g., my-tool.ts):
import { Type } from '@sinclair/typebox';
import type { ToolPlugin } from './registry/tool-interface';
import { TOOL_NAMES } from './tool-names';
export const myToolPlugin: ToolPlugin = {
// 工具元数据(用于 UI 展示和管理)
metadata: {
id: 'my-tool', // 唯一标识,kebab-case
name: 'My Tool', // 显示名称(给用户看)
description: 'My custom tool',
version: '1.0.0',
author: 'DeepBot',
category: 'custom', // 分类:file | network | system | ai | custom
tags: ['custom'],
},
// 创建工具实例,接收运行时上下文(工作目录、会话 ID、配置等)
create: (options) => ({
name: TOOL_NAMES.MY_TOOL, // AI 调用时使用的工具名(必须在 tool-names.ts 中注册)
label: 'My Tool', // 执行步骤中显示的标签
description: 'Execute custom operations', // 告诉 AI 这个工具做什么
// 参数定义(使用 TypeBox,AI 会根据 description 自动填充参数)
// 常见参数类型示例:
// Type.String({ description: '...' }) — 字符串
// Type.Number({ description: '...' }) — 数字
// Type.Boolean({ description: '...' }) — 布尔值
// Type.Optional(Type.String({ description: '...' })) — 可选参数
// Type.Union([Type.Literal('a'), Type.Literal('b')]) — 枚举(AI 只能选其中一个)
parameters: Type.Object({
action: Type.Union([
Type.Literal('search'),
Type.Literal('create'),
Type.Literal('delete'),
], { description: 'Operation type' }),
query: Type.String({ description: 'Search keyword or target name' }),
limit: Type.Optional(Type.Number({ description: 'Max results (default 10)' })),
force: Type.Optional(Type.Boolean({ description: 'Skip confirmation' })),
}),
execute: async (toolCallId, params, signal) => {
// signal: AbortSignal,用户停止时会触发
// params: 已经过 schema 验证的参数对象
return {
// content: 返回给 AI 的内容(AI 会基于此决定下一步)
content: [{ type: 'text', text: 'Success' }],
// details: 结构化数据,用于 UI 渲染或日志记录(AI 不可见)
details: { success: true },
};
},
}),
};Edit src/main/tools/registry/tool-loader.ts:
import { myToolPlugin } from '../my-tool';
// Inside loadTools(), add with other plugins:
tools.push(...await resolvePluginTools(myToolPlugin.create(pluginOpts)));Edit src/main/tools/tool-names.ts:
export const TOOL_NAMES = {
// ...existing tools
MY_TOOL: 'my_tool',
};Then use TOOL_NAMES.MY_TOOL in your tool definition instead of the hardcoded string.
Edit src/main/prompts/templates/CUSTOM-TOOLS.md to document how the AI should use your tool.
Using the Email tool as an example:
## Email (Email Sending Tool)
### Core Principles
1. SMTP must be configured before use
2. The config file path is fixed — don't give users incorrect paths
3. On failure, guide users to fix their config based on the error message
4. Don't retry repeatedly — report the failure reason after one attempt
### Prerequisites
**Config file path** (searched in priority order):
1. Project-level: `<workspace>/.deepbot/tools/email-tool/config.json`
2. User-level: `~/.deepbot/tools/email-tool/config.json`
**Config file format**:{ "user": "[email protected]", "password": "your-password-or-auth-code", "smtpServer": "smtp.example.com", "smtpPort": 465, "useSsl": true, "fromName": "Your Name" }
**Common provider notes**:
- QQ Mail: Use authorization code, not your QQ password
- Gmail: Use an app-specific password
- 163 Mail: Enable SMTP service and use an authorization code
### Use Cases
- ✅ Notification emails, report emails
- ✅ Emails with attachments
- ✅ HTML-formatted emails
- ❌ Bulk marketing emails (risk of account suspension)
- ❌ Sensitive information (emails are not encrypted)
### Examples
1. Plain text email:{ "to": "[email protected]", "subject": "Test Email", "body": "This is a test email" }
2. HTML email:{ "to": "[email protected]", "subject": "Project Progress Report", "body": "<h1>Progress</h1><ul><li>Feature A: Done</li></ul>", "html": true }
3. Email with attachment:{ "to": "[email protected]", "subject": "Contract Documents", "body": "Please find the contract attached", "attachments": ["~/Documents/contract.pdf"] }
### Error Handling
| Error | Cause | Fix |
|-------|-------|-----|
| "nodemailer not installed" | Missing dependency | Ask user to install nodemailer |
| "Email tool not configured" | Config file missing | Ask user to create the config file |
| "Authentication failed" | Wrong credentials | Check account and authorization code |Documentation structure:
#### Advanced Features
~/.deepbot/tools/<tool-name>/config.jsonrequire() to avoid bundlingAbortSignalCUSTOM-TOOLS.md so the AI uses it correctly#### References
DeepBot enforces strict access controls so AI Agents can only reach directories you've explicitly authorized.
Only the following directories (and their subdirectories) are accessible:
| Type | Default Path | Purpose | Configurable |
|---|---|---|---|
| Workspace | ~ (home directory) | File read/write, command execution | ✅ |
| Scripts | ~/.deepbot/scripts | Python script storage | ✅ |
| Skills | ~/.agents/skills | Skill package installation | ✅ |
| Images | ~/.deepbot/generated-images | AI-generated image storage | ✅ |
Tool call → Path security check → Within whitelist?
├─ Yes → Allow execution
└─ No → Reject, return errorDeepBot supports persistent long-term memory to retain user preferences and important context across sessions.
~/.deepbot/memory/MEMORY.mdEach Tab (Agent) can have its own independent memory file, enabling true multi-role collaboration:
memory-<tab-id>.mdGlobal memory:
User: "Remember: I prefer concise code"
DeepBot: "Got it, I'll keep that in mind"Per-tab memory:
User: "Create a Sales Analysis Agent"
DeepBot: "New Tab created. This Agent will focus on customer relationship management and sales data analysis"
User: "Remember: You are a Sales Expert responsible for customer follow-up and performance analysis"
Sales Agent: "Understood, I've saved my role and responsibilities"Each Agent operates with independent memory and domain expertise, enabling efficient cross-department collaboration.
Create and manage scheduled tasks to automate recurring work:
User: "Check desktop files every day at 9 AM"
DeepBot: "Scheduled task created — will run daily at 9:00"The Skills system lets you compose multiple tools into reusable, complex workflows.
# Use the Skill Manager tool in DeepBot
"Install weather skill"A Skill is a directory containing a SKILL.md file using YAML frontmatter + Markdown format.
#### 1. Create the Skill directory
mkdir -p ~/.agents/skills/my-skill
cd ~/.agents/skills/my-skill#### 2. Create SKILL.md
---
name: my-skill
description: My custom skill for handling specific tasks
version: 1.0.0
author: Your Name
---
# My Custom Skill
## When to use this skill
Use this skill when the user needs to:
- Operation 1
- Operation 2
## How to use
### Step 1: Read file
Use the file_read tool:
{ "path": "~/example.txt" }
### Step 2: Process data
Process the data as needed...
### Step 3: Save results
Use the file_write tool to save results...
## Notes
- Note 1
- Note 2#### 3. Install the Skill
Option 1: Direct placement (recommended)
Place the Skill directory under ~/.agents/skills/ and restart DeepBot — it will be loaded automatically.
Option 2: Use Skill Manager
"Install local skill at path ~/.agents/skills/my-skill"~/.agents/skills/Configure your API keys in System Settings to get started.
DeepBot is optimized for standard conversational models. Models with built-in thinking/reasoning modes can cause display issues with <think>...</think> tags, slower responses, and unnecessary overhead for simple tasks.
Not recommended:
| Service | Purpose | Configuration |
|---|---|---|
| Tavily API | Web search | System Settings → Web Search |
| Gemini | Image generation (Imagen 3) | System Settings → Image Generation |
deepbot/
├── src/
│ ├── main/ # Main process
│ │ ├── gateway.ts # Session management
│ │ ├── agent-runtime/ # Agent runtime
│ │ ├── tools/ # Tool system
│ │ ├── scheduled-tasks/ # Scheduled tasks
│ │ ├── connectors/ # External connectors
│ │ └── database/ # Data storage
│ ├── renderer/ # Renderer process (React)
│ ├── shared/ # Shared utilities
│ └── types/ # Type definitions
├── docs/ # Documentation
└── scripts/ # Build scriptsThis project is licensed under the MIT License.
DeepBot was inspired by:
<div align="center">
⭐ If DeepBot is useful to you, a star goes a long way!
</div>
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.