Plugins
Explora, filtra e instala plugins de DeepSeek-Harness.
113 plugins encontrados
dsh-session-enhance
tinger-x/dsh-session-enhance
Plugin de DSH Web para gestionar sesiones: archivar/desarchivar, eliminación física garantizada (archivos de transcript y barrido de ~/storages/*.json), reasignación de workspace mediante arrastrar y soltar, y edición de mensajes por ramas (edit/retry/reroll con líneas de versiones reversibles).
dsh-experience-library
libiwolve/dsh-experience-library
Capa de validación de experiencia para DSH: recopilación sin tokens de señales de fallo de herramientas/reintentos/búsquedas, refinamiento con IA en libros de habilidades verificados (verificación en tres capas), consultados al inicio de la tarea. Incluye 10 habilidades de prueba y datos de referencia (éxito en tareas complejas del 100 % frente al 60 % sin la capa).
dsh-mmroute
jmxsxwyzjdwl/dsh-mmroute
Enrutamiento multimodal transparente para modelos solo de texto: cada imagen en cada llamada al modelo es transcrita por completo (OCR literal, datos, zonas de incertidumbre, reforzado contra inyecciones) por tu propio intérprete multimodal, con una nueva revisión enfocada mediante vision_relook y reintento automático en fallos relacionados con imágenes. Sin endpoints incluidos, sin credenciales prestadas.
dsh-chat-continue
chu-m/dsh-chat-continue
Reintenta automáticamente las solicitudes de API fallidas para que las conversaciones de DSH no se interrumpan. Admite códigos de estado y códigos de error configurables.
dsh-mojibake-interceptor
fire-disposal/dsh-mojibake-interceptor
Paquete de protección contra mojibake para DSH: detección de texto ilegible basada en características antes de escribir con revisión y liberación (un reintento idéntico pasa), más auditoría de codificación de pwsh antes de la ejecución (ANSI/GBK/UTF-16/Default). Windows y chino primero.
dsh-auto-continue
vergilye/dsh-auto-continue
Keeps a turn from closing on an unfinished reply: a stream guard turns silent truncation into an in-step retry, and a completion protocol asks the model to declare how each turn ended.
dsh-btw-marginalia
ltp414/dsh-btw-marginalia
Read-only /btw side questions for DeepSeek Harness: forks the current session, injects the running turn's task, recent tool calls and partial answer so a mid-turn question has context, denies every tool call at execution time, and keeps a per-session topic history with follow-up, stop, retry and delete.
dsh-task-notifier
lizhijie429/dsh-task-notifier
Sends desktop notifications when a DSH turn finishes or fails, and sends 继续 automatically after the model-retry budget is exhausted.
dsh-local-trim
leonlee114514/dsh-local-trim
One-step local model onboarding plus a light harness for DSH. On load it probes loopback and private-network inference endpoints (llama.cpp, Ollama, vLLM, LM Studio), reads each model's context window and output budget from the backend, and registers the provider through settings, so a local model becomes selectable without hand-writing config. It then trims only that provider: masks the tool list through tools.restrict, drops named system-prompt sections and memory contexts, swaps the injected instruction block for a short one while preserving its first 80 and last 96 characters, and truncates tool-schema descriptions without touching structure or required fields. Cloud providers are returned as the same assembly object, untouched. The injected block is re-read from disk on every assembly, so editing the file takes effect on the next request with no reload. The panel in the plugin detail page is a live operations view: it shows whether the takeover is active and by which hook, how many characters the last assembly was trimmed from and to, and which providers are online (probed concurrently, with a real one-shot completion reporting latency and reply text per provider). If a local backend is not running, the panel offers a one-click launch: it probes the port first (never starting a duplicate), then starts the matching server (ollama serve, or a custom command you supply) detached and polls until the endpoint answers, clamping the wait to 3-600 seconds, reaping the child it just spawned if it never answers, and naming the paths it searched when it cannot find the binary. A stop button kills backends this plugin started (SIGTERM, then SIGKILL) and refuses to touch a server somebody else launched. When a model has just been downloaded and no backend exists yet, the panel can also scan the machine for .gguf files with hard caps (300 models, 20000 directory entries, Downloads only one level deep), start llama-server on the chosen one (skipping the .mmproj. vision projection and reusing a server that already answers), register the provider under the model id the backend reports, and run one real completion to prove it works. Before spawning anything it does a fit check that counts only the part of the file the GPU cannot hold: hostBytes = fileSize - VRAM, compared against max(total RAM - 2GB, free RAM). A file far larger than RAM is refused outright; a heavy host-side remainder is refused unless you confirm; the same remainder under mmap is only a warning, because the weights land in reclaimable page cache. A load-mode selector (auto / mmap / none / mlock / mmap+mlock) maps to llama.cpp --load-mode, and the default is whatever the engine picks. From 0.4.2 everything above is derived from the platform instead of assumed: home and data directories come from os.homedir() and the OS conventions (LOCALAPPDATA on Windows, ~/Library/Application Support on macOS, XDG_DATA_HOME elsewhere); backend binaries are looked up in the official install locations of each OS and can be pinned with OLLAMA_BIN, LLAMA_SERVER_BIN, VLLM_BIN or LMSTUDIO_BIN; model discovery walks DSH_LOCAL_MODELS_DIR, ~/models, ~/llama.cpp/models, ~/.cache/llama.cpp and the LM Studio data directory, with the WorkBuddy layout demoted to one candidate among them. VRAM is asked from nvidia-smi, then rocm-smi, then sysctl hw.memsize on Apple Silicon (flagged unified, so the same bytes are not charged twice), and any flip to a unified-memory budget is handled explicitly. Before building a command line the plugin runs llama-server --help once and keeps only the flags that build actually has, so older engines get --n-gpu-layers 99 and no KV quantization while newer ones get auto plus q8_0; anything it cannot probe is passed through rather than dropped. LM Studio is started with lms server start --port N rather than being lumped in with the engines that need a model argument, and vLLM gets its own --model example instead of llama.cpp syntax. Windows, macOS and Linux are all exercised in CI, including a windows-latest and a macos-latest job, because a cross-platform claim that has only ever run on one OS is not a claim. Two of those suites exist specifically to catch this machine's blind spots: one replays the whole suite with process.platform rewritten to each OS, and one deletes every advantage this development box has — no nvidia-smi, no rocm-smi, no sysctl, an empty PATH, a home directory with no models — and requires graceful degradation rather than a crash. That last one caught a real class of bug: several assertions hardcoded 'lms.exe', which cannot pass where the executable has no suffix. Measured on the reference machine: a 16.9GB 27.2B MoE with 14.5GB of VRAM holds a 285-691MB working set and sustains 76 tok/s after a 1000-2000 token warm-up, so file size alone is not a fit signal. From 0.4.3 the scanned models are shown as a table rather than a dropdown (one row per gguf, with its size and any fit warning), so you can see what is on disk before choosing. From 0.4.4 the delete button on the provider table removes the provider entry, not the weights file on disk. That distinction matters: what people actually want to clear out is the dead entry - one pointing at a port that never answered, one registered twice for the same port, one whose model file was deleted long ago - not a 15.8GB gguf. Deleting a config is undone by importing again; deleting a gguf is not. The removal goes through settings.mutate with an unset op on \['providers', id], because update merges layers: writing null there leaves a null provider key that the loader reads as a broken config rather than an absent entry, and only mutate/unset is implemented as Reflect.deleteProperty. The result is read back afterwards, because unset on a key that comes from a lower layer (the profile cordis.patch.yml or a home patch) does not delete it - it restores the inherited value, so the call succeeds while the entry stays. When the entry is still there the panel says so and points at the file to edit instead of reporting success, and a DSH whose settings service predates mutate() is told plainly rather than silently ignored. Deleting takes two clicks and clearing the confirmation is as easy as clicking another row; on success the online and baseURL caches are cleared and the tool surface is recomputed, since the provider list changed. The gguf itself is never touched by this plugin - the scanned-model table is display and selection only.VRAM reporting is driver-dependent. From 0.4.5 model discovery also reads Ollama's own storage: its blobs are named sha256-… with no extension, so extension matching could never list them. Weights are now accepted by extension OR by GGUF magic header (only dot-free files of at least 8MB, capped at 600 header reads per scan; obviously-not-weights extensions like .json/.md/.safetensors/.part are never opened). Ollama models are resolved from their manifests: the model layer is picked by mediaType application/vnd.ollama.image.model (never adapter/mmproj layers), the human-readable name is restored from the manifest path (…/qwen3/8b becomes qwen3:8b, …/latest stays bare), tags sharing one blob merge into a single row, and the metadata kv supplies name, quantization and context length. Adopting an Ollama model does not start a duplicate llama-server over the same weights: it confirms ollama serve answers on 11434 (launching it if not) and registers the provider under the tag the endpoint itself reports — the blob's sha256 name would never match anything, since 11434 lists qwen3:14b, not sha256-a8cc…. Two real-machine-only traps fixed on the way: existsSync('<file>/') returns true on Windows, so manifest-vs-directory branching now goes by parseable content instead of trailing-slash semantics; and the quantization label table had been copied from a stale ggml enum generation, labelling ggml_type 15 as Q5_K_S while ollama show reports Q4_K_M. Same-blob dedup is by (dev,ino), keeping whichever entry has a name. Verified on the reference machine: the scan goes from 1 row to 4 — qwen3:14b (8.64G) and qwen3:8b (4.87G) now appear with Q4_K_M badges — in 4ms; npm run verify exits 0 (launcher 57, portable 35, panel-host green including the linux/darwin simulated-platform runs); the new panel-host suite builds a real miniature Ollama store in tmpdir and points OLLAMA_MODELS at it, so results no longer depend on whether the test machine happens to have Ollama installed. From 0.4.6 the panel shows each model its real name instead of its file name, because some download tooling stores every weight under one generic file name, leaving the real name only inside the GGUF header. The scan now reads each file GGUF KV section - not a fixed-size head buffer, because tokenizer.ggml.tokens (hundreds of thousands of strings on a large MoE model) and the chat template push general.file_type past any window; and GGUF string arrays are interleaved (u64 length plus payload per element), so treating them as a length table walks the cursor off the rails and produces astronomically large reads. Reading and skipping are accounted separately: key names and types are always read, string values over 256KB and string arrays are only walked past without copying, non-string arrays over 64 elements are skipped outright, and a cursor past the file size stops the read, because an out-of-range position means the cursor is wrong rather than that a limit should be raised. The displayed name goes Ollama tag, then general.basename plus size_label, then general.name, then the file name, with the full string kept for the hover text since it usually carries internal build numbers; mmproj files are now identified by general.type as well as by name. A short read (truncated file) no longer feeds half a value into the parser. On the reference machine, reading one file header parses 44 keys in about 16ms, and a whole scan takes about 31ms. From 0.4.7 the smoke test no longer fails the first time and passes the second. The old code gave both request attempts one shared AbortController and one shared 30-second timer, so the total budget covered both rounds: a cold load of a large model burned it in round one, the abort left the signal permanently aborted, and the second round (the Ollama-style reasoning_effort: none retry) could not even be sent - which is exactly why the first click returned This operation was aborted and the second succeeded. Now each attempt gets its own controller and timer, a timeout retries once automatically (retryOnTimeout, on by default) because a first-request timeout almost always means the weights are still being read from disk, and non-timeout errors (refused connection, HTTP error) are not retried at all. Timeouts report themselves: the message says the wait exceeded smokeTimeout, whether a retry already happened, and points at the new smokeTimeout setting (seconds, default 60, clamped to 5-600) - port responding is not the same as tokens coming out, so it is a separate knob from launchTimeout. Unrelated: an example naming one specific model was dropped from the panel copy, since not every machine has that model downloaded, and the explanation now describes the mechanism instead.
dsh-auto-convert
yimengsuper2432/dsh-auto-convert
Prepara archivos antes de que los abran read, read_image y las herramientas vision. Reduce imágenes de más de 2048 px o 8 MB (un reintento a 1280 px durante el mismo turno), convierte BMP/TIFF a PNG y corrige cargas mal etiquetadas examinando sus bytes. Convierte docx/xlsx/pptx, PDF con capa de texto, csv/tsv y html a Markdown sin programas externos.
dsh-overflow-fallback
walzx123/dsh-overflow-fallback
Cuando se supera el límite de contexto y la compactación integrada abandona, compacta una vez más automáticamente y vuelve a intentarlo. Si vuelve a fallar, organiza la sesión original en un paquete handoff para continuar en una nueva. Sin cambiar de motor ni añadir UI; la reanudación de sesión requiere activación explícita por defecto y la original queda de solo lectura.
dsh-phoenix
kdreamelf/dsh-phoenix
Protección de fallos en proceso: toma los manejadores de errores fatales que cerrarían DSH, identifica el plugin responsable por la pila y desactiva solo su fila en la capa home patch, sin tocar el profile ni la configuración provider que contiene. La página de error ofrece reintentar, mantener desactivado o desinstalar; si no puede identificar la causa, abre una sesión temporal safe-mode (solo lanzamientos CLI y web).
sleep-not-permitted
jjjacksong/sleep-not-permitted
Rechaza esperas en primer plano de agentes DSH: comandos de espera (sleep, wait, tail -f, watch, ping sin -c y bucles infinitos), herramientas bloqueantes (wait_agent, job_output con wait: true), sondeos repetidos del mismo comando de comprobación dentro de una ventana y comandos que exigen intervención humana (sudo sin -n, ssh sin BatchMode, inicios de sesión, editores interactivos, docker -it). Devuelve una alternativa accionable: ejecutarlo en segundo plano o terminar el turno. Presupuesto y ventana de sondeo configurables; idioma del mensaje según system (zh/en). Sin dependencias de ejecución.
dsh-auto-retry
643048695/dsh-auto-retry
Reintenta automáticamente solicitudes de modelo fallidas: intercepta cada error y repite el mismo paso tras pausas de 2/5/10/20 s, para que fallos breves de gateway y límites de frecuencia no terminen el turno.
glm-coding-quota
hou-mingyuan/glm-coding-quota
Anillo de cuota GLM Coding Plan en el dock del composer: ventanas de crédito de 5 horas y semanal, nivel, actualización automática y reintento en un clic. Requiere suscripción y clave GLM Coding Plan, además de IDs de organización y proyecto BigModel (la API de cuota de equipo devuelve vacío sin ellos).
dsh-retry
kouzerror/dsh-retry
Añade la opción nativa «Restart DeepSeek Harness» al menú de la bandeja del sistema de Windows y al menú de cuenta de la app de escritorio DSH. Al inicio, el plugin prepara un resources/app.asar parcheado; un ayudante separado hace una copia del original y lo sustituye tras un cierre normal. El parche se reaplica después de cada actualización. Cualquiera de las opciones reinicia la app correctamente en el siguiente inicio. Solo Windows de escritorio; otros hosts responden 409 not_desktop.
dsh-qbuddy-prompt-enhance
dhdkfkfkf/dsh-qbuddy-prompt-enhance
Botón junto al composer que reescribe el borrador actual como prompt más ejecutable. Incluye cuatro presets de retoque ligero a expansión agresiva y acepta presets propios. Cambia preset, modelo de prompt y razonamiento desde el botón sin salir del composer. Solo aparece con texto; muestra temporizador mientras mejora y ofrece reintento si falla.
dsh-codex-plus
zhaoziyangshaanxi/dsh-codex-plus
Cuota real de la suscripción ChatGPT/Codex en DSH. Lee `/wham/usage`: ventanas 5 h/semanales, cuenta atrás, saldo extra, grupos de límites y límite de revisión de código. Lista/canjea créditos de reinicio del servidor con idempotency key estable y segura ante reintentos; admite varias cuentas. `/codex/models` da el catálogo real; si no está disponible, queda vacío (sin lista integrada). Inicio con un clic en Settings (autorización del navegador o device code; alternativa: pegar callback); credenciales en el credential service DSH. Las llamadas reutilizan `llm-pi-ai`, ruta Codex integrada, sin registrar/ocupar una provider route. Si otro plugin la posee, queda solo la consola de cuota. Chip de cuota restante junto al composer.
dsh-grantwrite-patch
0-v-0/dsh-grantwrite-patch
Plugin de reparación de ACL del sandbox de Windows para DeepSeek Harness: corrige el fallo grantWrite (SetNamedSecurityInfoW Win32 5) y reintenta el comando sin mostrarlo.
dsh-wechat-share
tuiltex-0216/dsh-wechat-share
Reenvía registros de chat de WeChat a sesiones DSH: un destino de uso compartido de Windows captura el ZIP de mensajes reenviados; una superposición GUI permite elegir workspace y sesión. El ZIP llega como mensaje de usuario con archivo adjunto que el agente desempaqueta y lee. Normaliza extensiones según bytes mágicos (WeChat puede enviar PNG/HEIC con nombre .jpg) y conserva el lote si falla la entrega para reintentar. Requiere Windows 10/11, Developer Mode activo y el instalador del repo para registrar el destino compartido.
dsh-im-union
drscrewdriver/dsh-im-union
Bridge IM para DSH: 15 adapters/12 plataformas. Adapta hosts 0.1.2-rc.1–0.2.1-rc.2 por capability probing (enum 12 tags, sin ramas por versión); ffmpeg solo para voz Feishu. Aprobaciones/preguntas en chat origen: deny-by-default, solo iniciador, vence en 5 min. Imagen/archivo según model metadata host; devuelve archivos y limita retries (envío incierto no se repite). Tasks/Channels tabs ceden si otro plugin posee el slot. Preset im-concise; quita GenUI fences/raw HTML de chats texto y convierte svg a PNG. Allowlist de modelos. /relay envía respuesta final por account ID/alias, sin adivinar ambigüedad. Secrets unidireccionales al vault, nunca se devuelven en respuestas. npm: dsh-im-union.
dsh-hindsight-memory
meisijiya/dsh-hindsight-memory
Conecta DeepSeek Harness con el servicio de memoria Hindsight siguiendo las convenciones de omp: banco compartido, etiquetas de proyecto automáticas, recuerdo por proyecto y global, y herramientas de modelos mentales, duplicados y reintento de operaciones en segundo plano fallidas. Requiere un servidor activo (por defecto http://127.0.0.1:8888).
dsh-retry-guard
sjh9714/dsh-retry-guard
Observa fallos consecutivos idénticos de herramientas y puede pausar antes del siguiente paso del modelo. Conserva los resultados originales y las repeticiones exitosas, y muestra un informe dentro del chat en DSH Web.
dsh-restart-task
zchuxi/dsh-restart-task
Recupera turnos DSH interrumpidos: amplía el presupuesto de reintentos propio y muestra la espera como cuenta atrás en vivo dentro del mismo paso. Mantiene una salida truncada dentro del mismo turno y puede abrir una ronda de continuación opcional si el turno ya terminó; con el compositor vacío, el botón de enviar pasa a iniciar esa continuación.