ICCuse/dsh-pain-point-check1

dsh-pain-point-check

DSH 强力痛点检查守护插件,在针对同一问题连续两次实验未收敛时,强制注入三个反思问题,并拦截非调查类工具调用。

AI 分析

核心用途是打破智能体在遇到挫折时的“死循环”和确认偏误,强制其进行元认知反思。适合在运行复杂自动化任务、经常遇到智能体卡在同一错误中反复尝试的用户。

套件
dsh-pain-point-check
版本
0.1.0
授權
MIT
最近更新
2026年8月14日

安裝

此插件尚未提供可驗證的 bundle,或相容性檢查未通過。請先閱讀倉庫說明。 閱讀完整 README ↗

dsh-pain-point-check

中文版见 README.zh.md

An enforced pain-point-check guard plugin for DeepSeek Harness (dsh).

Where the official repeat-tool-reminder is advisory — it nudges an agent that repeats the exact same call — this guard vetoes: after two non-converged experiments on the same problem it injects the three questions, denies non-investigative tool calls until the model answers them in its reply text, and blocks further same-direction shots.

Why

An agent in "solution state" loses meta-cognition and keeps attacking the same problem — confirmation bias (designing experiments that support the current hypothesis), sunk cost (refusing to change direction), and narrative closure (wanting to finish the story). The gate forces a return to the blocker before the next shot, turning negative results into information.

Install

The package is not on npm yet; install it straight from this repository:

npm install github:ICCuse/dsh-pain-point-check
# or: pnpm add github:ICCuse/dsh-pain-point-check

Then mount it in your profile composition. Add one row to your profile patch — for the web profile, ~/.dsh/profiles/web/cordis.patch.yml:

- id: pain-point-check
  name: 'dsh-pain-point-check'
  config:
    failureThreshold: 2
    repeatThreshold: 2

Restart the harness (dsh web) and the guard is live for every session.

How it works

HookRole
tools/resultCounts per-agent experiments on the current problem: failed (errored) calls and consecutive identical calls.
agent/pre-stepResets the counters on a real user interjection (a new problem); while the gate is pending, appends the three-question check block to the next step.
tools/pre-executeDenies every non-investigative call while the gate is pending (allowlist: read, read_image, glob, grep, web_search, ask_user_question, skill, todo_write).
session/eventDetects the three answers in the model's reply text (卡点=… 排除=… 性价比=…, English markers accepted) and lifts the gate.

The three questions: is this blocker still the most critical one to solve? What did the last negative result actually rule out? Which path is the most cost-effective (not necessarily the cheapest)? If the model cannot name what the negative result excluded, it has no falsifiable hypothesis — the check text tells it to go write one instead of firing another shot.

Config

FieldDefaultMeaning
failureThreshold2Failed calls that arm the gate.
repeatThreshold2Consecutive identical calls that arm the gate.
allowlistinvestigation setTools still callable while pending.

Both thresholds must be integers >= 1; a misconfiguration throws at plugin load.

Development

lib/ is prebuilt (built from the DeepSeek Harness monorepo toolchain). Tests:

npm install
npm test

The test suite drives a real agent loop against a scripted mock adapter (no network): arming, denial, allowlist, lifting, partial answers, resets, and fail-loud config validation.

License

MIT