{"id":50491729,"url":"https://github.com/ayuayue/pi-desktop","last_synced_at":"2026-06-07T08:00:31.288Z","repository":{"id":361655911,"uuid":"1255122629","full_name":"ayuayue/pi-desktop","owner":"ayuayue","description":"Desktop workbench for managing multiple pi coding-agent sessions across project folders.","archived":false,"fork":false,"pushed_at":"2026-06-02T01:42:04.000Z","size":1615,"stargazers_count":11,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-02T03:24:25.226Z","etag":null,"topics":["ai-agent","coding-agent","desktop-app","electron","pi","react","rpc","typescript"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ayuayue.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-31T12:40:24.000Z","updated_at":"2026-06-02T01:42:01.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ayuayue/pi-desktop","commit_stats":null,"previous_names":["ayuayue/pi-desktop"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/ayuayue/pi-desktop","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ayuayue%2Fpi-desktop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ayuayue%2Fpi-desktop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ayuayue%2Fpi-desktop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ayuayue%2Fpi-desktop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ayuayue","download_url":"https://codeload.github.com/ayuayue/pi-desktop/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ayuayue%2Fpi-desktop/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34013240,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-07T02:00:07.652Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agent","coding-agent","desktop-app","electron","pi","react","rpc","typescript"],"created_at":"2026-06-02T03:05:07.809Z","updated_at":"2026-06-07T08:00:31.247Z","avatar_url":"https://github.com/ayuayue.png","language":"TypeScript","funding_links":[],"categories":["Miscellaneous"],"sub_categories":[],"readme":"# pi-desktop\n\n[English](README.en.md) · [LinuxDO 友链](https://linux.do)\n\n**一个用于管理多个 [pi](https://pi.dev) 编码 Agent 会话的桌面工作台。**\n\n![Status](https://img.shields.io/badge/status-experimental-orange)\n![License](https://img.shields.io/badge/license-MIT-blue)\n![Electron](https://img.shields.io/badge/Electron-38-47848f)\n![React](https://img.shields.io/badge/React-19-61dafb)\n![Version](https://img.shields.io/badge/version-0.4.7-green)\n\n`pi-desktop` **不是** pi 的分支。它是一个轻量 Electron 外壳，通过启动多个 `pi --mode rpc` 进程，将项目管理、会话管理、对话界面、配置管理和工具编排整合到一个原生桌面应用中——所有 Agent 能力由 pi 原生提供。\n\n---\n\n## 📋 更新日志\n\n\u003e **最新版本 v0.4.7**（2026-06-07）\n\n### v0.4.7 新增\n- 🖥️ 内嵌终端：每个 Agent 拥有独立终端 Dock 和多 tab，直接在会话旁运行命令。\n- 🎨 终端主题：支持 Pi Soft、Solarized、One Dark、Monokai 等经典主题。\n- 🧩 UI 拆分：配置弹窗和主界面组件拆分，后续扩展终端和面板更稳。\n\n[查看完整更新日志 →](CHANGELOG.zh-CN.md)\n\n---\n\n## 核心功能\n\n| 功能 | 说明 |\n|---|---|\n| **多项目工作区** | 添加、搜索和切换本地项目目录，同时运行多个 pi Agent，项目间完全隔离。 |\n| **配置管理** | 可视化编辑器管理 pi 的 `models.json`、`auth.json`、`settings.json`，支持 Provider 重命名、模型拉取、连接测试和请求头/User-Agent 配置。 |\n| **斜线命令 \u0026 `!` Shell** | 内置斜线命令建议（`/compact`、`/session` 等），支持 `!command` / `!!command` 在聊天输入框直接执行 Shell 命令。 |\n| **内嵌终端 Dock** | 当前 Agent 绑定独立终端 tab，支持 PowerShell/cmd/sh fallback、多 tab、主题切换、拖拽高度和关闭确认。 |\n| **会话管理** | 新建会话、恢复历史会话、内联重命名、导出 HTML、关闭 Agent——通过侧边栏或右键菜单即可完成。 |\n| **Git 集成** | 实时显示当前分支，支持本地 + 远程分支选择器、分支数量徽章和分支切换。 |\n| **工具调用可视化** | 工具调用聚合卡片，摘要 + 可展开详情，运行中/完成/失败状态清晰标识。 |\n| **上下文感知输入** | `@` 文件引用建议、`!` Shell 执行、`/` 斜线命令——统一在同一个输入框中。 |\n| **系统托盘** | 关闭窗口默认最小化到托盘，托盘右键菜单，双击恢复窗口。 |\n\n---\n\n## 截图\n\n### 工作区与对话界面\n\n![工作区总览](docs/images/overview.png)\n\nMarkdown 渲染 + 流式输出、工具调用详情、模型/思考等级/上下文/缓存状态栏、Git 分支选择器、操作按钮（New Session · Stop · Restart · Files · History · Terminal）。\n\n### 配置管理\n\n![配置管理](docs/images/config.png)\n\n可视化编辑器：Models（Provider 卡片 + 模型网格 + 连接测试）、Auth（API Key 管理）、Settings（类型感知的键值编辑器）、源文件（原始 JSON 编辑）——保存后可按需重启 Agent 生效。\n\n### 斜线命令与会话历史\n\n![斜线命令及会话历史](docs/images/slash-commands.png)\n\n内置斜线命令建议面板（带功能说明），配合右侧历史会话抽屉，快速浏览和恢复过往对话。\n\n### 文件树与会话操作\n\n![文件树及会话操作](docs/images/files.png)\n\n项目文件树（含 Git 状态标识）、输入框 `@` 文件引用建议、会话右键菜单（打开会话 · 导出 HTML · 关闭 Agent）。\n\n---\n\n## 架构设计\n\n```txt\npi-desktop\n├─ Electron 主进程\n│  ├─ 管理项目记录\n│  ├─ 启动 pi --mode rpc 进程\n│  ├─ 管理 Agent 绑定的本地 pty 终端\n│  ├─ 桥接文件、会话、Git 操作\n│  └─ 暴露安全 IPC API\n│\n├─ Electron Preload\n│  └─ 向 Renderer 暴露 window.piDesktop\n│\n├─ React Renderer\n│  ├─ 项目和 Agent 列表\n│  ├─ 聊天时间线（流式输出）\n│  ├─ 文件 / 历史抽屉\n│  ├─ 配置管理弹窗（Models / Auth / Settings / 源文件）\n│  ├─ Agent 绑定的 Terminal Dock\n│  ├─ 模型与上下文状态栏\n│  └─ 设置 UI\n│\n└─ Pi 运行时\n   ├─ 每个 Agent Tab 一个独立 pi RPC 进程\n   ├─ 项目级 cwd 隔离\n   └─ 使用 pi 原生会话 / 工具 / 模型 / 上下文\n```\n\n核心设计原则：**一个 Agent Tab = 一个 pi RPC 进程**，确保会话隔离，让 pi 继续负责其原生能力。\n\n---\n\n## 环境要求\n\n- Node.js 20+\n- npm\n- 系统 `PATH` 中可访问 `pi` 命令\n- 已完成 pi 的 Provider / 登录 / API Key 配置\n\n验证 pi 是否可用：\n\n```bash\npi --version\npi --mode rpc\n```\n\n---\n\n## 下载安装\n\n**Windows**、**macOS**、**Linux** 平台的预构建安装包在 GitHub Release 中发布：\n\n👉 **[GitHub Releases](https://github.com/ayuayue/pi-desktop/releases)**\n\n\u003e pi-desktop 需要单独安装 `pi` CLI 并确保其加入系统 `PATH`。\n\n---\n\n## 快速开始（从源码运行）\n\n```bash\ngit clone https://github.com/ayuayue/pi-desktop.git\ncd pi-desktop\nnpm install\nnpm run make-icon\nnpm run dev\n```\n\n---\n\n## 开发命令\n\n| 命令 | 说明 |\n|---|---|\n| `npm run dev` | 启动开发模式 |\n| `npm run typecheck` | 运行 TypeScript 类型检查 |\n| `npm run build` | 构建 Renderer + Main 产物 |\n| `npm run dist` | 为当前平台打包 |\n| `npm run dist:win` | 打包 Windows（NSIS + portable + zip） |\n| `npm run dist:mac` | 打包 macOS（DMG + zip） |\n| `npm run dist:linux` | 打包 Linux（AppImage + deb + tar.gz） |\n| `npm run make-icon` | 生成图标资源到 `build/icon.svg` |\n\n### 浏览器预览模式\n\n直接打开 `http://localhost:5173/` 进行布局和响应式调试。Renderer 在 `window.piDesktop` 不可用时自动降级为 mock 数据，无需 Electron 环境。但涉及 Agent、会话、文件操作等真实 IPC 功能仍需在 Electron 中验证。\n\n---\n\n## 项目结构\n\n```txt\nsrc/\n├─ main/\n│  ├─ fs/                 # 文件树服务\n│  ├─ git/                # Git 分支服务\n│  ├─ pi/                 # Pi 进程与 RPC 管理\n│  ├─ projects/           # 项目记录持久化\n│  ├─ sessions/           # Pi 会话扫描\n│  ├─ settings/           # 应用设置持久化\n│  ├─ terminal/           # Agent 绑定的 pty 终端\n│  └─ index.ts            # Electron 主入口\n│\n├─ preload/\n│  └─ index.ts            # 安全 IPC 桥接\n│\n├─ renderer/\n│  └─ src/\n│     ├─ App.tsx          # 主界面\n│     ├─ components/      # 拆分后的 UI 组件\n│     ├─ config/          # 配置弹窗子组件和配置工具\n│     ├─ previewApi.ts    # 浏览器预览降级\n│     ├─ styles.css       # 应用样式\n│     └─ main.tsx         # React 入口\n│\n└─ shared/\n   ├─ ipc.ts              # IPC 通道名称\n   └─ types.ts            # 共享类型定义\n```\n\n---\n\n## 更新日志\n\n详细版本历史请查看 [CHANGELOG.zh-CN.md](CHANGELOG.zh-CN.md)（中文）或 [CHANGELOG.md](CHANGELOG.md)（英文）。\n\n---\n\n## 安全说明\n\n本应用启动本地 `pi` 进程并通过 Electron IPC 暴露有限的文件操作。请仅运行你信任的源码。应用不发送遥测数据，不上传文件——所有模型和 Provider 的网络行为由 pi 及其配置决定。\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fayuayue%2Fpi-desktop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fayuayue%2Fpi-desktop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fayuayue%2Fpi-desktop/lists"}