DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
P

dsh-pitfall-memory

Pitfall Memory

DeepSeek Harness 的长期失败记忆:记录工具失败,将其整理为可复用的经验,并生成会话/每日/每周摘要,将简报注入后续会话。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:baizhu66018/dsh-pitfall-memory#1b2ef7ef335100c3e1c78544535708779053e484
README兼容性版本

兼容性与来源证明

Pitfall Memory 以 dsh-pitfall-memory 发布,当前版本为 0.4.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/30

版本

0.4.0stable
2026/10/30

相关插件

正在加载相关插件…

最新版
0.4.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/30
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 memory-context 分类下经过校验的插件。

Hindsight Coding Agents@vectorize-io/hindsight-coding-agents面向编程代理的仅反思式 Hindsight 长期记忆(可插拔支持多种运行框架:opencode、……),自动在后台导入(无需设置 CLI)。Contextdsh-context用于上下文洞察和管理的 DeepSeek Harness 插件,提供上下文仪表板和上下文命令,帮助了解上下文的构成及其演变过程。Memory Plugin@openviking/dsh-memory-plugin适用于 DeepSeek Harness 的 OpenViking 记忆与上下文套件Mnemondsh-mnemon面向 DeepSeek Harness 的可组合、基于视图的上下文。开箱即用的可插拔来源与策略、分层记忆和自我演进技能。

README

dsh-pitfall-memory

Long-term failure memory for DeepSeek Harness: records tool failures as they happen, folds them into reusable lessons, and injects a short briefing into later sessions so the same pitfall is hit once.

It is not a replacement for AGENTS.md. AGENTS.md holds rules you wrote by hand; this plugin grows the rules your hand-written file has not covered yet, from what actually failed at runtime.

中文说明见 README.zh.md。

What it does

Four-layer convergence, computed on every read — nothing here is a separately hand-written document:

L1 observation   raw failure evidence: command, output, exit code
        │  rule classification + signature normalization
L2 lesson        one row per signature: symptom + the fix, with an occurrence count
        │  grouped by root cause
L3 pattern       why this area keeps failing (restricted token / sandbox boundary / runtime resolution …)
        │  first sentence of each fix, ranked by severity
L4 rule          the executable short list shown first in the briefing

Three summary periods:

periodtriggerartifact
per sessionagent/disposed and plugin teardownsummaries/session-<id>.md: captured, new, re-offended
dailylazy, on the first briefing render of the daysummaries/daily-YYYY-MM-DD.md: root-cause ranking, highlights
weeklylazy, once the ISO week rolls oversummaries/weekly-YYYY-Www.md: 7-day roll-up plus rules worth promoting into AGENTS.md

Install

node scripts/install.mjs --dry-run      # preview the plan
node scripts/install.mjs                # copy into <profile>/node_modules and add to dsh.profile.bundles

Then restart DSH. The briefing and the pitfall_* tools appear right away; the settings page needs the restart, because dsh-client-modules scans dsh.client declarations only at process start.

Injection channel

The briefing is registered as a dynamic context section:

ctx.inject(['systemPrompt'], (scope) => {
  scope.systemPrompt.context({ name: 'pitfall:briefing', order: 950, text: render })
})

It rides along with the Current runtime context snapshot of every request, so it works regardless of when the plugin was loaded — including sessions restored after a restart.

A note for plugin authors: returning extra messages from an agent/pre-step waterfall listener is not enough — in testing, the constructed messages never reached the session log. Use systemPrompt.context, which is what the in-box sandbox-policy, user-approval and subagent plugins do.

Web settings page

Settings → Plugins → Pitfall memory, two tabs (requires the DSH restart to appear):

  • Lessons — counts, a status filter, expandable symptom/fix per row, and re-activate / resolve / mute actions.
  • Summaries — the latest daily and weekly summary, with a regenerate button.

The host half mounts plain JSON endpoints through webServer.register:

