中文
基于 v1.1.0..v1.1.1 的提交整理(含版本提交)。桌面仍是 app:// + 双 IPC 运行时。
本版把「展示层 / 会话投影 / 子代理内联对话 / 问卷卡片」一次落地:渲染器不再猜工具名,顶栏任务与用量改由 host 折叠,子代理可以像主会话一样实时看、续聊、中断。
新增
- 子代理内联对话
- 点顶栏子代理目录或工具行「查看记录」,在主聊天栏打开该子代理 transcript(不再弹对话框)
- 标题栏显示「父标题 | 子标题」,点父标题返回
- 实时 SSE 流式输出(
/api/agent/:parent/child-events),底部可续聊 / 中断 - 子会话通过
?parent=解析,不会出现在侧边栏,也不会另起一套 AgentSession
- 内联问卷(
ask_user_question)- 问题直接嵌在对应工具卡片里:单选 / 多选 / 自己输入,一次提交或跳过
- 不再连环弹出 extension 对话框
- 顶栏会话标题
- Settings 右侧显示当前会话名(或首条消息 / 「新会话」)
- 工具展示层(presentation)
- 一类工具一类卡片:终端 / 阅读 / 搜索 / 网页 / 提问 / diff;未知与 MCP 走通用行
todo从对话里抬走,只留顶栏任务- 子代理工具行增加「查看记录」
- 子代理
report- 子代理可向父模型汇报(
wakeup立刻叫醒 /quiet下一轮);对用户隐藏,不画报告卡片
- 子代理可向父模型汇报(
- 工作区即时刷新
write/edit完成后立刻通知资源管理器,不必等到回合结束
- 流式 t/s 滑动窗口
- 助手消息上的 token/s 改为近 2 秒窗口,不再是全程平均
改进
- 顶栏任务 / 子代理触发器
- 纯文字「N 个任务 ▾」「N 个子代理 ▾」,12px 灰色,无胶囊 / 图标;同时出现时中间竖线
- 文案 Todo → Tasks / 待办 → 任务
- 子代理目录树
- popover 宽约 336、无标题栏 / Bot 图标
- 按深度树形排列,折叠三角,同级预留缩进
- 行两列:左标题 + 活动/状态,右 token 与耗时;点击打开内联对话
- 已完成的子代理仍留在目录,方便回看
- 工具卡片标题更稳
- 结果回来后不再用空参数的
"web"/"search"盖掉原来的查询 / URL - 编辑卡片从 hashline
[path#TAG]头抽出路径,并合并多文件 patch write默认轻量行,有 patch 才升级成 diff 卡片- 用户
!bash 按终端工具行显示,并留在历史里
- 结果回来后不再用空参数的
- 停止 / 压缩 UX
- 点停止立刻回到空闲(不必等 RPC)
- 压缩上下文时也算忙碌,composer 可停
- 权限 / 编辑等扩展确认框增加「停止 Agent」
- 侧栏「运行中」改为 CSS 转圈,并尊重减少动态效果
- 侧栏拖拽条
- 独立 8px 命中区,idle 不再高亮
- Git 状态 / diff
- 面板与资源管理器带
fresh=1绕过 1 秒缓存,写文件后增删行数会重拉
- 面板与资源管理器带
- OAuth 模型设置
- 已登录时不再留一块空说明
修复
- 切会话 / 快速重挂载不再串上一会话的任务或 token 统计
- 本回合把任务清空后,顶栏胶囊会消失(不再复活更早的列表)
- 没有
entryIds的直播行不再因重复 key 乱跳 - 重新打开 Plan 会话时,edit/write 在第一次
set_tools前就不会出现在工具列表里 - 长耗时
debug_run可被会话停止立刻打断 - bash / compaction 行会留在历史(不再只渲染 user/assistant 时被丢掉)
移除
- 项目下拉里的「筛选项目」输入框
- 项目按钮上「其它工作区在跑 / 有未读」小圆点
- 对话里的 todo 工具卡片
ask_user_question连环弹窗- 子代理 transcript 对话框(改为内联主栏)
- Plan 模式权限 overlay 对 edit/write 的第三道 deny(改由工具裁剪 + brief 两道)
架构 / 内部(单一所有权,无第六条恢复路径)
- 展示层:
lib/tool-presentation.ts+lib/tool-presenters/*在 load / SSE 上附着presentation;渲染器只读、不按工具名分类 - 会话投影:
lib/session-projections.ts折叠 todos / title / tokens / context pressure,经 session GET 与get_state推到 chrome - Transcript 节点:
lib/conversation-nodes.ts组装稳定 id 的节点列表;Transcript.tsx从ChatWindow抽出 - Tool-execute 合同:resume 时 adopt 全量工具 + 按当前 mode 裁剪;
[]仍是全关 - RPC 命令开关抽到
lib/rpc-session-commands.ts(send()行为不变) - 子代理结算仍是一条路:
agent_end→ 未收集结果注入隐藏subagent-results;人续聊走父会话subagent_followup - session-tool-repair:仅设计文档,本版未实现
安装说明
macOS
- 附件:
Pi-Web-1.1.1-arm64.dmg(Apple Silicon,~175MB) - 签名:ad-hoc(未公证);Gatekeeper:右键打开或
xattr -cr "/Applications/Pi Web.app"
Windows
- 附件:
Pi-Web-1.1.1-x64.exe(Windows x64 NSIS,~139MB) - 双击安装,可自定义安装目录;安装后会创建桌面与开始菜单快捷方式
- SmartScreen:更多信息 → 仍要运行
English
Prepared from commits in v1.1.0..v1.1.1 (plus the version bump). Desktop remains app:// + dual IPC runtimes.
This release lands the presentation layer, host-folded session projections, inline child transcripts, and inline questionnaires. The renderer no longer guesses tool names; chrome todos/usage come from the host; child agents can be watched, continued, and interrupted like the parent.
Added
- Inline child transcripts
- Open from the top-bar catalog or a tool-row “View transcript” — fills the main chat column (no modal)
- Top bar shows
parent | child; click the parent title to return - Live SSE via
/api/agent/:parent/child-events; compact composer for follow-up / interrupt - Children resolve with
?parent=and stay off the sidebar (no second AgentSession)
- Inline
ask_user_questionquestionnaire- Single/multi select + “Type something.” on the tool card; submit or skip
- No more chained extension dialogs
- Top-bar session title
- Tool presentation layer
- Declared cards: terminal / read / search / web / ask / diff; unknown + MCP stay generic
todohoisted out of the transcript- Subagent tool rows gain “View transcript”
- Subagent
report- Child can report to the parent model (
wakeupnow /quietnext turn); hidden from the user transcript
- Child can report to the parent model (
- Workspace change notify
- Explorer refreshes on
write/editcompletion, not only atagent_end
- Explorer refreshes on
- Sliding-window t/s
- Streaming token rate uses a ~2s window instead of a lifetime average
Improved
- Top-bar Tasks / Subagents triggers
- Plain text
N tasks ▾/N subagents ▾, 12px muted, no pills/icons; a rule between them when both show - Copy: Todo → Tasks
- Plain text
- Subagent catalog tree
- ~336px popover, no title bar / Bot icon
- Depth tree with disclosure carets and reserved indent
- Row: title + activity on the left, tokens + elapsed on the right; click opens the child pane
- Completed children stay listed
- Steadier tool-card titles
- Empty-args results no longer overwrite query/URL titles
- Edit cards extract hashline
[path#TAG]headers and join multi-file patches writeis a light row unless a patch exists- User
!bash renders as a terminal row and stays in history
- Stop / compact UX
- Abort resets the UI immediately (does not wait for RPC)
- Compaction counts as busy
- Extension dialogs gain “Stop agent”
- Sidebar running indicator is a CSS spinner (respects reduced motion)
- Sidebar resize seam is a dedicated 8px hit target
- Git status/diff use
fresh=1after writes - OAuth settings hide the empty login block when already connected
Fixed
- Fast remount no longer paints the previous session’s todos/tokens
- Clearing todos in the current turn hides the capsule
- Live rows without
entryIdsno longer collide on React keys - Reopening a Plan session strips edit/write before the first client
set_tools - Session Stop aborts a long
debug_runimmediately - bash / compaction rows stay in history
Removed
- Project-picker filter box
- Other-workspace activity dot on the project button
- In-transcript todo cards
- Chained ask-user dialogs
- Child transcript modal (replaced by the inline pane)
- Plan overlay
edit/writedeny (tool strip + brief only)
Architecture / internal (still 5 run-lifecycle recovery paths)
- Presentation: host attaches
presentationon load + SSE; renderer copies only - Projections: host folds todos / title / tokens / context pressure onto existing GET /
get_state - Transcript nodes:
assembleTranscript+ extractedTranscript.tsx - Tool-execute contract: resume adopts full tools + mode-strip;
[]stays all-off - RPC command switch extracted to
lib/rpc-session-commands.ts - Child settlement unchanged:
agent_end→ hiddensubagent-results; human follow-up is parentsubagent_followup - session-tool-repair is spec-only (not shipped)
Assets
Pi-Web-1.1.1-arm64.dmg(~175MB, Apple Silicon, ad-hoc, not notarized)Pi-Web-1.1.1-x64.exe(~139MB, Windows x64 NSIS)- Gatekeeper: Right-click → Open, or
xattr -cr "/Applications/Pi Web.app" - SmartScreen: More info → Run anyway