dsh-outcomes:DSH 成果清单管理器

前言

DeepSeek Harness(DSH)把 AI 代理的对话和工具调用放在一个本地环境中运行,产出物(报告、网页、文档、表格、图片、数据集)通常散落在几十个目录里。几天后,很难回忆哪条是最终定稿、来自哪个会话、放在哪个路径。这个问题对自动化流水线尤其明显:脚本跑了半天,产出散了,检索和复用都变得困难。

dsh-outcomes 为这些“最终成果”提供一个清单:把路径与元数据登记成一条 JSON,配合 DSH 内的管理页和一组 agent 工具,让模型自己登记、人可以浏览、脚本可以查询。

是什么

dsh-outcomes 是 DeepSeek Harness 的一个插件(分类:记忆),由维护者 xinming-chenniang 开发。它的核心是“成果注册表”:不搬动、不复制、不上传任何文件,只记录路径、标题、类型、来源、备注、关联会话等信息,并据此提供检索、预览和恢复能力。

核心功能

1. 登记:记录路径与元数据

插件提供三种登记入口:

  • agent 工具:在任何会话里,模型通过 outcome_add 工具登记刚产出的成果。一条成果可以包含多个文件,用分号分隔路径。
  • 管理页:在 DSH 的 Web 界面中打开 http://127.0.0.1:<DSH 端口>/__dsh-outcomes/,手动录入或更新成果。
  • CLI:dsh-outcomes 命令行工具,可以在终端或 CI 环境中批量登记、检索和清理。

登记的数据保存在 index.jsonl 中,每行一条 JSON:

{"id":"20261016-013045-a1b2","title":"季度报告","kind":"html","paths":["D:/reports/q3.html"],
 "by":"财务","note":"口径:含税","sessionId":"session-…","cwd":"D:/reports","at":"2026-10-16T01:30:45.123Z"}

字段说明:

  • id:YYYYMMDD-HHMMSS-<4 hex>,本地时间加随机后缀。
  • title:人类可读标题,默认取第一个文件名。
  • kind:按扩展名推断的类型(html / pdf / img / doc / data / text / other)。
  • paths:绝对路径数组。
  • by / note:来源与备注。
  • sessionId / cwd:产出会话与工作目录。
  • at:登记时间(ISO)。

2. 检索与预览

CLI 提供检索命令:

dsh-outcomes list --q 关键词 --kind html --state active --limit 20 --json

管理页支持按关键词、类型、状态筛选,并按类型提供预览:网页 / PDF 内嵌、图片缩略图。预览是沙箱的,HTML 会以 Content-Security-Policy: sandbox allow-scripts … 出现,脚本可以跑但拿不到 DSH 的同源身份。

3. 恢复与清理

取消登记不会删除文件,而是将整条记录追加进 deleted.jsonl,并保留恢复入口:

dsh-outcomes remove <id> --why "换版本了"
dsh-outcomes restore <id>

插件会自动做自愈:重写清单时,如果发现“上次在、这次不在、删除日志里也没有”的条目,会补一条 why=auto-archived,防止登记无声消失。

4. 健壮性与并发

  • 只记路径:不读文件内容,只做存在性检查。
  • 不删文件:remove 只动清单与删除日志,文件永远原地不动。
  • 并发保护:update / remove / restore 在提交前会复核文件是否被其他进程改过;如果被改过则拒绝并返回 concurrent-modification,不会静默覆盖。
  • 写操作守卫:所有 POST 请求必须带 x-dsh-outcomes: 1 头,否则返回 403。

5. CLI 工具集

除了 add / list / check / remove / restore,CLI 还提供:

dsh-outcomes deleted      # 查看删除日志
dsh-outcomes stats        # 查看统计信息
dsh-outcomes dir          # 打印当前生效的数据目录

6. HTTP API(管理页与集成用)

