从零构建 AI Agent:Tokimo Agent 深度源码剖析

从零构建 AI Agent:Tokimo Agent 深度源码剖析 本文以 Tokimo 项目的真实 Rust 实现为例,从 HTTP 协议层到 UI 渲染层,逐层拆解一个 production-grade AI Agent 是如何从零构建的。 目录 全景架构 与 LLM 对话:HTTP 请求的真相 流式响应:SSE 解析的字节级细节 ReAct 循环:Agent 的心跳 工具系统:让 LLM 拥有双手 深度思考:Extended Thinking 的三种实现 记忆系统:会话记忆与自动压缩 MCP 协议:可插拔的工具生态 事件协议:从 Rust 到浏览器的全链路 容错设计:重试、...

Tokimo 任务调度系统:从硬编码分发到可插拔事件总线

本文记录 Tokimo(Web Desktop OS)任务调度系统的架构设计——从硬编码 match 分发到 JobHandler 注册表 + BusProxyHandler 代理的可插拔架构,涵盖 job 生命周期管理、sidecar 委托执行、协作取消机制及实时事件推送。 背景:为什么需要任务调度系统 Tokimo 作为桌面操作系统,需要处理大量后台耗时操作:媒体文件扫描、AI 推理(OCR / CLIP / 人脸识别)、元数据刮削、在线媒体下载、S3 上传等。这些操作的共同特征: 耗时长:单次扫描可能处理数万张照片 需要进度反馈:用户需要实时看到处理状态 可重试:网络抖动或...

Tokimo 存储系统重构:从分布式自治到集中式管控

本文记录 Tokimo(Web Desktop OS)blob 存储系统的完整重构过程——从各 app 独立管理存储到主进程统一管控、app 通过 RPC 读写的架构演进。涵盖重构动因、两阶段实施路径及最终架构设计。 背景与问题 Tokimo 采用 pnpm monorepo + Rust sidecar 架构,系统中包含多个独立 app(音乐、视频、照片等),每个 app 均需持久化 blob 数据(专辑封面、艺术家头像、视频海报、缩略图等)。 重构前的存储架构 ┌──────────────────────────────────────────────────────────...

把一个 OS 子系统拆成独立进程:video app 的解耦实录

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 通信架构 ...

一次 SMB 视频点击引发的 SIGSEGV:当 ffmpeg 和 libvips 各带一份 glib

一次 SMB 视频点击引发的 SIGSEGV:当 ffmpeg 和 libvips 各带一份 glib 用户:"我点了 SMB 上的电影,server 直接崩了。" 我:"…让我看看。" 目录 现象:一点视频,服务器整个退出 第一直觉:又是 LD_LIBRARY_PATH 顺序问题 真相:两个 bundle,两份 glib 为什么"一份 glib"是天大的事 短期回避 vs. 真正修复 tokimo-lib:把 ffmpeg 和 libvips 关进同一个 Docker CI 里如何强制"只有一份 glib&q...

浏览器里的 AI agent 工具调用:从前端按钮到 microVM PTY 的完整链路

浏览器里的 AI agent 工具调用:从前端按钮到 microVM PTY 的完整链路 目录 为什么一次「看目录」不只是一次命令执行 链路全景:从 React 到 guest-agent 前端:按钮、SSE、WS 与 typed client 的边界 后端:Axum 把聊天流和工具执行拆开 sandbox:为什么是 vsock,不是 TCP PTY:为什么不是直接 exec 错误与回流:stdout、exit、error 都是协议 业界正在做什么 一个可复用的工程框架 为什么一次「看目录」不只是一次命令执行 用户在浏览器 chat 输入「帮我看一下当前目录」,表面上只是 pwd ...

最新文章

最近回复