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

8 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors