- 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
用 Opus 半小时把博客从 Typecho 搬到 GitHub Pages
旧博客一直跑在 Typecho 上:PHP + MySQL + Nginx + 主题 + 评论插件。可以工作,但每次想动它都要先盘一遍 PHP 版本、SSL 证书、备份是否完整、主题是否还兼容。维护成本远高于写作成本。
今晚用 Claude Opus 4.7 把整套迁到 GitHub Pages,耗时约半小时。
新架构
前端:React + Vite + TypeScript,构建产物推 gh-pages
内容存储:当前仓库的 GitHub Issues。一篇文章 = 一个 Issue,标签作分类与 tag,...
- 2026/05/11
- |
- 未分类
- |
- 0 Replies
manifest 驱动的桌面应用:在浏览器里「装」一个跨 4 种窗口类型的应用是什么体验
浏览器给了我们 DOM,但没有给我们桌面;React 给了我们组件,但没有给我们应用生命周期。
目录
为什么这件事难:窗口不是路由,应用也不是组件
四种窗口类型:page / system / app / popup
manifest 如何把 app 注册进桌面
文件窗口和 app 窗口如何共存
跨窗口通信:bridge 不是全局事件总线
业界正在做什么
从 0 加一个 Hello World app
framework-level 的一句话
为什么这件事难:窗口不是路由,应用也不是组件
...
- 2019/03/21
- |
- 技术随笔
- |
- 0 Replies
前端开发中经常会遇到一个麻烦的问题:在通过fixed或者absolute定位的弹出层上进行滚动操作的时候,滚动事件会穿透到底部导致body跟着滚动,及其影响交互体验。常规做法是在弹出层时候禁止body的滚动,将其设置为overflow: hidden,但是会导致滚动高度丢失从而造成视觉上一次弹动,所以我决定从弹出层本身考虑这个问题。
<body>
Body content.
<div id="popup" style="position: fixed; top: 0; right: 0; left: 0; bottom: 0">
Popup lay...
- 2017/09/08
- |
- 技术随笔
- |
- 0 Replies
<div class="fill"></div>
.fill {
overflow: hidden;
background-size: cover;
background-position: center;
background-image: url('path/to/image.jpg');
}
- 1
- 2
- »