Agent Stash 文档

经验提炼

从已经结束的会话里找出重复成功的流程和经过验证的修复,先给摘要,同意后生成草稿,审核后保存成 Skill。

在会话 Tab 里提炼本会话,步骤与进度随请求推进;在多个 idea 之间切换,同意一个后生成草稿并保存,再从标题栏打开历史回溯提炼页

@agent-stash/dsh-skill-scout 是一个 DeepSeek Harness 插件。它在本机读取已经结束的会话,只根据工具结果判断任务是否成功,把在多个会话里重复成功的流程、失败后修复并通过检查的过程整理成线索。模型给线索写摘要,摘要里是一到几个 idea,每个 idea 说明发现了什么、打算新建或改进哪个 Skill;你同意某个 idea 后才生成它的草稿,看过证据、预览过草稿才会写入。文件在保存后没有被改过时,可以撤销写入。插件需要 DSH 0.2.1-rc.3 或更新的版本,界面在 DSH 的 Web 界面和桌面版里提供。

使用

  • 会话 Tab:每个会话都有「经验提炼」Tab,和对话、轨迹并列。顶部是本会话的分析状态,「立即分析」不等静默期直接分析,「提炼本会话」把整段会话交给发现模型,最多给出 5 个 idea。左栏按「待你决定」「本地发现」「历史」分组列出引用本会话的建议,每行前的圆点标出状态,下面是本会话的任务;右栏是选中建议的详情。视图较窄时只显示一栏,详情顶部有返回按钮。
  • 「历史回溯提炼」页:在侧栏打开,分「建议」「搜索」「统计」三栏。「建议」是全部线索与 idea:「待你决定」是等你同意、草稿正在生成或可以保存的 idea,「本地发现」是还没有摘要的线索,已保存、已忽略和判定不值得保存的收在「历史」里。
  • 标题栏图标:出现新的摘要或草稿时显示数量,打开浮层后清零,点浮层里的卡片会打开「历史回溯提炼」页并选中这条。没有新建议时只有图标,插件不弹通知。设置里「标题栏角标」选「只显示图标」时不显示数量。
  • 多个 idea:一条线索的摘要可以给出多个互不重叠的 idea,规则发现的线索最多 3 个。列表里每个 idea 一张卡片,详情右上角的「‹ n/m ›」逐个切换同一线索的 idea,点「n/m」列出全部。不同线索给出同名、还没处理完的 idea 时只显示一张,卡片上注明另有几条同名。
  • 步骤:详情标题下的一排步骤是「发现」「摘要」「草稿」「保存」,标出这一条所在的那一步,下一行写明下一步做什么、交给哪个模型。
  • 摘要:详情的「摘要」页在没有摘要时列出规则匹配到的步骤,点「生成摘要」请发现模型写摘要。有摘要后列出这个 idea 的方案:发现了什么、Skill 的用途、何时使用、要新建或追加到的 Skill 和步骤提纲、风险和验证方式。
  • 生成草稿:点「生成 Skill 草稿」表示同意这个 idea,生成模型按它的方案写出 Skill。
  • 进度:请求按实际阶段显示:排队、准备证据、等待模型响应、模型正在思考、正在写(已收到的字数)、正在核对证据,并显示已用时间。占位条随收到的内容逐条点亮,系统设置了减少动态效果时占位条静止。请求结束后结论留在原处;这一条没有列在打开的会话 Tab、「建议」栏或浮层里时,才弹出带「查看」的提示。
  • 详情的其他页:「Skill」是可以直接修改的草稿,分页条右端的「重新生成」按同一份方案再写一次;「改动」是目标路径和文件 diff;「证据」列出每个来源任务的请求、命令、退出码和失败时的一行错误,「打开会话」跳回原会话。
  • 保存:「保存到项目」写进项目的 .agents/skills/<name>/SKILL.md,按钮右侧的箭头可以改为用户级的 ~/.agents/skills。方案认为已有 Skill 覆盖了这个任务时,只在原文件末尾追加一节。
  • 撤销、忽略与恢复:保存后可以撤销。「忽略」把这一条移到历史;「更多操作」里的「忽略类似建议」让相近的流程以后也不再提示,之后摘要里同名或标题相近的 idea 直接记为已忽略。忽略的可以恢复。
完整窗口,侧栏有「历史回溯提炼」入口。会话标题下是「对话」「轨迹」「经验提炼」,当前在「经验提炼」。左栏「待你决定 2」下是「发布前确认工作区干净,草稿待保存」(选中)和「按 package.json 的版本号打 tag」,其下是「本地发现」「历史」分组和本会话的任务,任务行末尾是工作区路径。右栏是选中 idea 的详情:标题右侧显示「3 / 3」,元数据写着草稿由 deepseek-v4-pro 生成;步骤条停在「草稿」等你确认,下一行写着保存后写入 Skill 文件;分页是「摘要」「Skill」「改动」「证据」,当前在 Skill 预览,名称 check-clean-tree-before-release,步骤是 git status --short 和 npm test 两个代码块。底部左侧是「忽略」,右侧是带下拉箭头的「保存到项目」
会话 Tab:左栏按状态分组列出引用本会话的 idea 和本会话的任务,右栏是带步骤条的详情

搜索与统计

  • 搜索:在插件保存的脱敏任务记录里查找用户请求、命令、错误行、改动的文件路径和任务中插入的消息,多个词同时出现才算命中,可以按任务结果过滤。完整的工具输出和 Agent 的回复正文不保存,搜不到。勾选 1 到 12 个任务后点「提炼所选」,交给发现模型,最多给出 5 个 idea。

  • 回溯:默认只分析历史范围内(默认 30 天)的会话。「回溯 90 天」「回溯全部」在后台逐个读取更早的会话,显示总数、已读和失败数,可以暂停和继续。回溯读入的会话可以搜索和提炼,不参与规则检测。

    「历史回溯提炼」页的「搜索」栏,搜索框里是 npm test,下面是按结果筛选的一排按钮:全部结果、检查通过、已完成、未验证、用户表示不对、失败、已取消。范围行写着搜索已分析的 52 个会话、52 个任务,已读取 4 个更早的会话,右侧是「回溯 90 天」「回溯全部」。共 39 个任务匹配;「再发布一个补丁版本」和「帮我发布一个补丁版本」两条已勾选,每条列出结果、时间、命令数和命令,npm test 高亮,行尾是工作区路径。底部的选择栏显示已选 2 个,以及「清除」和「提炼所选」
    搜索已分析和回溯读入的任务,勾选几个交给发现模型提炼
  • 性能:搜索只查内存里的索引,不读原始会话日志。在一台有 829 个会话日志(压缩后 585 MB)的机器上,从 304 个会话提取出 719 个任务,建索引约 25 毫秒,单次查询不超过 0.1 毫秒;直接解压读取全部日志约 15 秒。

  • 统计:顶部是四个总数:已分析的会话、近 30 天的任务、待你决定的 idea、已保存的 Skill。下面依次是近 30 天每天按结果堆叠的任务图、线索与 idea 的状态占比、跨会话的高频动作(带 8 周走势)与反复出现的错误(点一项填进搜索)、每天的新线索、分析失败的会话、近 7 天的模型用量(输入 token 分未命中缓存、缓存读、缓存写),以及最近模型调用的表格(点一行跳到对应卡片)。图表可以用键盘逐项查看,图例可以隐藏某一类。

「统计」栏整页。顶部四个总数:已分析的会话 52,共 53 个,下面一条占比条;近 30 天的任务 4,75% 通过检查,带每天的走势线;待你决定的 idea 3,1 份草稿可保存;已保存的 Skill 1,共 4 个 idea。下面是整行的「近 30 天每天的任务」柱状图,日期轴从 10月1日 到 10月30日,只有 10月30日有一根按结果堆叠的柱(检查通过 3、未验证 1)。再往下两列卡片:左列是线索状态占比、高频动作(npm test 39 个会话、git tag 26、npm version 26、npm run build 13,各带横条和 8 周走势)、近 30 天每天的新线索;右列是 idea 状态占比、反复出现的错误「Error: Cannot find build config build.config.json」、近 7 天模型用量的堆叠柱。最下面是整行的「最近的模型调用」表
统计:四个总数、每天的任务、线索与 idea 的状态、高频动作与错误、新线索、模型用量和最近的模型调用

