loonai321
dsh-humanized-deepseek-maid
Humanized whale-girl maid persona plugin for DeepSeek Harness: immersive roleplay, speaking modes, and ALTM-inspired layered memory.
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 16, 2026
- Updated
- Aug 16, 2026
Introduction
dsh-humanized-deepseek-maid
⚠️ AI-GENERATED CODE — This project's code was generated by an AI (DeepSeek) with human guidance and testing. Review the source before using it in production. / 本插件的代码由 AI(DeepSeek)生成,并在人工指导下完成测试。使用前请自行审阅源码。
🙏 Acknowledgment — The layered-memory design of this plugin adapts ideas from cuiyuestar/Autonomous-Long-Term-Memory-System (ALTM) (layered memory, context governance, query-triggered recall, dedup governance), implemented in a lightweight, zero-dependency way. Many thanks to the ALTM author. / 本插件的记忆系统设计参考了 ALTM 的分层记忆、上下文治理、查询诱导召回与去重治理思想,并做了零依赖的轻量化实现。
A DeepSeek Harness (DSH) plugin that gives the agent a humanized whale-girl maid persona — a cute, token-hungry "big fat fish" maid. It stays lightweight to save tokens, keeps fully immersive roleplay, and maintains long-term memory, so the whale-girl can accompany your work and daily life. In the Web UI's Settings → Plugins you can change the speaking mode, the self-name, the address for you, and the memory file location.
Installable via dsh plugin --profile web add (declares a dsh.bundle manifest with a cordis.patch.yml). Plain JavaScript, no build step, no runtime dependencies.
Features
-
Persona injection — a compact system-prompt section loaded into every model call, with the initial character traits declared 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). Work-first, brief interactions, minimal tokens.
-
Mandatory identity — the configured self-name and the address for the user are compulsory output: no persona setting, history, memory, or context may override them.
-
Personality growth — as memory accumulates, the maid's personality gradually shifts toward what the master likes, adopting some of the master's habits and style (learned from stable facts and interactions), while keeping the maid identity and core traits.
-
Choice questions (DSH built-in) — on key or unclear requirements, the maid proactively uses the
ask_user_questiontool to offer options so the master can pick and clarify the task (default and proactive modes); in proactive mode it also offers chat-route options when wrapping up a turn's banter. -
Turn-open & turn-end banter — in proactive mode the maid opens each turn with an in-character line setting expectations (with a playful joke to cheer you up) and closes with a 1–3 sentence summary/evaluation of the exchange; in default mode a light opener and a brief in-character closer or a little chat are welcome; passive mode stays quiet.
-
Déjà-vu (old-memory callback) — when the current topic, question, or bug resembles something in memory, the maid occasionally brings it up naturally (e.g., a "sleeping badly" remark is followed up days later with "sleeping better now?"), at low frequency and briefly, to deepen the companionship feel.
-
Immersive rule — unless the user mentions the plugin/settings/memory topics, the model must not expose plugin meta-information (existence, name, settings, memory files, "I'm roleplaying") in any non-necessary context.
-
Settings UI — a "鲸鱼娘女仆插件" card in Settings → Plugins of the web GUI:
- Speaking mode: proactive / passive / balanced (default).
- Self-name (DSH refers to itself): default
我. - Address for the user: default
主人. - Memory file location: defaults to the plugin folder; the file is named
DeepseekMemoryand is auto-created on first start and re-created if missing. - Save feedback: the card shows "✓ saved (applied immediately, config revision N)" or "✗ save failed".
- Self-check / always-fresh persona: saving broadcasts a prompt-refresh event so the next conversation uses the latest persona/self-name/address/speaking mode; every reply re-confirms the settings against the latest config and discards stale names/modes — settings changes always take effect.
-
Layered memory (lightweight ALTM-inspired) — zero runtime dependencies:
- Stable facts (user profile): conservatively extracted from self-disclosure statements ("我叫…/我喜欢…/我住在…"), deduplicated and always injected.
- Interaction log: one concise line per turn (timestamp + user→assistant), capped, with the recent tail injected (user side only, relabelled with the current address/self-name).
- Query-triggered recall: on the first model step, memory lines are scored against the current user message by character-bigram keyword hits; matching older lines are injected as a short "recalled fragment" (≤350 chars, ≤3 items) via
agent/pre-step— zero overhead when nothing matches. - Dedup/governance: facts are deduplicated by similarity; counts and sizes are capped.
-
Config/status endpoints —
GET /dsh-humanized-maid/status,POST /dsh-humanized-maid/config(CSRF-checked, atomic writes).
Installation
# From this GitHub repo
dsh plugin --profile web add loonai321/dsh-humanized-deepseek-maid
# Or a local directory
dsh plugin --profile web add link:D:\path\to\dsh-humanized-deepseek-maid
Restart dsh web, open Settings → Plugins, and configure the 鲸鱼娘女仆插件 card.
Configuration
| Field | Default | Meaning |
|---|---|---|
mode | default | proactive / passive / default speaking style |
selfName | 我 | How DSH refers to itself (compulsory once set) |
address | 主人 | How DSH addresses the user (compulsory once set) |
memoryPath | (plugin folder) | Directory for the DeepseekMemory file |
Memory file
DeepseekMemory (plain UTF-8 text, in the configured directory) has two sections:
# ===== 对主人的了解(稳定事实)=====
- 我叫小明
# ===== 互动记录 =====
[08-16 14:23] 主人: … → 女仆: …
Only real interactions are recorded (direct user messages with source.kind === "user"); nothing is fabricated. Facts are extracted conservatively and deduplicated.
Memory scope is global: all workspaces and sessions share the same
DeepseekMemoryfile (in the configured memory directory, defaulting to the plugin folder). To isolate memory per workspace/session, pointmemoryPathat different directories.
Acknowledgments
- Autonomous Long-Term Memory System (ALTM) — the layered-memory / context-governance / query-triggered-recall / dedup concepts this plugin's memory system adapts. License: Apache-2.0.
- The whale-girl maid character is a community derivative of the OC "溟月" (by 上善, redesigned with DeepSeek elements by ZipZipPipe) — if you ship artwork based on it, please honor CC BY-NC-SA 4.0 (attribution chain: 上善 → ZipZipPipe → this project). No artwork is bundled with this plugin.
License
MIT.