endpointmethodpurpose
/dsh-pitfall-memory/api/overviewGETcounts, status split, rule cards, heartbeat
/dsh-pitfall-memory/api/listGETlessons (?status=, ?category=)
/dsh-pitfall-memory/api/summariesGETlatest daily / weekly
/dsh-pitfall-memory/api/set-statusPOST{ id, status }
/dsh-pitfall-memory/api/refreshPOSTrecompute daily + weekly

A request carrying an Origin header must match the loopback Host, otherwise it gets 403.

Tools

toolpurpose
pitfall_listlist lessons (by status / category / project scope)
pitfall_rememberrecord a "root cause + fix" the model worked out
pitfall_resolvemark resolved / muted / active
pitfall_reviewreview the current session: new, repeated, or resolved-then-reoffended
pitfall_summarygenerate or read the session / daily / weekly summary

Built-in rules

16 classification rules cover the failure classes this kind of environment actually produces: sandbox boundary violations, restricted-token operations (pipes, pip, mkdtemp), runtime resolution (store-aliased python), CJK encoding, Git identity, network and credential errors, unknown tools, and a generic non-zero-exit fallback. Anything unrecognized lands in one of the two fallbacks instead of being dropped.

On first run the store is seeded with 14 lessons describing this environment's known pitfalls, so the very first session already has something to inject.

Configuration

Line config lives in cordis.patch.yml and can be overridden per id pitfall-memory in the profile's own patch file:

fielddefaultmeaning
enabledtruemaster switch
seedtrueseed known pitfalls when the store is empty
summariestruesession / daily / weekly summaries
capturetruecapture tool failures
injecttruerender the briefing as a dynamic context
maxLessons12lessons in the "other frequent" section
maxInjectBytes6000UTF-8 byte ceiling for the briefing
minOccurrences1minimum occurrences before a lesson is injected
injectIntoSubagentsfalsealso brief subagent sessions
repeatWarntrueone-line reminder when a signature repeats within a session
projectScopedtrueonly this project's lessons plus global ones
maxFindingsPerSession200per-session capture cap
maxLessonsStored300store cap (seed and manual lessons are never evicted)
storeDiremptystorage dir; empty = <profile>/.dsh-pitfall-memory
captureTools[]capture only these tools (empty = all)

Storage

<profile>/.dsh-pitfall-memory/:

filecontent
lessons.jsonstructured lesson store (source of truth)
lessons.mdhuman-readable list with a rule-card section
observations.ndjsonraw failure evidence (append-only, rotates at 1 MB)
state.jsonroll-up progress (lastDaily / lastWeekly)
summaries/session, daily and weekly summaries (json + md)
.heartbeat.jsonlload and render heartbeats — the first stop when something "does not work"

A lesson belongs to a project, whose root is the nearest ancestor containing .git or AGENTS.md; lessons recorded with scope: global apply everywhere.

Troubleshooting

Run node scripts/doctor.mjs. It reports, in order:

  1. bundle mounted and files copied;
  2. lesson store present, with counts;
  3. heartbeat truth: apply-ok (loaded?) → context-render (rendering?) → settings-api-mounted (settings backend?);
  4. dsh.client declaration ready, with the restart reminder.

The same order works by hand on .heartbeat.jsonl.

Tests

node test/detect.test.mjs          # 16 — rule classification
node test/store.test.mjs           # 7  — merging, persistence, pruning
node test/render.test.mjs          # 6  — briefing rendering and byte caps
node test/summary.test.mjs         # 8  — four-layer convergence, daily/weekly
node test/smoke.test.mjs           # 6  — capture → store → inject → tools, end to end
node test/settings-api.test.mjs    # 4  — projections, routing, Origin checks
node test/client.test.mjs          # 3  — browser bundle exports, slot registration, render

50 tests, all plain Node with no DSH runtime required. Run the files individually: node --test test/ spawns child processes and fails with EPERM under a restricted token on Windows.

License

MIT