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
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.
这是什么 / What this is
VS Code Continue 里写长篇时,你靠的是四件事:
- 把世界书 / 角色卡 拖进输入框,正文作为 context 发出去(不是只丢一个
@路径让模型自己去读) - 上下文炸了,用 剧情总结 /
/压缩交接,关掉旧窗、新开窗接着玩 - 导出一份 干净对话(没有工具调用、没有代码噪音)
- 把长期可复用的 角色卡 / 世界书 写成带日期的 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.
| Command | Continue analogue | What it does |
|---|---|---|
drop .md / .txt / .yml | context items | Inserts @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. |
/out | session export | Clean #### _User_ / #### _Assistant_ + > quotes. No tools. |
/out name | save export | Writes 成品/name.md next to 资料包/ |
/sum 角色卡:描述 | lore card | 资料包/continue/角色卡_描述_vYYYYMMDD.md |
/sum 世界书:描述 | world card | 资料包/continue/世界书_描述_vYYYYMMDD.md |
/gemini <prompt> | one-shot | Calls 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
dropin 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
| Key | Default | Meaning |
|---|---|---|
roots / root | DSH_CWD, DSH_WORKSPACE, process.cwd() | Directories scanned to map a dropped basename to a disk path |
provider | gateway | DSH LLM provider id for /gemini /gemini-sum /sum |
model | gemini3.7 | Default model id for those commands |
maxTokens | 8192 | Generation 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