GitHub - DLYZZT/pi-desktop: A local-first, cross-platform Electron desktop workspace for Pi Coding Agent, with sessions, project files, browser tools, skills, plugins, and messaging integrations. · GitHub
Skip to content

About

A local-first, cross-platform Electron desktop workspace for Pi Coding Agent, with sessions, project files, browser tools, skills, plugins, and messaging integrations.

Topics

Resources

Stars

298 stars

Watchers

2 watching

Forks

Latest commit

 

History

413 Commits

Folders and files

Repository files navigation

Pi Agent Desktop 图标

Pi Agent Desktop

把 Pi Coding Agent 变成真正的桌面工作台。

本地优先 · 零内部服务器 · 跨平台应用

Desktop Build Electron 43 React 19 macOS, Windows & Linux Apache-2.0

English · 简体中文

下载 v0.4.3 · 截图 · 功能 · 快速开始 · 架构 · 变更记录 · 路线图

应用截图

主工作区与主要设置界面,点击图片可查看原图。

Pi Agent Desktop 主工作区:会话侧栏、Auto 模型选择、工具预设与右侧浏览器

自动路由设置:快模型、强模型、思考级别和 TypeSafe Jev 决策模型
模型与自动路由:快模型、强模型和决策模型
MCP 服务设置:配置范围、HTTP 连接、测试与登录入口
MCP 服务:配置、连接测试与登录
内置浏览器设置:Profile、标签页限额、超时与网络访问
浏览器设置:Profile、标签页与网络访问
Herdr 设置:连接状态、运行时信息与 Agent CLI 诊断
Herdr:连接状态与 Agent CLI 诊断
技能管理:技能列表、启用开关与 SKILL.md 编辑器
技能管理:启用开关与 SKILL.md 编辑
开发工具管理:系统工具发现、来源选择与托管 Node.js 运行时
系统工具发现与托管运行时管理

核心能力

一个完整的 Agent 工作台

  • 创建、切换、重命名和删除会话,并持续展示流式回复
  • 新会话可根据首条有效消息在后台自动生成简短标题;可在设置中关闭,手动名称始终优先
  • 搜索会话、按日期分组浏览,并在列表和主对话顶部使用稳定的会话标题
  • 查看工具调用、执行过程和上下文压缩状态
  • 支持排队消息、Steer / Follow-up 等交互方式
  • 快速切换模型、推理等级、工具预设和提示音
  • 支持图片附件、斜杠命令与 @ 文件引用
  • 对话与输入框使用一致的阅读宽度,右侧文件面板可通过鼠标或键盘调整并记住宽度

会话工具与执行历史

  • 在会话工具菜单中管理 Codemode、工具搜索和工具预设;“完全访问”预设包含 Codemode 与工具搜索
  • 分别控制模型可见的工具入口、可被嵌套查找的工具与实际执行授权;嵌套调用同样遵守当前会话的工具权限
  • 按父子执行树查看直接与嵌套调用的状态、耗时和原始参数/结果,并按当前会话分支查看历史
  • 大结果和临时输出持久化后可分页读取;重开或压缩会话后,Agent 可通过 tool_history_get 查询原文
  • Host 中断后保留已完成的子调用,将未确认结果的调用标为中断/结果未知,恢复时不自动重放操作

用户与 Agent 共享的内置浏览器

  • 在主界面右侧使用 Electron WebContentsView 承载真实 Chromium 页面,支持多 Tab、临时/持久 Profile、登录态、下载、上传和代理
  • Agent 可在独立的 Browser read/interact 授权下执行导航、结构化页面快照、截图、点击、输入、键盘与等待;首次需要时由主窗口弹窗询问,Coding 权限不会隐式开启浏览权限
  • 用户与 Agent 操作同一个页面,并可随时接管;提交、下载、上传、权限和外部协议继续经过本地策略或确认
  • 设置页管理全局默认与具体会话的永久权限,授权弹窗只产生当前会话的临时权限;高级浏览器模式由一个仅本次启动有效的本机开关统一控制
  • 高级浏览器模式整合三层 UA/Client Hints 身份、可信输入、CDP 网络抓包与确认后的写请求重放、JavaScript 经验库和专用高级 Profile;Agent 工具不接收或返回 Cookie value
  • 私网保护当前为明确标记的 best-effort;未部署受控网络沙箱时,Strict 模式会直接拒绝请求

可观察、可控制的受管开发进程

  • 在受支持平台上让 Agent 用显式 process_* tools 持续运行 Vite、React、Three.js、Storybook、Flask、Spring Boot、mock API 和 watch build;普通短命令继续走 Bash
  • 右侧 Processes 面板展示 owner、状态、readiness、脱敏日志、loopback endpoint 和退出原因;用户可随时发送行式 stdin、停止、强制停止、重启、复制或导出日志
  • 框架页面使用受管 localhost 服务与内置 Browser 联调,进程权限与 Browser 授权保持分离;慢启动可复用日志 cursor 继续等待,不需要 shell &、nohup 或外部终端
  • macOS/Linux 使用 POSIX process group;Windows x64 使用经过完整性校验的 Rust helper 和 Job Object,helper、reaper 或 owner identity 未就绪时会 fail-closed
  • 功能默认关闭且不是安全沙箱:子进程拥有与 Agent Bash 相同的本机文件、网络和环境权限;常见 LAN bind 需要确认,Host/App 故障或退出时会有界清理进程树

受管后台进程支持 macOS、Linux 和 Windows 11 x64;Windows ARM64、Windows Server 和 32 位 Windows 暂不支持。

Pi 对话式控制 Herdr

  • 可选连接本机 Herdr,可在原主对话中查看 Fleet,创建、聚焦或重命名 workspace/tab/pane,解释 Agent 状态,脱敏查看进程,等待输出,并启动、提示或等待 Agent
  • Pi Session 侧栏和主对话始终是主入口;Agent Fleet 在初始页和激活会话中都位于标题栏右侧,右侧 ANSI terminal 仅用于观察、故障排查和显式接管
  • workspace/pane/Agent close 均需要 Pi 本机确认,确认框随界面语言显示完整中英文;Herdr v0.8.2 没有 agent.stop,因此 Agent close 会明确关闭其所在 pane,不会静默伪造停止语义
  • Herdr 随 macOS/Linux/Windows x64 应用内置;安装、版本、更新、修复和卸载统一在“开发工具”中管理,Managed 模式从已校验内置副本激活且不单独联网下载。Windows 已支持 Fleet/Agent 控制,以及由原生 Job Object 保护的实时 ANSI 终端和显式键盘接管
  • Attach 只连接用户手动启动的系统 Herdr,Pi Desktop 永不停止它;Managed 由 Pi Desktop 自动启动、监控、重启并在禁用、切换模式、卸载或应用退出时关闭私有 server
  • Pi Session 与 Herdr Session 完全并存;关闭 Pi Desktop terminal 不关闭 Herdr pane/Agent,未知协议会 fail-closed
  • 设置导航中的 Herdr 位于“浏览器”和“消息渠道”之间;安装、更新、修复和卸载仍统一在“开发工具”中管理

MCP 服务与工具

  • 在“设置 → MCP”新增、编辑或导入全局及当前项目的 stdio/Streamable HTTP 服务,查看连接状态、测试连接和重新连接
  • 支持 MCP OAuth 登录、取消与凭据刷新,以及服务商凭据引用;可浏览工具、资源和资源模板,并预览资源内容
  • 项目配置覆盖同名全局配置,扩展注册来源及待应用状态会单独显示;保存配置后,仍需在当前会话授权工具
  • MCP 工具可按配置直接提供给模型,或通过工具搜索/Codemode 按需发现与调用;原始结果和完整结构化内容进入执行历史

围绕项目工作的文件体验

  • 原生选择项目目录,管理 Git 分支与 Worktree
  • 浏览项目文件、打开多标签页、下载或引用文件
  • Agent 回复和 Markdown 文件支持代码高亮、Mermaid、KaTeX,并可预览 Word(.docx)文档
  • 文件变更监听与 Git 状态感知,让会话始终贴近当前项目

模型与扩展统一管理

  • main 中的 Windows 新会话默认 Shell 为 PowerShell,可在“设置 → 通用 → Agent 默认 Shell”改为 Bash。
  • 会话启动优先使用本地模型目录;需要时可显式刷新远程目录,离线、超时或部分 provider 失败时继续保留缓存模型
  • 按服务商提供 API Key、订阅或 OAuth 登录,支持多步凭据配置向导、已有凭据替换确认和 Azure 旧配置迁移
  • 模型编辑支持采样参数、按思考级别设置采样参数、图像与请求输入限制,以及按模型 ID 覆盖参数;支持的模型可选择 max 推理级别
  • 在“设置 → 模型 → 模型高级配置”调整自动压缩、Token 保留、重试、超时及 SSE/WebSocket 传输方式;这些 Pi 全局设置与 CLI 共享,现有会话需重新加载后生效
  • 保存模型和高级配置时检测外部修改冲突,避免覆盖在 CLI 或编辑器中更新的配置
  • 搜索、安装和配置 Skills;正常安装沿用 npm 默认并发,遇到网络、超时或 cache lock 故障时使用隔离缓存重试一次
  • 管理 Plugins,并沿用 Pi Agent 的扩展体系

开发分支的模型配置可先运行 npm run check:models-config 只读预检;无效字段会使整份自定义配置暂不生效,设置页保留原内容以便修正。OpenRouter 的个性化目录与 Pi CLI 共享缓存,不按 key 或 endpoint 分区;不同凭据交替使用、特别是离线启动时,列表可能来自另一个运行环境,不能将缓存目录视为当前 key 已获授权。

Auto 虚拟模型与自动路由

在“设置 → 模型 → 自动路由”启用 Auto,选择快模型、强模型及各自的思考级别,保存后在聊天模型菜单中选择 Auto。

  • 支持按思考级别路由:high 及以上使用强模型,其余使用快模型;也可配置决策模型,根据每次新提问的复杂度选择模型
  • 每轮新提问选择一次模型,后续工具执行沿用已选模型;可启用自动重试时切换到另一个已配置模型
  • 决策请求会增加耗时和用量,失败或不可用时使用强模型;实际调用用量计入会话统计
  • 最近实际使用的模型和思考级别显示在输入框下方 Auto 右侧,并可查看按实际模型统计的用量

路由配置在新建、重新加载会话或重新选择 Auto 后生效。

Codemode 图片生成与决策模型

通过会话工具菜单启用 Codemode(“完全访问”预设已包含),让 Agent 按需生成图片,或调用决策模型进行分类、是非判断和评分。支持图片输入的分类器也可判断截图和图片。模型按提供商的现有凭据发现,分类器作为辅助能力使用,不进入聊天主模型选择器。

每次模型调用都遵循 Codemode 权限,支持停止,并保存原始输入、结果和执行状态;用量计入会话统计,可在已有工具记录中查看。OpenAI 决策接口需要 API key,ChatGPT 订阅登录不提供该能力。TypeSafe Jev 可在“设置 → 模型 → 添加服务商”中搜索 TypeSafe 或 Jev,填写 API key 后使用;详情页会列出 jev-latest。可以让 Agent“使用可用的决策模型给这些条目分类”。

生成的图片可在最终回复及重开的会话历史中查看。服务商详情页列出可用的图片与决策模型,并提供测试请求;测试使用所配置的服务商凭据,可能产生用量费用。

跨平台开发工具管理

  • 优先发现并验证用户已有的 Node.js/npm、Python、uv、Git/Bash、Bun 和 jq,覆盖 GUI 启动时 PATH 不完整的常见场景
  • 为 Skills、Plugins、Agent Bash、Git/worktree 和搜索工具提供一致的绝对路径与局部执行环境
  • 用户确认后可把 Node.js LTS、CPython、uv、PortableGit、Bun 和 jq 安装到应用私有目录,不修改系统 PATH、Shell 配置或注册表
  • 安装包内置经过清单校验的目标平台 ripgrep 与 fd,保证基础搜索离线可用

微信、Telegram 与飞书/Lark 消息渠道

  • 个人微信二维码登录、Telegram BotFather token,以及飞书/Lark 官方扫码创建新机器人或已有应用 App ID/App Secret 接入
  • 私聊配对,以及 Telegram、飞书/Lark 群聊白名单与 @触发控制;微信群尚未开放,默认不授予远程工具权限
  • 外部对话默认使用独立 Pi Session,也可从当前会话顶部快速绑定并与 UI 共用上下文;绑定列表会在窗口内自动定位,长列表支持内部滚动
  • 账号的默认工具权限用于新建独立渠道会话,保存变更时也会同步到该账号已经绑定的会话;工具权限按 Pi Session 生效,共用同一 Session 的多个渠道入口共享同一权限
  • 模型用户正文只包含 IM 实际文本;桌面端用本地黑、微信绿、Telegram 蓝、飞书/Lark 橙的用户气泡区分来源
  • 微信、Telegram 与飞书/Lark 支持入站图片、文件和语音;飞书/Lark 还支持视频资源,图片直接作为多模态输入,其他附件进入隔离暂存区,微信 SILK 语音优先转为 WAV
  • Telegram 私聊支持流式预览,并折叠思考与工具详情
  • 飞书/Lark 通过官方 SDK 长连接收取私聊、受控群聊和 thread,并使用 Card 渲染 Markdown、流式显示思考/工具调用、最终折叠过程
  • Telegram 与飞书/Lark 在原消息上显示回合 Reaction 状态;飞书单聊可用原生菜单触发 /help、/status、/new、/compact 和 /reload

为长期运行而设计

  • 单实例、系统托盘、桌面通知与 Dock / 任务栏角标
  • 窗口状态记忆、系统主题跟随和自定义协议
  • Agent Host 异常恢复、崩溃报告与诊断信息导出
  • 区分自然完成与主动停止:停止的回合显示“已停止”,重开历史后保留该状态,并且不会触发完成提示音或后台完成通知
  • 已启用平台的正式安装版可定时或手工检查稳定版更新,由用户确认下载,并在任务结束后重启安装
  • sandbox: true、严格 CSP 与类型化 IPC 契约

快速开始

使用桌面安装包

最新稳定版为 v0.4.3,提供 macOS Apple Silicon / Intel、Windows x64 和 Linux x64 安装包。

v0.4.3 内置 Pi Coding Agent 1.4.0,改进上下文压缩、工具调用与多会话代码编排,补充模型配置兼容提示,并精简普通服务商的 API Key 配置入口。也可按下方步骤从源码运行。

普通用户使用 Agent 本身无需单独安装 Pi CLI、Pi Coding Agent、Node.js 或 npm;安装桌面应用并配置模型提供商后即可使用。Skills、Plugins 或 Agent 脚本需要额外开发工具时,应用会优先复用健康的系统安装,也可以在用户确认后安装应用私有运行时。

应用会读取 ~/.pi/agent/ 中的会话与配置。如果你已经使用 Pi CLI,可以直接复用现有数据,无需迁移;此前没有使用过 Pi CLI 也不影响使用。

Pi Desktop 会先发现并验证用户已经安装的 Node.js/npm、Python、Git、Bash、uv、jq 和 Bun;内置的 rg/fd 保证离线搜索可用。

桌面安装包系统要求

  • macOS 12 Monterey 或更高版本,支持 Apple Silicon(arm64)和 Intel(x64)
  • Windows 10 或 Windows 11 64 位(x64)
  • Linux 64 位(x64)AppImage,需要现代 glibc 发行版和可用的桌面图形会话;当前采用手工下载安装更新
  • 暂不提供 Windows 32 位(x86)或 Windows ARM64 安装包

