智能体编码,不应只是VS Code上附带的聊天框

Hacker News Top 产品

摘要

Polypore 是一个开源的智能体桌面IDE,具有可停靠面板、内置MCP服务器和扩展SDK,专为智能体驱动的开发而设计。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/06/17 17:42

evanklem/polypore 来源:https://github.com/evanklem/polypore

Polypore 智能体桌面 IDE

语言无关,操作系统无关。每个表面都是可停靠的面板:拆分、重新排序、关闭不需要的。内置面板覆盖大多数工作流。如果不够,还有 SDK。

Tauri 2 · React 18 · Dockview · Monaco · MIT · 无遥测


演示

https://github.com/user-attachments/assets/a3961bf3-46cd-4168-8e12-9acfcb2bf6b7


安装

从最新发布版下载对应平台的构建包(https://github.com/evanklem/polypore/releases/latest)。首次安装后 Polypore 会自动更新。

平台文件
Linux.AppImage(任何发行版)、.deb(Debian/Ubuntu)、.rpm(Fedora/RHEL)
macOS.dmg(Apple Silicon 或 Intel)
Windows_x64_en-US.msi_x64-setup.exe

在 Linux 上,AppImage 需要 FUSE(Arch 上为 fuse2)。赋予执行权限并运行:

chmod +x Polypore_*_amd64.AppImage
./Polypore_*_amd64.AppImage

如果希望从源码构建,请参见下方的入门


理念

智能体工具领域变化极快。合适的模型、CLI 和编排模式变化速度远超典型 IDE 的发布周期。Polypore 的结构设计就是为了跟上节奏。

每个表面都是一个沙盒化的面板,背后是共享契约。IDE 的任何部分都可以在不触及核心的情况下进行替换、扩展或移除。

这不是一个后来加上智能体面板的代码编辑器。布局、内存系统、调试工具和 MCP 服务器都围绕智能体作为主要参与者而设计。


面板

+ 标签按钮可以访问八个面板:

面板功能
claudeClaude CLI 终端,支持斜杠命令快速启动
codexCodex CLI 终端,支持斜杠命令快速启动
preview实时运行输出:浏览器、CLI 或任何开发服务器
editorMonaco 编辑器,包含按项目的诊断信息
diff-stack并排对比与可回溯的历史记录源
terminal独立 pty 终端
debug验证运行和诊断信息
memory项目知识库,支持 [[wikilinks]] 和上下文清单
agent编排画布、技能、MCP 管理和密钥

SDK 与插件

第三方面板是沙盒化的 iframe,使用与内置面板相同的 HostRpcServer 契约。用任何框架编写插件,放入 .polypore/plugins/<plugin-name>/,它就会出现在面板条中。智能体可以通过 MCP 服务器像驱动内置面板一样驱动它。


polypore-ide MCP 服务器

Polypore 附带一个 Node MCP sidecar。Claude Code 会自动从 .mcp.json 中拾取它。通过 22+ 个工具为智能体提供 IDE 直接控制:

命名空间智能体可以做什么
polypore.debug.*启动会话、设置断点、单步执行、捕获 console/DOM/network
polypore.memory.*读写知识库、链接条目、编写交接文档
polypore.verify.*声明并运行验证套件
polypore.tasks.*创建和更新任务,IDE 中实时可见
polypore.phase.*向实时 UI 报告工作流阶段
polypore.secrets.*在看不到密钥值的情况下发起中介 HTTP 请求
polypore.skills.*读取当前技能库
polypore.format.*在编辑器中触发格式化器

密钥代理

密钥存储在操作系统钥匙串中。当 Polypore 启动智能体时,它会从环境中剥离所有已注册的密钥,并替换为 POLYPORE_SECRET_HANDLE_ 哨兵。智能体使用 HTTP 请求调用 polypore.secrets.use;Polypore 注入值并在返回时屏蔽它。模型永远不会看到明文。


Polyflow 技能

packages/polyflow/ 中有 15 个斜杠命令,覆盖完整的开发循环:

/polyflow /polyflow-go /polyflow-brainstorming /polyflow-writing-plans /polyflow-executing-plans /polyflow-tdd /polyflow-iterate /polyflow-debug /polyflow-review /polyflow-design-interface /polyflow-prd /polyflow-improve-architecture /polyflow-qa /polyflow-glossary /polyflow-compact


技术栈

外壳Tauri 2, Rust
渲染器React 18, Vite, TypeScript
面板Dockview
编辑器Monaco
终端xterm.js, portable-pty
MCP sidecarNode, JSON-RPC
持久化SQLite via rusqlite
密钥OS keyring via keyring crate
文件监听notify
契约JSON Schema,代码生成到 packages/sdk/

入门

前置条件: Node 20+, Rust stable (rustup (https://rustup.rs))。Linux 还需要 libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev

npm ci
cd src-tauri && cargo build && cd ..
npm run app

仅开发渲染器(无 Tauri 桥接):

npm run dev

脚本

命令
npm run app通过 Tauri 运行桌面应用
npm run app:build生产构建包
npm run devVite 渲染器运行在 127.0.0.1:1420
npm run typecheck代码生成 + tsc --noEmit
npm testvitest 渲染器测试套件
npm run mcp针对当前工作目录的 MCP sidecar
npm run mcp:smokeJSON-RPC tools/list 冒烟测试
npm run mcp:pipeline-smoke端到端插件 + 技能 + 密钥
cd src-tauri && cargo testRust 测试
cargo clippy --no-deps -- -D warningsRust lint

架构

┌────────────────────────────────────────────────────────────────────┐
│ Tauri 外壳 (Rust, src-tauri/)                                    │
│ ├─ host_broker (HTTP) → 向渲染器发送 Tauri 事件                   │
│ ├─ secret_broker (HTTP) → 操作系统钥匙串,绝不返回明文            │
│ ├─ agent runtimes → 每 CLI 的 stdio 适配器;ACP opt-in            │
│ ├─ pty (portable-pty)                                             │
│ ├─ persistence (rusqlite)                                         │
│ ├─ snapshotter                                                    │
│ ├─ fs_watch (notify)                                              │
│ └─ plugin:// 协议 → 提供 .polypore/plugins/<name>/ 的内容         │
├────────────────────────────────────────────────────────────────────┤
│ 渲染器 (React + Dockview)                                         │
│ ├─ HostRpcServer (packages/host) 所有插件的共享契约               │
│ ├─ PolyporeHost 回环,内置插件使用此契约                          │
│ ├─ PluginLoader 第三方 iframe 使用此契约                          │
│ └─ 内置面板 (plugins/)                                            │
├────────────────────────────────────────────────────────────────────┤
│ polypore-ide MCP sidecar (Node, packages/mcp-server/)              │
│ ├─ 22+ 工具 → host_broker 用于实时状态变更                        │
│ └─ secrets.* → secret_broker,值从不返回给智能体                  │
└────────────────────────────────────────────────────────────────────┘

契约位于 schemas/ 并代码生成到 packages/sdk/src/types.gen.tspackages/sdk/src/validators.gen.ts。编辑架构后运行 npm run codegen


环境变量

POLYPORE_PROJECT_ROOT覆盖工作目录作为工作区根目录
POLYPORE_ENABLE_ACP=1选择加入 ACP 适配器
POLYPORE_CONFIG_DIR密钥元数据位置(默认 ~/.config/polypore
POLYPORE_UPDATE_ENDPOINT覆盖自动更新端点

贡献

参见 CONTRIBUTING.md

许可证

MIT

相似文章

最喜欢的代理式编码工具

Reddit r/LocalLLaMA

作者比较了几种代理式编码工具(Codex CLI、Claude Code、Gemini CLI、OpenCode、Pi),认为Pi最精简且最适合本地模型,赞赏其简洁性以及与Qwen 27B-MXFP8的兼容性。