dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DSH plugin: remembers your last manual permission-preset choice per session and restores it when the session is reopened.
A small DeepSeek Harness (DSH) plugin that remembers your last manual permission-preset choice for each session and restores it when you reopen that session.
Status: early / experimental. It talks to DSH's experimentalpermissionPresetsAPI and was tested against@deepseek-ai/dsh0.2.1-rc.2 and 0.2.1-rc.3 (the permission-presets code is identical in both). A future DSH release may change the API and break it.
DSH's permission presets (workspace-write, danger-full-access, and the experimental auto = auto review) are stored per session. The default preset for a session is inferred from the process defaults, so a session can come back as the wrong mode after a restart — and the experimental Auto preset cannot be configured as the default preset at all:
// @deepseek-ai/dsh-permission-presets
if ("auto" in this.presets) throw new Error('permission: "auto" is reserved ...')
if (!Object.hasOwn(this.presets, defaultPreset)) throw new Error('permission: unknown default preset')This plugin instead watches what you actually pick and puts it back.
In one sentence: it follows your latest manual choice; it never overrides a choice you made.
State is kept in state.json next to the plugin (persists across DSH restarts). Delete that file to reset everything.
git clone https://github.com/heyuanliu3-byte/dsh-auto-preset.git
dsh plugin --profile web add link:/absolute/path/to/dsh-auto-presetThen add "dsh-auto-preset" to the profile's bundle list (package.json → dsh.profile.bundles) and restart the DSH web server.
Once the package is published to npm:
dsh plugin --profile web add dsh-auto-presetThe plugin must be loaded after @deepseek-ai/dsh-experimental-auto-review, because the auto preset only exists while that bundle is live.
session/created fires when a session enters the store — for a brand-new session *and* for a reopened one.session/event (permission/preset) tells the plugin which preset was selected. Events emitted before the plugin has "armed" a session (the initial pin) are ignored, and the plugin's own presets.set() calls are ignored via a reentrancy flag.permissionPresets.set(session, storedChoice).See lib/index.js — it is ~130 lines.
permission/preset events are observed; a "custom" sandbox/approval combination is not represented as a preset and is therefore not restored.MIT — see LICENSE.