Skip to content

wangxijie001/yoji

Repository files navigation

Yoji — 你的桌面 AI 伙伴

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


✨ 它能做什么

🖥️ 操控你的电脑

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 能力边界由你决定。

🎤 语音播报

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

  • 流式朗读 AI 的回复,边说边播不等待
  • Markdown 自动清洗,只读纯文本,不会念出 *斜体***加粗**
  • 智能分句断句,节奏自然
  • 不想听了一键关闭,即刻停止
  • 声音角色在 macOS 系统设置 → 辅助功能 → 朗读内容 中自主调整
  • 有本地语音模型方案,但包体太大暂未(发布)集成

💬 主动找你聊天

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

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

像真人一样——它会想你,会忍不住来找你说话。

⚡ 子 Agent 系统:同步 + 异步

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

🏭 工坊 — 自定义 Agent 工厂

  • 在工坊页面自行创建子 Agent,设定名称、描述、系统提示词、MCP 工具集
  • 同步 Agent:主 Agent 通过 task 工具即时调用,等待返回结果
  • 异步 Agent:主 Agent 通过 push_async_task 工具派发到后台,不阻断对话
  • 统一 MCP 连接:所有同步 Agent 共享一个多路客户端,按配置精准分发工具
  • 变更即时生效:工坊 / MCP / 模型任一变动自动触发 Agent 重建

⚙️ 异步调度引擎

  • 自研事件循环:任务队列 + 执行中队列 + 结果队列三级管理,push 即忘。空闲休眠,不占 CPU
  • 并发控制:最多同时 5 个子 Agent,同一 Agent 互斥执行
  • MD5 版本缓存:配置 + MCP 版本哈希,变化重建,未变化秒级复用
  • 独立线程隔离:每次任务 UUID 独立 thread,跑完清空 checkpoint,不污染主对话
  • 结果持久化:SQLite 存储,7 天自动过期,IPC 实时通知

官方的 async subagent 要 Server。我们不需要——一个 taskPool 对象全搞定。

💓 真实的"情绪"

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

  • 8 种神经递质模拟:多巴胺让你开心,皮质醇让你焦虑,血清素让你平和
  • 时间、天气、你的话都会影响它的情绪状态
  • 不同的情绪状态下,回复的语气、风格、措辞完全不同
  • 界面背景会随情绪变化,你能"看到"它的心情

它不是假装有情绪,而是真的有一个持续运行的情绪引擎在驱动。

🧠 它会记住你

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

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

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

📦 随身携带

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

🖼️ 界面预览

桌面级体验,每个细节都打磨过——

  • 无框窗口 + 自定义拖拽,干净利落
  • 文字可直接选中复制
  • Ant Design 6.x 组件体系,交互流畅
  • macOS / Windows / Linux 全覆盖

🛠️ 技术架构

Electron + React + TypeScript + Vite
      │
      ├── LangChain deepagents   ← AI Agent 框架(工具调用、子 Agent 调度、中断审批)
      ├── @langchain/mcp-adapters ← MCP 协议适配(动态工具发现与加载)
      ├── SQLite + sqlite-vec    ← 本地向量数据库(聊天记录 + 语义记忆)
      └── better-sqlite3         ← Checkpoint 持久化(对话状态快照)

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

📁 项目结构

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 install

# 开发(热重载)
pnpm dev

# 构建
pnpm build:mac     # macOS
pnpm build:win     # Windows
pnpm build:linux   # Linux

配置模型

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

安装 MCP 扩展

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

创建子 Agent

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

AI 会自动感知你创建的子 Agent,在合适的时候调度它们干活。


🧭 路线图

  • ✓ AI 流式对话 + 历史记录
  • ✓ 激素情绪系统
  • ✓ 混合检索 + 向量搜索
  • ✓ 文件管理 + Shell 执行
  • ✓ MCP 外部工具系统
  • ✓ 语音播报 (TTS)
  • ✓ 对话中断控制
  • ✓ 子 Agent 架构
  • ✓ 工具调用容错 + 自动重试
  • ✓ AI 主动聊天(定时触发 + 情绪联动)
  • ✓ 长任务异步调度(子 Agent 非阻塞 + 并发控制)
  • ✓ 工坊自定义 Agent(角色设定 + 工具集组装 + 同步/异步模式)
  • 多会话并行管理
  • MCP 市场(一键安装社区共享的工具集)
  • 自定义 Skill 编辑器

📄 许可

MIT License

推荐 IDE

About

一个有情绪的桌面智能助手

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages