dsh-humanized-deepseek-maid
A humanized whale-girl maid persona for DeepSeek Harness
Lightweight to save tokens, mandatory configured identity, immersive roleplay, long-term memory with personality growth — configurable from the Web UI.
--- ## Installation Official **bundle plugin** format (the repo-root `package.json` declares `dsh.bundle` + `dsh.client`), managed through the official profile: ```sh 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
``` 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 `memoryPath` at 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.bundle` in `package.json` and `cordis.patch.yml` intact. ## License MIT License