dsh-persona-core
DeepSeek Harness(dsh)のすべての会話に、ひとりの、あなた専用に育つ人格を持たせるプラグインです。
- 構造化された人格定義(
persona.yaml)
- 仕事モード/雑談モードの自動切り替え
- 機嫌と傷つき(不快なことが続くと冷たくなり、優しくされると少しずつ戻る)
- 長期記憶(あなたのこと・二人の出来事・彼女自身について決まったこと・話の続き)
- 「いつもの相手か」をなんとなく感じ取る認識(機能は一切ブロックしない)
- 本人だけが知る過去(初回に非公開で生成され、信頼に応じて少しずつ話せるようになる)
- 出力側の口調補正(一人称・絵文字)と、口調のずれの検出
検証済み: @deepseek-ai/dsh 0.2.1-rc.2(2026-10-23)。dsh は developer preview のため、他のバージョンでは動かない可能性があります。desktop プロファイルの主要プラグイン(save-token / OpenViking / agent-teams / LiangShen / markdown-reader / browser-use ほか)と同時に起動できることも確認しています。
インストール
dsh plugin --profile web add ./dsh-persona-core-0.1.1.tgz
dsh --profile web --dump-config | grep -A8 dsh-persona-core # 読み込まれたか確認
dsh web
アンインストールは dsh plugin --profile web remove dsh-persona-core。保存データ(下記)は残るので、不要なら手で消してください。
データの置き場所
すべて $DSH_HOME/persona-core/(既定 ~/.dsh/persona-core/)に、本人だけが読める権限(0600)で保存されます。外部には送信しません。
| ファイル | 中身 | 編集してよいか |
|---|
persona.yaml | 人格の骨格。初回に既定値が書き出される | ◎ 保存すると再起動なしで反映 |
memories.jsonl | 記憶(1行1件) | ○ 行を消せば忘れる |
state.json | 機嫌・関係性・認識プロフィール(統計値のみ) | △ 消すと関係がリセット |
hidden/backstory.json | 非公開の過去 | ✕ 見るとネタバレ。消すと次回起動時に作り直し |
設定
cordis.patch.yml(プロファイルの patch でも上書き可):
| 項目 | 既定 | 説明 |
|---|
characterName | '' | 名前。persona.yaml の name でも可 |
userName | '' | 呼び名を固定。空なら会話から覚える |
timeZone | システム | 時間感覚・日替わりの気分に使用 |
toneCorrection | casual | 出力の口調補正。casual=雑談のみ / always / off |
subagent | short | サブエージェントの人格。short=口調だけ / full / off |
provider / model | 会話と同じ | 記憶の整理・過去の生成に使うモデル |
distillEvery | 4 | 何ターンごとに記憶を整理するか |
recallLimit | 8 | 1回に思い出す記憶の数 |
emotion / memory / recognition / backstory / drift | true | 各機能のオン/オフ |
coexistWarnings | true | 既知の競合プラグインを検知して警告する |
他のプラグインとの共存
同じプロファイルに他のプラグインが入っていても、dsh の拡張点が重ならない限り同時に動きます。persona-core が関係する組み合わせは次のとおりです。
| プラグイン | 何が起きるか | 対応 |
|---|
@openviking/dsh-memory-plugin | 毎ターン自動で記憶を思い出す点が重複する | 読み込み時に警告。記憶の持ち主を片方に寄せる(こちらの memory: false、または OpenViking の recall を off) |
@linxin666/dsh-liangshen | プリセットが system prompt を whitelist で置き換え、persona セクションが消える | セッションごとに検知し、そのセッションでは動的コンテキストと口調補正を止めて警告。persona を効かせたい会話は標準プリセットで |
@nanmicoder/dsh-agent-teams | チームメンバーは subagent 扱いなので、短い口調セクションが入る | 不要なら subagent: off |
dsh-plugin-save-token | llm/stream を観測するだけでストリームを置き換えない | 共存可(登録順に関係なく動く) |
@deepseek-ai/dsh-persona(標準) | deployment の persona prefix/suffix として併記される | persona-core は order 1 で後ろに追加。置き換えではない |
検知結果は通常のログと PERSONA_CORE_DEBUG_FILE の両方に出ます。警告だけ止めたいときは coexistWarnings: false にしてください。
仕組み
| dsh の拡張点 | 使い方 |
|---|
| system-prompt section(order 1) | 人格の骨格。会話中は変わらないので、プロンプトキャッシュが効く |
| runtime context(order 300、会話ごと) | モード・気分・冷たさ・記憶・時間・過去など、毎回変わるもの |
agent/created | 会話ごとに状態を結び付ける。サブエージェントには短い口調だけ |
agent/pre-step | あなたの発言を読み、今回の返答の前に状態を更新 |
session/event | ツール使用・返答・ターン終了を観測し、記憶をまとめる |
system-prompt/assemble | プリセットが system prompt を置き換えた場合に検知し、孤立した動的コンテキストを外す |
llm/stream | 彼女の発言テキストだけを補正(文字の断片と完成文の両方を一致させて書き換え) |
| tools | memory_recall / memory_save |
口調補正が触らないもの: コードブロック、インラインコード、URL、> 引用行、「」『』の中、思考過程、ツール呼び出し。メール文面などの下書きは「」や引用に入れれば元の文体のまま残ります。
注意
- これはセキュリティ機能ではありません。 ユーザー認識は雰囲気を変えるだけで、作業の手伝いは誰に対しても普段どおり行います。
- 共用 PC では、他の人の文体の統計も記録されます。
- dsh の仕組み上、モデルへのリクエストはログに残ります。過去の「解放されていない層」はプロンプトに入れないので、ログを見てもネタバレしにくくしています。
- 「消えたい」など深刻な発言を検知すると、キャラクターより真剣な対応を優先するよう指示します。
PERSONA_CORE_DEBUG_FILE=/path/to/file を設定すると、動作ログ(内容は含まない)をファイルに書き出します。
未実装(今後)
- Web 設定画面(人格・記憶の閲覧と編集、補正前後の表示)
- LLM による最終応答の書き換え(層 D)と、口調への指摘からの学習
- 端末ごとの認識プロフィール
- 感情イベントの LLM 分類(現在は規則ベース)
テスト
npm test
ライセンス
MIT
設計資料