OneSpace 是一个面向开发者的 macOS 优先桌面工作台(Tauri 2 + React 19 + TypeScript),把 AI CLI 环境、原生终端会话、AI 网关、MCP、Skills/Subagents 和常用生产力工具收拢到一个窗口里。
- 统一管理
Claude、Codex、Antigravity、OpenCode四种 AI CLI 的环境与配置 - 在原生终端中创建和恢复 AI 会话,标题与模型自动从 CLI 历史回填
- 用本地 AI 网关聚合多个上游服务商,为
OpenCode/Codex提供统一入口 - 按项目组织会话、MCP、Skills 与 Subagents
- 附带 SSH、隧道、协议路由、文件共享、短链与离线小工具,支持中英双语界面
- 首次启动完成初始化向导:选择数据存储方式(
local/iCloud/Git)并设置主密码。 - 进入
AI 终端服务商,确认目标 CLI 的安装与版本,导入系统现有配置或新建环境,保存后Apply to CLI激活。 - 进入
AI 终端会话,选择工具与工作目录创建会话,OneSpace 会在原生终端里启动对应 CLI。 - 按需补充
Skills、Subagents、MCP Servers,并在工作空间中把它们绑定到项目目录。 - 在
AI 终端会话右上角点击Install CLI安装onespace命令行,即可在终端里创建与恢复会话。
- 启动台(Launcher):统一启动应用、脚本、URL、文件夹或跳转应用内部页面;支持搜索、置顶排序、脚本信任确认、导入/导出 JSON。
- 工作空间(Workspaces):把项目目录与 AI 会话、MCP、Skills、Subagents 绑定在一起(Sessions / MCP / Skills / Subagents 四个页签),支持标签筛选与项目范围内的能力复制。
AI 终端服务商(AI Terminal Environments)
- 支持
Claude、Codex、Antigravity、OpenCode,自动检测本机 CLI 安装状态与版本 Claude/Codex/Antigravity可从系统现有配置自动导入默认环境,并支持从其它已同步设备一键导入- 多环境预设:
Save保存到 OneSpace,Apply to CLI设为活动环境并写入 CLI 配置 Env Managed开关决定后续 CLI 配置文件是否持续由 OneSpace 接管- 支持环境 JSON 导入导出,导入前可预览冲突并逐条选择覆盖或新建
OpenCode提供高级 provider JSON 编辑与模型快捷表单实时双向同步,保存保留历史版本、可回滚
AI 终端会话(AI Terminal Sessions)
- 选择工具与工作目录即可在原生终端创建会话
- 会话可恢复、重命名、删除、复制 ID,支持按工具/模型筛选与按名称搜索
- 会话标题与模型信息会从各 CLI 历史记录自动回填
- 内置
Install CLI按钮安装onespace命令行(默认~/.local/bin/onespace) - Quick AI Session Bar:全局快捷键唤起(默认
Alt+Shift+A),选择工具与目录后Enter直接启动,Esc关闭
AI 网关(AI Gateway)
- 把多个上游服务商聚合成本地统一入口,默认监听
127.0.0.1:17688(开发构建为17689),本地 Api 地址(http://127.0.0.1:<端口>/v1)可直接复制给调用方 - 上游维护名称、Api 地址、密钥、默认模型、模型映射与接口协议(Chat Completions / Responses,可逐条映射覆盖);支持服务商模板与模型清单同步
- 每个上游使用有序密钥池,密钥按列表顺序使用;鉴权失败与额度耗尽的密钥会被标记,可在界面中单独重新启用
- 模型映射可维护输入/缓存读/缓存写/输出四档单价与 UTC+8 峰谷优惠时段,金额在请求记录时固化
AI 终端集成可把本地 Api 地址与默认本地 Key 一键配置到OpenCode/Codex(创建独立的AI Gateway服务商记录,不改写你已有的记录)- 内置「用量统计」与「请求日志」页签:支持今日 / 昨天 / 近 7 天 / 近 15 天 / 近 30 天 / 全部范围,按模型、服务商或 UTC+8 自然日分组,并可按状态、模型、服务商过滤
- 连续失败的模型映射会被自动禁用,冷却后自动探测恢复;密钥被标记时会推送界面提示与消息中心通知
AI 用量统计(AI Usage Stats)
- 从本地 CLI 会话历史统计 token 用量,不请求云端账单接口,支持
Claude、Codex、Antigravity、OpenCode - 提供 7 天 / 30 天 / 90 天等时间窗口与每日趋势,展示 sessions / calls / total tokens / cache hit
Antigravity不在磁盘持久化 token,token 列显示显式不可用说明
Skills
Recommended/Repository/Installed三视图- 支持
Global(工具全局)与Project(项目目录)两种安装范围 - 各工具统一使用
~/.agents/skills规范目录,并为Claude维护兼容符号链接 - 支持 Git 源同步、差异预览、更新应用、本地目录导入与打开
MCP Servers
- 手动新增
stdio/http/sse三类 Server - 内置模板创建:GitHub、Filesystem、PostgreSQL、Context7、Brave Search、Slack、Google Maps、Puppeteer、Playwright、Figma、Weather 等
- 支持按模型单独启用/禁用、链接到环境、导入导出配置、刷新本地安装状态
- 对部分
npx型stdioMCP 提供更新检查与更新应用 - 页面内提供配置备份管理(创建、恢复、删除、清理旧备份)
Subagents
- 与 Skills 类似的三视图、安装范围与源管理
- 额外提供源诊断:检查 frontmatter 缺失、
name缺失或非法、文件读取失败
侧边栏与「更多工具」(工具箱)中的常用工具:
- SSH 服务器(SSH Servers):读取
~/.ssh/config,维护 history / ignored / 收藏与自定义连接(支持密码或私钥文件模式) - SSH 隧道(SSH Tunnels):维护 Local / Remote / Dynamic 三种端口转发,支持连接测试、自动连接、断线重连(网络恢复或系统唤醒后自动重试)、常用端口管理与环境分组
- 协议路由(Protocol Router):为 AI provider 暴露可复用的本地 endpoint,查看 route 状态、连接测试与近期请求用量;运行参数在设置页维护
- 文件共享(File Sharing):在可信局域网内通过临时 HTTP 链接或二维码分享本地文件,接收方只读下载;共享状态仅存在于当前进程,停止或退出后链接立即失效
- 蓝牙锁屏(BLE Lock):只监测一个自选 BLE 设备(不解码 MAC、不推断距离),主动连接读取(默认)或被动广播两种模式;仅 macOS 可用,其他平台保持入口可见但显示不可用,绝不调用原生动作。
- 设置与权限:在工具内扫描并选择设备并授权系统蓝牙;自动解锁还需在系统设置中授予辅助功能(Accessibility)权限。
- 阈值语义:解锁/锁定 RSSI 各自可「禁用」或取
-95..-30 dBm的 5 dBm 步进,两者都启用时解锁阈值必须不低于锁定阈值;两个 RSSI 动作与全部可选开关默认关闭,锁定延时默认 10 秒、无信号超时默认 30 秒(前者1..=3600秒、后者5..=3600秒)。 - 唤醒与系统休眠:设备靠近时可按开关唤醒显示器,或启用「唤醒但不解锁」只唤醒屏幕而不注入密码;系统休眠期间暂停 proximity 判定、只唤醒显示、不承诺整机唤醒,唤醒后重建监测。
- 锁定、媒体与屏保:设备持续远离达到锁定延时后锁定会话,可选「使用屏保锁定」或锁定后息屏(两者互斥);可选在锁定时暂停正在播放的媒体,且只恢复本轮锁定时暂停的内容。
- 密码与 Keychain:登录密码只存于本机不可同步的 Keychain 条目(Release
com.onespace.desktop.ble-lock/ Debugcom.onespace.desktop.ble-lock.dev),对外只显示已配置/未配置;配置存于不同步的ble_lock.json。 - 边界与失败:FileVault 或 pre-boot 认证屏幕不在功能范围内;蓝牙关闭/被拒、辅助功能未信任、Keychain 不可用、设备消失或原生能力缺失会给出可操作的本地化提示,且不阻断仍可用的配置、状态与手动锁定。
- 生成短链接(Short Link):通过 TinyURL 生成短链(需在工具内填写 API Token),带本地历史记录
- JSON 解析、MD5 加密、随机密码、JT/T 数据解析(JT/T 808 / 809 / 1078 报文)
- 备忘录(Notes)、代码片段(Snippets)、收藏夹(Bookmarks):本地内容工具,参与侧边栏计数、OmniSearch 与内容同步
- AI Workflow 模型切换:按 9×3 角色矩阵编辑并保存/激活 profile,模型候选自动从已发现的模型源读取,也支持手动输入
- AI 新闻资讯(AI News):从自定义 RSS 源抓取 AI 资讯,内置
36Kr、开源中国推荐源,支持关键词过滤、自动同步、保留天数与条数策略 - 邮件(Mail):通过 Google OAuth 连接 Gmail(需自备 Client ID / Secret),支持收件箱、未读状态、正文与附件下载、发信与快速回复
- 消息中心:托管服务状态、备份结果、网关密钥标记等通知
- 鱼塘(Fish Pond):主界面底部入口的小游戏集合 — CyberMuyu、Snake、Tetris、Sudoku、Minesweeper、Wordle
- OmniSearch(
Cmd/Ctrl + K):聚合搜索会话、启动项、SSH、代码片段、书签、备忘录与 Skills - 托盘与全局快捷键:主窗口显示/隐藏(默认
Alt+Space)与 Quick AI Session(默认Alt+Shift+A)均可自定义;托盘菜单可显示/隐藏主窗口、唤起 Quick AI、打开各主要页面(含「更多页面」子菜单),并为网关、协议路由、SSH 隧道与文件共享提供服务状态与批量操作(连接/断开、停止共享、Sync Now、复制 API 地址),以及检查更新、打开设置与关于 - 中英双语界面:语言与主题在「外观」中切换;主窗口关闭默认隐藏到托盘
- 应用内文档:关于窗口与托盘菜单可进入内置文档
首次启动的初始化向导只做两件事:选择数据存储方式(local / iCloud / Git)与设置主密码(用于保护本地敏感信息,后续可在「安全」中修改)。
设置页按分区独立保存与重置,当前分区包括:
| 分区 | 主要配置 |
|---|---|
| 数据存储 | 存储类型、Git 地址与认证、iCloud / 本地路径、同步策略(providers、mcp、content、Skills / Subagents 源与仓库、AI 新闻等) |
| 新闻资讯 | AI News 自动同步、间隔、保留策略、关键词与 RSS 源列表 |
| 通用 | 开机自启动 |
| 更新 | 自动更新开关与检查间隔 |
| Skills 源 / Subagents 源 | 自动同步开关与间隔、Git 源清单、导入 / 导出、手动 Sync Now |
| 网络代理 | http / https / socks5 代理、账号密码、连通性测试 |
| 协议路由 | 启用开关、本地端口、请求记录保留天数、Router token |
| AI 网关 | 请求日志保留天数(默认 90 天)、服务商模板自动刷新间隔 |
| 快捷键配置 | 主窗口与 Quick AI Session 的全局快捷键 |
| AI 终端会话 | 默认工作目录、默认模型、终端应用、各模型启动命令模板与恢复会话权限模式 |
| 外观 | 语言(中文 / English)与主题 |
| 安全 | 查看 / 修改主密码,生成随机密码 |
- 使用手册:
docs/USAGE.md - CLI 文档:
docs/CLI.md - Skills 与 Subagents 文档:
docs/SKILLS.md - MCP 文档:
docs/MCP.md - 核心工作流清理与优化交付记录:
docs/core-workflows-optimization.md
- 桌面框架:Tauri 2(Rust)
- 前端:React 19、TypeScript、Vite 7、Tailwind CSS 3、Radix UI、i18next
- 平台:macOS 优先;会话、应用启动与 SSH 会话等能力依赖 macOS 原生终端与
open/ AppleScript 工作流
npm install
npm run tauri devnpm run tauri dev 使用独立的 ~/.config/onespace-dev 应用目录,与已安装的 release 应用(~/.config/onespace)互不共享可变状态;首次 debug 启动会按条件从 release 目录播种 .local_key 与 ai_gateway.json(仅在 dev 目标缺失时复制、绝不覆盖),用量数据库不参与复制。dev 默认使用 local 存储,并使用自己的终端服务商标识 gateway-dev / AI Gateway (Dev)。
常用命令:
| 命令 | 说明 |
|---|---|
npm run dev |
仅启动 Vite 前端开发服务器 |
npm run tauri dev |
启动完整桌面应用(开发模式) |
npm run tauri build |
构建桌面应用 |
npm run lint |
ESLint 检查 |
npm test |
前端测试(Vitest) |
npm run check:cli-matrix |
CLI 能力矩阵校验 |
后端测试:cargo test --manifest-path src-tauri/Cargo.toml。
版本号在 package.json、src-tauri/tauri.conf.json、src-tauri/Cargo.toml 三处保持一致。
如果 macOS 提示「OneSpace 已损坏」,通常是 Gatekeeper 拦截导致:
sudo xattr -cr /Applications/OneSpace.app