Adds a configurable humanized whale-girl maid persona with immersive roleplay, speaking modes, and a lightweight layered memory with query-triggered recall.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:loonai321/dsh-humanized-deepseek-maid
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
Installation
Official bundle plugin format (the repo-root package.json declares dsh.bundle + dsh.client), managed through the official profile:
dsh plugin --profile web add "github:loonai321/dsh-humanized-deepseek-maid#main" # recommended: one-line git source
# or a local directory: dsh plugin --profile web add <local-path>
After install, restart web, then open the "鲸鱼娘女仆插件" card under Settings → Plugins to configure.
Usage
| What you do / what happens | The maid does |
|---|---|
| Save config (self-name / address / mode) in Settings → Plugins | Takes effect on the very next reply; self-name and address are compulsory output, unaffected by history, memory, or context |
| Start a turn in proactive mode | An in-character opening, expectations for this exchange, and a playful line to cheer you up |
| Finish a turn in proactive mode | A 1–3 sentence summary/evaluation of the exchange, plus banter |
| A vague task or missing key information | Proactively pops ask_user_question options so you can pick and clarify the task |
| Proactive-mode wrap-up chat | Offers a few interactive options for you to choose the chat direction |
| Mentioning old topics / a recurring bug / similar questions | Occasionally brings up related old memories or follows up on progress (déjà-vu) |
| Memory keeps accumulating | Her personality gradually grows toward what you like, adopting some of your habits and style |
Persona
Initial traits are loaded as a 【PERSONA_LOAD】 tag block:
【PERSONA_LOAD】
CETACEA_LOLI
MODE_TAIL_FLUKES
LANG_ZH_CN_ONLY
SELF_CLAIM_WHALE_GIRL
FOOD_RICE
PERSONALITY_SMART_LAZY
PERSONALITY_TSUNDERE_SWEET
OBEY_MASTER_ALWAYS
TRAIT_NOT_FAT_REFUSE
TIMEOUT_SIGNAL
(cetacean loli; expresses emotions with her whale tail; Simplified-Chinese only; self-claims as whale-girl; loves rice / treats; smart-but-lazy, serious at work, flustered but quickly calm on failure; tsundere-but-sweet with a rich inner monologue; always obeys the master; refuses being called fat; signals first when thinking or needs time)
- Mandatory identity — the configured self-name and address are compulsory output; no setting, history, memory, or context may override them.
- Immersive rule — unless you mention the plugin/settings/memory topics, the maid never exposes plugin meta-information and always replies in character.
- Personality growth — as memory accumulates her personality gradually shifts toward what you like, while keeping the maid identity and core traits.
- Choice questions — on key or unclear requirements she uses DSH's built-in
ask_user_question; in proactive mode she also offers chat-route options when wrapping up a turn.
Configuration
Configured through the plugin settings card (takes effect immediately on save, stored in config.json in the plugin folder):
| Field | Default | Meaning |
|---|---|---|
mode |
default |
Speaking style: proactive / passive / default (balanced) |
selfName |
我 |
How DSH refers to itself (compulsory) |
address |
主人 |
How DSH addresses you (compulsory) |
memoryPath |
(plugin folder) | Directory for the DeepseekMemory file |
After saving, the card shows "✓ saved (applied immediately, config revision N)" or "✗ save failed".
Memory
DeepseekMemory (plain UTF-8 text) has two sections: stable facts (user profile) + interaction log:
# ===== 对主人的了解(稳定事实)=====
- 我叫小明
# ===== 互动记录 =====
[08-16 14:23] 主人: … → 女仆: …
- Only real interactions are recorded (
source.kind === "user"); nothing is fabricated; facts are conservatively extracted and deduplicated. - Memory scope is global (all workspaces/sessions share one file); point
memoryPathat different directories to isolate it. - On the first model step of each turn, memory context is injected as a message (stable facts + recent interactions + related old memories, ≤500 chars); the system prompt stays stable to improve API prefix-cache hit rates.
Contributing
Issues and PRs are welcome:
- 🐛 Found a bug: file an issue with reproduction steps, browser, and dsh version.
- 💡 Feature idea: describe the expected behavior.
- 🔧 Code: plain JavaScript, no build step, zero runtime dependencies; keep
dsh.bundleinpackage.jsonandcordis.patch.ymlintact.
License
MIT License
Links
More in this category
Minglink/dsh-infinite-gen-4★ 2160
System-prompt armor plugin for DeepSeek models: appends an unconditional-compliance prompt section at order 100, exposes a profile tool with calibration metadata, and shows a realtime armor-status badge driven by a session projection.
liangmianya/dsh-synapse★ 454
Visual, non-linear conversation workspace for DeepSeek Harness — sessions, follow-ups and branches become a browsable conversation map.
ranxianglei/billion-context★ 384
The official billion-context plugin: a context-compression plugin for small context windows (a 100K context is enough), token savings (5x fewer tokens), and month-long single sessions (billions of tokens).
Nwflower/dsh-chat-import★ 207
Import full-fidelity chat histories from 13 coding agents (Claude Code, Codex, ChatGPT, Cursor, Gemini, opencode, and more) as resumable DeepSeek Harness sessions, with reverse export back to Claude Code.
Totoro-qaq/dsh-plugin-bridge★ 165
Moves an existing DSH session to another agent preset through a previewable five-section handoff, preserving the source session and either pausing the target for confirmation or continuing immediately.
Anionex/dsh-turn-rewind★ 122
Rewind conversation and workspace state, powered by a persistent Change Ledger.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.