源码开发环境要求

  • Node.js 22.19 或更高的 22.x 版本(>=22.19.0 <23)
  • npm(随 Node.js 安装即可)
  • macOS、Windows 或 Linux

本地运行

git clone https://github.com/DLYZZT/pi-desktop.git
cd pi-desktop
npm ci
npm run dev

构建

  • macOS Apple Silicon(arm64):DMG + ZIP
  • macOS Intel(x64):DMG + ZIP
  • Windows(x64):NSIS 安装程序
  • Linux(x64):AppImage

架构设计

Pi Agent Desktop 使用 Electron 三进程模型,将高权限桌面能力、Agent 运行时和 UI 隔离开来。

flowchart LR
    Main["Electron Main<br/>窗口 · 托盘 · 协议 · Host 监督"]
    Host["Agent Host / utilityProcess<br/>Pi Agent · 会话 · 文件 · 配置"]
    UI["Renderer<br/>React 19 · Vite"]
    Browser["Main-owned WebContentsView<br/>远程网页 · Profile · 网络策略"]
    Processes["受管项目进程<br/>dev server · watcher · mock API"]
    Data["~/.pi/agent/<br/>会话 · 模型 · 配置"]

    Main --> Host
    Main --> UI
    Main --> Browser
    Host -->|"revisioned Browser RPC"| Main
    Host -->|"POSIX worker / Windows Job helper"| Processes
    Main -.->|"crash reaper"| Processes
    Browser -->|"独立授权的 localhost 访问"| Processes
    UI <-->|"Typed MessagePort IPC"| Host
    Host <--> Data
Loading
  • Main:负责窗口生命周期、菜单、托盘、通知、软件更新、自定义协议和 Agent Host 监督
  • Agent Host:在独立 utilityProcess 中运行 Pi Coding Agent,处理会话、文件、配置与扩展
  • Renderer:运行 React UI,只通过受控的 preload bridge 与 Host 交互
  • Browser View:远程站点与 localhost 项目页只进入 Main 创建的沙箱化 WebContentsView,不获得应用 preload、Node 或主 Renderer bridge
  • 无内部本地服务:应用不使用 TCP 端口承载 UI 或控制面;用户显式启动的受管项目服务可以监听 loopback

数据、安全与隐私

  • 会话与 Pi 配置默认留在本机 ~/.pi/agent/
  • Desktop 的工具权限和工具执行记录另存于应用数据目录;备份完整工具历史时,还需保留其中的 tool-executions 日志及内容文件
  • 应用不会为了 UI 通信额外开放本地网络端口
  • Renderer 开启 Electron sandbox,并使用严格的 Content Security Policy
  • preload 只暴露受控桥接接口,Host RPC 由 TypeScript 契约约束
  • Agent Browser tools 与高级浏览器模式默认关闭;Main 在任何目标工具副作用前按 session、持久策略、临时 grant、lease 和 policy revision 逐次校验
  • 受管后台进程默认关闭,并要求受支持的平台与架构、项目 trust、Session cwd containment、健康的 crash reaper 和有界资源策略;Windows x64 还会校验 Rust helper 的固定路径、版本与完整性。它是生命周期控制,不是容器或沙箱
  • 更新客户端只使用正式包内固定的公开 GitHub Release 配置,不接收 Renderer 提供的更新地址或发布凭证
  • 微信和 Telegram 只发起出站 long polling,飞书/Lark 使用出站 WebSocket;均不开放 webhook 或本地监听端口
  • 模型请求的数据处理方式取决于你配置的模型提供商,请同时查看对应服务的隐私政策

参与开发

常用命令

命令 说明
npm run dev 启动 Vite、主进程构建监听与 Electron
npm run typecheck 执行 TypeScript 类型检查
npm run test 运行自动化测试套件
npm run check:contract 检查 API 方法与 Host handler 覆盖关系
npm run check:architecture 检查进程架构边界与代码结构约束
npm run smoke 运行 Electron 冒烟测试
npm run test:execution-recovery 验证 Host 崩溃后的工具执行历史恢复
npm run test:browser-electron 运行本地 Browser Electron 集成测试
npm run test:managed-process-workflows 运行受管进程生命周期与清理测试
npm run test:herdr-e2e 使用指定官方 binary 运行隔离 Herdr E2E
npm run test:herdr-desktop-e2e 运行 production Electron/Renderer Herdr 集成 E2E
npm run test:windows-managed-helper 在 Windows x64 验收 Rust helper 与 Job Object
npm run test:windows-nsis-upgrade -- <旧安装包> <新安装包> 在 Windows x64 验证安装、升级、回滚和卸载
npm run verify 执行提交前的完整质量检查
npm run build 构建 main、preload 与 renderer
npm run pack 生成未封装的应用目录
npm run dist 生成当前平台配置的全部架构安装包
npm run dist:mac:signed 生成当前 Mac 架构的 Developer ID 签名包
npm run dist:mac:notarized 生成签名并经 Apple 公证的 macOS 包

项目结构

src/
├── contract/      # IPC 类型契约与 RPC 层
├── main/          # Electron 主进程与 crash reaper
├── preload/       # 安全桥接接口
├── agent-host/    # Agent、会话、文件、配置与受管进程
├── renderer/      # React 桌面界面
└── shared/        # 可测试的纯函数与共享模块
native/
└── windows-managed-process-helper/  # Windows x64 Rust / Job Object helper

欢迎通过 Issues 提交问题或建议,也欢迎直接发起 Pull Request。提交代码前请至少运行:

npm run verify

路线图

  • Electron 三进程架构与类型化 IPC
  • 会话、项目文件、模型、Skills、Plugins 与 OAuth
  • Pi 1.1.0 运行时、服务商认证流程和扩展后的模型/高级配置界面
  • MCP 服务管理、OAuth、资源预览与会话工具授权
  • Codemode/工具搜索、嵌套调用、执行树和持久化原文历史
  • 图片生成、决策模型、Auto 自动路由与 max 推理级别
  • 个人微信、Telegram 与飞书/Lark 文本、图片、文件和语音消息渠道,以及飞书/Lark 视频资源
  • 托盘、通知、系统主题、崩溃恢复与诊断导出
  • Linux、macOS、Windows CI 测试与正式发布构建矩阵
  • macOS 本地签名/公证工具与 v* tag release workflow
  • 首次 v* tag 双架构签名、公证与正式 Release 端到端验收
  • Windows x64 正式 Release 资产管线(当前不配置代码签名)
  • 首个同时包含 macOS 与 Windows 正式资产的 Release 验收(v0.1.1)
  • 实现主进程稳定版检查、用户确认下载、重启安装和设置界面
  • 实现 Main-owned WebContentsView 内置浏览器、按需 Agent 会话授权和统一高级浏览器模式
  • 实现 macOS/Linux 受管后台进程、Agent tools、Processes UI、日志游标与 crash reaper
  • 实现 Windows x64 Rust helper、Job Object containment、打包门禁与 Windows 11 验收
  • 完成 updater-enabled 基线到更高版本的 macOS 与 Windows 端到端升级验证
  • macOS arm64/x64、Windows x64、Linux x64 安装包生产启动 E2E 与发布前检查

与 Pi 生态的关系

Pi Agent Desktop 是 Pi Coding Agent 的桌面工作台,继续使用 ~/.pi/agent/ 中的会话和配置,因此可以与 CLI 配合使用。

Plugins 继续通过 Pi 的包管理器与运行时加载。仅适用于终端 TUI 的扩展接口(例如自定义终端组件或原始按键监听)无法在桌面 Renderer 中等价呈现;应用会显示明确的兼容性提示,不会静默忽略。

License

Apache License 2.0

About

A local-first, cross-platform Electron desktop workspace for Pi Coding Agent, with sessions, project files, browser tools, skills, plugins, and messaging integrations.

Topics

Resources

Stars

298 stars

Watchers

2 watching

Forks

Releases

Contributors

Languages