Full markdown reading view

大多数开发者用了 10 年 git,从没用过 worktree。

查看来源 /mnt/ramdisk/test/@chenchengpro_status_2032411474703053012.clean.md

大多数开发者用了 10 年 git,从没用过 worktree。

因为以前根本没必要——同时开 5 个分支?谁会这么干?

AI 编程代理出现之后,这一切变了。

───

现在我同时跑 5-10
来源: https://x.com/chenchengpro/status/2032411474703053012
缓存文件: /mnt/ramdisk/test/@chenchengpro_status_2032411474703053012.session.json
抓取时间: 2026-03-13T12:12:37.413Z

正文

作者: @chenchengpro (陈成)
时间: Fri Mar 13 11:00:30 +0000 2026
链接: https://x.com/chenchengpro/status/2032411474703053012

大多数开发者用了 10 年 git,从没用过 worktree。

因为以前根本没必要——同时开 5 个分支?谁会这么干?

AI 编程代理出现之后,这一切变了。

───

现在我同时跑 5-10 个 Claude Code / Codex session,每个代理处理一个任务。但问题来了:每个代理都需要独立的工作目录,不能互相踩文件。

解法:git worktree + pnpm 全局虚拟存储。

一个 bare 仓库作为中心,每个代理一个 worktree:

git clone --bare https://t.co/LjNchNLUGW你的/仓库.git repo
cd repo
git worktree add ./main main
git worktree add ./feat-a feat/task-a ← Agent A
git worktree add ./fix-b fix/task-b ← Agent B

git 对象只有一份,分支却全部同时 checkout。

───

但 node_modules 怎么办?每个 worktree 都要装一遍,几百 MB 乘以 10 个代理?

pnpm 的 enableGlobalVirtualStore 解决了这个:

pnpm-workspace.yaml

enableGlobalVirtualStore: true

开启之后,每个 worktree 的 node_modules 里只有符号链接,指向磁盘上同一份内容寻址存储。

第一次 pnpm install 下载包,后面每个新 worktree 的安装几乎是瞬时的。

10 个代理,磁盘开销接近于 1 个。

───

pnpm 自己的仓库就是这套配置,还封装了辅助命令:

pnpm worktree:new feat/my-feature # 新建 worktree
pnpm worktree:new 10834 # 直接拉 PR,支持 fork

分支名的斜杠自动转成目录名,.claude 配置全局共享,省去重复设置。

───

AI 代理时代的并行开发工作流,不是多开几个终端那么简单。

每个代理需要真正的隔离:独立文件、独立分支、独立依赖树。

git worktree + pnpm virtualstore,是目前最轻量的答案。

───

如果觉得有用,可以直接去看 pnpm 11.x 的文档:https://t.co/gDAedQE8Pq

评论 (6)

评论 点赞 2469

作者: @HiTw93 (Tw93)
时间: Thu Mar 12 13:48:02 +0000 2026
链接: https://x.com/HiTw93/status/2032091246588518683

https://t.co/RTkJ3NQKeS

评论 点赞 252

作者: @GoJun315 (高军)
时间: Fri Mar 13 09:00:02 +0000 2026
链接: https://x.com/GoJun315/status/2032381157271343546

首个为 AI 和自动化而设计的的无头浏览器 Lightpanda,刚开源就暴涨 14000+ GitHub Star!

不基于 Chromium,完全从零开始构建,运行速度比 Chrome 快 11 倍,内存占用少了 9 倍。

GitHub:https://t.co/ss7I8y4mYN

如果有大规模爬取、构建 AI Agent,以及自动化操作 Web 等需求的朋友,可以看下这个项目。

媒体链接:

  1. https://pbs.twimg.com/media/HDRtYTlbsAIUFgM.png

评论 点赞 190

作者: @jakevin7 (卡比卡比)
时间: Fri Mar 13 05:39:50 +0000 2026
链接: https://x.com/jakevin7/status/2032330774196981833

