Recall 是一个面向工作上下文重建的技能,归属 mariusflorescu/pstack-rex。它的定位是在开始或恢复一项工作之前,先重建用户近期的工作上下文,并交回一份紧凑的胶囊式简报,说明当前状况和下一步该做什么。
用途 它解决的是“接着上次继续”的问题:开发者在一个仓库里可能有多轮对话、多个分支和多条并行线索,仅凭自己当次的对话记录容易遗漏信息。Recall 的立场是:上下文存在于两份记录中——自己的聊天历史(做过什么、决定了什么),以及共享记录(同一份代码在其他人名下发生的事:用户反复报告的症状、已上线又被回滚的修复、生产环境仍在报的错)。
主要能力
- 分类与路由:先判断任务类型。要恢复某一条具体的历史对话,应使用 session-pickup 剧本而非本技能;把习惯固化为技能属于 automate-me;面向人阅读的工作总结是另一项任务。Recall 只负责在行动前加载近期聊天中的工作上下文。若用户已给出完整状态胶囊(路径、分支、改动),则直接使用并跳过挖掘。
- 锁定范围:明确时间窗口(“最近”是真实区间,默认最近 7 天)、主题(如有命名)和工作区(默认当前工作区,未经要求不读取其他项目的对话),并向用户复述范围;不得把“全部”悄悄变成“最近 N 条”。
- 并行挖掘聊天历史:用 sessions list --days <n> --no-workers 按最后活动时间列出窗口内的会话,剔除当前会话和评测、测试类噪声,按列表顺序切片,在快速、廉价的模型上并行启动 worker(只读、指定 ids、告知脚本绝对路径、禁止再委派)。每个 worker 先按主题 grep,再只读取匹配会话的相关区域,统一返回每位聊天的主题、用户目标、决策、未结线索、困难与纠正、产出物(PR、工单、分支)并附会话 id。仅一两条会话时跳过并行,直接检索。
- 扫描共享记录:当主题指明某项功能、文件、子系统、区域或缺陷时默认执行(“我在 X 上的工作”也不例外),复用 why 技能的各来源深查方法,把问题从“为什么这样构建”调整为“当前状态如何、试过什么没站住、用户还在报什么”,与聊天挖掘并行,结果并入简报。纯活动回顾(如“我这周做了什么”)且无命名目标时可跳过。
- 对照实时状态验证:用 git 与 gh 核实挖掘中浮现的 PR、分支和工单;当答案取决于代理实际执行了什么时,用 sessions read <id> --tools 读取完整对话,而非只看摘要。
使用方式 通过技能名或 /recall 调用,技能内容位于 ../recall/SKILL.md,按其中的流程执行;会话列表与读取使用 rex-subagents/scripts/sessions 脚本的绝对路径,子代理按 rex-subagents 与 poteto-mode 技能的约定生成、等待和关闭。
输出契约 先给胶囊(最多 5 条,说明这是什么工作、整体到哪一步),再给线索(每条一行,前缀为唯一状态标签:[merged #N]、[open PR #N]、[in flight <branch>]、[verified, uncommitted]、[reverted #N] 或 [planned, not started];无标签即未完成),再给问题(最多 5 条复发问题,含用户持续报告的症状及已上线又回滚的修复),最后给下一步(一个最有用且具体的动作)。相邻功能或工单除非阻塞当前工作否则不纳入;内容超出一屏时先删细节而非删线索;聊天发现按会话 id 引用,共享记录按来源(PR 号、工单 ID、聊天永久链接、错误追踪 issue)引用,公开输出前需清理私有上下文。
适用场景 开始或恢复开发工作前的上下文接续、多轮对话与多分支并行时梳理全局、排查长缺陷历史的某个功能或子系统、确认上次尝试失败在哪里。
限制 仅覆盖本仓库的 Claude Code 与 Codex 对话(含 worktree);不替代单条会话恢复、习惯自动化或面向人阅读的总结;不读取未被要求的工作区;需可用的会话脚本与 git、gh 等工具;其具体收费、平台支持与安装方式暂未提供。