Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
247a621
test(sidebar-switch): 阶段 0 — 红测固定四条故障链(排序元数据/导航 latest-wins/open sing…
Jaxton07 Sep 20, 2026
90023e0
fix(sidebar-switch): 阶段 1 — 活跃 meta 时间语义对齐磁盘枚举 + 左栏 merge 保留稳定时间字段
Jaxton07 Sep 20, 2026
d934c05
fix(sidebar-switch): 阶段 2 — 导航 latest-wins 令牌 + open/bundle single-fl…
Jaxton07 Sep 20, 2026
7a1d96b
fix(sidebar-switch): 阶段 3 — backend open 幂等/registry 兜底、GC close 竞态恢复…
Jaxton07 Sep 20, 2026
bf9024f
fix(sidebar-switch): 阶段 3.1 — 权限档位恢复失败时 renderer 回落 default(消除静默权限分叉)
Jaxton07 Sep 20, 2026
b75d433
test(sidebar-switch): 阶段 4 — SessionRow 测试属性 + INDEX/PITFALLS 同步(CDP …
Jaxton07 Sep 20, 2026
57b0c1b
test(singleton-draft): 阶段 0 — 单例 draft / promotion / subagent 导航投影红测
Jaxton07 Sep 20, 2026
f496fa0
test(singleton-draft): 阶段 0 修订 — 清掉旧伪 draft 契约并补齐关键边界
Jaxton07 Sep 20, 2026
2d74ddc
test(singleton-draft): 阶段 0 二次修订 — loadModels 两处模型默认契约校正
Jaxton07 Sep 20, 2026
d5c577d
feat(singleton-draft): 阶段 1 — 单例 draft 状态模型、promotion 与 picker/null 态接线
Jaxton07 Sep 20, 2026
0e2578a
fix(singleton-draft): 阶段 1 复核 — 不变式/快照隔离/single-flight 隔离/同步发送锁
Jaxton07 Sep 20, 2026
a1990ac
fix(singleton-draft): 阶段 1 二次复核 — 两处 cwd 镜像分叉
Jaxton07 Sep 20, 2026
38e2b5d
feat(singleton-draft): 阶段 2 — 只读子会话导航投影 + 显式 activeCwd + 顶栏兜底
Jaxton07 Sep 20, 2026
67bee97
refactor(singleton-draft): 阶段 3 — 清掉旧伪 draft 分支、菜单、GC 字段、i18n 与过时注释
Jaxton07 Sep 20, 2026
2a0e6e5
fix(singleton-draft): 阶段 3 补 — 新会话页 store.cwd 严格镜像 draft.cwd(含 null)
Jaxton07 Sep 20, 2026
dc8d0b7
docs(singleton-draft): 阶段 4 — INDEX/PITFALLS 同步单例 draft 与导航投影
Jaxton07 Sep 20, 2026
744de01
feat(brand): 更新 Percho 图标与 README 展示
Jaxton07 Sep 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 17 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
<p align="center">
<img src="docs/icon.svg" alt="percho logo" width="128">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/img/readme-hero-dark.svg">
<img src="docs/assets/img/readme-hero-light.svg" alt="Percho — geometric construction wordmark and pyramid" width="100%">
</picture>
</p>
<h1 align="center">percho</h1>
<h1 align="center">Percho</h1>
<p align="center">
Highly customizable desktop GUI for the <a href="https://www.npmjs.com/package/@earendil-works/pi-coding-agent">Pi coding agent</a> — the same engine as the Pi CLI, in a clean visual interface. Multi-session chat, visual tool approvals, built-in subagents, UI plugins, and custom themes.
</p>
Expand All @@ -22,7 +25,11 @@

## Demo

![percho welcome page with the whale maid desk pet](docs/assets/img/percho_pet.png)
![Percho new-session page](docs/assets/img/chat_001.png)

![Percho project and session sidebar](docs/assets/img/chat_002.png)

![Percho per-turn diff sidebar](docs/assets/img/chat_003.png)

![UI plugins settings — the whale maid desk pet ships built in](docs/assets/img/percho_ui_plugins.png)

Expand All @@ -34,13 +41,9 @@

![Chat with custom background image in dark theme](docs/assets/img/chat_img_bg_show_img.png)

**Settings — providers & models**

![Settings page demo](docs/assets/img/demo-settings.gif)
## Why Percho?

## Why percho?

percho embeds the official Pi SDK (`@earendil-works/pi-coding-agent`) in the Electron main process. It is **not a fork and not a reimplementation** — it runs the same engine as the Pi CLI and inherits Pi's native strengths:
Percho embeds the official Pi SDK (`@earendil-works/pi-coding-agent`) in the Electron main process. It is **not a fork and not a reimplementation** — it runs the same engine as the Pi CLI and inherits Pi's native strengths:

- **Extensibility** — TypeScript extensions, skills, and prompt templates installed for the Pi CLI work here too, including project-local ones (with a trust prompt before loading). Adapt Pi to your workflows, no forking required.
- **Shared configuration** — same `~/.pi/agent/` directory as the CLI: sessions, auth, and model settings carry over. Start a session in the terminal, continue it in the GUI.
Expand All @@ -50,15 +53,15 @@ And for those who prefer a GUI over a TUI:

- Highly customizable UI — swap tool-call cards, drop in desk-pet overlays (two whale-maid pets ship built in), or extend the settings panel via UI plugins
- Visual permission gates — approve or deny each tool call from a dock, backed by a per-tool rule engine
- Draggable multi-session tabs (plus an optional session rail), per-session composer drafts, follow-up queue with undo
- A collapsible project/session sidebar, draggable pinned-session pills, per-session composer drafts, and a follow-up queue with undo
- Built-in subagents — a scout plus your own agent definitions, parallel task fan-outs, and run cards you can click to inspect the sub-session read-only
- Context evaporation (on by default) — stale tool outputs age into compact stubs, keeping long sessions within budget
- Unified error system — in-chat error cards with one-click retry, an auto-retry status line, and a crash-proof renderer
- Solid session workspace — fork any message, recall your own message back into the composer, todo panel, per-turn diff sidebar, slash-command menu and @-file completion
- Unified error system — in-chat error cards with one-click retry, an auto-retry status line, and full-page renderer crash recovery
- Solid session workspace — fork from assistant turns or selected context, recall your own message back into the composer, todo panel, per-turn diff sidebar, slash-command menu and @-file completion
- Streaming markdown rendering, image previews, message copy
- Agent-initiated image display — a built-in `show_image` tool lets the agent deliberately show you images inline (single or grouped), without turning every tool result into noise
- Custom background image with adjustable overlay dimming, light/dark/system themes
- LAN observer — watch a session read-only from a phone or tablet browser via QR code
- LAN companion — monitor sessions from a phone or tablet browser via QR code; optionally enable remote prompts, stop generation, and allow-once/deny approval decisions

## Download

Expand All @@ -83,10 +86,6 @@ Prebuilt installers are published on the [Releases](https://github.com/Jaxton07/
>
> On Linux: make the AppImage executable before first launch (`chmod +x percho-linux-x86_64.AppImage`). On Ubuntu 22.04+/24.04+ and derivatives, install `libfuse2` first — AppImages mount via FUSE 2, which is no longer preinstalled. Linux builds download and install updates in-app.

## Configuration

API keys are never stored in this repo or written into the app bundle. `~/.pi/agent/models.json` references environment variables (e.g. `$AI_OPS_API_KEY`) and keys stay in your shell environment. If you already use the Pi CLI, your existing setup just works.

## Development

Prerequisites: **Node.js >= 22.19**.
Expand All @@ -102,7 +101,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for the full guide. If you are in China a

## Disclaimer

percho is a community project. It is **not** built by or affiliated with the Pi team (earendil-works).
Percho is a community project. It is **not** built by or affiliated with the Pi team (earendil-works).

## License

Expand Down
36 changes: 17 additions & 19 deletions README.zh.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
<p align="center">
<img src="docs/icon.svg" alt="percho logo" width="128">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/img/readme-hero-dark.svg">
<img src="docs/assets/img/readme-hero-light.svg" alt="Percho 几何构造字标与立体金字塔" width="100%">
</picture>
</p>
<h1 align="center">percho</h1>
<h1 align="center">Percho</h1>
<p align="center">
高度自定义的 <a href="https://www.npmjs.com/package/@earendil-works/pi-coding-agent">Pi coding agent</a> 桌面端 GUI —— 与 Pi CLI 同源同引擎,干净清爽的视觉界面。多会话聊天、可视化工具审批、内置子代理、UI 插件、自定义主题。
</p>
Expand All @@ -22,7 +25,11 @@

## 演示

![percho 欢迎页与鲸鱼娘桌宠](docs/assets/img/percho_pet.png)
![Percho 新会话页](docs/assets/img/chat_001.png)

![Percho 项目与会话侧栏](docs/assets/img/chat_002.png)

![Percho 逐轮改动侧栏](docs/assets/img/chat_003.png)

![设置 —— UI 插件管理,内置鲸鱼娘桌宠](docs/assets/img/percho_ui_plugins.png)

Expand All @@ -34,13 +41,9 @@

![深色主题下带自定义背景的聊天页](docs/assets/img/chat_img_bg_show_img.png)

**设置页 —— 模型与 Provider**

![设置页演示](docs/assets/img/demo-settings.gif)
## 为什么选择 Percho?

## 为什么选择 percho?

percho 把官方 Pi SDK(`@earendil-works/pi-coding-agent`)跑在 Electron 主进程里。**不是 fork,也不是重新实现** —— 它和 Pi CLI 用的是同一套引擎,完整继承 Pi 的原生优势:
Percho 把官方 Pi SDK(`@earendil-works/pi-coding-agent`)跑在 Electron 主进程里。**不是 fork,也不是重新实现** —— 它和 Pi CLI 用的是同一套引擎,完整继承 Pi 的原生优势:

- **可扩展性** —— 为 Pi CLI 安装的 TypeScript 扩展、Skills、Prompt 模板在这里同样生效,包括项目级资源(加载前会有信任确认)。让 Pi 适应你的工作流,无需 fork。
- **配置共享** —— 与 CLI 共用 `~/.pi/agent/` 目录:会话、认证、模型配置全部互通。终端里开的会话,可以在 GUI 里继续。
Expand All @@ -50,16 +53,15 @@ percho 把官方 Pi SDK(`@earendil-works/pi-coding-agent`)跑在 Electron

- 高度自定义界面 —— UI 插件可替换工具调用卡、添加桌宠浮层(内置鲸鱼娘 + Q 版两只)、扩展设置面板
- 可视化权限审批 —— 在底部审批坞里逐个批准/拒绝工具调用,背后是逐工具的规则引擎
- 多会话顶栏标签(可拖拽排序,可选左侧会话轨道)、逐会话输入草稿、可撤销的跟进消息队列
- 可折叠的项目/会话侧栏、可拖拽排序的顶部置顶会话、逐会话输入草稿、可撤销的跟进消息队列
- 内置子代理 —— 自带 scout 与自定义 agent 定义、并行任务拆分,点开运行卡片即可只读检视子会话
- 上下文蒸发(默认开启)—— 到龄的工具输出自动蒸发为紧凑 stub,长会话不超预算
- 视觉代理 —— 纯文本模型遇到图片时,由视觉模型先识别成描述再交给 LLM
- 统一报错系统 —— 对话内错误卡一键重试、自动重试状态行、全屏崩坏兜底
- 扎实的会话工作台 —— 任意消息分叉、撤回自己的消息回输入框、todo 面板、逐轮 diff 侧栏、斜杠命令面板、@ 文件补全
- 统一报错系统 —— 对话内错误卡一键重试、自动重试状态行、渲染进程全屏崩溃恢复
- 扎实的会话工作台 —— 从助手回复或选中的上下文分叉、撤回自己的消息回输入框、todo 面板、逐轮 diff 侧栏、斜杠命令面板、@ 文件补全
- 流式 Markdown 渲染、图片预览、消息复制
- Agent 主动发图 —— 内置 `show_image` 工具让 agent 在需要时把图片(单张或成组)直接显示到对话区,而不是把所有工具结果都变成噪音
- 自定义背景图与遮罩透明度,浅色/深色/跟随系统主题
- 局域网观察 —— 手机/平板浏览器扫二维码即可只读查看会话进度
- 局域网伴侣 —— 手机/平板浏览器扫码查看会话;可选开启远程发送、停止生成,以及允许一次/拒绝权限请求

## 下载

Expand All @@ -84,10 +86,6 @@ percho 把官方 Pi SDK(`@earendil-works/pi-coding-agent`)跑在 Electron
>
> Linux:首次运行前给 AppImage 加执行位(`chmod +x percho-linux-x86_64.AppImage`);Ubuntu 22.04+/24.04+ 及衍生发行版需先安装 `libfuse2`(AppImage 依赖 FUSE 2 挂载,新版系统默认未装)。Linux 版在应用内下载并安装更新。

## 配置

API key 不会存入本仓库,也不会打进安装包。`~/.pi/agent/models.json` 通过环境变量引用(如 `$AI_OPS_API_KEY`),key 只存在于你的 shell 环境中。如果你已经在用 Pi CLI,现有配置开箱即用。

## 开发

前置要求:**Node.js >= 22.19**。
Expand All @@ -103,7 +101,7 @@ npm workspaces monorepo,三个包:`packages/shared`(IPC 契约)、`packa

## 声明

percho 是社区项目,**并非** Pi 团队(earendil-works)官方出品,也与其无任何隶属关系。
Percho 是社区项目,**并非** Pi 团队(earendil-works)官方出品,也与其无任何隶属关系。

## License

Expand Down
Loading
Loading