dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
仓库尚未提供可用的公开描述。
一个给 DeepSeek Harness 用的 agent preset: 面向长篇文学创作与续写——不是"帮你写小说"的提示词包,而是一套按任务切换的写作纪律, 加一个确定性的项目扫描器,加一条"小说里人物造的东西必须真做出来"的硬规矩。
英文说明见 README.en.md;开发与设计说明见 docs/DEVELOPING.md。
用大模型续写长篇,出问题的地方从来不是"写不出来",而是这几类:
这个 preset 把上面每一条都变成一条可执行的规矩,并且按任务分给四份技能,而不是塞一大段提示词。
这个 preset 不是 Cordis 插件,没有"加一行"这回事。DSH 的 agent-presets 服务从
$DSH_HOME/.agent-presets/ 下按目录发现 preset,所以"安装"= 把这个 preset 的目录放到那儿。
git clone https://github.com/CHANGE-ME/dsh-preset-novel.git
cd dsh-preset-novel
./install.ps1
装到 %USERPROFILE%\.dsh\.agent-presets\novel\。选项:
| 参数 | 作用 |
|---|---|
-DshHome D:\dsh | 装到别的 DSH home |
-Link | 用 junction 代替复制(就地编辑生效) |
-Force | 覆盖已有安装 |
脚本只把 preset 该有的文件拷进去(preset.yml、agent.cordis.yml、project-scan.js、PRESET.md、skills/),
README、LICENSE、package.json 这些发布用的东西不会进 preset 目录。
把下面这些放进 <你的 DSH_HOME>/.agent-presets/novel/:
<DSH_HOME>/.agent-presets/novel/
├── preset.yml 显示名与描述
├── agent.cordis.yml 组合:19 行插件
├── project-scan.js novel_project 工具
├── PRESET.md 就地维护说明
└── skills/ 四份技能
├── novel-prose/
├── source-research/
├── appreciation-craft/
└── play-within-play/
装完要重启 dsh。 preset 目录在进程启动时被扫描。然后在新建会话里选「小说创作模式」。
进去之后它只做一件事:问你要项目文件夹。路径给它,它用 novel_project 扫一遍,把子文件夹
模糊匹配到四类角色请你确认——它不自己挑目录。
| 四类角色 | 是什么 |
|---|---|
| 底本 | 已完成、待续的正文 |
| 待写正文 | 新写的章节 |
| 资料 | 查来的真实材料 |
| 赏析与总结 | 人物档案、情节梗概、结构清单、索引 |
若发现「戏中戏」子文件夹(小说世界里某个人物自己写的东西),它不塞进这四类,单独列出来请你定夺。
这是这个 preset 的主要设计。它不是一个流程,是四份技能;每次接到任务先判类别,再加载对应的那一份。 四份各管一头,读错等于没读。
| 任务 | 技能 | 管什么 |
|---|---|---|
| 写小说正文(一章) | novel-prose | 一章的形态与篇幅、章内不许有的东西、节奏、现实细节核证、对话的长度与自然度、外语原文加译 |
| 查资料/落资料/整理既有章节 | source-research | 联网核实的纪律、来源标注、资料档与分析档分家、大文本量分工且等齐再汇总、索引体例 |
| 写赏析、随笔、评论、序跋 | appreciation-craft | 读者是"被打动的读者"不是审稿人、不许有写作说明与 AI 口癖、素材来源分家、成稿清理清单 |
| 写人物自己写的作品 | play-within-play | 力所能及范围内必须真做出来、三层结构不许互借、正文与实物体量必须对得上 |
切换的判据是"这次交付的东西是什么",不是"这次提到了什么"。 为小说做背景调查,交付是资料 → 查资料那份; 人物在小说里写了一篇稿子,交付是那篇稿子 → 戏中戏那份,正文部分仍按正文那份。
几条从实际返工里长出来的具体规矩,举几个例:
novel_project 工具扫描与分类不靠临场判断——那是一段固定步骤,写成了纸面上的代码(project-scan.js,499 行)。
node project-scan.js "D:\某个项目路径"
不用开会话就能跑,输出和工具返回的一样:目录本体证据(文件数、总大小、扩展名构成、最新改动)、 下一层每个子文件夹的评分与依据、把握程度(确定/较可能/拿不准/无证据),以及单独一栏的戏中戏。
评分刻意做得简单可审计:每一条线索一个固定权重,判决旁边永远印着原始证据——这样人和模型都可以公开地不同意它。
| 文件 | 大小 | 作用 |
|---|---|---|
agent.cordis.yml | ~40 KB | 组合。第 1 行是 persona(本模式的全部人格与纪律),最后一行挂 project-scan.js |
project-scan.js | ~22 KB | novel_project 工具 |
preset.yml | ~1 KB | 显示名与描述 |
skills/novel-prose/ | 6,240 净字 | 小说正文章法 |
skills/play-within-play/ | 3,513 净字 | 戏中戏 |
skills/appreciation-craft/ | 2,821 净字 | 赏析随笔 |
skills/source-research/ | 2,717 净字 | 查资料与档案 |
不含 DSH 自带的两份技能(cordis-plugin-development、editing-cordis-compositions)——它们随部署的
cordis 预设走。要写插件或改组合,用那个预设另开会话。
parameters 不是 JSON Schema,是"属性表"这是本 preset 出过一次整轮失败的原因:
Invalid schema for function 'novel_project':
schema must be a JSON Schema of 'type: "object"', got 'type: null'.
工具注册表把 definition.parameters 原样交给模型提供方,它不编译。DSH 里 parameters 的正式形态是
逐属性的 spec,required 写在每个属性里面:
parameters: {
path: { type: 'string', required: true, description: '…' },
}
官方由 defineTool()(来自 @deepseek-ai/dsh-tools)编译成 { type:'object', properties:{…}, required:[…] }。
本包没有直接 import 它——preset 目录下裸导入解析不到——而是内联了一个只覆盖本工具所需类型的
compileParameters(),遇到别的类型直接抛错而不是瞎猜。
要改工具入参:改那份属性表并补上对应类型,不要图省事直接写完整 JSON Schema。
改完技能不会在当前会话生效,要新开一个会话。技能发现按 SKILL.md 的 description 触发,
所以改技能时不要动 description 里的触发词。
针对 @deepseek-ai/dsh 0.1.5-rc.2 实测。组合里用到了 !!js 表达式与 include 行,
preset 机制本身要求该部署启用了 @deepseek-ai/dsh-agent-presets(Web 与 TUI profile 默认启用)。
技能与工具都只依赖部署自带的包,没有额外 npm 依赖。
MIT。见 LICENSE。