Back to home@luxueliu

luxueliu-dsh-story

DSH fiction writing: Continue-style lore drop, plot handoff, clean transcript, character/world cards

Stars
0
Language
JavaScript
Created
Aug 26, 2026
Updated
Aug 26, 2026
GitHub repo

Introduction

luxueliu-dsh-story

Continue-style fiction writing for DeepSeek Harness (DSH).

Drop lore into the composer. Summarize a blown-up session. Export a clean transcript. Save character / world cards. One plugin — no custom “Continue mode”, no capture-phase drop interceptor.

dsh-plugin license


这是什么 / What this is

VS Code Continue 里写长篇时,你靠的是四件事:

  1. 把世界书 / 角色卡 拖进输入框,正文作为 context 发出去(不是只丢一个 @路径 让模型自己去读)
  2. 上下文炸了,用 剧情总结 / /压缩 交接,关掉旧窗、新开窗接着玩
  3. 导出一份 干净对话(没有工具调用、没有代码噪音)
  4. 把长期可复用的 角色卡 / 世界书 写成带日期的 Markdown,丢回资料包

DSH 默认不会做第 1 件:原生 @path 只是提示模型去 read。浏览器从资源管理器拖文件时也 没有盘符路径,只有文件名和字节。

本插件补上这四件,并且 绝不document capture 阶段拦截 drop——那样会把 DSH 冻在「图片拖动到此处即可添加」。

In Continue you drop lore, compress a session, export a clean transcript, and keep dated character / world cards. DSH’s native @path does not inject file bodies. Explorer drops have name + bytes, no disk path. This plugin reads File.text(), optionally resolves the workspace path, and registers the same writing commands.


Install

dsh plugin --profile web add luxueliu/luxueliu-dsh-story

Restart DSH web, then hard-refresh the browser (Ctrl+Shift+R).

Local development:

"luxueliu-dsh-story": "link:D:/DSH/plugins/luxueliu-dsh-story"

Put the package in the web profile bundles list (it ships a client). Do not also insert id: story in cordis.patch.yml — the bundle patch already does that. Overlay config by id if you need extra search roots:

- id: story
  config:
    roots:
      - /path/to/your/writing/workspace
    provider: gateway
    model: gemini3.7

roots is only for mapping a dropped filename back to an @path. The file body comes from the browser either way.


Commands

DSH command names must be ASCII. Chinese is in the description.

CommandContinue analogueWhat it does
drop .md / .txt / .ymlcontext itemsInserts @path (if resolved) + a fenced body into the composer. Images are ignored.
/gemini-sum/压缩Plot handoff summary: who/where, what happened, open threads, last beat. Not a card.
/outsession exportClean #### _User_ / #### _Assistant_ + > quotes. No tools.
/out namesave exportWrites 成品/name.md next to 资料包/
/sum 角色卡:描述lore card资料包/continue/角色卡_描述_vYYYYMMDD.md
/sum 世界书:描述world card资料包/continue/世界书_描述_vYYYYMMDD.md
/gemini <prompt>one-shotCalls config.provider / config.model (defaults gateway / gemini3.7)

Optional: @model-name prefix, --dir <abs>, --save, last N messages.

Plot summary ≠ cards. Summary is for the next window. Cards are long-lived formatted lore.

Typical loop: pick a model in the UI → drop cards → type. When the thread explodes, /gemini-sum, paste into a new session. Export a reading copy with /out. Distill lore with /sum.


Drop rules (do not “improve”)

ComposerAttachments listens for bubble drop to close the image overlay.

  • Listen on drop in the bubble phase only
  • Never preventDefault / stopPropagation / stopImmediatePropagation
  • Ignore image/*
  • Read story files with File.text()
  • Insert with setTimeout(0) after the overlay can reset
  • Wrap the handler in try/catch

If you reintroduce a capture interceptor, DSH will freeze again.


Config

KeyDefaultMeaning
roots / rootDSH_CWD, DSH_WORKSPACE, process.cwd()Directories scanned to map a dropped basename to a disk path
providergatewayDSH LLM provider id for /gemini /gemini-sum /sum
modelgemini3.7Default model id for those commands
maxTokens8192Generation cap

Writes: inferred 资料包/continue and 成品/ must already exist. --dir may create the folder. Filesystem roots are refused.


Optional agent preset

preset/continue/ is a persona + filesystem tools preset (no shell). Copy to ~/.dsh/.agent-presets/continue/ if you want a “Continue 模式” session type. Dropped file bodies already sit in the message, so a shell is not required.

Do not capture-intercept composer drop in a preset or another plugin.


License

MIT © 2026 luxueliu