LOCAL-FIRST CODING CLIENT

四个工具,
一整间工作室。

给 Agent 更少的内置工具,
给你更完整的编码现场。

ZPI 是本地运行的 AI 编码桌面客户端。模型读代码、改文件、跑命令;对话、变更、终端与预览留在同一界面。四工具内核保持精简,系统内置插件按需配置与启停。

Node.js 24 · npx @zpi-dev/desktop · 会话与配置存于本机

四个基础工具多模型自由切换本地优先内置插件按需使用

01 / PHILOSOPHY

极简,是有意识的取舍。

不把客户端变成一套庞大的 Agent 平台。少一层抽象,少一组常驻工具,少一点选择噪声。

01

四个工具就够开始

读、写、精确编辑、执行命令。搜索、构建、测试和网络请求交给工作机已有的命令行程序,不为每件事增加专用工具。

readwriteeditbash
02

不内置 MCP、REPL、Browser Use

Agent 已经能写脚本。需要浏览器自动化,就让它编写控制脚本并通过 bash 执行,而不是挂上一整组常驻浏览器工具。

需要本机具备相应的运行环境和依赖。

03

小内核,系统插件按需使用

提问、联网搜索、子智能体协作、后台命令、记忆、自动标题和任务通知,由系统内置插件提供。在“设置 → 插件”选择所需能力,无需另外安装。

内置插件初始默认启用,记忆默认使用短记忆;联网需配置凭据并启用提供商。新任务首次发送保存插件配置;详见插件与生效范围。

02 / MODEL FREEDOM

工具精简,模型选择不精简。

用你已有的账号和 API。根据任务换模型,而不是为了模型更换整个工作流。

OAuth 套餐授权

接入你的 ChatGPT

通过浏览器登录并授权 ChatGPT 套餐访问。不用复制网页 Cookie;使用授权令牌调用 Responses API,自动续期并获取账号模型目录。

仅在官方 Responses 地址启用 WebSocket 连接复用与增量续接,长任务少传重复上下文;连接或代理失败时回退 HTTP。可用模型、额度和访问资格取决于账号。

不绑定供应商

国产模型,也能自己配

预置常用国产提供商的套餐和按量 API 配置。其他兼容服务或本地模型,可填写地址、API Key 和模型参数接入。

按服务端能力选择协议。高级配置支持推理等级映射和受限参数表达式;兼容性取决于服务端,不宣称支持任意模型。

已有配置,无需重填

从环境变量自动发现

启动时识别预置提供商的 API Key,初始化尚未添加的配置。已经手动设置过的提供商,不会被自动发现覆盖。

DEEPSEEK_API_KEYZHIPU_API_KEYMINIMAX_API_KEYMIMO_API_KEY以及 OpenAI 与按量 API 的对应变量

03 / COLLABORATION

主任务继续,
你可以再问一句。

「为什么这样改?」
「还有没有另一种方案?」

在右侧打开辅助对话,继承创建时的稳定上下文。不必重新解释背景,也不用把追问插进主任务。需要分工时,让主 Agent 委派子智能体;需要确认时,让 Agent 直接发起结构化提问。

  • 辅助对话有独立的消息、模型、队列和运行状态
  • 子智能体默认包含 general-purpose 与 Explore,也可自定义
  • 关闭辅助对话或停止单个子任务,不停止主任务
协作关系示意
主任务

实现登录页面

读取项目修改文件执行测试
用户手动开启,或由主 Agent 显式委派
辅助对话

为什么选择这个实现?

继承创建时的上下文,之后独立回答。

子智能体 · Explore

查找现有登录实现

使用各自工具范围,并行处理独立任务。

结构化提问

使用哪种登录方式?

邮箱验证码密码登录稍后决定

辅助对话、子智能体和主任务共享工作目录,提示词不是权限隔离。需要独立检出目录时,使用独立任务的 Git 工作树。

04 / EVERYDAY WORK

常用的留下,复杂的拿掉。

从提出需求到检查结果,保留日常编码真正需要的那几步。

对话与输入队列

执行中也能补充需求:排队、编辑、排序、暂停或立即发送。停止只结束当前执行,已完成的文件修改仍然保留。支持消息编辑、分叉与带冲突检查的回退。

文件与预览

文本、Markdown、Mermaid、SVG、HTML、图片、音视频、PDF、DOCX、XLSX 与 PPTX 在应用内查看。源码支持行号定位和行备注,备注直接进入当前草稿。

看清每一处变更

审查未暂存、已暂存、全部分支或上一轮更改;聊天中的文件 Diff 只展示对应轮次或工具操作。轮末统计净变化,改回原样不会累计中间改动。

项目、分组与工作树

按项目、分组或最近更新浏览任务;分组支持七色、折叠与拖拽。新任务可创建独立 Git 工作树,默认 detached HEAD,不自动新增分支。

面板与完整视图

右侧标签承载文件、浏览器、终端、审查与辅助对话,状态按任务恢复。完整视图把当前对话放进独立标签,浮动输入框可收起、展开或拖动吸附。界面主题与代码预览主题分别配置。

搜索、快捷键与通知

⌘K / Ctrl+K 查找任务、工作区文件和操作,⌘F / Ctrl+F 搜索当前任务与变更。快捷键可逐项改键;任务结束、中断或失败时可按需发送系统通知。

05 / CONTEXT & EXTENSIONS

上下文按需提供,能力按需开启。

引用、指令、技能与扩展都有明确边界;不需要的功能保持关闭。

CONTEXT

引用与上下文

@ 引用工作区文件,# 选择已有会话,选中文字与行备注加入草稿。引用会按数量、长度和文件边界解析,不是把整个工作区自动上传。

接近预算时自动压缩,也可用 /compact 手动压缩;原始历史仍保存在本机。

COMMANDS

指令、技能与自定义命令

/init 生成项目指令;技能放在 .agents/skills 或 .zpi/skills,通过 $ 菜单选择。常用提示词可保存为 /名称 命令,支持参数、技能引用与 Shell 模板。

项目命令覆盖用户命令;可从其他客户端显式导入。

BACKGROUND

后台命令与终端

bash 可显式后台执行,或用 TaskOutput 读取、TaskStop 终止。右侧终端标签使用本机 Shell,保留独立 PTY 与输出,适合手动运行开发服务器和测试。

应用退出会清理所属后台命令;异常退出后不凭旧 PID 认领进程。

WEB

联网搜索与来源

web_search 与 web_fetch 由独立的 DeepSeek 凭据提供,可与聊天模型分开选择。回复旁的“来源”汇总当前轮成功结果,点击在内置浏览器打开原文。

插件默认启用,配置并启用提供商后生效,按任务保存;只抓取无凭据的公网 HTTP(S) 地址。

MEMORY

短期与长期记忆

记忆插件提供两种互斥模式:短期模式维护用户与项目的 MEMORY.md,长期模式从历史会话提取摘要并由后台 Agent 增量整合。默认启用短记忆。

当前用户要求与项目指令始终优先。

AGENT SDK

独立接入你的应用

TypeScript Agent SDK 提供查询、流式消息、工具控制、Hook 和会话恢复;ZPI 桌面与外部应用共用同一套执行入口。

只支持 TypeScript;支持的接口按 Claude Agent SDK 命名与协议对齐,应用自行选择工具和插件。

06 / DEVELOPER

内核独立,
界面只是入口。

@zpi-dev/agent-sdk 提供独立的 TypeScript 接口,不依赖 Electron。ZPI 桌面与独立的 zpi-quick-chat 共用查询协议;七类系统插件的运行时独立于桌面宿主,通过通用接口接入模型、存储和通知。

  • tools 选择工具,allowedTools 与 canUseTool 控制调用
  • 内存、文件或自定义会话存储
  • 用 defineTool 定义工具,参数类型自动推导,返回文本或 JSON
  • 诊断页汇总错误日志、等待与重试,以及 TTFT、输出速度和 token 用量
SDK 文档 npm run example:sdk

SDK 示例需要 Node.js 24 和 DEEPSEEK_API_KEY,会话仅保存在内存中。公共 SDK 的 Glob、Grep 暂不支持。

文档站:打开文档(也可在仓库内运行 npm run docs 或 npx zpi-docs)。中文文档支持全文搜索、Mermaid、源码查看与深浅色主题。

@zpi-dev/agent-sdkTypeScript
import { defineTool, query } from "@zpi-dev/agent-sdk";
import { Type } from "typebox";

const lookupOrder = defineTool({
  name: "lookup_order",
  description: "查询演示订单的状态",
  parameters: Type.Object({ orderId: Type.String() }),
  execute({ orderId }) {
    return { orderId, status: "已发货" };
  },
});

for await (const message of query({
  prompt: "请调用 lookup_order 查询订单 42 的状态。",
  options: {
    model: "deepseek",
    persistSession: false,
    tools: [lookupOrder.name],
    zpi: { customTools: [lookupOrder] },
  },
})) {
  if (message.type === "result") {
    if (message.subtype !== "success") throw new Error(message.errors.join("\n"));
    console.log(message.result);
  }
}
ai协议、认证与流
agent执行循环与工具调度
coding-agent会话、四工具与上下文
agent-sdk公共 TypeScript 协议
builtin-plugins可选系统插件与运行时
plugin-compat外部插件适配
ui对话组件与展示模型
desktopElectron、窗口与 IPC

数据留在本机

业务状态使用 SQLite,会话事实使用 JSONL v2;搜索与投影索引是可重建的派生数据。备份时复制完整数据根。

