Back to home

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

Awesome DSH Plugin

⚠️ 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_question tool 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 DeepseekMemory and 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 endpointsGET /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

FieldDefaultMeaning
modedefaultproactive / passive / default speaking style
selfNameHow 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 DeepseekMemory file (in the configured memory directory, defaulting to the plugin folder). To isolate memory per workspace/session, point memoryPath at 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.