wangxijie001
yoji
TypeScript✨ New

有情绪的 AI 桌面伴侣 | 隐私优先 · 语音唤醒 · 协助办公 · MCP 无限扩展 | An AI desktop companion with emotions — privacy-first, voice wake, office assistance, and MCP extensibility

Last updated Aug 10, 2026
691
Stars
104
Forks
2
Issues
+49
Stars/day
Attention Score
90
Language breakdown
TypeScript 89.0%
CSS 10.3%
HTML 0.2%
JavaScript 0.2%
Shell 0.2%
Files click to expand
README

Yoji — 你的桌面 AI 伙伴

GitHub stars License [Platform]() [Electron]() [TypeScript]()

English

Yoji 不止是一个聊天机器人。它能操作你的电脑——管理文件、运行脚本、搜索网络、调用外部 API,同时拥有持续进化的"人格"和"情绪"。所有数据都在本地,隐私牢牢握在你手里

她会的很多,也懂得不少。但初次见面时,她还需要一点时间适应你的节奏,了解你的偏好。你可以通过工坊定制她的能力、MCP 扩展她的工具集;也可以在聊天中直接告诉她要记住哪些重要信息、遵循怎样的行为准则——说句话就能写进 Skills。最终她会变成什么样子,全看你怎么带。


✨ 它能做什么

🖥️ 操控你的电脑

Yoji 可以直接与你的操作系统交互。这不是"模拟点击",而是真正的权限——

  • 文件管理:创建、编辑、搜索、整理你的文件和文件夹,比 Finder 更快
  • 运行脚本:执行 Shell 命令、Python 脚本,自动完成批量任务
  • 联网搜索:遇到不懂的自动上网查,把结果整理好给你
  • 智能审批:涉及敏感操作(如执行命令)会弹窗让你确认,安全可控

🔌 无限扩展能力 (MCP)

接入 Model Context Protocol 生态,Yoji 的能力理论上是无上限的:

  • 想查火车票?装一个 12306 MCP 服务器,10 秒搞定
  • 想搜菜谱?接一个菜谱 MCP,今晚吃什么不用纠结
  • 想看网页?Fetch MCP 直接抓取转 Markdown
  • AI 自己也能装:告诉它"帮我加个查天气的工具",它自己找、自己测、自己装(你点同意就行)
  • 工坊自定义 Agent:在工坊页面自行创建子 Agent,设定角色、提示词、MCP 工具集,AI 自动识别并调度
  • 子 Agent 架构确保装再多工具也不影响对话质量
MCP 不是"插件系统",是开放的行业标准协议。任何符合 MCP 规范的服务都可以接入,AI 能力边界由你决定。

🎤 语音播报(TTS)

像真人在你耳边说话——目前仅支持 macOS

  • 流式朗读 AI 的回复,边说边播不等待
  • Markdown 自动清洗,只读纯文本,不会念出 斜体加粗
  • 智能分句断句,节奏自然
  • 不想听了一键关闭,即刻停止
  • 声音角色在 macOS 系统设置 → 辅助功能 → 朗读内容 中自主调整

🎙️ 语音唤醒对话

喊一声"小优",直接开口聊天——macOS 原生 SFSpeechRecognizer,全离线识别

  • 点麦克风进入持续监听,说"小优"唤醒
  • 唤醒后直接说话,流式转文字实时显示
  • 说完停顿 2 秒自动发送,全程免动手
  • 发送后自动回到监听状态,连续对话
  • 基于 Siri 同款引擎,不联网、零延迟、零成本
  • Windows 暂不支持,渲染进程自动隐藏入口

💬 主动找你聊天

Yoji 不只是等你开口——它会主动来找你

  • 如果你一阵子没说话,它会根据时间间隔自动发起对话
  • 间隔智能递增,也可配置开启完全自主模式(考虑到运行成本问题,这个功能模块暂不对外开放)
  • 每次主动聊天前会感知情绪和天气,状态自然不突兀,你长时间不回复会影响它的情绪哦
  • 你一发消息主动聊天配置就重置,不会打扰正常聊天
  • 一键开关,想安静的时候随时关掉
像真人一样——它会想你,会忍不住来找你说话。

⚡ 子 Agent 系统:同步 + 异步

官方的子 Agent 是阻塞式的,异步版本又强依赖云端 Server。我们自己实现了一套本地子 Agent 工厂+调度系统

