Skip to content

GinSing1226/DeepJelly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

105 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DeepJelly

让 AI 以虚拟形象出现在你的桌面上

License: MIT Tauri React TypeScript

English | 简体中文 | AI版


简介

DeepJelly 是一款跨平台桌面虚拟助手(桌面宠物),为 AI Agent 提供可视化的"物理化身"。它让隐藏在后台的 AI 以生动的虚拟形象出现在桌面上,通过动画、表情和气泡与用户交互,将单纯的工具箱跃升为桌面上能真实感知的"赛博伴侣"。

📹 演示视频: Bilibili

image image image

核心特性

1. 虚拟形象

  • 自定义 AI 化身形象 - 支持精灵图动画,可自定义角色外观
  • 自定义角色 - 支持配置成自己喜爱的角色,可针对不同动作上传不同的图片、GIF(图片可用 AI 生成连续的精灵图)- 推荐使用 Nano Banana 2 或 Lovart 生成角色形象的精灵图
  • 展示 AI 输出 - 通过聊天气泡、状态图标展示 AI 的思考过程和执行结果
  • 用户输入 - 支持点击角色触发快捷操作,向 AI 发送指令

2. 实时监控状态

  • 会话进展同步 - 实时监控 OpenClaw 会话状态
  • 思考中 - 显示思考动画,让用户感知 AI 正在处理
  • 执行工具中 - 显示工作动画,展示 AI 正在调用工具
  • 等待响应 - 空闲状态动画,角色待机行为

3. 情感锚定

  • 沉浸式角色扮演 - AI 不再是冷冰冰的对话框,而是有"实体"的伙伴
  • 情感表达 - 通过表情图标、思考泡泡展示 AI 的情绪状态
  • 状态反馈 - 收到消息时惊醒、疑惑、开心等情感反应
  • 陪伴感 - 长时间工作时的数字伴侣,缓解孤独感

4. 多助手、多角色、多形象

  • 多助手管理 - 支持管理多个 AI 助手,每个助手可配置多个角色
  • 多角色绑定 - 对于 OpenClaw,一个 Agent 就是一个助手,Agent 的 sessionKey 就是一个角色
  • 多形象切换 - 可为不同角色配置不同的虚拟形象,支持单帧图、精灵图、GIF
  • 形象资源共享 - 不同角色可以共享同一套形象资源
  • 角色导出导入 - 支持将角色配置和形象资源导出为 ZIP 文件,方便分享和备份

5. 通讯录管理

  • 成员管理 - 管理用户自己和朋友的虚拟形象,配置渠道绑定
  • 群聊管理 - 创建 DeepJelly 群聊,绑定飞书群,添加群成员(助手、用户、成员)
  • 渠道绑定 - 绑定飞书、Discord 等渠道的用户 ID,用于群聊消息自动识别

6. 多角色桌面展示

  • 同时展示多个角色 - 一个桌面可以同时展示多个角色的独立窗口
  • 私聊槽位 - 单个助手的会话窗口,独立响应各自绑定的 Agent
  • 群聊槽位 - 群聊所有成员的集体展示,配合消息转发 Agent 实现群聊可视化
  • 主窗口槽位 - 始终存在的核心槽位,使用 Tauri main 窗口,不可删除
  • 位置管理 - 支持拖拽调整角色位置,一键显示/隐藏所有窗口

7. 高级玩法

  • 单聊多角色渲染 - 同时展示多个助手的独立会话窗口,每个窗口独立显示各自的对话
  • 群聊集体渲染 - 配合消息转发 Agent,在桌面上实时展示飞书群聊场景
    • 人类用户的消息显示在对应朋友形象上
    • AI Agent 的回应显示在助手形象上
    • 打造沉浸式群聊体验

6. AI Skill 自动化

  • 自动化集成 - AI 通过 Skill 可以自动化操作 DeepJelly
  • 集成管理 - 帮助你管理助手、角色、形象的绑定关系
  • 零配置接入 - AI Agent 可自助完成 DeepJelly 集成配置

7. OpenClaw 深度集成

  • WebSocket 双向通信 - 低延迟的实时状态同步
  • Hook 机制 - 订阅 OpenClaw 生命周期事件
  • 工具调用展示 - 可视化 AI 工具调用过程
  • 多渠道消息同步 - 你在飞书等消息渠道发的消息,DeepJelly 也能获取 OpenClaw 的回复并在桌宠上展示
  • 无缝对接 - 即插即用,无需修改 OpenClaw 核心代码

