Native DSH foundation bundle that registers a persistent default workspace, provides paged read-only inspection of plugins, skills, memory, sessions, storage, settings, credentials, and DSH_HOME files, and synchronizes rich CLIProxyAPI model capabilities into native provider settings.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:CDeZT/better-basicfun
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
An installable, cross-platform DSH bundle that fills a small set of missing host-side fundamentals: a persistent default Workspace, complete resource inspection, and synchronization of CLIProxyAPI's rich model catalog into native DSH Provider settings.
It is not a Codex plugin, does not read ~/.codex, does not inject or modify DSH frontend code, and does not proxy inference. DSH's native model and reasoning selector remains authoritative.
Source: https://github.com/CDeZT/better-basicfun · Release: https://github.com/CDeZT/better-basicfun/releases/latest · Community: https://github.com/deepseek-ai/deepseek-harness/discussions/5344
Features
- Creates and registers
$DSH_HOME/workspaceas the default Workspace. - Creates
AGENTS.md,MEMORY.md, and.dsh/skills/without overwriting user files. - Loads persistent memory for sessions in the default Workspace.
- Adds the read-only
dsh_resourcestool for plugins, skills, memory, sessions, storage, settings, credentials, and files belowDSH_HOME. - Synchronizes CLIProxyAPI's rich model catalog on the host so DSH's native selector receives dynamic capability metadata.
- Contains no React dependency, DOM injection, frontend slider, or static model-name capability guesses.
This plugin deliberately exposes sensitive DSH data to the model. dsh_resources can return unredacted settings, resolved credentials, complete sessions, and files below DSH_HOME; tool results may be sent to the configured model provider. Read SECURITY.md before installing.
CLIProxyAPI native catalog bridge
Configure a DSH custom Provider with the real CLIProxyAPI inference URL. The plugin only synchronizes the catalog:
GET {baseURL}/models?client_version=pi
→ CLIProxyAPI rich models[] catalog
→ DSH models[] (id/name/contextWindow/maxTokens/input/reasoningEfforts)
→ llm-pi-ai settings
→ native DSH model/reasoning selector
Inference remains direct: DSH → configured CLIProxyAPI Base URL → model service.
Example:
llm-pi-ai:
providers:
cliproxyapi:
displayName: CLIProxyAPI
apiKeyEnv: CLIPROXYAPI_KEY
api: openai-responses
baseURL: http://127.0.0.1:8317/v1
models:
- id: placeholder
DSH currently cannot save a custom Provider with no models. During initial setup, use DSH's Fetch available models action and select at least one result before saving; no hand-written placeholder is needed. The bridge enriches the selected list after the Provider is saved.
The bridge refreshes at startup, after llm-pi-ai changes, after a relevant API key changes, and every 15 minutes by default. Plain OpenAI {"data": [...]} responses are ignored. Empty or failed responses never erase a working model list. API keys are resolved on the DSH host and sent only to the configured Provider catalog endpoint, never to the browser.
Enter only the normal inference Base URL, such as http://127.0.0.1:8317/v1. Do not append /models or ?client_version=pi; the bridge constructs the rich catalog URL itself.
Reasoning levels are mapped from the remote catalog only: none becomes DSH off; canonical levels remain unchanged; and ultra occupies DSH's current max position only when no real max is advertised. The bridge never guesses capabilities from model names. default_reasoning_level is not written because DSH currently has no safe equivalent per-model default field.
Install in DSH Desktop
& "$env:APPDATA\DSH Desktop\host-commands\desktop\bin\dsh.cmd" plugin --profile desktop add "C:\path\to\better-basicfun-1.3.0.tgz"
Restart DSH Desktop after installation.
Workspace and permission boundary
The Workspace is $DSH_HOME/workspace; its skills are in .dsh/skills, while user-level skills remain in $DSH_HOME/skills. Profiles, sessions, storage, settings, and credentials stay outside the Workspace write boundary.
Do not use all of $DSH_HOME as a Workspace: workspace-write would then allow changes to private DSH state. This plugin provides read-only discovery through native host services without widening that boundary. No customSkillDirs change is needed.
dsh_resources supports overview, plugins, skills, memory, sessions, storage, settings, credential, cliproxyapi, list, and file. The cliproxyapi view reports synchronization status without returning credentials.
Configuration
Defaults require no configuration. Example override:
- id: better-basicfun
config:
workspacePath: 'D:\DSH\Default'
title: 'Default workspace'
pinFirst: true
memoryMaxBytes: 32768
defaultListLimit: 50
defaultContentLimit: 32768
maxBinaryReadBytes: 67108864
cliProxySync: true
cliProxyProbeAllCustomProviders: true
cliProxyRoutes: []
cliProxyRefreshMinutes: 15
cliProxyRequestTimeoutMs: 10000
An empty cliProxyRoutes probes custom OpenAI-compatible Base URLs but only writes when a rich models[] response is recognized. Use cliProxyRoutes: [cliproxyapi] to restrict probing to named routes.
Uninstall
& "$env:APPDATA\DSH Desktop\host-commands\desktop\bin\dsh.cmd" plugin --profile desktop remove better-basicfun
Uninstalling leaves user-authored Workspace files, memory, and skills intact.
Links
More in this category
vectorize-io/hindsight#coding-agents★ 51291
Hindsight, agent memory that learns: long-term project memory with auto recall and retain, knowledge pages, deep reflection, and per-repo memory banks.
volcengine/OpenViking#examples/dsh-memory-plugin★ 40273
OpenViking memory and context bundle for DeepSeek Harness: pre-step auto-recall and profile injection, session capture, `viking://` URI guarding, and recall/write memory tools backed by an OpenViking server.
agentscope-ai/ReMe#dsh★ 3646
Connects DeepSeek Harness to ReMe's local-first, self-evolving personal knowledge base: automatically captures completed main-agent conversations as user-owned Markdown memory, searches conversations and source material through reme_search with BM25, optional embeddings, and wikilink expansion, and schedules daily memory consolidation.
zilliztech/memsearch#MemSearch★ 2759
Shared Markdown memory for DSH and other coding agents, with automatic capture, pre-step context injection, searchable recall, and memory-to-skill self-evolution through a review panel.
vshulcz/deja-vu#extensions/dsh★ 1244
Reads the session files thirty-three other coding agents on this machine already wrote — Claude Code, Codex, Cursor, VS Code Copilot Chat, opencode, OpenClaw, Hermes, Kimi, Cline, Zed and more — including sessions from before it was installed: six tools (deja_recall, deja_session, deja_blame, deja_fix, deja_how, deja_remember), a /deja command, and optional automatic recall added to the runtime context. Local BM25 index, no LLM, no embeddings, no network (dsh plugin --profile web add dsh-deja).
adoresever/graph-memory★ 655
Traceable, searchable cross-session memory for DeepSeek Harness — conversation knowledge as typed graph nodes (TASK/SKILL/EVENT) and typed edges.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.