🏭 工坊 — 自定义 Agent 工厂

  • 在工坊页面自行创建子 Agent,设定名称、描述、系统提示词、MCP 工具集
  • 同步 Agent:主 Agent 通过 task 工具即时调用,等待返回结果
  • 异步 Agent:主 Agent 通过 pushasynctask 工具派发到后台,不阻断对话
  • 统一 MCP 连接:所有同步 Agent 共享一个多路客户端,按配置精准分发工具
  • 变更即时生效:工坊 / MCP / 模型任一变动自动触发 Agent 重建
⚙️ 异步调度引擎
  • 自研事件循环:任务队列 + 执行中队列 + 结果队列三级管理,push 即忘。空闲休眠,不占 CPU
  • 并发控制:最多同时 5 个子 Agent,同一 Agent 互斥执行
  • 任务取消:支持手动(UI 一键取消)和 AI 自主(abortasynctask 工具)两种方式,排队中直接移除,执行中即时中断
  • MD5 版本缓存:配置 + MCP 版本哈希,变化重建,未变化秒级复用
  • 独立线程隔离:每次任务 UUID 独立 thread,跑完清空 checkpoint,不污染主对话
  • 结果持久化:SQLite 存储,7 天自动过期,IPC 实时通知
官方的 async subagent 要 Server。我们不需要——一个 taskPool 对象全搞定。

💓 真实的"情绪"

Yoji 不是一个冷冰冰的模型接口。它有基于激素的情绪系统——

  • 8 种神经递质模拟:多巴胺让你开心,皮质醇让你焦虑,血清素让你平和
  • 时间、天气、你的话都会影响它的情绪状态
  • 不同的情绪状态下,回复的语气、风格、措辞完全不同
  • 界面背景会随情绪变化,你能"看到"它的心情
它不是假装有情绪,而是真的有一个持续运行的情绪引擎在驱动。

🎭 Live2D 虚拟形象

Yoji 现在有了看得见的"身体":

  • 情绪可视化:开心时星星眼微笑、悲伤时流泪抽泣、愤怒时脸红颤抖——每种情绪都有生动的表情和动作
  • 会说话会动嘴:AI 说话时嘴巴跟着张合,表情同步,像真人在讲话
  • 穿了会换衣服:中午墨镜上头遮阳,晚上 9 点自动换上睡衣猫耳帽
  • 戳她会害羞:点她的头会脸红低头,戳脸会鼓腮,拍肚子会扭腰,碰尾巴会跳舞
  • 可拖拽缩放:首页右下角打开,随意拖动位置、调整大小
一只银白发猫耳少女,黑色机能风穿搭——白天酷酷的,晚上换上睡衣又变居家治愈。

🧠 它会记住你

三层记忆架构确保 Yoji 不会"忘记":

| 层 | 做什么 | 存在哪 | |---|---|---| | 用户画像 | 你的偏好、习惯、重要信息 | AGENTS.md(启动即加载) | | 对话快照 | 每次聊天的完整上下文 | SQLite Checkpoint | | 语义记忆 | 长期对话的摘要 + 向量检索 | sqlite-vec 向量数据库 |

聊得越多,它越懂你。而这一切都在你的电脑上,不上传、不联网、不经过第三方。

📄 智能文档处理

AI 可以直接读取和解析你的文件——不只是文本,还有 PDF 和 Word:

  • PDF 提取:自动识别并提取文字层,直接分析内容
  • Word 文档:.docx 一键转文字,无需手动复制粘贴
  • 二进制保护:不支持的格式(图片、音视频等)自动拦截并提示,不会报错
  • Agent 调用 read_file 时透明处理,你只管把文件拖进来

📱 微信连接

把 Yoji 连到你的微信个人号,手机就是 AI 终端

  • 扫码即连,一次配置持久生效
  • 手机发消息 → Yoji 秒回,实打实的 AI 对话
  • 支持"正在输入…"状态,回复体验跟真人聊天一样
  • 桌面端聊天历史和手机端互不可见,各聊各的不串线
  • 基于微信 iLink ClawBot 协议,官方接口稳定可靠

📦 随身携带

  • 导出:一键打包整个 Yoji(记忆 + 情绪 + 配置)为 .ecompanion 文件
  • 导入:换电脑后秒级恢复,你的 AI 伙伴还是那个它
  • 文件自带鉴权,只有你能打开

🖼️ 界面预览

桌面级体验:无框窗口 + 自定义拖拽,文字可直接选中复制,Ant Design 6.x 组件体系,macOS / Windows / Linux 全覆盖。

Yoji 演示

激素情绪系统

激素情绪系统

子 Agent / 工坊

子 Agent / 工坊

MCP 外部工具

MCP 外部工具

文件管理

文件管理

主页+Live2D形象

Live2D 虚拟形象


🛠️ 技术架构