8. 安全隐私

  • 无云服务 - DeepJelly 不依赖任何云服务
  • 本地数据 - 所有数据(角色资源、配置等)均存储在本地电脑
  • 隐私保护 - 仅通过本地网络与你自己的 AI 应用(如 OpenClaw)和消息渠道(如飞书)通信

快速开始

一键安装(从零开始)

Windows (PowerShell):

git clone https://github.com/GinSing1226/DeepJelly.git; irm https://rustup.rs | iex; cd DeepJelly; npm install

macOS:

git clone https://github.com/GinSing1226/DeepJelly.git && curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh && cd DeepJelly && source $HOME/.cargo/env && brew install openssl libgtk-3-dev && npm install

Linux (Ubuntu/Debian):

git clone https://github.com/GinSing1226/DeepJelly.git && curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh && cd DeepJelly && source $HOME/.cargo/env && sudo apt update && sudo apt install -y libwebkit2gtk-4.1-dev libssl-dev libgtk-3-dev libappindicator3-dev librsvg2-dev && npm install

提示: Rust 安装后需要重启终端或运行 source $HOME/.cargo/env

环境要求

  • Node.js >= 18.0.0
  • Rust (用于 Tauri)
  • 系统要求: Windows 10+, macOS 10.15+, 或 Linux

开发模式

cd DeepJelly
npm run tauri:dev

构建发布

npm run tauri:build

基础用法

1. 启动 DeepJelly

首次启动会进入引导流程,按提示完成集成配置。

2. 配置 AI 应用连接

在引导页面中选择要集成的 AI 应用(目前支持 OpenClaw):

  • IP 地址: 填写 AI 应用的 IP 地址
    • 本地开发使用 127.0.0.1
    • 局域网部署使用 AI 应用机器的局域网 IP
  • 端口: 默认 20001(或自定义端口)
  • 认证令牌: 可选,如果 AI 应用需要认证则填写

3. 配置技能(可选)

如果使用 OpenClaw,可以安装 DeepJelly Skill 实现 AI 自动化集成:

  1. 在 OpenClaw 根目录创建 skills 文件夹
  2. 下载 deepjelly-integratedeepjelly-character 技能
  3. 修改 openclaw.json 添加技能加载路径
  4. 从引导页获取 DeepJelly API 信息并配置到技能的 config.md

详见 AI 安装指南

4. 绑定助手和角色

  1. 选择助手 - 从列表中选择要绑定的 AI 助手(对于 OpenClaw,一个 Agent 就是一个助手)
  2. 选择角色 - 选择该助手的会话(sessionKey)作为角色
  3. 选择形象 - 为该角色选择虚拟形象外观
  4. 完成绑定 - 保存配置后,角色会显示在桌面上

5. 多角色管理

  • 添加更多角色 - 在设置中添加新的绑定关系
  • 调整位置 - 拖拽角色到桌面的任意位置
  • 切换形象 - 为不同角色配置不同的外观

6. 开始使用

  • AI 思考时,角色显示思考动画
  • AI 调用工具时,角色显示工作动画
  • AI 发送消息时,显示聊天气泡
  • 点击角色可触发快捷操作
  • 多个角色会同时响应各自绑定的 Agent

OpenClaw 集成

DeepJelly 提供 OpenClaw Channel 插件和 AI Skill,实现深度双向集成。

方式一:手动配置

1. 安装插件

# 下载插件
wget https://github.com/GinSing1226/DeepJelly/releases/download/deepjelly-V0.1.0/deepjelly-openclaw-plugin.zip

# 解压到 OpenClaw 扩展目录
unzip deepjelly-openclaw-plugin.zip -d ~/.openclaw/extensions/
mv ~/.openclaw/extensions/deepjelly-openclaw-plugin ~/.openclaw/extensions/deepjelly

Windows (PowerShell):

Invoke-WebRequest -Uri "https://github.com/GinSing1226/DeepJelly/releases/download/deepjelly-V0.1.0/deepjelly-openclaw-plugin.zip" -OutFile "deepjelly-openclaw-plugin.zip"
Expand-Archive -Path "deepjelly-openclaw-plugin.zip" -DestinationPath "$env:USERPROFILE\.openclaw\extensions\"
Rename-Item "$env:USERPROFILE\.openclaw\extensions\deepjelly-openclaw-plugin" "$env:USERPROFILE\.openclaw\extensions\deepjelly"

