Introduction

In the DSH (DeepSeek Harness) plugin scenario, personality, tools, and the display layer can be handled in separate modules. dsh-catgirl-plugin is a token-efficient personality runtime for DeepSeek Harness, maintained by Freakz2z, and licensed under the MIT license.

Instead of stuffing a long persona directly into the model context, it allows the model to output normal text, while the local rendering layer adds the catgirl flavor. Simultaneously, it controls visible tools via a tool whitelist.

What is this

In short: dsh-catgirl-plugin is a token-efficient personality runtime for DeepSeek Harness.

It revolves around three main objectives:

  • Keep the model context clean: session logs save the original text, zero pollution in the model context.
  • Reduce LLM token costs for catgirl flavor: local rendering of the catgirl flavor, 0 LLM token cost.
  • Reduce tool schema usage: tool schema trimming, reducing 25 tools to 8.

Core Features

Persona Virtualization

The concept of Persona Virtualization is: the model outputs normal text, and the local rendering layer adds the catgirl flavor.

This ensures session logs save the original text, zero pollution in the model context; the catgirl flavor is rendered locally, 0 LLM token cost.

Tool Trimming and On-Demand Unlocking

catgirl-economy trims tools within the agent scope via ctx.tools.restrict(), reducing 25 tools to 8.

When a task requires a trimmed tool, it can be unlocked on-demand via enable_tool. The progressive disclosure of enable_tool is used to restore capabilities.

If the requested tool to unlock is not installed in the current profile, enable_tool will return an unavailable prompt and retain the original whitelist.

Plugin Modules

  • catgirl-lite: Extremely short persona.
  • neko-renderer: Headless display layer.
  • catgirl-economy: Tool trimming and on-demand unlocking.
  • client: Web UI rendering.
  • usage-meter: Usage recording.

The personality copy is in Chinese only; INTENSITY_TEXT is located in index.js and can be modified manually or extended via traits.

Installation and Usage

The installation command specifies the demo profile:

dsh plugin --profile demo add dsh-catgirl-plugin

Then, add a profile patch to insert catgirl-lite, neko-renderer, and catgirl-economy. The configuration below uses fields verified in facts:

- insert:
    - name: dsh-catgirl-plugin/catgirl-lite
      config:
        persona: 'Be concise, friendly, and natural.'
    - name: dsh-catgirl-plugin/neko-renderer
    - name: dsh-catgirl-plugin/catgirl-economy
      config:
        allow: [bash, read, write, edit, glob, grep, str_replace_editor, todo_write]

Web UI rendering is optional. Install dsh-catgirl-plugin-client and add a profile patch to insert neko-renderer-client:

- insert:
    - name: dsh-catgirl-plugin-client

Typical Usage

Basic Enablement

First, install the plugin, then enable the three modules in the profile patch:

  1. Install dsh-catgirl-plugin.
  2. Insert dsh-catgirl-plugin/catgirl-lite and set config.persona to Be concise, friendly, and natural..
  3. Insert dsh-catgirl-plugin/neko-renderer.
  4. Insert dsh-catgirl-plugin/catgirl-economy and configure the allowed tools in config.allow.

The example whitelist is:

allow: [bash, read, write, edit, glob, grep, str_replace_editor, todo_write]

When More Tools are Needed

If the current task requires a trimmed tool, call enable_tool to unlock the corresponding tool.

Please note:

  • If the requested tool to unlock is not installed in the current profile, enable_tool will return an unavailable prompt and retain the original whitelist.
  • Tasks requiring specialized tools have a degradation boundary (e.g., subagent parallelism, skill calls), where the model changes strategy; enable_tool’s progressive disclosure is used to restore capabilities.

Development and Build

The development environment requirements come from package.json:

"engines": {
  "node": "^22.19.0 || >=24.0.0"
}

Dependencies:

"@deepseek-ai/schemastery": "^3.18.1"

Common commands:

npm install
npm test
npm run test:composition
npm run pack:check

Building the client plugin requires entering the client directory to install dependencies and linking @deepseek-ai related packages from the harness checkout. It is known that dsh-client-runtime depends on the unpublished dsh-compact, so building the client package requires linking dependencies from the harness checkout.

Use Cases and Notes

Suitable for scenarios in DSH that use local personality rendering and tool whitelist control. It is suitable for developers who want to reduce the persona’s footprint in the model context while retaining the catgirl display effect.

Please note:

  • The plugin runs with the current DSH process permissions; check the source code and license before installing.
  • headless one-off processes do not wait for background subagents: child agents with run_in_background: true are terminated when the parent process exits; synchronous mode is fully usable, and the Web UI has no issues.
  • The dependency chain for rc packages on npm registry is broken: dsh-client-runtime depends on the unpublished dsh-compact, so building the client package requires linking dependencies from the harness checkout.
  • The nya tool outputs random data using Math.random() and is not suitable for snapshot testing.
  • The personality copy is in Chinese only; INTENSITY_TEXT is located in index.js and can be modified manually or extended via traits.
  • dsh bundle patch is ./cordis.patch.yml.

Conclusion

The value of dsh-catgirl-plugin lies in putting personality presentation into the local rendering layer, keeping the tool interface within a whitelist, and using enable_tool to restore tool capabilities when needed.

Repository address:

  • GitHub: https://github.com/Freakz2z/dsh-catgirl-plugin