云展 · Pi 版 — 当前状态梳理

基于 Pi runtime 的项目化 AI 协作平台。一句话目标即可建项目,AI 自主规划、按需审批、显式沉淀产出。下面是一张完整盘点:做了什么、用户怎么走、底层怎么搭。

里程碑 M0 → v1.2 已交付 v1.0 完整 · v1.1 UI 14 项 · v1.2 后端基建 测试门 78 passed · typecheck 0 error 数据口径:docs/PROGRESS.md 快照日期 2026-06-17
01

功能列表

按模块盘点 v1.0(PRJ / THR / PLN / APR / ART / SUB / CRD / MAT)+ v1.1 纯前端体验改进 + v1.2 AgentLoop 监控。状态以磁盘代码与测试为准,没真正落地的如实标「待做」。

✅ 已交付 代码 + 测试落地 🟡 占位 / 半成品 故意推迟或基建已起、未接通 ⏳ 待做 尚未实现
PRJ · 项目管理
一句话建项目 · 目录即真相
8/8 ✅
  • PRJ-01新建项目 仅填目标即落 project.json + 骨架;空目标拒绝
  • PRJ-02LLM 取名 从目标提 4–8 字短名,失败回落启发式
  • PRJ-03稳定 id 识别 目录重命名后按 uuid 仍认得,历史不丢
  • PRJ-04项目列表 扫一层、过滤坏 json/杂目录,不递归
  • PRJ-05关闭项目 仅改 status,目录保留可重开
  • PRJ-06重开项目 closed → active,续聊
  • PRJ-07自动首个会话 建项目即建 thread,目标作首句
  • PRJ-08项目主页概览 多会话时落主页不强进会话
THR · 会话管理
每会话一个 pi 子进程
9/10 ✅
  • THR-01多会话并发 同项目多 thread 共存
  • THR-02独立 RpcClient 每 thread 一个 pi --rpc 子进程
  • THR-03会话骨架 thread.json + messages.jsonl + artifacts/
  • THR-05事件流翻译 + 镜像 Pi 事件→CockpitEvent,turn_end 镜像 jsonl
  • THR-06打断 经 client.abort()
  • THR-07关闭/重开拉历史 sessionId 落盘,重开拉回历史
  • THR-08中途引导 steer 经 client.steer(),区别于打断
  • THR-09子进程池 acquire/release + LRU 闲置回收,软上限 8
  • THR-10模型 / thinking 切换 RpcClient 已具能力,WS 未接(P1)
PLN · 进度 / Plan
AI 自主规划 · 六态状态机
5/5 ✅
  • PLN-01/02task_create / update customTool 写 shared/plan.json
  • PLN-03六态右栏渲染 pending/running/done/failed/cancelled/needs_approval
  • PLN-04Re-plan task_update 增改任务
  • PLN-05待办预热 before_agent_start 注入当前 plan
APR · 审批
高敏感操作前先问一声
6/6 ✅
  • APR-00全工具进 hook 无白名单旁路,纵深防御
  • APR-01/02三类拦截判定 写目录外 · rm/sudo · 带凭据出网
  • APR-03审批 RPC 通道 ctx.ui.confirm() ↔ 后端裁决回灌 stdin
  • APR-04/05审批卡片 UI 类别+命令;批准/拒绝闭环(含热键)
ART · 产出
显式声明才算交付
4/4 ✅
  • ART-01declare_artifact 显式声明 customTool,校验项目内+文件存在
  • ART-02落项目目录 shared/ 或 threads/<id>/,写 _declared.json
  • ART-03右栏列表 共享/局部标签 + 来源会话
  • ART-04预览 md→Markdown · html→iframe · 其余等宽文本
SUB · AI 同事
v1 单会话单 agent
占位
  • SUB-00空态占位 右栏恒显「单 Thread 单 agent;v2 加入」
  • SUB-01~05派遣 / 状态 / 产出回流 / Role 整块推迟 v2(Pi 无 agentId)🟡
CRD · 凭据
首启即引导 · 与 Pi 共用
5/5 ✅
  • CRD-01首次配置卡 检测无凭据 → 填 base URL + API Key/Auth Token
  • CRD-02凭据落盘 AuthStorage 写 auth.json;base URL 持久化
  • CRD-03注入子进程 env 注入 base URL/authToken,即时生效
  • CRD-04共用 Pi 全局凭据 检测到则提示「直接开始」
  • CRD-05凭据修改 对新建会话生效(已运行不热更)
MAT · 初始素材
混合落盘,不预 ingest
待接
  • MAT-01URL → markdown 后端 fetch 落 inputs/;ingest 管线未实现
  • MAT-02文件原样落盘 上传入口未接(v1.1 拖拽仅前端预览)
  • MAT-03预热只列文件名 注入点已具,inputs 写入未通🟡
  • MAT-04inputs 右栏可见 目录骨架已建,列表未渲染
v1.1 · 体验改进(纯前端,参照 Claude Desktop Cowork)
不动后端、不加 WS event;3 个 batch 共 14 项
14/14 ✅
  • batch1顶部面包屑 项目名 · 会话名 ▾,取代 chip 区
  • batch1Working folder 占位 按目录约定渲染固定结构
  • batch2工具调用折叠 chip 连续 ≥3 个合一行,可展开
  • batch2会话标题 derived 取首条 user message 截断作显示名
  • batch2审批热键 Enter 批准 / Esc 拒绝 / Tab 循环
  • batch2复制 + toast 消息/产出路径/工具命令一键复制
  • batch2空状态温暖文案 左栏/主页/右栏空态引导
  • batch3新建按钮收成 icon 品牌行右侧 Plus 小钮
  • batch3固定 / 最近分组 📌 固定存 localStorage,🕐 最近倒序
  • batch3侧栏可折叠 左右栏宽→0 过渡,记忆状态
  • batch3拖拽素材到 composer 前端预览 chip(inputs 入口 v1.2 接)
  • batch3流式光标 streaming 末尾闪烁块,封口转 Markdown
  • batch3Markdown 渲染 标题/列表/表格/代码块/链接
  • batch3HTML 产出平台内预览 iframe srcDoc sandbox,不连外网
v1.2 · AgentLoop 监控(每 20 分钟吹一次哨子)
后端基建已落,调度/路由/开关待接
后端基建
  • v1.2AgentLoopConfig 类型 落 project.json.agentLoop,默认 enabled:false
  • v1.2haiku 总结器 强制 claude-haiku-4-5 一次性 client,80–120 字提醒
  • v1.2间隔配置 + 下限保护 全局 env + 项目级 intervalMs;下限 30s
  • v1.2会话快照读取 最近 10 条 + plan + 产出 喂模型
  • v1.2cron 定时调度 worker 总结器已写,定时器/注入未接线🟡
  • v1.2PATCH 路由 + 前端开关 /api/.../agent-loop + UI 开关待做
02

使用流程

一条典型路径:从首启配置凭据,到建项目、对话、AI 规划、审批、沉淀产出,最后关闭项目(目录保留可重开)。

① 首次启动 · 凭据配置卡 填 base URL + API Key / Auth Token(二选一) ② 新建项目(一句话目标) LLM 提取 4–8 字 dirName 落 ~/yunzhan/<dir>/ :project.json + 骨架 ③ 自动进首个会话 目标作首条 user message pi --rpc 子进程启动 LLM 流式回复(中栏 streaming) ④ AI 自主规划 自调 task_create / task_update 写 shared/plan.json 右栏 Plan 六态状态机渲染 ⑤ 触发审批 rm/sudo · 写目录外 · 带凭据出网 弹审批卡 → 用户批准/拒绝 热键 Enter / Esc 闭环 ⑥ 显式声明产出 declare_artifact 落项目目录 右栏 Artifact 列表 预览:md / html iframe / 文本 可选 · 后端基建 ⑦ 开 AgentLoop 监控 每 20 min haiku 总结当前会话 注入用户身份消息触发下一轮 默认关 · 调度/开关 v1.2 收尾中 ⑧ 关闭项目 仅改 status,目录完整保留 左栏挂灰 tag 随时重开续聊,历史不丢 ↻ 重开 / 新建会话,循环往复 重开后回到对话
03

功能架构

四层:前端三栏 UI ←WS/HTTP→ 后端编排 ←stdin/stdout RPC→ Extension(在 pi 子进程内)→ Pi runtime → Anthropic 网关。审批与 customTool 只能走 extension 注入,是 M0 坐实的契约。

前端 · React + Vite(三栏) 左栏 · 项目列表 📌 固定 + 🕐 最近 分组 / 折叠 / 空态 中栏 · 对话流 streaming / 工具折叠 Markdown / iframe / 审批 右栏 · 工作区 进度 / AI 同事 / 产出 面包屑 / ⚙ 设置 WebSocket(CockpitEvent)/ HTTP REST 后端 · Hono + WS + Node HTTP API 项目 CRUD / 会话 CRUD / 配置 / 产出读取 WebSocket 应用层 CockpitEvent 协议(隔离 Pi 类型) RpcClient 池 per-Thread 子进程 · LRU Event Translator Pi 事件 → CockpitEvent Cred AuthStorage ~/.pi/agent/auth.json AgentLoop Worker per-project · haiku 总结(v1.2 基建) derive · 业务态派生 plan / artifact(文件为真相源) stdin / stdout RPC(extension_ui_request / response) Extension · cockpit-extension(在 pi 子进程内) tool_call hook 三类高敏感操作拦截 → ctx.ui.confirm() customTool ×3 task_create / task_update / declare_artifact before_agent_start 预热 注入 goal + plan + inputs 文件名 纵深防御(fail-closed) 无 UI 时硬拒目录外写 / rm / 携凭据 Pi runtime · @earendil-works/pi-coding-agent Agent 循环 · 工具执行 · session 持久化 Anthropic 网关 → claude-haiku-4-5(默认) / opus(可配)