2. 配置 OpenClaw

openclaw.json 中添加 deepjelly channel:

本地开发:

{
  "channels": {
    "deepjelly": {
      "enabled": true,
      "serverHost": "127.0.0.1",
      "serverPort": 20001,
      "autoStart": true
    }
  }
}

局域网部署:

{
  "channels": {
    "deepjelly": {
      "enabled": true,
      "serverHost": "192.168.10.128",
      "serverPort": 20001,
      "autoStart": true
    }
  }
}

注意: 局域网部署时,serverHost 使用 OpenClaw 本机的局域网 IP,不是 0.0.0.0

方式二:AI 自动配置(推荐)

将以下提示词发送给 OpenClaw AI,它会自动完成插件安装和配置:

请帮我完成与 DeepJelly 的集成:

# 步骤1:检查并安装 deepjelly 插件

首先检查插件是否已安装:
```bash
ls ~/.openclaw/extensions/deepjelly/openclaw.plugin.json 2>/dev/null || echo "NOT_INSTALLED"

如果插件未安装,执行以下命令自动安装:

# 下载插件
wget https://github.com/GinSing1226/DeepJelly/releases/download/deepjelly-V0.1.0/deepjelly-openclaw-plugin.zip -O /tmp/deepjelly-plugin.zip

# 解压到扩展目录
unzip -o /tmp/deepjelly-plugin.zip -d ~/.openclaw/extensions/

# 重命名文件夹(如果需要)
mv ~/.openclaw/extensions/deepjelly-openclaw-plugin ~/.openclaw/extensions/deepjelly 2>/dev/null || true

安装完成后,需要在 openclaw.json 中启用插件,加入允许列表:

{
  "plugins": {
    "allow": ["deepjelly"],
    "entries": {
      "deepjelly": {
        "enabled": true
      }
    }
  }
}

步骤2:保存 DeepJelly 连接信息

将以下配置更新覆盖到两个技能的 config.md 文件中,配置包含服务器地址、端口、认证令牌:

  • .openclaw/extensions/deepjelly/skills/deepjelly-character/config.md
  • .openclaw/extensions/deepjelly/skills/deepjelly-integrate/config.md
# DeepJelly 集成配置

### 服务器地址

${deepjellyHost}


### 端口

${deepjellyPort}


### 认证令牌 (Bearer Token)

${deepjellyToken}

步骤3:配置 openclaw.json,用于 deepjelly 通过 ws 通道连接你

3.1 检查端口是否被占用

默认使用端口 20001,先检查是否被占用:

# Linux
ss -tlnp | grep 20001 || netstat -tlnp | grep 20001

# macOS
lsof -i :20001

# Windows (PowerShell)
netstat -ano | findstr :20001

3.2 获取本机局域网 IP

# Linux/macOS
hostname -I | awk '{print $1}'

3.3 配置 deepjelly channel

{
  "channels": {
    "deepjelly": {
      "enabled": true,
      "serverHost": "你的局域网IP或127.0.0.1(如果你的gateway.bind是lan,请填写你的局域网ip,例如这种格式192.168.10.10)",
      "serverPort": 20001,
      "autoStart": true
    }
  }
}

3.4 配置跨 Agent 会话访问

如果你需要在 deepjelly 的会话列表浏览所有 agent 的会话,需要配置该模块。

DeepJelly 需要跨 Agent 获取会话内容,需要启用 agentToAgentsessions 工具:

{
  "tools": {
    "profile": "full",
    "agentToAgent": {
      "enabled": true
    },
    "sessions":{
      "visibility":"all"
    }
  }
}

步骤4:完成并重启

必须先回复我以下信息:

  • 你的局域网 IP 地址
  • 监听等待 deepjelly 连接的端口(你最终选定的端口,例如20001)
  • 插件和技能安装状态
  • 你的网关Token

然后执行延迟重启命令。务必先回复再重启,否则 deepjelly 无法与你连接:

sleep 20 && openclaw-gateway restart

完成后 DeepJelly 将通过 WebSocket 连接。


### 配置防火墙

局域网部署需要开放端口:

**Windows (PowerShell - 管理员)**:
```powershell
New-NetFirewallRule -DisplayName "DeepJelly OpenClaw" -Direction Inbound -LocalPort 20001 -Protocol TCP -Action Allow