这几天把 xiaohongshu-cli 连续打磨了一轮,做了几件我自己很满意的事:

  1. 放弃了没必要的 server 方案,回到纯 CLI,但把真正有价值的状态能力保住了:
  • xsec_token + xsec_source 成对缓存
  • search 更像浏览器真实请求链
  • search_id / note context 复用
  • read / comments / reread 的连续链路更稳
  1. 补了一整套真实只读 smoke tests,不只是单测
    直接验证:
    search -> read -> comments -> feed -> reread
    这类连续场景在真实登录态下能不能跑通

  2. 做了短索引交互
    现在不光能:

  • xhs read 1
  • xhs comments 1

还支持:

  • xhs like 1
  • xhs favorite 1
  • xhs unfavorite 1
  • xhs comment 1 -c “…”
  • xhs reply 1 --comment-id … -c “…”

而且 search / feed / hot / user-posts / favorites / my-notes 都会刷新索引。

顺手还吸收并重做了社区 PR 的产品思路,把实现按当前主线重构了一遍,避免把新的 anti-blocking 逻辑回退掉。

最新版本:v0.6.3
https://t.co/mi1L5h6GNU

评论 点赞 97

作者: @elliotchen100 (艾略特)
时间: Fri Mar 13 00:00:35 +0000 2026
链接: https://x.com/elliotchen100/status/2032245398937747944

终于有敢正面挑战 Electron 地位的新框架了吗?挺有意思,「老登」确实在位太久了。

更轻、更快、TS-first,而且基于系统 WebView 的 Electron 替代品,本质上是用一部分成熟度和一致性,去换更小体积、更好性能和更顺手的工程体验。

如果你更看重:成熟生态、对 Chromium 特性完全可控、以及各种唾手可得的 Electron 插件,那老老实实用 Electron 还是更合适。

如果你优先要的是:更小体积、更快启动、TS-first 开发体验加内建更新流水线,而且不介意依赖系统 WebView,那 Electrobun 会更像一个「现代化的 Electron 替代品」。

Electron:Node.js + 打包的 Chromium(自带一整套浏览器引擎)。

Electrobun:主进程用 bun 跑 TypeScript,UI 用系统自带 WebView(macOS WebKit、Linux WebKitGTK 等),原生层通过 Zig/C++ 实现绑定。

https://t.co/u86slGy2Ms

媒体链接:

  1. https://pbs.twimg.com/media/HDP6xgEaUAAZrxp.jpg

评论 点赞 5

作者: @fineandthx (荧光蛙(GlowFrog))
时间: Fri Mar 13 12:00:38 +0000 2026
链接: https://x.com/fineandthx/status/2032426606145511842

@chenchengpro worktree 真是被低估了 多开几个 agent 不隔离目录很快就互相踩文件
pnpm 这招也很实用 10 个分支装一次依赖就够了

评论 点赞 6

作者: @zangjiaao (zangjiaao)
时间: Fri Mar 13 12:03:48 +0000 2026
链接: https://x.com/zangjiaao/status/2032427403356848330

@chenchengpro 边界要确定好,要不一会冲突要处理

Capture Diagnostics

{
  "mode": "thread",
  "started_at": "2026-03-13T12:11:41.354Z",
  "ended_at": "2026-03-13T12:12:37.411Z",
  "rounds_executed": 20,
  "expand_clicks": 0,
  "last_visible_expand_buttons": 0,
  "termination_reason": "stable_idle",
  "incomplete": false,
  "likely_incomplete": false,
  "error_code": null,
  "resumed_from_cache": false,
  "imported_tweets": 0,
  "imported_users": 0,
  "cache_path": "/mnt/ramdisk/test/@chenchengpro_status_2032411474703053012.session.json",
  "cache_age_ms": null,
  "cache_prior_likely_incomplete": false,
  "cache_expired": false,
  "newly_captured_tweets": 7,
  "last_expand_button_texts": [],
  "clicked_expand_button_texts": []
}