px0 (网站)
摘要
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)
相似文章
@jayesssssh: https://px0.ai 真的很快。我打算使用它的方式很简单,快速检查文件而无需打开实际的IDE…
px0 是一款快速、轻量级的只读IDE,专为在AI智能体时代验证代码而设计,与传统IDE相比,提供最少的资源使用和高性能。
Pixcode
Pixcode 是一款自托管的控制台,用于管理 AI 编程智能体。
免费、开源、30万行代码 - Agentic IDE
intentic 是一个免费、开源的 'Agentic IDE',可让您在自有硬件上的隔离沙箱中运行 AI 编程代理(Claude Code、Codex、Grok、Kimi Code、Gemini),并提供基于浏览器的工作区、计划与审查工作流,以及 MIT 许可的代码。
Zero
Vercel 发布了 Zero,一种专为构建 AI 代理设计的新编程语言,旨在提升 AI 应用程序的开发工作流程。
@ArizePhoenix: PXI(Phoenix Intelligence)现可在终端中运行!您现在无需离开终端即可使用PXI。这与…
PXI(Phoenix Intelligence),这款AI代理此前仅可在浏览器中使用,现可通过CLI包@arizeai/phoenix-cli在终端中作为交互式聊天使用。