Bundle
better-basicfun
Host-only DSH foundation helpers: default workspace, resource inspection, and CLIProxyAPI catalog bridging.
- Source
- CDeZT
- License
- MIT
- Updated
- Updated 2 days ago
Readme
# better-basicfun
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/workspace` as 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_resources` tool for plugins, skills, memory, sessions, storage, settings, credentials, and files below `DSH_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](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:
```text
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:
```yaml
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
```powershell
& "$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:
```yaml
- 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
```powershell
& "$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.
Install
dsh plugin --profile web add github:CDeZT/better-basicfun#4f93b40047fa58d44190a2e5ddc3703706eb9cff
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install better-basicfun from the hub