- 2026/06/02
- |
- 未分类
- |
- 0 Replies
本文记录 Tokimo(Web Desktop OS)blob 存储系统的完整重构过程——从各 app 独立管理存储到主进程统一管控、app 通过 RPC 读写的架构演进。涵盖重构动因、两阶段实施路径及最终架构设计。
背景与问题
Tokimo 采用 pnpm monorepo + Rust sidecar 架构,系统中包含多个独立 app(音乐、视频、照片等),每个 app 均需持久化 blob 数据(专辑封面、艺术家头像、视频海报、缩略图等)。
重构前的存储架构
┌──────────────────────────────────────────────────────────...
- 2026/05/21
- |
- 未分类
- |
- 0 Replies
TL;DR
把一个浏览器桌面 OS 里最复杂的子系统从主进程里拆出来跑成独立进程,听起来像"挪个目录",实际要重新回答四个问题:谁负责接 HTTP,谁负责排任务,DB 怎么分家,前端怎么跨 bundle 借能力。这篇讲我们怎么回答这四个问题,以及拆离过程踩到的三个真问题。
目录
TL;DR
目录
Part 1 · video 从内置域模型迁移为独立 app
§1.1 项目定位与职责边界变化
§1.2 video 的职责归属冲突
§1.3 video 是最关键的一次抽离
Part 2 · 设计约束
Part 3 · 四条核心架构边界
§3.1 Bus 通信架构
...
- 2026/05/13
- |
- 未分类
- |
- 0 Replies
浏览器里的 AI agent 工具调用:从前端按钮到 microVM PTY 的完整链路
目录
为什么一次「看目录」不只是一次命令执行
链路全景:从 React 到 guest-agent
前端:按钮、SSE、WS 与 typed client 的边界
后端:Axum 把聊天流和工具执行拆开
sandbox:为什么是 vsock,不是 TCP
PTY:为什么不是直接 exec
错误与回流:stdout、exit、error 都是协议
业界正在做什么
一个可复用的工程框架
为什么一次「看目录」不只是一次命令执行
用户在浏览器 chat 输入「帮我看一下当前目录」,表面上只是 pwd ...
- 2026/05/12
- |
- 未分类
- |
- 0 Replies
为什么我们给 AI 沙箱手写了一套跨平台用户态 TCP/IP 栈
目录
问题为什么难
为什么不是容器 / userns
业界正在做什么
网络方案怎么选
现在的架构
性能目标不是越高越好
我们诚实承认的取舍
AI sandbox 的网络问题,表面上只是"让 guest 能访问外网"。但我担心的不是能不能 ping 通,而是:未知代码会在高频网络路径里做什么,以及我们能不能在事后解释它为什么能做。
AI agent 跑的是用户给的仓库、脚本、二进制和临时命令。它可能 curl | sh,可能跑包管理器,也可能启动一个开发服务器。网络是高频路径:DNS、TLS、包管...
- 2026/05/11
- |
- 未分类
- |
- 0 Replies
在浏览器里给 AI 跑命令:Tokimo sandbox 三平台 backend 的现状切片
目录
问题为什么难
一张总图:三平台不是三套产品
Linux / Auto backend:Cloud Hypervisor 优先,bubblewrap 自动兜底
macOS / Virtualization.framework:原生 VM,协议尽量不特殊化
Windows / Hyper-V:service、镜像打包和诊断链路正在持续推进
共同基础:tun-pump、vsock 抽象与 guest-agent 协议
为什么不直接 Docker / WSL2
业界做法
我们诚实承认的缺口
...
- 2026/05/11
- |
- 未分类
- |
- 0 Replies
manifest 驱动的桌面应用:在浏览器里「装」一个跨 4 种窗口类型的应用是什么体验
浏览器给了我们 DOM,但没有给我们桌面;React 给了我们组件,但没有给我们应用生命周期。
目录
为什么这件事难:窗口不是路由,应用也不是组件
四种窗口类型:page / system / app / popup
manifest 如何把 app 注册进桌面
文件窗口和 app 窗口如何共存
跨窗口通信:bridge 不是全局事件总线
业界正在做什么
从 0 加一个 Hello World app
framework-level 的一句话
为什么这件事难:窗口不是路由,应用也不是组件
...