内容
<div align="center">
<img src="src/renderer/src/assets/logo.png" alt="瓷器" width="120" />
<h1>瓷器</h1>
<p><strong>以故事的形式审查变更。</strong></p>
<p>适用于编程代理时代的轻量级 macOS 代码查看器和伴侣。</p>
</div>
---
你的编程代理现在正在编写代码。但是,当你需要 *阅读* 结果(浏览差异,跟踪文件间的更改,了解代理实际做了什么)时,你会使用 Cursor、Zed 或 GitHub Desktop。对于不是编辑的任务,这些都是重量级的编辑器,而且它们都不能与你的代理进行交流。
瓷器填补了这一空白。它是一个快速、专注的 **查看器和审查界面** (不是编辑器),旨在与编程代理一起阅读代码和审查更改,并与代理建立双向循环。
## 为什么选择瓷器
- **按流程顺序审查。** 差异不是按字母顺序的文件列表;它是一个变更在整个项目中逐级影响的过程。瓷器按照依赖流程(组件 → Hook → 操作 → 变更 → 模式)对更改的文件进行排序和分组,以便你可以按照故事的顺序,从入口点到数据库,阅读一个功能,而不是在文件树中跳转。
- **与你的代理形成双向循环。** 捆绑的“一键式”Claude Code 插件作为本地 MCP 服务器运行(在你的机器上,无需遥测)。你的审查评论成为其上下文;其工作、解决方案和整个功能清单会流回给你,在同一个功能上,按相同的顺序。
- **为大型 Monorepo 构建。** 在一个约 50 GB 的仓库中保持快速。文件夹可以隐藏,以便仅显示你关心的应用程序,并且可以固定以便快速访问;只有当你查看时,内容才会被索引。其他工具无法让你将 Monorepo 缩小到你正在处理的特定部分。
- **作为伴侣终端,而不是日常驱动。** 真实的嵌入式终端位于审查界面旁边,用于运行你的代理及其任务;会话在标签页关闭后仍然存在,因此后台开发服务器在关闭标签页时仍继续运行。它补充了 Ghostty 或 Warp;它不试图取代它们。
- **优先查看,始终轻量。** 快速的文件查看,带有 Shiki 语法高亮,无 LSP 和扩展。允许快速的单文件编辑(铅笔 → 编辑 → 保存),但无自动完成,无格式保存,无多文件重构。它永远不会成长为 IDE。
## 功能
- **按流程顺序的差异审查**,带有每个仓库的自定义层定义,由 MCP 管理的代理
- **整个功能审查**:将差异扩大到整个功能,按流程顺序(更改 · 上下文 · 已发布文件),由代理通过本地 MCP 通道提供;标记文件已审查
- **人与代理循环**:审查行或文件的评论同步到代理作为上下文,解决方案同步回;每个仓库的 **项目面板**,代理读取和更新
- **Git**:工作树差异(统一或拆分),每个文件的暂存,提交历史,工作树切换,带有可搜索的分支选择器,应用内提交,带有从历史中学习的约定提交芯片
- **嵌入式终端和操作**:真实的 PTY(xterm.js + node-pty),分屏终端,会话在标签页关闭后仍然存在,保存的 **操作**(命名命令,由代理策划,你运行)
- **快速文件查看器**:虚拟化渲染,Shiki 高亮,图像和 Markdown 支持(阅读器 + 源模式),可拖动调整大小的分屏视图
- **Monorepo 导航**:隐藏/显示文件夹,固定路径,按目录延迟加载
- **搜索和查找器**:仓库范围的代码搜索,Cmd+P 模糊文件查找器,Cmd+F 文件内查找,通过 `git grep` 查找引用
- **多窗口**:每个仓库一个窗口
- **液态玻璃 UI**:原生 macOS 透明度,浮动侧边栏,可拖动调整大小的面板
- **自动更新** 签名构建
## 安装
> 需要 macOS(Apple Silicon)。
从 [Releases](https://github.com/fabiofiorita/porcelain/releases) 页面下载最新的 `.dmg` 文件,打开它,然后将 Porcelain 拖到你的应用程序文件夹中。应用程序会自动检查和安装更新。
## 连接你的代理
瓷器通过捆绑的 Claude Code 插件与你的编程代理进行通信:一个 MCP 服务器和技能在本地运行,无需打开端口和遥测。你可以通过 **设置 → 代理** 一键安装,或手动安装:
```bash
claude plugin marketplace add ~/.porcelain/plugin
claude plugin install porcelain@porcelain
```
然后运行 `/reload-plugins`(或重启会话)。Codex 和 Cursor 支持即将到来。
## 开发
瓷器使用 Electron(electron-vite)、React 19、TypeScript(严格)、shadcn/ui 基于 Base UI、Tailwind v4、tRPC 超过 IPC、TanStack Query 和 zustand 构建。状态和 Git 访问通过单一、故意统一的架构运行;参见 [CLAUDE.md](CLAUDE.md) 和 [.agents/skills/](.agents/skills/) 中的技能。
```bash
pnpm install # 安装依赖
pnpm dev # 在开发环境中运行应用程序
```
`pnpm dev` 在一个临时的工作空间仓库和隔离的配置中运行,因此它永远不会触及你的真实仓库。
### 常用脚本
| 命令 | 执行的操作 |
|---|---|
| `pnpm dev` | 在开发环境中运行应用程序 |
| `pnpm lint` | Biome 校验 + 格式检查 |
| `pnpm typecheck` | 类型检查主进程和渲染进程 |
| `pnpm test` | 运行 Vitest 套件 |
| `pnpm build` | 类型检查并构建 |
| `pnpm dist` | 构建签名本地 `.dmg` / `.zip` |
| `pnpm release` | 构建并发布到 GitHub Releases |
提交前的验证环节是 `pnpm lint && pnpm typecheck && pnpm test && pnpm build`。
## 许可证
[MIT](LICENSE) © Fabio Fiorita