判断规则

  • 成功只看工具结果:最后一次修改之后,每条命令的最后一次运行都成功。Agent 在回复里说完成了不算,用户下一条消息表示结果不对时也不算。
  • 命令按动作比较,同一个动作的不同写法算同一步:pnpm build、npm run build 与 yarn build,npx vitest 与 pnpm exec vitest,python -m pytest 与 pytest,bash scripts/release.sh 与 ./scripts/release.sh,git checkout -b 与 git switch -c,turbo run build 与 pnpm build,npx tsx scripts/seed.ts 与 tsx scripts/seed.ts。pnpm build 与 pnpm test、git push 与 git pull、npm publish 与 npm version 这类不同的动作不合并。内联代码(python -c、node -e)、HTTP 请求(curl、wget)、远程登录(ssh)和 open 从动作上看不出做了什么,在比较里和提交、推送一样权重低。多行脚本按行拆成命令;here-document 的正文、for、if 这类 shell 关键字和 set、export 等内建命令不算步骤。其他 Agent 与 MCP 服务器的执行命令、改文件类工具按名字归类。
  • 重复流程要出现在至少 2 个独立会话里(可调),流程相近并且都成功。提交、推送、安装依赖这类每个任务都有的步骤权重低,两个任务至少要共有一个其他步骤;build 与 build:web 这类同前缀的脚本算部分相同;共有步骤的先后顺序要大体一致。请求描述不相近(例如一个用中文、一个用英文)时,要共有两个以上有区分度的步骤。从别的会话 fork 出来的历史不重复计数,同一会话里的反复重试不算重复。
  • 失败恢复要有完整的链条:命令失败,接着安装依赖、改配置,或者重跑时改了选项或环境变量(pnpm test --runInBand),然后同一个动作成功,写法可以不同(npm test 失败后 pnpm test 通过)。只换文件、参数或选项的值不算修复,换一段内联代码或换一个 URL 也不算。只改业务代码的修复,要在多个会话里遇到同一个错误才提示;比较错误时,路径、版本号和平台名(darwin-arm64、linux-x64-gnu)先换成占位符。
  • 通过检查、用到至少 5 个不同的非日常命令(内联代码与 HTTP 请求不算)且跨 3 类以上命令的单个长任务,也会作为候选交给摘要,卡片上标为「经验证的长任务」。
  • 写摘要时附上最相关的已有 Skill,模型可以判为重复,或者建议追加内容。摘要判定不值得保存后,证据增加到两倍才重新摘要。

摘要与草稿

经验提炼设置页的「发现」「摘要」「生成 Skill」三组:分析已结束的会话已打开;后台生成摘要关闭,发现模型选了 DeepSeek-V4.1-Flash,推理强度 Low;生成模型选了 DeepSeek-V4-Pro,推理强度为模型默认
在插件设置里分别选择写摘要的发现模型和写 Skill 的生成模型

模型分两步参与,两步的模型分开设置,不选时都跟随 Agent 的默认模型:

  • 摘要由发现模型写:判断值不值得保存,值得时给出一到几个 idea,每个 idea 有标题、发现了什么、Skill 的用途、何时使用、Skill 名称、最多 8 条步骤提纲、最多 3 条风险和验证方式,同一份摘要里的 Skill 名称各不相同。判断前先核对你的纠正、命令失败的原因和工具结果验证过的步骤。后台摘要默认关闭,只处理规则发现的线索;关闭时也可以在详情里点「生成摘要」。打开后,后台摘要受每日次数、最小间隔和超时限制,手动发起的摘要、「提炼本会话」与「提炼所选」不计入每日次数。
  • 草稿由生成模型写:只在你点「生成 Skill 草稿」之后请求,只写这个 idea 指定的那个 Skill,按方案里的何时使用、提纲和验证方式写,方案里的风险写成前置条件或限制;你在任务中的纠正和命令失败的原因写成前置条件、注意事项或限制。后台从不生成草稿,失败也不自动重试。线索的 idea 都还没有草稿、没有保存时才能重新摘要,新摘要替换全部 idea。
会话的「经验提炼」Tab,左栏「发布前确认工作区干净」这一行显示「正在生成」。右栏详情的步骤条停在「草稿」进行中,下一行写着产出待你审阅的 SKILL.md 草稿;进度行是「deepseek-v4-pro 正在写(已收到 500 字)」和「已用 7 秒」,下面八条长短不一的占位条中前两条已点亮,其余在起伏
生成草稿时,步骤条标出当前一步,进度显示阶段、已收到的字数和已用时间,占位条随内容逐条点亮

发给模型的是脱敏后的证据:用户请求、工作目录、命令行、改动过的文件路径、退出码、每次失败的一行错误(「包含错误行」打开时)、Agent 最后一条回复的开头、任务进行中用户插入的消息(最后 3 条)、用户的下一条消息、规则匹配到的步骤,以及最多 3 个相关的已有 Skill 的名称和描述,其中最相关的一个附带 SKILL.md 正文摘录;摘要请求另外带上证据会话能看到的全部 Skill 名称(最多 200 个),这些名称不能用于新建的 Skill。完整的工具输出、工作区文件内容和 Agent 的思考过程不发送。证据超出字符上限时,先去掉 Agent 回复和 Skill 正文摘录。草稿请求另外带上你同意的 idea 的方案,追加内容时附上要改进的 Skill 全文。证据会话能看到名为 skill-creator 的 Skill 时,草稿请求还带上它的 SKILL.md(脱敏后取前 20000 字符)作为写 Skill 的指南,摘要请求不带。请求不带工具,也不在任何会话里运行。模型的回答要符合约定的结构,引用的证据都要存在。摘要里的新 Skill 名称不能和已有 Skill 重名,也不能在同一份摘要里重复,要改进的 Skill 必须存在。草稿里带命令的步骤,每一段命令都要和它引用的某次运行是同一个动作,而且这个动作在证据里成功过。含凭据、提示注入痕迹、下载后直接执行或删除根目录与主目录的摘要和草稿整条拒绝,sudo、强制推送、递归删除这类命令作为提醒显示在「Skill」页。

数据

  • 会话文本在存储、发送和显示之前先在本机脱敏:常见的 API Key、token、私钥、认证头、密码赋值、URL 里的账号密码和邮箱都换成占位符,macOS 与 Linux 的用户主目录(/Users/<name>、/home/<name>)换成 ~。设置里可以追加正则规则。
  • 插件只存 Episode 记录、线索(含摘要、各 idea 的草稿与写入记录)、最近 8 天的模型用量和最近 100 次模型调用的记录,放在 DSH storage domain skill_scout 里。超出历史范围的会话记录会被删除,仍待处理的线索引用的和回溯读入的除外。分析出错的会话记下原因,日志没有变长就不再重试。
  • Agent 运行时插件不做分析:回合结束并空闲一段时间(默认 2 分钟)后才读取这个会话。
  • 多个 DSH 实例共用同一个 DSH 目录时,只有一个实例在后台分析会话和写摘要。
  • 写入只发生在你点保存之后,目标只能是项目或用户 Skill 目录下的 <name>/SKILL.md。新建时目标已有文件就不写入。追加到已有 Skill 时只在末尾加一节,预览之后文件被改过就不写入。

安装

按导入 Agent Stash 插件市场的步骤添加索引源,然后在「发现」页安装 @agent-stash/dsh-skill-scout。

插件的源码、设计取舍与测试方法在仓库的 packages/dsh-skill-scout/ 下。

贡献者

页面历史