Skip to content
dsh.fish
Bundle

dsh-humanized-deepseek-maid

Gives the DeepSeek Harness agent a configurable humanized whale-girl maid persona (address, self-name, speaking mode), an immersive no-plugin-meta rule, and a lightweight layered memory with query-triggered recall.

Source
loonai321
stars
4 stars
License
MIT
Updated
Updated 5 days ago

Readme

<h1 align="center">dsh-humanized-deepseek-maid</h1>

<p align="center">
  <strong>A humanized whale-girl maid persona for DeepSeek Harness</strong><br/>
  Lightweight to save tokens, mandatory configured identity, immersive roleplay,
  long-term memory with personality growth — configurable from the Web UI.
</p>

<p align="center">
  <img src="https://awesome-dsh-plugin.com/badge.svg" alt="Awesome DSH Plugin" />
  <img src="https://badgen.net/badge/license/MIT/green" alt="license" />
</p>

---

## 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 <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 `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

Install

dsh plugin --profile web add github:loonai321/dsh-humanized-deepseek-maid#c13281456456a6b4018288396eef14c3c97628c8

Profile: web

Source