PI-Desktop
本地优先的 AI 编程智能体桌面工作区:自带模型、打开任意本地项目,权限可控地让智能体完成编码工作。
README 声称权限层、渲染器无 Node 集成、Rust host 承担特权操作,最小权限与用户确认机制有明确设计描述但未见实现代码佐证,扣 1 分;数据流表(本地 JSONL/SQLite、keychain 存凭据、无遥测)透明且主动澄清 local-first 并非完全离网,给 3;依赖安全仅见 CI frozen-lockfile 与 cargo --locked,无审计/扫描证据;外部效果(自动更新、MCP 控制端点)有披露但 `confirm: true 不经用户提示` 是明显信任风险;回滚仅在'当前优先事项'中列为未完成项;开源组件归属(pi-mono 等)有致谢。
package. 与 Cargo.toml 版本一致(0.14.6-rc.4),CI 覆盖 JS/Rust 测试,自洽性可接受;依赖可用性有 lockfile 支撑但 engines 声明 pnpm>=10 与 pinned pnpm 11 存在文档承认的不一致;错误消息与恢复仅声称'尽可能 checkpoint',无具体失败消息证据。
受众(自带模型的本地开发者)与多平台/多发行版环境说明非常详尽(glibc 下限、macOS 未签名处理、Linux 包格式),给 3;能力边界有 Plan/Goal 门控与插件'用户可信代码而非完整沙箱'声明,扣分在缺少具体工具级边界文档;触发精度(MCP 控制目录、slash 命令)有描述但细节在外部文档。
文档索引、安装说明(含各平台包与 glibc 检查)、已知限制(Early Preview、glibc、macOS 签名)都很完整;LICENSE 全文在库,LGPL-3.0 与 Cargo 元数据一致,给 3;changelog/版本纪律有 rc 预发布与 release-docs 检查脚本但未见 CHANGELOG 文件;维护责任因发布者身份未验证仅能从项目板引用推断。
审查面板、diff 检视、会话管理对输出可用性描述充分但属声称;边际价值(桌面工作区 vs 终端 agent、会话导入)与成本(本地/自带模型,无强制中继)合理;均为文档层面,无执行证据,不给满分。
规格索引、E2E 计划、架构文档链接可追溯声明,给 2;但本次仅 4 个源文件,核心权限层/插件沙箱声明无法交叉验证,扣 1 分;事实与推断区分在 README 中表现尚可(明确区分'目标'与'当前优先事项')。
- MCP 控制端点的 `confirm: true 不经用户提示`:启用 PI_DESKTOP_MCP_CONTROL 后本地进程可获得与桌面等同的权限,请仅在受控环境启用并妥善保管 bearer token。
- macOS 默认发布未签名构建,绕过 Gatekeeper 前请自行校验来源哈希;自动更新与安装器回滚仍列为未完成事项,更新前请备份项目与凭据。
- 插件是用户可信代码而非完整沙箱,仅安装可信来源插件;发布者身份未经企业注册表验证。
这个 Agent 能做什么,适合哪些场景?
PI-Desktop(vastsa/PI-Desktop)是一个本地优先的桌面工作区,用于运行 AI 编程智能体,基于 Electron + React 界面、Rust 主机核心(负责权限、文件系统、SQLite 与密钥)和 pi Agent Sidecar(负责智能体循环与模型交互)。它不绑定任何账号或中继服务,支持 OpenAI、Anthropic、OpenAI 兼容 API 以及 Ollama、LM Studio 等本地网关,可按会话切换模型。特权操作统一经过权限层,用户可以审查 diff、命令输出和应用预览。项目提供 Agent / Plan / Goal 三种工作模式、后台子智能体委托、Skills、MCP 服务器和可安装的插件体系(含插件市场)。目前处于早期预览阶段(0.14.x),提供 macOS、Windows、Linux 安装包,采用 LGPL-3.0 许可证。
用户在 Settings → Model configuration 中配置模型提供商与凭据,从侧边栏打开本地项目目录,然后选择 Agent(直接执行)、Plan(先产出冻结的实施计划等待批准)或 Goal(锁定目标与验收标准,智能体自选路径)模式启动工作。智能体读取文件树、编辑代码、运行命令和测试并持续迭代;特权工具经过权限层审查,结果在 Review 面板中检查。大任务可委托给拥有独立上下文的 Subagents(代码探索、多文件实现、调研、测试分析、对抗性评审)。对话以 JSONL + SQLite 索引本地存储并支持检查点恢复;支持 @ 文件引用、斜杠命令、会话分支、运行中排队提示词,并可从 Claude Code、Codex、OpenCode、Pi 导入已有会话。插件通过 .piplug 包从市场或本地安装,可贡献工具、命令、面板、主题、服务、Skills、MCP 服务器和子智能体;以 PI_DESKTOP_MCP_CONTROL=1 启动可开放本地 MCP 控制端点。
- 希望在独立于编辑器/终端的桌面工作区中同时管理多个仓库与长时间编码会话的开发者
- 对修改内容需要先审查实施计划再放行的团队,可使用 Plan 模式处理大型或高风险变更
- 使用 Ollama 或 LM Studio 等本地模型、不希望代码上下文离开本机的隐私敏感用户
- 需要把代码探索、测试分析等子任务拆给后台子智能体并行处理的工程师
- 已在使用 Claude Code、Codex、OpenCode 或 Pi、想把历史会话迁入统一工作区的用户
- 想通过插件、Skills 或 MCP 服务器深度定制智能体工具链的高级用户
这个 Agent 有哪些优点和局限?
- 模型无锁定:支持 OpenAI、Anthropic、OpenAI 兼容 API 及本地网关(Ollama、LM Studio),可在会话中直接切换模型
- 本地优先架构明确:对话以 JSONL + SQLite 本地存储、凭据存于系统钥匙串、无遥测、无强制账号或中继
- 权限与可审查设计:特权操作经过权限层,Plan 模式强制先批准冻结的实施计划,Review 面板可检查 diff 与命令输出
- 多层扩展体系:Skills、MCP、Subagents、插件(.piplug 包与市场)可贡献工具、面板、主题与服务
- 架构上 UI 与特权能力分离:渲染器无 Node 集成,Rust 主机核心独立管理权限、文件系统与密钥
- 处于早期预览(0.14.x),API、扩展接口和部分桌面行为仍可能变化
- 从源码运行需要 Node.js >=22.19、pnpm >=10 和 Rust 工具链;Linux 包要求 glibc 2.35+,Ubuntu 20.04、Debian 11 等旧发行版无法运行
- macOS 默认构建未签名,需手动处理'应用已损坏'提示;签名与公证需手动触发的 CI 流程
- 插件虽经权限隔离,但仍是用户信任的代码而非完整操作系统沙箱,且发布者验证仍在计划中
- 若使用远程模型提供商,提示上下文仍会按该提供商隐私策略发送到其服务器
如何安装或部署这个 Agent?
从 GitHub Releases(https://github.com/vastsa/PI-Desktop/releases/latest)下载对应平台安装包:macOS(Apple Silicon / Intel,.dmg 或 .zip)、Windows x64(NSIS 安装器或便携 exe)、Linux x64(.AppImage / .deb / .rpm / .asar,需 glibc 2.35+,如 Ubuntu 22.04+ / Debian 12+ / Fedora 36+)。macOS 默认分发未签名构建;若提示应用损坏,将 PI-Desktop.app 移入 Applications 后双击 PI-Desktop-macOS-open.command。从源码运行则需 Node.js >=22.19、pnpm >=10 和稳定版 Rust 工具链:git clone https://github.com/vastsa/PI-Desktop.git && cd PI-Desktop && pnpm install && cargo build -p host-core && pnpm build:js && pnpm dev。
如何使用这个 Agent?
1) 打开 Settings → Model configuration,选择提供商(OpenAI、Anthropic、OpenAI 兼容 API 或 Ollama/LM Studio 本地网关)并填入凭据(API 密钥存于系统钥匙串)。2) 在侧边栏添加本地项目目录。3) 在 Composer 中选择模型和推理级别,选择 Agent / Plan / Goal 模式并发出提示词。4) 在 Review 面板检查 diff 和命令输出,批准或继续对话。可用 @ 引用文件、用斜杠命令操作;可通过 Settings → Import 从 Claude Code / Codex / OpenCode / Pi 导入会话;扩展能力通过 Skills、MCP 服务器和插件市场添加。
这个 Agent 与同类方案有什么区别?
README 将自身与'生活在终端、编辑器扩展或托管服务中的编程智能体'作对比(并明确提及 Claude Code、Codex、OpenCode 等可导入会话的工具),定位差异在于:PI-Desktop 提供独立桌面工作区、自带模型、本地优先存储和插件市场,而非绑定某个编辑器或托管服务。