Skip to content

Repository files navigation

Pi-shiki-todo

Pi 扩展:任务管理 —— 给模型一个可见的任务列表。

Fork 自 @juicesharp/rpiv-todo(v2.4.0),去掉 monorepo 依赖:

  • @juicesharp/rpiv-config 代码已并入 src/lib/rpiv-config/(相对 import,无外部依赖)
  • @juicesharp/rpiv-i18n 保持可选(未安装时英文 fallback)

功能

  • todo 工具:create / update / list / get / delete / clear,状态机 pending → in_progress → completed(+deleted tombstone),支持 blockedBy 依赖
  • /todos 命令:按状态分组打印全部任务
  • 常驻面板:编辑器上方实时显示任务列表,ctrl+shift+t 折叠/展开
  • Web GUI 支持(RPC 模式):ctx.mode === "rpc" 时以纯文本行渲染(setWidget(string[]) 卡片,非模态、不遮挡对话),不依赖 TUI 组件工厂。placement 用 belowEditor:实测 pi-web(0.8.7)前端只渲染 belowEditor 的 widget,aboveEditor 的 setWidget 后端收到但不显示(与 pi-shiki-subagents 的 Subagents 面板一致)

相对上游的修复

  • 状态落盘权威源:每次工具变更写 ~/.config/pi-shiki-todo/state.json(原子写+防抖),会话恢复时盘上状态优先于 branch replay —— 修复 compact/rewind 后任务残留或对不上的问题
  • 轮询兜底:2.5s 一次状态指纹检查,状态变化即刷新面板 —— 修复模型已更新但面板滞后的情况
  • 进度提醒(RPC):有未完成任务且模型长时间(默认 60s)未调用 todo 时,通过 sendMessage({deliverAs:"steer"}) 提醒模型同步进度(冷却 180s)
  • 隐藏状态去实例化:completed 折叠状态从 overlay 实例私有 Set 移到 store(per-session),/reload 或 overlay 重建后不再丢失

持久化与清理策略

状态落盘文件:~/.config/pi-shiki-todo/state.json(多会话按 bySession 分区存储)。

时机 行为 目的
todo 工具每次变更 写盘(原子写 tmp+rename,200ms 防抖) 权威源,防 branch 清理后丢失
session_start / compact / tree 盘上状态优先,replayFromBranch 仅兜底 防 compact/rewind 后残留、对不上
session_shutdown 清除本会话的盘上记录 防旧会话任务在新会话“复活”

策略对齐 Claude Code TodoV2 的文件级存储思路:会话进行中落盘权威源(防滞后/丢失),会话结束即清理(防残留)。盘上记录不会无限累积 —— 每个会话只在自己生命周期内持有。

安装

pi-PackgeManager 管理(installTarget=bundle + gitUrl,装进 ~/.pi/bundle-pi-shiki),或作为 git 依赖直接安装:

// package.json dependencies
"pi-shiki-todo": "git+https://github.com/RoyougiShiki/Pi-shiki-todo.git"

配置(可选)

~/.config/rpiv-todo/config.json(仅读取,不写入):

{
  "maxWidgetLines": 8,
  "collapseKey": "alt+t"
}

开发

npm install          # 装依赖(typebox)
npm run check        # tsc --noEmit

License: MIT(原项目 juiceharp/rpiv-mono MIT)

About

Pi extension (fork of rpiv-todo): task list with live overlay, no monorepo deps

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages