Repository navigation
v0.7.9
🚀 新功能
- 设置页会话压缩滑条 — 会话压缩预留与保留近期条数改为百分比滑条(1–50%),按默认模型的上下文窗口换算;数值仍以绝对 token 数持久化(pi 契约不变),检测不到窗口时按 200k 参考窗口换算并给出提示。
- 悬浮球与极简浮窗——收进小球,随手继续对话 — 开启悬浮球后关闭主窗口不再退出,而是收纳成一颗半透明毛玻璃小球;点击展开 480×640 极简浮窗——渲染桌面端同一套界面的专用小窗布局:当前活跃会话的完整对话与输入(可切换模型),主页提供新建会话(选项目、选模型)与继续最近会话,也可切换到任务模式,随时收回小球或退回工作台。浮窗无边框透明;托盘右键菜单新增悬浮球子菜单(显示/隐藏/退出);设置开关即时生效并跨重启保持;聚焦主窗口时自动关闭浮窗,两个窗口不再并存。
- 极简浮窗主页:活动会话直达 — 浮窗主页「最近会话」上方新增「活动会话」区:列出全部打开中的会话,正在运行 agent 的排最前并带脉冲绿点,点击直接进入该会话(跨项目,无需先选项目);数据与悬浮球运行角标同源,主进程推送实时刷新。
- 托盘右键菜单丰富化 — 托盘菜单现在展示应用版本号、「检查更新」(结果走系统通知)、最近/置顶的前 5 个项目(点击直达工作区),以及一键打开数据目录和日志目录;项目集变化时菜单自动重建。
- 托盘图标跟随 Logo 风格切换 — 切换 Logo 风格时窗口与托盘图标成对刷新;打包图标(ico/icns/png)改由 pi-tui 字模生成,并修复字模在画布上偏上 82px 的垂直居中问题。
- Scratch Pad 移入右侧边栏
- 遥测心跳新增功能采用度与使用规模匿名统计 — 每日
app_heartbeat(仅正式包发送,仍由设置里同一个开关控制)现在附带一份匿名快照:操作系统版本与系统语言、安装模式、界面语言与主题、启动耗时,会话/项目/活跃 Agent/定时任务/飞书 Bot 数量,9 个功能开关的状态(桌宠、悬浮球、Web 服务、CUA、standby 运行时池、WSL、桌面/Pi 代理、飞书),以及被隐藏的内置模块清单。这些数据用于版本/平台/功能采用度看板,指导开发优先级。隐私口径不变——不收集项目路径、项目名或文件名、消息内容与凭据——设置页的遥测说明已同步更新为新口径。 - TokenDance 充值(Agent 支付) — 配置页的 TokenDance 卡片多了「充值」入口:填整数金额(1–100000 元)生成支付二维码,微信或支付宝扫码后每 3 秒确认一次状态,只有服务端确认
paid才提示到账并自动刷新余额;支付宝 App 深链只在手机端单独显示为「支付宝支付」按钮,由你点击才唤起(旧会话没有深链时引导改用扫码),不自动跳转。请求直连 TokenDance 官方支付接口、只带你自己配置的 API Key,额度进入该 Key 所属的 TokenDance 账户——弹窗会显示目标 Key 的尾号供你核对,供应商端点若被改到第三方中转域名则直接拒绝充值,避免把钱充到中转账号。会话过期、失败、退款等终态都会说明结果,可随时重新创建。 - standby 运行时池——新会话秒级激活 — 此前新建 pi RPC 会话要花约 8.5 秒(spawn + 握手)才吐第一个 token;现在草稿创建后 PiDeck 会在后台预热一个完成全部握手的 pi 进程待命(
settings.standbyRuntimeEnabled,默认开),下次激活新会话直接认领、几乎秒开,模型与权限热更新语义不变。spawn 输入指纹(扩展、代理、pi 路径、启动参数…)任一变化即丢弃预热进程回退普通 spawn,改设置无需重启;信任解析绝不在后台弹窗,也修复了认领后的会话被扫描器误剔的问题(此前会闪回引导页、丢草稿、发送另起进程)。Web 端创建草稿也会预热同一个池,手机上发出的第一条消息同样秒级启动。 - 插件开发接口(能力目录 + AI 开发指南 + demo) — 设置 → 扩展新增「插件开发」页签:列出一个 PiDeck 插件(= pi 扩展 TypeScript 单文件、免编译)可用的全部能力——19 个 GUI 落点(侧栏、输入区、状态栏、终端工具条、时间线事件…)、原生服务(文件选择、系统打开)、42 种声明式 UI 节点,以及 pi 原生扩展点精选表。一键导出双语 AI-PLUGIN-GUIDE.md(文档即提示词,交给任意 AI 就能写出可运行的插件),一键复制内置 demo 插件(单侧栏统计面板,演示命令、事件、GUI 落点与文件服务)。指南还覆盖零代码开放面(自定义主题、提示词/技能商店、自定义 provider、用量探针)——不是所有定制都需要插件。
- 会话导入:Kimi Code / Kimi Work / MinimaxCode — 项目右键菜单的导入器在 Codex / Claude / OpenCode / ZCode / WorkBuddy / Cursor / Qoder 之后新增三个源:Kimi Code(
~/.kimi/code-history)、Kimi Work(kimi-desktop 运行时目录扫描为主索引,WAL 免疫;数据目录三级探测 + 弹窗内手动指定)、MinimaxCode(~/.minimax/v2/sessions,标题读其 sqlite 索引——即 minimaxcode 界面里的会话名,无索引时回退首条真实用户消息、跳过注入上下文块)。三者复用既有管线:cwd 匹配当前项目、按源文件 mtime/size 增量导入、原子写入、幂等重导。 - 适配 pi 1.0.x——资源管理改走 pi 原生配置 — 扩展、技能、提示词模板与资源开关不再维护 PiDeck 侧白名单,改为投影 pi 原生过滤配置(旧禁用记录一次性迁移 + 整包恢复状态),并新增 pi 内置扩展的图形开关面板。MCP 对齐 0.99.2+/1.0 原生语义:项目作用域、
clientRegistration、1.0.1/1.0.2 项目覆盖形态;支持 pi 1.0.0 三态quietStartup、authServerMetadataUrl与登出文案,第三方 MCP 接管提醒按运行时会话来源判定。字符串形态的包条目可正常启停,整包停用后开关不再弹回。 - 应用内 pi 更新详情与更可靠的更新器 — 有新版 pi 时可在应用内拉取并展示官方 changelog(恰好覆盖你将升级的区间);会话显示的 pi 版本按会话静默复核,外部升级 CLI 不再长期显示旧版本号。更新链路两端都更稳:pi/DSH 更新流程重试与报错改进;便携版 node 软链修复加五档退避(50→900ms)+ 诊断,杀软短暂锁住新建软链不再静默破坏便携安装。
- CUA:全链路修复 + 免审批开关 — 桌面操作能力一波修复:截屏不再返回 1×1 空图、多显示器坐标正确、审批队列双击不再双卡片(一次操作一张卡)、SendInput 改手工打包 40 字节 Buffer(不再静默全灭)、koffi 原生绑定缺失时降级而非启动崩溃。新增
cuaAutoApprove设置可跳过逐次审批卡(默认开启;在设置中关闭即可恢复逐次确认桌面操作)。 - Logo 与应用图标换 pi 官方 TUI 三色像素标 — 外观设置可切换 Logo 风格为 pi 官方 TUI 三色像素标(现为默认),窗口/任务栏/Dock 图标随风格运行时切换(免重启,安装包图标不变);像素标按 1:1 正方形渲染不再压扁,classic 预览对比度可读,开屏切换脚本改为 CSP 内容哈希白名单不再被静默拦截。
- Web:新建会话可选后端 — Web 端新建会话面板支持选择后端(pi / DSH / 生图);仅对新建零消息草稿开放,历史、复制、克隆、fork 会话一律锁定原后端,旧会话不会被悄悄换运行时。
- 会话治理:外部删除清理与垃圾进程回收 — 在 PiDeck 外删掉的会话(rm、其他工具)现在会从侧栏清理而不是残留幽灵条目;watchdog 回收会话已不存在的遗留 pi 子进程。
- UI 精致度四波 + 全局动效补齐 — tab 激活态、面板头、文件树选中、滚动条、壁纸、悬停反馈与阴影统一到语义 token(300+ 处),清理死 CSS 约 1770 行,补齐此前缺失的全局动效词汇(加载/开合/弹层/微交互,减少动态效果下降级);用户可见文案一次收口(pi→Pi、dsh→DSH、句尾 "..." → "…"、标签行全角冒号)。官网同步视觉优化(icon 特性卡/青绿渐变/深色适配/导航收敛/复制按钮/截图网格对齐)。
🐛 修复
- 新会话保留上次使用的模型 — 选择器里有但 models.json 中不存在的模型(如由登录态管理的供应商模型)之前被当作已删除,未配置默认模型时每个新会话的模型选择器都是空的;存在性检查改为接受完整 pi 模型目录,上次使用(或刚选过)的模型重新自动预填。
- 启动不再闪现引导页 — 开屏遮罩等内容就绪再撤,首帧慢不再闪一下引导页;被 CSP 静默拦截的 Logo 风格切换脚本改为内容哈希白名单。
- Win11 贴边窗口精确恢复 — 贴边(拖边/贴靠布局)后再打开的窗口恢复精确位置与尺寸,不再回到未贴边几何。
- 会话时间戳不再无故刷新(#314) — 重新附加运行时会改写会话元数据、让没动过的会话看起来「刚更新」;attach 幂等化 + 修复永真的路径守卫,侧栏排序不再跳。
- 同轮多条 AI 回复编辑保存不再重复写入(#310) — 一轮含多条回复时,内联编辑保存会把中间回复重复写回;现在编辑往返逐字节一致。
- 桥扩展时间线条目恢复渲染;ask 单问题卡预填修复 — GUI 桥扩展的
appendEntry贡献(插件面板往时间线推条目)恢复渲染;单问题卡不再丢失预填内容。 - 供应商编辑页不再覆盖未保存草稿(#311) — 父组件刷新不再把正在编辑的 API 类型与 User-Agent 草稿冲掉。
- 项目作用域资源:信任接线、MCP 双入口、继承停用 — 项目作用域提示词/技能/MCP 资源四处修复:信任决策接通、MCP 面板双入口一致、停用继承正确、
exposure别名归一。 - Web 批量修复 — 流式追赶不再卡在慢回合后面(「加载更多」入口挪到消息流顶部);上下文环点击开详情弹层(移除 rewind 检查点展示);移动端会话菜单改底部动作面板不再被侧栏裁剪;窄屏 composer 工具行给发送按钮让位不再挤压;会话标题左对齐不再居中漂浮;品牌位跟随 Logo 默认风格不再硬编码 classic;头部状态指示器收紧为小圆点、移动端标题不再被挤没,DSH 权限改为单个盾牌图标按钮(下拉选档并勾选当前档),权限图标改为优先读 runtime 状态、轮询不再把图标弹回旧值。
- 零碎修复 — 简洁模式侧栏折叠按钮不再与顶部导航条重复;抽屉 tab 关闭 X 收进 tab 角标;设置错误兜底页布局恢复并带恢复操作;输入框不再出现聚焦黑圈;扩展列表加载显示旋转占位;修复终端目标 TDZ 崩溃与 i18n 键集漂移;窗口图标 asset 路径修正;重试状态行改为实时倒计时,不再显示静止等待文案。
- 导入会话在严格供应商下报 400(tool_calls)已修复 — Claude/Qoder/Codex 转录里的废弃分支(rewind、中断续聊)和拆分的并行工具调用可能产生「孤儿 tool 结果」,导致导入会话切换模型或继续对话时报
Messages with role 'tool' must be a response to a preceding message with 'tool_calls'。导入器现在重建活链、合并连续 assistant 运行、把孤儿 tool 结果降级为用户文本;旧导入产物自动标记过时并引导重新导入。 - 小窗模式稳定性与体验批量修复 — 小窗切换项目不再落到陈旧子代理死链记录上报 ENOENT:catalog 缓存分支按最近更新排序并过滤文件已消失的记录;外部删除清理改为祖先目录锚点爬升,父会话目录被整体删除的子代理会话不再永久残留。小窗输入底栏隐藏安全权限/快捷消息/Git 分支/语音输入并截断长模型名;空态新建会话改为项目下拉(原固定建到第一个项目);小窗与任务模式可从两侧标题栏互相切换;小窗外壳改由系统接管边界感(DWM 投影 + Win11 圆角),叠在其他软件上可分辨。
- 零内容草稿自动清理 — 小窗/主窗「新建会话」后从不输入的空白草稿,不再永久堆在侧栏(此前要重启才消失):运行期每 5 分钟自动剔除闲置超过 30 分钟且零内容的 pi 草稿;命名过、选过模型、预选过 DSH 权限/agent/代理的草稿一律豁免,正在使用或聚焦中的会话不受影响,删除后侧栏静默刷新。
- Web 端 DSH 工具面板适配窄屏 — 目标/子代理/技能/插件 tab 条改为横向滚动不再裁掉最后一个 tab;内容区限高 60vh 内部滚动,长插件清单不再把 Dialog 撑出屏幕。
- Web 端会话输出实时同步 + 手动刷新 — 手机/Web 端打开或切回会话时自动后台重拉最新消息(stale-while-revalidate),桌面端跑出的输出不再停留在旧快照;运行结束的瞬间自动收尾拉取一次,防最后一段输出漏同步;会话「···」菜单新增「刷新会话消息」,随时可手动同步。
- Web 端「prompt dispatch is in progress」竞态报错修复 — 发送消息的瞬间并发点停止/重启/激活会话,会撞上毫秒级的发送窗口直接报错;现在这几条链路会等待发送窗口结束再继续(最多 2 秒),只有真卡死才报错。
- 悬浮窗贴边、置顶语义与系统边界感 — 贴边停靠真正贴住屏幕边缘(不再留 24px 间隙);开启「固定在最上方」后,主窗口激活不再自动隐藏悬浮窗,始终显示直到手动隐藏或关闭开关;简洁模式外框改由系统接管边界感(DWM 投影 + Win11 圆角,与任务模式同款观感),叠在任何背景上都可分辨;悬浮球悬停不再弹出长标题气泡。
- 悬浮窗流式输出、页面记忆与角标开关 — 悬浮窗内消息改为流式实时渲染,不再失焦后才能看到全部内容;收起再展开恢复上次浏览的会话页,不再跳回主页(点主页按钮手动返回);悬浮球/悬浮窗的运行中任务角标数量可在设置中关闭。
- Ctrl+Tab 循环切换会话标签页 — 与浏览器同款惯例:Ctrl+Tab 切到下一个会话标签页、Ctrl+Shift+Tab 切到上一个,到头回绕;输入框聚焦与内置浏览器内同样生效;键位可在设置 → 快捷键中自定义(macOS 跟随 Chromium 惯例用 Control+Tab,避开被系统占用的 ⌘Tab)。
- Pi 内置扩展开关与工具状态改按 pi 真实规则解析 — 扩展面板此前用简化精确匹配投影内置扩展开关,存在 glob 规则时开关状态可能与 pi 实际加载结果不一致,且切换可能冲掉你的 glob 条目;现改按 pi 原生语义求值(全局
!→+→-顺序、项目层末条覆盖、minimatch 通配),写回不动你的其他条目。面板同时解析defaultTools全局/项目两层继承,tool-search、codemode 的工具状态显示正确;切换作用域后旧异步读不再覆盖当前面板。 - demo 插件不再被误判为内置扩展 — 内置 demo 插件文件名恰好命中旧的
pi-deck-前缀内置判定,复制进用户扩展目录后被当成内置扩展:显示内置徽标与包版本、开关写错配置分支(行甚至可能永久消失)、卸载报「内置扩展不可卸载」。内置身份现只认-e注入白名单:demo 像普通扩展一样启停、卸载(进回收站),真内置保持保护——且内置扩展先禁用后也能看到移除入口。 - DSH 会话在 0.7.8 runtime 布局变更后恢复失败已修复 — 组合 DSH bundle 移入
~/.dsh/.pideck/profile/后,预设 skill 里的 loader 表达式(相对 bundle 解析@deepseek-ai/dsh-agent-preset)再也走不到 runtime 的 node_modules:宿主启动时预设挂载失败并固化,该预设所有历史会话 resume 报「Cannot find module」,会话级重启也无法恢复。宿主现在在 dump bundle 时把这类表达式预解析为 runtime 绝对路径;bundle 每次宿主启动重新生成,受影响会话升级即自愈,无需数据迁移。 - 内置浏览器不再在 webview 就绪前丢导航 — guest webview 尚在挂载时调用导航(首次挂载、UA 恢复、URL 更新、卸载重挂竞态)会报「The WebView must be attached to the DOM and the dom-ready event emitted」;导航调用现在等待 dom-ready 而不是与它竞速。
- Web 服务:runtime 重启过程可见,设置开关不再挂死 — Web 端重启会话 runtime 现在响应头先行 + 每 2 秒心跳字节,pi 冷启动 8–10 秒期间浏览器持续确认连接存活而非转圈黑盒;设置页关闭 Web 服务曾永久挂起(dev 代理 upgrade 劫持的 websocket 绕过了
closeAllConnections)——劫持 socket 现已登记并在 stop 时统一销毁,另有 1.5 秒超时兜底。 - Web 端消息编辑/删除改为即时生效(乐观更新) — runtime 编辑/删除要走「停 agent → 改文件 → pi 重载」全链路(数秒),Web 端此前一直盯着旧气泡干等;现在本地先落地与桌面编辑器相同的终态(编辑只换文本 part、删除只摘一条回复,确认后即时替换并带色环反馈、删除播放退场动画),服务端完成后静默对齐,失败回滚到服务端真相。
- 模型目录更新(pi-ai 1.0.4) — 内置 pi-ai 目录升级到 1.0.4(1604→1620 个模型),新发布模型出现在模型选择器中。
🙏 致谢
特别感谢 微时佬友 和 橙子 为软件开发提供的订阅服务 🎉