管理页与外部集成可以通过一组 HTTP 路由访问:

  • GET /__dsh-outcomes/:管理页(?lang=zh 中文)。
  • GET /__dsh-outcomes/api/list?q=&kind=&state=&limit=:清单。
  • GET /__dsh-outcomes/api/status:规模与数据目录。
  • GET /__dsh-outcomes/api/check:文件缺失情况。
  • GET /__dsh-outcomes/api/deleted:删除日志。
  • POST /__dsh-outcomes/api/add:登记。
  • POST /__dsh-outcomes/api/update:更新元数据。
  • POST /__dsh-outcomes/api/remove:取消登记。
  • POST /__dsh-outcomes/api/restore:恢复。
  • GET /__dsh-outcomes/file/<id>/<序号>:取第 n 个文件(预览/下载)。

安装与启用

插件已发布到 npm,版本 0.1.2。

方式一:npm / 插件管理器(推荐)

桌面端:在 DSH 的 设置 → 插件 → 添加插件 中输入 dsh-outcomes。

CLI:

dsh plugin --profile <profile> add dsh-outcomes

安装后需要重启 DSH,插件 bundle 只在启动时装载。

方式二:GitHub 源

dsh plugin --profile <profile> add github:xinming-chenniang/dsh-outcomes

也可以把 Release 资产 dsh-outcomes-0.1.2.tgz 交给插件管理器安装。

方式三:只当 CLI 用

npm i -g dsh-outcomes
dsh-outcomes add --title "季度报告" --paths "D:/reports/q3.html;D:/reports/q3.csv"
dsh-outcomes list

CLI 与插件共用同一份清单格式与默认目录,两种用法可以混着来。

配置

配置解析顺序(高 → 低):插件 config → 环境变量 → 用户设置文件 → 默认值。修改配置后需要重启 DSH。

常用配置项:

key 默认 说明
dir $DSH_HOME/plugin-data/dsh-outcomes 数据目录(清单与删除日志都在这儿)
registry <dir>/index.jsonl 清单文件
deleted <dir>/deleted.jsonl 删除日志
maxTitleLength 120 标题超长会被截断
pageSize 200 管理页的默认窗口
allowOutsideCwd true 是否允许登记会话 cwd 以外的路径
treatSystemTempAsWarning true 路径落在系统临时目录时给警告

环境变量:

  • DSH_HOME:DSH 家目录,默认 ~/.dsh。
  • DSH_OUTCOMES_DIR:覆盖 dir。

用户设置文件:$DSH_HOME/.dsh-outcomes.json(允许 "//" 注释键)。

样例配置见仓库中的 config.example.json。

典型用法

在会话中自动登记

在 DSH 会话中,让模型调用 outcome_add 工具登记成果:

# 模型会话内
outcome_add --title "季度报告" --paths "D:/reports/q3.html;D:/reports/q3.csv" --by 财务 --note "口径:含税"

检索与校验

dsh-outcomes list --q 报告 --kind html --state active --limit 10 --json
dsh-outcomes check        # 登记的文件是否还在(有缺失 → 退出码 1,方便挂进 CI)

恢复误删的条目

dsh-outcomes restore <id>

适用场景与注意

  • 适合需要长期保留 AI 代理产出物、并希望集中检索与预览的场景。
  • 插件以当前 DSH 进程的权限运行,安装前建议查看源码与许可证(MIT)。
  • 注意插件只记录路径,不读取文件内容,因此搜索不覆盖正文,适合对隐私敏感的场景。
  • 在 headless / 自动化环境中,outcome_remove 可能因为缺少审批通道而失败,建议使用 CLI 或管理页进行清理。

结尾

dsh-outcomes 让“最终成果”在 DSH 生态中成为一等公民:agent 可以登记、人可以浏览、脚本可以查询。对于需要长期沉淀 AI 产出、并希望有清晰清单与恢复能力的项目,它提供了一个轻量、安全、可扩展的解决方案。

  • 插件目录:https://www.skillhub.cn/plugins/xinming-chenniang/dsh-outcomes
  • GitHub:https://github.com/xinming-chenniang/dsh-outcomes
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