凭据谨慎保存

系统加密可用时加密保存,不可用时只留在本次应用内存。公共设置与普通日志不承载完整密钥。

边界如实说明

没有产品遥测;但使用云端模型时,所需上下文仍会发送给所选提供商。联网搜索另外把搜索词或 URL 发给网页服务。

07 / GET STARTED

从一个任务开始。

安装 Node.js 24,用 npx 直接打开工作区。

npx @zpi-dev/desktop

查看 npm 包
  1. 01

    通过 npm 安装或 npx 启动

    执行 npx @zpi-dev/desktop,或运行 npm install -g @zpi-dev/desktop 后使用 zpi-desktop。

  2. 02

    连接你常用的模型

    登录 ChatGPT,填写 API Key,或让环境变量自动初始化预置配置。

  3. 03

    选个项目,描述需求

    检查变更和结果,必要时开辅助对话、委派子智能体,或换个模型继续。

桌面端不支持 Windows,当前主要在 macOS Apple Silicon 上验证。使用需 Node.js 24 与 npm,安装时需允许依赖安装脚本下载 Electron 运行环境;升级使用 npx @zpi-dev/desktop@latest,或重新执行 npm install -g @zpi-dev/desktop@latest。

Agent SDK 保持跨平台,包含 Windows 支持:npm install @zpi-dev/agent-sdk。Quick Chat:设置 DEEPSEEK_API_KEY 后执行 npx @zpi-dev/quick-chat,或通过 npm install -g @zpi-dev/quick-chat 安装后运行 zpi-quick-chat(需 Node.js 24 与 Apple Silicon Mac)。

A FEW CLEAR BOUNDARIES

把边界也说清楚。

ZPI 桌面端支持 Windows 吗?

不支持。桌面端的 Windows 专用实现和测试已移除,npm 安装和 CLI 启动会拒绝 Windows。 独立的 @zpi-dev/agent-sdk 保持跨平台,包含 Windows 支持;SDK 的 Bash 工具需要系统中有可用的 Bash。

没有遥测,是否意味着所有内容都不出本机?

不是。会话与配置在本机保存,但使用云端模型时,所需上下文仍会发送给你选择的提供商。联网搜索另外把搜索词或 URL 发给网页服务。ZPI 不采集产品遥测,不能替第三方服务承诺数据处理方式。

ChatGPT 接入能保证不封号吗?

不能。ZPI 使用 OAuth 登录与套餐访问授权,不要求复制网页会话 Cookie,也不以绕过风控为目标。账号规则、额度和访问资格由 OpenAI 决定,请遵守提供商条款;模型目录能列出模型,也不代表账号一定有调用权限。

辅助对话是子智能体吗?

不是。辅助对话由你手动开启,继承创建时的稳定上下文,独立回答后续问题,不自动承接主任务。子智能体由主 Agent 显式委派,适合独立的分工任务。两者都共享父任务工作目录;如要分开代码修改,可使用独立任务的 Git 工作树,但工作树不是权限沙箱。

不支持 Browser Use,为什么有网页预览?

网页预览是供人查看结果的桌面面板,不是 Agent 的控制工具。需要自动化时,Agent 可以写浏览器控制脚本,通过 bash 运行;本机须具备对应依赖。

只有四个工具,会不会不够用?

内核只保留读、写、精确编辑和执行命令,搜索、构建、测试、Git 与网络请求都通过 bash 使用已有程序。七类系统内置插件按需提供提问、联网、协作、后台命令、记忆、标题和通知。公共 SDK 另提供标准工具适配与工具选择接口。

系统内置插件需要安装吗?默认都关闭吗?

内置插件随应用提供,在“设置 → 插件”管理,初始默认启用;记忆默认使用短记忆,联网搜索配置服务凭据并启用提供商后生效。对应功能页共享同一份设置,新任务在首次发送时保存插件快照。也可从本地文件夹添加支持的 Claude Code/ZCode 插件;使用方法见插件文档。

数据存在哪,怎么备份?

macOS 正式版默认在 ~/Library/Application Support/ZPI/,开发版与 Preview 使用另一套目录(两者默认共用)。正常退出全部写入者后,复制完整数据根和受控附件;运行中只复制一个 SQLite 文件可能漏掉 WAL 或得到不一致组合。history.sqlite 是派生索引,不能通过删库“修复启动”。

能在脚本里复用 ZPI 的内核吗?

可以。@zpi-dev/agent-sdk 提供标准工具、查询与流式消息、会话恢复和插件接口。设置 DEEPSEEK_API_KEY 后运行 npm run example:sdk, 即可通过 query 和 defineTool 查询演示订单;具体接口见SDK 文档。

更少的工具。更完整的现场。

在 GitHub 上了解 ZPI