Electron + React + TypeScript + Vite
      │
      ├── LangChain deepagents   ← AI Agent 框架(工具调用、子 Agent 调度、中断审批)
      ├── @langchain/mcp-adapters ← MCP 协议适配(动态工具发现与加载)
      ├── SQLite + sqlite-vec    ← 本地向量数据库(聊天记录 + 语义记忆)
      ├── pdf-parse + mammoth   ← 智能文档处理(PDF / Word 提取文字)
      ├── electron-native-speech ← macOS 原生语音识别(SFSpeechRecognizer)
      ├── better-sqlite3         ← Checkpoint 持久化(对话状态快照)
      ├── pixi-live2d-display   ← Live2D 渲染引擎(Cubism 4 + PixiJS 6)
      └── @pixi/unsafe-eval      ← CSP 安全策略兼容(无 eval shader)

设计原则:本地优先、隐私优先、扩展优先。不上传任何数据,不依赖任何云服务。

📁 项目结构

src/
├── main/            # 主进程 — Agent 核心、工具集、MCP 管理、IPC 通信
│   ├── agent/       #  AI Agent(对话、记忆、情绪、子 Agent(同步+异步)、调度系统)
│   ├── ipc/         #  IPC 处理器(请求/响应 + 流式推送 + 广播 + agentVersion)
│   └── config.ts    #  配置管理(env / model / mcp / childrenAgent)
├── preload/         # 安全桥接层 — contextBridge API
└── renderer/        # 渲染进程 — React 页面
    ├── pages/       #  首页 / AI 对话 / 模型设置 / MCP 管理 / 工坊 / 文件管理
    └── components/  #  通用组件(消息渲染、文件预览等)

🚀 快速开始

要求 pnpm 11npm i -g pnpm@11
git clone https://github.com/wangxijie001/yoji.git
cd yoji
pnpm install
pnpm dev

electron / 模型下载慢?.npmrc 已配国内镜像。

构建

pnpm build:mac
pnpm build:win
pnpm build:linux

配置模型

  • 启动后进入「模型」页面
  • 填入 API Key(DeepSeek 或 Qwen)
  • 选择模型,保存即可开始对话

安装 MCP 扩展

  • 进入「MCP」页面,点添加
  • 填入名称、URL、选择传输协议(SSE / HTTP)
  • 点保存自动测试连接,成功即生效
  • 也可以直接告诉 AI:"帮我装个查天气的 MCP"

创建子 Agent

  • 进入「工坊」页面,点「新增」
  • 填写名称、描述(告诉 AI 这个 Agent 是干什么的)、系统提示词(Agent 的人设和输出要求)
  • 选择同步还是异步:
- 同步:即时执行(读文件、跑命令、调 MCP),结果立等可取 - 异步:后台执行(联网搜索、批量处理),不打断当前对话
  • 绑定 MCP 工具集,告诉 Agent 它有哪些可用的外部工具
  • 保存后在「模型」或「MCP」页面启用,Agent 自动重建并识别
AI 会自动感知你创建的子 Agent,在合适的时候调度它们干活。

🧭 路线图

  • ✓ AI 流式对话 + 历史记录
  • ✓ 激素情绪系统
  • ✓ 混合检索 + 向量搜索
  • ✓ 文件管理 + Shell 执行
  • ✓ MCP 外部工具系统
  • ✓ 语音播报 (TTS)
  • ✓ 对话中断控制
  • ✓ 子 Agent 架构
  • ✓ 工具调用容错 + 自动重试
  • ✓ AI 主动聊天(定时触发 + 情绪联动)
  • ✓ 长任务异步调度(子 Agent 非阻塞 + 并发控制)
  • ✓ 工坊自定义 Agent(角色设定 + 工具集组装 + 同步/异步模式)
  • ✓ 异步任务取消(手动 + AI 自主两种方式)
  • ✓ 语音唤醒对话(macOS 原生 SFSpeechRecognizer + 唤醒词 + 流式识别)
  • ✓ 智能文档处理(PDF/DOCX 自动提取文字,二进制拦截保护)
  • ✓ Live2D 虚拟形象(16 情绪映射 + TTS 口型同步 + 戳一戳互动 + 时间段换装)
  • ✓ 微信连接(iLink ClawBot:扫码登录 + 消息轮询 + AI 回复 + 输入状态)
  • 协作办公(目前已可以根据需要自主集成,后续会提供一些默认集成功能)

📄 许可

MIT License

推荐 IDE

  • VSCode + ESLint + Prettier
  • Claude Code — 项目已内置 CLAUDE.md,用 Claude Code 打开即可快速理解代码、上手开发
🔗 More in this category

© 2026 GitRepoTrend · wangxijie001/yoji · Updated daily from GitHub