Skip to content

v0.1.0 — persistent per-session task stack

Choose a tag to compare

@Ray1270 Ray1270 released this 04 Oct 09:05
· 21 commits to main since this release

首次发布

给 DeepSeek Harness Agent 用的可持久化任务栈:模型显式调用三个工具 push / pop / 查看自己的多步任务焦点,状态以纯文本 JSON 落在会话工作区里。

  • 跨上下文压缩存活 —— 状态在磁盘上,压缩掉对话也不丢
  • 跨会话恢复可找回 —— 同一 sessionId + cwd 重新挂载即读回同一份文件
  • 零自动注入 —— 不写系统提示词、不注入上下文,Agent 不主动调用就一个 token 都不花

三个工具

工具 作用
focus_task 把一个多步目标压栈;原来的栈顶转为 paused
focus_complete 弹出栈顶、记一行结论、让下一层重新变 active
read_focus 读取整个栈与最近历史(唯一查看方式,没有自动注入)

另有斜杠命令 /focus:查看 / done <结论> / clear,不花模型轮次。

存储

  • 每个会话一个 JSON 文件:<会话工作区>/<stateDir>/<sessionId>.json
  • 原子写入(tmp → fsync → rename),读者只会看到完整的旧文档或新文档
  • per-file 异步锁,并发调用不会丢更新
  • 文件缺失 / 读失败 / JSON 坏 / 版本不符 / 会话不符 → 退化成空栈或丢弃坏帧并附 warning,从不抛异常

配置(Cordis 在插件启动前校验)

字段 默认 含义
stateDir .dsh/task-stack 状态文件目录,相对会话工作区
maxStackDepth 20 栈上最多同时开着的任务数
historyLimit 100 历史最多保留多少条
statePruneDays 0 删除超过这么多天没写过的会话状态(0 = 不清理)

越界值直接拒绝加载该插件并在启动日志指出字段,不会静默夹紧成另一个策略。

验证

  • 69 项断言(store 22 / tools 18 / config 12 / commands 13 / lifecycle 4)
  • lifecycle 套件把插件挂成真实 Cordis 子 fiber 并覆盖真实 ToolRuntime,证明卸载/热重载不留残留
  • 加载器集成走真实的 cordis-plugin-loader

安装

dsh plugin --profile <名称> add @ray1270/dsh-task-stack