DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

TT432 /

dsh-feedback

Topic repository only

This repository has no description yet.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@ccf14d5a

dsh-feedback

dsh-feedback 是 omp-feedback(Oh My Pi 的 ~/.omp/agent/extensions/feedback 扩展)在 dsh(DeepSeek Harness)插件体系上的移植:一个轻量跨上下文问题记录机制——模型在工作过程中 发现的问题(skill/文档/MCP/工具与实际需要矛盾、用户纠正、约束违反)随时记录,后续任何会话都能 列出并处理,不随上下文窗口丢失。

除了模型工具,本插件还带一个 Web 前端面板:打开会话时,若当前工作区有反馈,右上角会话头部 会出现一个带数量的「反馈」按钮,点击展开浮动窗口——逐条展示、一键复制、就地修改、确认删除 (数据与模型工具共用同一份 work/feedback.json)。

OMP → dsh 差距映射

OMP(~/.omp/agent/extensions/feedback) dsh 实现(本插件) 说明
工具 feedback_add / feedback_list / feedback_delete 同名三工具(ctx.tools.register + defineTool) 行为、参数、返回语义逐一对应;dsh 侧用结构化 JSON 规范值 + 纯 render 呈现
存储 {cwd}/work/feedback.json 同一路径,cwd = 调用会话的工作区(exec.agent.session.header.cwd) 与 dsh 内置 fs 工具(read/write)的 cwd 解析一致;不同 cwd 相互独立
通过宿主注入的 ExtensionAPI 直接 readFile/writeFile 通过 ctx.fs(provider seam)读/写 自动走沙箱策略(sandboxPolicy.resolve({ session }))、原子写、UTF-8/二进制拒绝;父目录由 provider 创建
最后一条删除后 unlink 文件 + rmdir 空 work/ 同语义:ctx.fs.processPath → node:fs unlink/rmdir(fs seam 无删除原语);provider 无宿主路径时退化为写 [] 空 work/ 仍只在目录为空时移除;该文件是过程 scratch 文件而非持久数据
配套提示词 skills/feedback/SKILL.md 随扩展提供 同名 SKILL.md 随包发布,apply 时解析 frontmatter 并 ctx.skills.register 为 runtime skill 模型经 skill 工具加载;不依赖全局 AGENTS.md;无 skill 注册表的 profile 下工具仍可用(仅少提示词)
JSON 解析失败静默当作空列表 解析失败显式报错(不静默清空,防止下一次写入覆盖损坏数据) 有意收紧:坏文件应被看见并人工处理
{ id, summary, detail?, createdAt } 自描述模型 完全一致(不设 category/status/severity) —
无并发控制 工具未声明 isConcurrencySafe(默认 exclusive),避免 RMW 竞态 —

文件布局

feedback-plugin/
├── package.json            # ESM 插件包(peerDeps: cordis ^4.0.1, dsh-tools ^0.1.0-rc.6, dsh-host-webserver)+ dsh.client 声明
├── lib/
│   ├── index.js            # 插件入口:name / inject / apply,注册 4 个工具 + runtime skill
│   ├── store.js            # 存储层:会话 cwd/策略解析、load/save、scratch 清理
│   ├── http.js             # 宿主端 HTTP API(/dsh-feedback:list / update / delete),供前端调用
│   └── client.js           # 浏览器 bundle:右上角会话头部按钮 + 浮动窗口(手写 __ModuleLoader__ 格式,无需构建)
├── skills/feedback/SKILL.md # 机制说明(frontmatter 单行 name/description/whenToUse 供插件解析)
└── test/smoke.mjs          # 存储逻辑 + 工具/路由注册冒烟测试(node test/smoke.mjs)

安装到 web profile

# 1) 插件目录先装依赖(link: 安装的本地插件必须有本地 node_modules,否则
#    ESM realpath 后找不到 @deepseek-ai/dsh-tools)
cd <path/to/feedback-plugin>
npm install

# 2) 装进 profile(dsh plugin = 在 profile 目录里转发 pnpm;workspace 根要 -w)
dsh plugin --profile web add -w <path/to/feedback-plugin>

# 3) 在 ~\.dsh\profiles\web\cordis.patch.yml 追加:
# - insert:
#     - id: dsh-feedback
#       name: 'dsh-feedback'

验证:

# 离线查看组合树里有没有这个插件(不会启动服务)
dsh --profile web --dump-config
# 存储层冒烟测试
node test/smoke.mjs

注意:新装的 npm 依赖需要重启 web 服务后才会被 Loader 解析;只改 patch 会热重载。

工具一览

工具 参数 行为
feedback_add summary(必填,自包含一句话)、detail? 追加一条反馈到 {cwd}/work/feedback.json,返回 { id, summary, total, path }
feedback_list — 列出全部滞留反馈,返回 { count, path, items }(含 createdAt / updatedAt? / detail)
feedback_update id、summary?、detail? 按 id 就地修改(至少一个字段);detail 传空串清空该字段,写入 updatedAt,返回 { id, summary, detail?, updatedAt, total }
feedback_delete id 按 id 硬删除;全部删完时清理 scratch 文件与空的 work/,返回 { id, remaining, fileRemoved }

前端面板(Web client half)

打开任一会话时,若该会话工作区(cwd)存在 work/feedback.json 且有内容,右上角会话头部 (conversation.session.header.actions 槽)直接浮着一个常驻面板(默认展开,无需点击):

  • 面板逐条展示:id、创建/更新时间、概要、详情;
  • 每条反馈可 复制(summary + detail 全文进剪贴板)、修改(弹窗编辑概要/详情并保存)、 删除(确认后硬删除,最后一条删除后自动清理 scratch 文件);
  • 支持手动刷新;面板可折叠(收起为一条标题栏,再点展开)、可关闭(关闭后头部留一个小触发器用于重新展开),切换会话或刷新页面后自动重新出现;
  • 无反馈或未加载完成时不渲染任何控件。

前端与模型工具共用同一存储:前端通过宿主端 HTTP 路由操作(lib/http.js,前缀 /dsh-feedback, GET /list?cwd=…、POST /update、POST /delete),读写仍走 ctx.fs provider seam,与工具行为一致。

生效条件:client bundle 在 web 服务启动时扫描进 window.__DSH_BOOT__;运行中的服务对 bundle 与 宿主端插件改动均热重载(dsh 的 client-modules HMR 会重算 rev 并推送新 bundle,宿主端插件热重载), 改完刷新页面即可,无需重启。验证:

# 检查 boot manifest 是否含 dsh-feedback 条目(rev 会随 bundle 更新)
Invoke-WebRequest http://127.0.0.1:3080/ | Select-String '__DSH_BOOT__'
# bundle 可访问
Invoke-WebRequest http://127.0.0.1:3080/plugins/dsh-feedback/client.js

使用规则(与 omp 一致)

  • 发现即记录、轻量:记录时不展开处理;调用失败须重试,不得静默丢弃。
  • 自包含:summary 指明哪个 skill/文档/MCP/工具、什么问题。
  • 跨上下文回收:任何新会话开始处理前先 feedback_list。
  • 处理完即删除;每条反馈要么纳入本单元处理,要么显式推迟,不得无声悬置。
  • 多个同类反馈积累 = 演化信号(配合 dsh-skillzip 的 skillzip_compress 等)。
  • 详细规则见 skills/feedback/SKILL.md(运行时已注册为 feedback skill)。
DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout
—/ 5

No ratings yet

Manifest verification required

Commit ccf14d5a96c1

Community comments

No comments yet. Be the first to write one.