px0 (网站)

TLDR AI 工具

摘要

px0 是一个快速、轻量级、只读的 IDE,专为 AI 代理时代设计,提供代码的即时验证,使用最少资源,如亚毫秒级启动和低内存使用。

px0 是一个只读的 IDE,能将浏览器转变为即时验证控制台,用于验证代理刚编写的任何代码。
查看原文
查看缓存全文

缓存时间: 2026/09/14 14:21

# px0:快速、轻量、只读的 IDE 来源:https://px0.ai/ **px0** v0.1.2 为 AI 代理时代设计的只读 IDE 单个静态 Go 二进制文件 让代理编写代码,您来验证。 ## 当您只想要—— 速度时,px0 就是为 AI 代理时代打造的只读 IDE。它将您的浏览器转变为即时验证控制台,用于查看代理刚刚编写的任何代码:支持符号级导航、完整 LSP 智能感知和深度搜索。单一二进制文件,零配置启动。 它在**不到 1 毫秒**内启动,空闲内存占用约 **20 MB**,并在 **6 毫秒**内模糊查找遍历 Linux 内核的 **95,710 个文件**。 | 冷启动 | <1 毫秒 | |-------------------|----------------| | 常驻内存 | 20 MB | | VS Code 相同工作区 | ~1,440 MB | | 模糊查找 | 6.0 毫秒 | | 测试环境 | Linux 内核,95,710 个文件 | | 支持语言 | ~280 种 | | 原生分词 | 由 Chroma 完成 | | 主题数量 | 14 个(每个一个 CSS 文件) | | 运行时依赖 | 0 个(无 Electron、Node、CGO) | ``` ~/src/px0 · fuzzy.go 127.0.0.1:7777 50 // Collect from right‑to‑left; flip in place. 51 for i, j := 0, len(pos)-1; i < j; i, j = i+1, j-1 { 60 score -= min(i-prev, 12) // gap penalty, bounded 65 if i == 0 || isBoundary(p[i-1]) { 67 score += 16 // start of a path or word segment 70 if p[i] == q[k] { 72 score += 4 // exact case 77 score -= strings.Count(p, "/") * 2 79 score += 40 // whole query appears verbatim in the basename 80 if idx == 0 { 81 score += 20 ``` 14 个主题 ## 经测量,而非声称。 这里的每个数字都来自对七个真实代码仓库浅克隆执行的 `./benchmark.sh`。Linux 环境,关闭语言服务器,取五次请求中的最快值。您可以在自己机器上运行并将表格粘贴到任何地方。 **常驻内存 · 相同工作区 · 线性尺度** 比 VS Code 轻 **~90 倍** VS Code 15+ 进程,~1,440 MB 内存 | 进程 | 内存 | |--------------------|-----------| | 1. 扩展宿主 | ~500 MB | | 2. 语言服务器 | ~350 MB | | 3. 服务器主体 | ~260 MB | | 4. IPC 代理与工具 | ~190 MB | | 5. PTY 宿主与终端 | ~71 MB | | 6. 文件监视器 | ~68 MB | **真实代码库 · px0 独立运行** 按索引文件数排序 | 项目 | 语言 | 代码大小 | 文件数 | 全扫描 | 模糊查找 | 完整扫描 | 大文件打开 | 重开文件 | RSS 峰值 | |--------------|------------|----------|--------|--------|----------|----------|------------|----------|----------| | flask | Python | 3 MB | 235 | 1 ms | 0.8 ms | 2.3 ms | n/a | n/a | 16 MB | | redis | C | 26 MB | 1,855 | 13 ms | 1.0 ms | 18.2 ms | 80.8 ms | 1.2 ms | 17 MB | | django | Python | 74 MB | 7,014 | 39 ms | 1.3 ms | 26.8 ms | 166.8 ms | 1.0 ms | 20 MB | | react | JavaScript | 63 MB | 7,178 | 52 ms | 2.7 ms | 32.2 ms | 57.7 ms | 0.7 ms | 21 MB | | kubernetes | Go | 370 MB | 25,926 | 150 ms | 13.5 ms | 84.6 ms | 199.0 ms | 0.9 ms | 30 MB | | typescript | TypeScript | 414 MB | 66,533 | 566 ms | 6.2 ms | 150.3 ms | 40.9 ms | 6.5 ms | 69 MB | | linux | C | 1,809 MB | 95,710 | 370 ms | 6.0 ms | 451.8 ms | 26.7 ms | 0.6 ms | 55 MB | *注:全扫描搜索一个匹配不到的字符串,因此所有索引字节都被读取,是最坏情况。* *大文件打开*指冷启动时打开最大的源文件。文件长度无关紧要:只有可见窗口会被词法分析。 **Linux 内核 · 会话期间 RSS** 空闲后内存降低 **-37 MB** px0 在 15 秒无操作后回收内存,因此一个打开的会话会回落到应有的空闲水平。 **语言服务器路径 · gopls 服务器就绪** **374 毫秒**(仅支付一次) | 功能 | 耗时 | |------------------|---------| | 文档大纲 | 1.4 ms | | 跳转到定义 | 1.5 ms | | 查找所有引用 | 3.0 ms | | 悬停显示 | 5.1 ms | | px0 内存占用 | 18 MB | | gopls 内存占用 | 122 MB | 服务器是独立进程,首次请求时启动对应语言的服务器,退出时关闭。 若无服务器,px0 会立即回退到正则表达式大纲。 ## 代理编写代码,您来验证。 代码现在从终端抵达,而非键盘。留给您的是审查、审计和导航,而这项工作需要一个做到极致的地方:一个零延迟、无干扰的场所,用于阅读、探索和验证。 不是一个启动需要数秒、空闲需要数千兆内存的编辑器。 1. **01 终端驱动生成** 代理、工具和编排器编写代码、运行测试并推进工作流。 ``` agent 14 files changed ✓ 212 tests passed ``` 2. **02 您驱动验证** 跟踪符号引用、检查 git 差异、预览渲染后的文档并检查架构。 ``` Ctrl D diff vs HEAD Alt M preview F12 definition Shift F12 refs ``` 3. **03 旧式 IDE 过于臃肿** 为了读取代理输出而启动一个带有扩展宿主和超过 1GB 堆的 Electron 套件。 ``` 1,440 MB rss, 15+ processes 4-10 s to index the workspace ``` **只读是核心特性** - + 模糊文件搜索、符号、全树正则表达式扫描 - + git 感知、变更树以及与 HEAD 的分割/统一差异对比 - + 渲染的 Markdown 预览与实时源码切换 - + 跳转到定义、悬停、查找引用(使用 LSP) - + 跳转到服务器指向的 stdlib 和模块缓存源码 - + 14 个主题、自动换行、前进/后退历史 - - 无写入端点:HTTP API 仅用于读取、搜索和请求语言服务器 - - 无扩展宿主、无插件市场、无 Electron - - 无遥测。唯一的出站调用是每日向 GitHub 检查发布版本 - - 默认绑定 127.0.0.1,除非您通过 `-host` 指定其他地址 **适用场景** - **验证代理输出**:打开工作树,跟踪引用,关闭标签页 - **审计代码库**:在笔记本上阅读包含 25,000 个文件的 monorepo 而不会风扇狂转 - **远程机器**:在服务器上运行,通过一个端口隧道,在任何浏览器中阅读 - **在您编辑器旁**:保留 vim 或 VS Code 用于您仍然手动输入的编辑 **传统 IDE 与 px0 并排对比** | 维度 | 传统 IDE | px0 | |------------------|------------------------|-------------------------| | 用途 | 逐字符输入代码、托管插件 | 阅读、探索、对比和验证代码 | | 内存占用 (rss) | ~1,440 MB | ~20 MB(轻 70 倍) | | 启动 CPU 峰值 | 35% - 50% | < 1% | | 冷启动 | 数秒 | 亚毫秒级 | | 进程树 | 15+ 个 Node.js / Electron 进程 | 1 个静态 Go 二进制文件 | | 工作区索引 | 多秒后台处理 | Redis 13 ms,Linux 内核 370 ms | | 配置 | 配置文件、插件、Node、npm | 零配置、零运行时依赖 | ## 一切为阅读,仅此而已。 您每天会用到上百次的导航,以毫秒级完成,UI 仅渲染您可见的行。 **f.01 导航** ### 一切皆可模糊查找 文件、符号和全树正则表达式扫描,通过三个快捷键触发。排名偏好文件名、单词边界和 camelCase 驼峰,就像 fzf 的感觉。 - **Ctrl P** *跳转到文件* **1.3 毫秒** - **Ctrl Shift O** *符号* - **Ctrl Shift F** *正则表达式扫描* **26.8 毫秒** (耗时基于 django,7,014 个文件) **f.02 git 与差异对比** ### 状态徽章与可视化差异 工作树状态徽章(M, A, D, U)在文件树中显示,脏祖先路径,以及仅更改过滤器。使用 **Ctrl+D** 切换并排或统一视图,对比 HEAD。 ``` web/srcA markdown.js M fuzzy.go fuzzy.go (diff vs HEAD) Ctrl+D 64- score -= len(p) / 4 64+ score -= len(p) / 8 ``` **f.03 markdown** ### 渲染的 GFM 预览 通过 goldmark 渲染完整的 GitHub Flavored Markdown 和脚注,代码块由 Chroma 高亮。使用 **Alt+M** 切换预览和源码,同时锁定滚动位置。 预览/源码切换 Alt M ``` # Architecture Deep Dive Windowed tokenizing with Chroma... `func FuzzyFind()` ``` **f.04 渲染** ### 虚拟行 打开一个 400,000 行的文件,开销与 10 行文件相同。只有可见窗口加 24 行超扫描行被挂载;滚动时通过单个变换回收行。 - **400,000** 文件行数 - **~60** DOM 行 - **0.015%** 挂载比例 **f.05 高亮** ### ~280 种语言 通过 Chroma 原生分词。服务器对一个 1,000 行窗口加 400 行上下文进行词法分析,从不分析整个文件,并在 512 MB LRU 预算下缓存渲染后的 HTML。 go rust typescript python c c++ zig lua ruby java kotlin swift haskell ocaml elixir sql yaml toml nix bash protobuf hcl + ~258 种更多 **f.06 LSP · 可选** ### 想要时的语义感知 零配置检测您 `$PATH` 中的服务器。首次请求时懒启动,退出时停止。缺失或崩溃?立即回退到正则表达式大纲。 - gopls - rust-analyzer - typescript-language-server - pyright · ruff - clangd - zls - lua-language-server - solargraph **f.07 主题** ### 14 个内置主题 默认 Tokyo Night,另有 Paper、Catppuccin、Dracula、GitHub Dark、Gruvbox、Monokai、Nord、One Dark、Rose Pine 和 Solarized。一个主题就是一个包含 token 样式的 CSS 文件。 **f.08 分发** ### 一个静态二进制文件 HTML、CSS 和 JS 通过 `go:embed` 嵌入。无 Electron、无 Node、无 CGO、无系统库。复制到机器上即可运行。 ``` px0 static, go:embed ├─ index · search · highlight · lsp ├─ web/ html css js, ~74 KB └─ themes/ 14 × css ``` **f.09 内存** ### 归还内存 15 秒无请求后,px0 回收内存。一个下午打开的标签页,其成本应与空闲时一样。 - 峰值 **94 MB**(Linux 内核,五次完整扫描后) - 30 秒空闲后 **57 MB** ## 工作树在视图中,对比 HEAD。 当 AI 代理和编排器编写代码时,您的工作流从输入转向验证。px0 跟踪 git 状态,将变更向上冒泡到目录,并在毫秒内渲染并排或统一差异视图。 **git 感知 · 树状态与差异查看器** HEAD: 干净 · **4 个未提交更改** ``` ▸ .github ▸ docs ▾ internal fuzzy.go M git.go A markdown.go A search.go ▾ web diff.js A main.js go.mod README.md ``` **M** 修改 **A** 添加 **D** 删除 **U** 未跟踪 **R** 重命名 **HEAD (已提交) r.64** ``` 61 if dist > 1 { 62 // penalize distance 63 score -= len(p) / 4 64 } 65 return score ``` **工作树 (已修改) M** ``` 61 if dist > 1 { 62 // penalize distance 63 score -= len(p) / 8 64 } 65 return score ``` 在 Markdown 文件内按 **Alt M** 可切换预览与源码。**零 git 子进程**。 **01 脏标记冒泡** ### 祖先传播 #### 折叠文件夹永不隐藏编辑 当深层嵌套的文件更改时,路径中的每个父目录都会收到一个脏标记点。您永远不会错过隐藏在折叠文件夹内的更改。 **02 Ctrl+D** ### 内存中的 Myers 差异 #### 与 HEAD 的并排或统一视图 按 **Ctrl+D** 检查任何文件与 HEAD 的差异。添加和删除行在保留语法高亮和行号槽的情况下渲染。 **03 过滤快捷键** ### 仅更改过滤器 #### 从 50,000 个文件修剪到影响范围 一键过滤整个树,仅显示受影响的路径。审计 AI 代理重构或本地测试运行,无需滚动浏览干净的目录。 ## 一个进程,无运行时。 一个拥有索引、搜索、高亮和语言服务器的 Go 服务器,通过 JSON 与零依赖的 ES 模块前端通信。速度源于一系列微小而稳健的决策。 **浏览器** - 原生 JS - 虚拟行 - *~60 节点* - 模糊查找与树缓存 - 离屏字体测量 - rAF 节流绘制 **px0 · 单个 Go 进程 ~20 MB** - **路由器** HTTP · JSON · 连接池 gzip - **索引与 git** 树、.gitignore、状态与差异 - **搜索** 并行工作者池 - **高亮与 md** Chroma LRU + goldmark GFM - **LSP 管理器** 懒启动、正则回退 - **内存清理器** 15 秒空闲后回收内存 **主机** 您的 - 源码树 *+ .gitignore* - gopls · clangd · ... *首次使用时* - stdlib & 模块缓存 *允许列表内* - 索引遍历信号量 NumCPU × 4 - 忽略规则 段 · 后缀 · 路径,正则最后 - 目录符号链接 跳过,无环 - 启动 先监听,在后台索引 **高亮** - hlChunk 1,000 行 - hlContext 400 行 - hlWindowBytes 512 KB - bgLimit 2 MB 精确处理 - cacheBudget 512 MB LRU **搜索** - 快速拒绝 整个文件的 bytes.Contains - 缓冲区 每个 worker 重用 - 大小写折叠 原地 ASCII 小写 - sipLead 32 个 rune **前端 活动行** ~60 - OVERSCAN 24 行 - 绘制 requestAnimationFrame - 测量 离屏,亚像素模糊 **fuzzyScore() 权重 · O(n) 两次扫描** - 查询完整出现在文件名中 +40 - 文件名以查询开头 +20 - 路径或单词的起始 +16 - camelCase 驼峰 +14 - 在文件名内 +14 - 连续匹配 +12 - 大小写完全匹配 +4 - 命中之间的间隙 -min(gap, 12) - 路径长度 -len / 8 - 深度 -2 每个 / *第一次扫描证明每个查询字符都存在。第二次扫描从最后一个命中点反向回溯,尽可能拉紧匹配。感觉像动态规划,但使用线性扫描。* [ARCHITECTURE.md](https://github.com/px0-ai/px0/blob/master/docs/INTERNALS/architecture.md) ## 手停留在键盘上。 您在编辑器中已知的快捷键,外加一个调色板,其第一个字符即可切换模式。在 px0 中按 **?** 查看完整快捷键表。 **快捷键** 12 个绑定 - **Ctrl K** 通用调色板,快速打开 - **Ctrl P** 跳转到文件 - **Ctrl Shift P** 命令面板 - **Ctrl Shift O** 跳转到文件中的符号 - **Ctrl Shift F** 搜索整个工作区 - **Ctrl F** 在活动文件中查找 - **Ctrl D** 切换 git 差异对比 HEAD - **Alt M** 切换 Markdown 预览/源码 - **F12 / Ctrl 点击** 跳转到定义 - **Shift F12** 查找所有引用 - **悬停** 类型签名与文档 - **Alt ← / Alt →** 后退、前进浏览历史 **调色板前缀 (Ctrl K)** - ∅ 文件 `lspsrv` → lspservers.go - > 命令 `>diff` → 切换 Git Diff - @ 符号 `@score` → fuzzyScore - : 行 `:120` → 跳转到第 120 行 ## 指向一个目录,那就是设置。 `px0` 启动本地查看器,打印 URL,并在后台构建索引的同时打开您的浏览器。多个实例会依次使用下一个空闲端口。 ``` ~ · zsh $ px0 ~/src/linux px0 0.1.2 workspace: /home/you/src/linux url: http://127.0.0.1:7777 ctrl-c to stop ✓ indexed 95710 files 370ms · language servers: clangd (started on first use) $ px0 -version px0 0.1.2 (linux/amd64) $ px0 -no-open -port 0 ~/src/api | cat ... [OK] indexed 1855 files 13ms ``` **标志** 用法:px0 [标志] [目录] | 标志 | 默认 | 描述 | |----------------|----------|----------------------------------------------------------| | -port N | 7777 | 监听端口 (0 选择临时空闲端口) | | -host H | 127.0.0.1 | 绑定的本地地址 | | -no-open | false | 不启动浏览器 | | -no-lsp | false | 跳过语言服务器,使用正则表达式大纲 | | -no-git | false | 禁用 git 感知(树状态徽章和差异视图) | | -no-color | false | 剥离 ANSI 转义序列 | | -quiet | false | 抑制叙述性输出,错误仍输出到 stderr | | -update | false | 检查并安装最新发布版 | | -version, -v | false | 打印版本和架构,然后退出 | ## 一个二进制文件,选择一种方式开始。 安装,指向仓库,即可阅读。语言服务器可选,只要存在于您的 `$PATH` 中就会被使用。 **a · 快速安装** macOS · Linux · BSD 安装或升级到最新发布版。 - **VERSION** 固定版本,默认 `latest` - **INSTALL_DIR** `/usr/local/bin` 或 `~/.local/bin` **b · 预构建二进制文件** 15 个目标 - darwin: amd64 arm64 - linux: 386 amd64 arm arm64 riscv64 - freebsd: amd64 arm64 - openbsd: amd64 arm64 - netbsd: amd64 - windows: 386 amd64 arm64 ``` $ sudo install px0-0.1.2-darwin-arm64 /usr/local/bin/px0 ``` GitHub releases → (https://github.com/px0-ai/px0/releases) **c · 从源码构建** go 1.24+ ``` git clone https://github.com/px0-ai/px0.git cd px0 make build sudo install px0 /usr/local/bin/ ``` 无 npm,无 node,无 CGO,无系统库。`make dist` 交叉编译所有 15 个目标。 **可选 · 语言服务器(用于跳转到定义、悬停、查找引用)** 点击命令复制安装命令 | 语言 | 服务器 | 安装命令 | |------------------|----------------------|---------------------------------------| | Go | gopls | `go install golang.org/x/tools/gopls@latest` | | Rust | rust-analyzer | `rustup component add rust-analyzer` | | TypeScript / JavaScript | typescript-language-server | `npm i -g typescript-language-server` | | Python | pyright 或 ruff | `pipx install pyright` / `pipx install ruff` | | C / C++ | clangd | 通常已随系统包管理器安装 | | Zig | zls | `zig build` 或 包管理器 | | Lua | lua-language-server | 包管理器或从源码构建 | | Ruby | solargraph | `gem install solargraph` | `$px0` 您的代码库,在阅读此行所需的时间内打开。 在 GitHub 上标星 (https://github.com/px0-ai/px0)

相似文章

Pixcode

Product Hunt

Pixcode 是一款自托管的控制台,用于管理 AI 编程智能体。

免费、开源、30万行代码 - Agentic IDE

Reddit r/openclaw

intentic 是一个免费、开源的 'Agentic IDE',可让您在自有硬件上的隔离沙箱中运行 AI 编程代理(Claude Code、Codex、Grok、Kimi Code、Gemini),并提供基于浏览器的工作区、计划与审查工作流,以及 MIT 许可的代码。

Zero

Product Hunt

Vercel 发布了 Zero,一种专为构建 AI 代理设计的新编程语言,旨在提升 AI 应用程序的开发工作流程。