PI CODING AGENT · INSTANT WEB UI

为 pi 智能体,即刻披上一袭 Web

指向一处目录或仓库,pi-web 自动载入你的 agent——奉上流式对话、工具、 附件与 Canvas 画布,一套生产可用的前端,几近零额外工程。

pi-web — aigc-agent
画一只宋代汝窑天青釉的山水意境,淡远些。
π

构思构图:远山、月、留白,取天青釉色……

好的,已生成并放到右侧画布。
image_generation · completed
追问或继续编辑这张图…
opus · thinking
Canvas代码预览
artifact · 天青釉山水 · 1024×640
以 pi 为内核

pi 为核,一套协议,
Web 为其延展

内核始终是 pi。无论你的自定义 agent(经 SDK runRpcMode),还是通用 pi --mode rpc,对外都说同一套 RPC 协议;pi-web 只在协议之上为 pi 添一层 Web 延展——桥接完全复用,pi 的扩展、skills 与工具原样直通。

pi 的 extensions / skills / 工具原样直通
一会话一进程,干净隔离
zsh
# 指向任意 pi agent 源,即得一站
$ npx pi-web ./examples/aigc-agent

✓ 解析源 · 探测到 index.ts → custom 模式
✓ 会话进程已就绪
➜ http://localhost:3000
defineAgent

写 agent,像描述一个对象

一个 index.ts,默认导出一份 AgentDefinition——系统提示、自定义工具、模型,皆为字段。 defineAgent() 只为类型推断,零运行时强依赖;省略 model 即继承你 pi 登录的默认。

index.ts
import { defineAgent } from "@blksails/pi-web-agent-kit";
import { defineTool } from "@earendil-works/pi-coding-agent";

const echo = defineTool({
  name: "echo",
  description: "Echo the text back.",
  async execute(_id, { text }) {
    return { content: [{ type: "text", text }] };
  },
});

export default defineAgent({
  // model 省略 → 继承 ~/.pi/agent 默认
  systemPrompt: "You are a helpful agent.",
  customTools: [echo],
});

视觉、附件、画布,开箱即用

那些重复且昂贵的前端工程,pi-web 已替你备好。

视觉与附件

图片/文件上传落对象存储、签名分发;base64 喂 LLM 识别,或文件交服务端工具处理。

工具与产出回流

工具经 attachmentId 解析文件、执行、落库回流,产出可在下一轮再次引用——闭环。

Canvas 画布 / Artifact

图像、报告、网页以独立画布呈现于侧栏,可切换代码与预览,并随对话实时更新。

任意 Provider

内置 Provider 直连,
自定义 Provider 任接

pi-web 复用 pi 的 Provider 体系——一个 Provider 即一处模型来源。 OpenAIAnthropic、Google 等内置 Provider 开箱直连; 自定义 Provider(如 阿里云百炼、DeepSeek 等国内服务,或 NewAPI 这类 OpenAI 兼容网关), 只需在 ~/.pi/agent/models.json 登记 baseUrl 与 apiKey。模型即现于设置页 按 provider 分组、可搜索的下拉里。

OpenAI Anthropic Google 阿里云百炼 DeepSeek NewAPI
~/.pi/agent/models.json
{
  "providers": {
    "my-gateway": {
      "name": "My Gateway",
      "baseUrl": "https://example.com/v1",
      "apiKey": "sk-...",
      "api": "openai-completions",
      "models": [
        { "id": "some-model", "name": "Some Model" }
      ]
    }
  }
}
分层开放

可整站部署,亦可按需嵌入

语言无关的 HTTP/SSE 协议 + 单向收敛的分层包 + 渲染器注册表。从协议到组件逐层解耦—— 既能整站起,也能把 Headless hooks 嵌进你自己的 React 栈。

@blksails/pi-web-protocol @blksails/pi-web-server @blksails/pi-web-react @blksails/pi-web-ui @blksails/pi-web-agent-kit
app.tsx
import { PiChat } from "@blksails/pi-web-ui";
import { usePiSession } from "@blksails/pi-web-react";

export function App() {
  const session = usePiSession({ source: "./my-agent" });
  return <PiChat session={session} />;
}

把「写好一个 agent」到「它有了产品」的距离,压到接近零。

五分钟,从一处目录到一个可对外的流式 Web 应用。