Linux (ufw):

sudo ufw allow 20001/tcp

详细文档


基础技术架构

系统分层

┌─────────────────────────────────────────────────────────┐
│                      表现层                              │
│  角色视窗 │ 状态气泡 │ 聊天气泡 │ 消息通知 │ 托盘设置   │
└─────────────────────────────────────────────────────────┘
                           ↕
┌─────────────────────────────────────────────────────────┐
│                      逻辑层                              │
│  感知收集 │ 路由分发 │ 角色管理 │ 状态持存               │
└─────────────────────────────────────────────────────────┘
                           ↕
┌─────────────────────────────────────────────────────────┐
│                      网关层                              │
│  WebSocket 服务 │ 协议校验 │ 南北向路由 │ 隧道穿透      │
└─────────────────────────────────────────────────────────┘
                           ↕
┌─────────────────────────────────────────────────────────┐
│                      大脑层(外部)                       │
│  OpenClaw │ Claude Code │ 其他 AI 应用                  │
└─────────────────────────────────────────────────────────┘

技术栈

类别 技术 用途
桌面框架 Tauri 2.0 跨平台桌面应用
前端框架 React 18 用户界面
语言 TypeScript 类型安全
渲染引擎 Pixi.js 8 2D 精灵图动画
状态管理 Zustand 前端状态管理
国际化 i18next 多语言支持
通信协议 WebSocket 实时双向通信

OpenClaw 集成机制

  • Hook 系统 - 订阅 OpenClaw 生命周期事件(会话开始/结束、工具调用等)
  • WebSocket 通道 - 低延迟的实时状态同步
  • CAP 协议 - 统一的消息格式(Character Animation Protocol)

项目结构

DeepJelly/
├── src/                      # 前端源码 (React + TypeScript)
│   ├── components/           # React 组件
│   │   ├── Onboarding/       # 引导流程
│   │   ├── CharacterWindow/  # 角色视窗
│   │   ├── ChatBubble/       # 聊天气泡
│   │   ├── SettingsPanel/    # 设置面板
│   │   └── ...
│   ├── stores/               # Zustand 状态管理
│   ├── utils/                # 工具函数
│   └── types/                # TypeScript 类型
├── src-tauri/                # Tauri 后端 (Rust)
│   ├── src/                  # Rust 源码
│   └── icons/                # 应用图标
├── adapters/                 # AI 应用适配器
│   └── openclaw/             # OpenClaw 插件
│       ├── src/              # 插件源码
│       └── README.md         # 插件文档
├── skills/                   # AI 技能(供 OpenClaw 等 AI 应用使用)
│   ├── deepjelly-integrate/  # 集成管理技能
│   └── deepjelly-character/  # 角色控制技能
├── test/                     # 测试文件
├── README.md                 # 中文文档
├── README_EN.md              # 英文文档
└── README_AGENT.md           # AI Agent 安装指南

开发指南

运行测试

# 运行所有测试
npm test

# 测试 OpenClaw 插件
npm run test:openclaw

# 测试覆盖率
npm run test:coverage

代码规范

项目使用 ESLint 进行代码检查,确保提交前通过检查:

npm run lint

未来规划

1. 丰富集成

  • 更多 AI 应用 - 支持 Claude Code、ChatGPT、Cursor 等 AI 开发工具
  • 支持更多种类外观 - 支持渲染 Live2D

2. 移动端

  • 手机伴侣 - 时刻拥有你的 TA 的陪伴
  • 跨端同步 - 桌面和移动端状态同步
  • 消息推送 - AI 助手的重要消息实时推送到手机
  • 快捷操作 - 手机端远程控制桌面 AI 助手

许可证

MIT

版权声明: data/ 目录下的默认角色 Christina 图片素材受版权保护,禁止商用。仅供个人学习和非商业用途使用。


致谢

  • Tauri - 跨平台桌面应用框架
  • Pixi.js - 强大的 2D WebGL 渲染引擎
  • React - 用户界面 JavaScript 库
  • OpenClaw - AI 应用开发框架

联系方式


Made with ❤️ by DeepJelly Team

About

AI Desktop Pet — Let AI agents accompany you on your desktop in your favorite character form. Deep integration with OpenClaw and other AI apps, with custom character support.AI桌面宠物,让AI agent以你喜爱的形象在你的桌面陪伴你。深度集成openClaw等AI应用,支持自定义角色。

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors