Skip to content

[Feature] 左侧边栏新增 Todo 计划面板 #42

Description

@capdiem

背景

pi 本身没有内置的 todo 协议,各扩展的 schema 各不相同。目前已有第三方 todo 工具(如 @capdiem/pi-todo 扩展)能在 TUI 里维护任务计划,但桌面端没有对应的展示面板——计划只在扩展内部维护,桌面端看不到。

需求

希望桌面端左侧边栏新增一个 Todo 计划面板(只读):

  • 显示扩展推送的任务计划:状态图标(○ 进行中 / ◐ 进行中 / ✓ 完成)、已完成数(completed/total)、任务列表
  • 任务过长时截断显示,悬停可查看全文
  • 面板只做渲染,不解析任何具体扩展的 schema,不依赖 LLM,不需要为某个扩展手写适配器

设计方案(提案)

采用桌面端声明的公开扩展点,扩展 opt-in 接入:

  1. 通道:复用扩展 UI 的 setWidget 请求(extension_ui_request RPC 通道)——这是桌面端唯一读取的面板通道,能实时直达侧边栏,无 session 往返。
  2. Keypi-agent-desktop:todo(桌面端保留 key,避免与扩展自身用途的 "todo" 撞名)。
  3. 载荷widgetLines,每行一个 JSON TodoTask{ key, subject?, status? }),undefined 清空面板。
  4. 校验:非 JSON / 空行 / 非法任务跳过;statuspending | in_progress | completed;额外字段容忍忽略。
  5. 持久化setWidget 是 fire-and-forget,不写会话文件;会话打开时由扩展的 session_start restore 重新推送。

为什么用 setWidget 而不是 sendMessage / 适配器

  • setWidget 实时直达面板,无 session 往返
  • 桌面端故意不解析扩展 schema,自定义消息/工具结果不解析
  • ctx.ui.custom() 在 RPC 模式下是 no-op,setWidget 只接受 string[]

现有实现(可参考)

该功能已在个人 fork 中实现并通过测试,可作为参考实现:

Image

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions