icyaaaww/dsh-soul
icyaaaww/dsh-soul在本地记录重复的任务纠正与工具错误,通过显式启动的演化将经验编译为八类运行组件的改动,经过基线与候选成对验证、影子试用和回滚,并提供预算与审计账本。需要 Node.js 24+ 及兼容的 DSH 0.2.1-rc.2 起的 0.2.x 宿主。
面向 DeepSeek Harness 的故事模式预设:叙事 GM 人格、三条走向、.md 角色卡与世界书记忆、上下文提纯与前后置提示词。
给 DeepSeek Harness 增加一个名为 故事模式 的 Agent 预设:选中它新建的会话里, AI 不再扮演编码助手,而是担任互动小说的叙事者与主持人(GM),由玩家用自然语言 (或回复选项)推动剧情。
开始,让 AI 给出开篇。预设只影响选用它的会话,其他会话不受影响。
故事模式会话的输入框上方、靠右有一个开关(平时只有开关本身,鼠标移入才浮出「走向开关」四个字; 整行与输入框卡片同宽并右对齐,开关右边缘与输入框右边缘齐平):
恰好给出 3 条互斥的走向(含每条的风险/代价)。
实现方式与自带的 plan 模式同构:
部分 · 说明 /choices on /choices off · Host 命令,只在故事模式会话的命令菜单里可见;开关点击时由客户端调用。 storyChoices 会话投影 · 从 command/run / command/done 折叠出开关状态,刷新、重开、fork 后都能恢复。 required 运行时上下文 · 开关打开时每个请求注入写作要求;required 让它能穿透 complete 人格与「关闭可选运行时上下文」。 conversation.input.dock 客户端槽 · 开关本身。只在 agentPreset === "story" 的会话里渲染,所以其他模式的会话看不到它。
也可以在输入框里直接打 /choices on 或 /choices off。
包裹的是整个请求,而不是单条输入。每次组装模型请求时读取当前会话工作区下的两个文件:
文件 · 落点 settings/front.txt · 系统提示词最前面(人格段落开头的 {{story_front}} 变量) settings/end.txt · 请求最末尾(order 最大的 required 运行时上下文,追加在最后一条消息之后)
模型实际看到的是 front + 完整的系统提示词与全部对话 + end:
prompt-wrap 不能单独移除:人格模板引用了 story_front 变量,移除后渲染会失败;输入框上方最左侧是「文件夹 + 加号」按钮:按当前会话的工作目录一次性创建其它插件需要的目录与初始文件。
产物 · 用途 settings/front.txt、settings/end.txt · 前后置提示词(空文件,等你填内容) 记忆/角色/角色.md · 角色记忆起始模板(把「记忆管理」的角色目录指到这里) 记忆/箱庭/箱庭.md · 箱庭记忆起始模板
/init-workspace。走向开关左侧有一个齿轮(设置控件)。点击它,会在输入框上方展开「记忆管理」底部面板:
项 · 说明 角色记忆存储位置 · 一个目录;目录内全部 .md(含子目录)当作酒馆角色卡:人物设定、关系、口吻等。 箱庭记忆存储位置 · 一个目录;目录内全部 .md 当作沙盒化酒馆世界书:世界规则、地点、势力、历史等。 确认并刷新 · 校验两个目录、统计 .md 数量,把配置写进当前会话。
storyMemory 投影),刷新、重开、fork 都能恢复;/记忆/角色、/记忆/箱庭(与「初始化工作区」创建的目录一致,由 /memory-defaults 命令返回);
模型回复前必须先消化这些记忆;
角色/ 与 箱庭/」也可以(两个配置都指向该根目录);当一轮结束(agent 空闲)且上下文占用 ≥ 80% 时,会自动弹出「上下文提纯」窗口; 齿轮左侧的 Test 按钮则可以随时手动触发,不需要超过 80%。
窗口里是模型整理后的两节 Markdown:## 角色状态、## 箱庭状态。文本可自由改写, 点右下角 确认 后会按小节拆开,写入 /状态提纯.md 与 /状态提纯.md(覆盖上一次提纯结果,手写的其他 .md 不受影响)。
上下文不会自动清理:压缩/重置会话由你自己处理(新建会话,或用 /compact 之类的方式)。提纯只负责把「该记住的东西」落进记忆文件,避免你手动重置后丢失设定。
模型调用使用当前会话的模型路由;提纯结果会原样返回给客户端(也记录在 /purify 的命令事件里)。 记忆目录未配置时会提示先到「记忆管理」里设置。
行 · 插件 · 作用 story-guard · dsh-story-mode/story-guard · 在预设作用域内屏蔽部署级全局工具(shell、搜索、文件等),保证故事会话里只有对话,没有工具调用。 persona · @deepseek-ai/dsh-persona · 以 complete: true 只保留叙事者人格提示词,屏蔽通用编码助手的人格与运行时上下文。 choices · dsh-story-mode/choices · /choices 命令、storyChoices 投影、「三条走向」运行时上下文。 prompt-wrap · dsh-story-mode/prompt-wrap · story_front 变量(系统提示词开头)与末尾运行时上下文:用 settings/front.txt、settings/end.txt 包裹整个请求。 memory · dsh-story-mode/memory · /memory 命令、storyMemory 投影、每轮读取全部 .md 记忆并注入的运行时上下文。 purify · dsh-story-mode/purify · /purify、/purify-apply 命令:整理角色/箱庭状态并写入记忆文件(上下文由用户自行重置)。 scaffold · dsh-story-mode/scaffold · /init-workspace 命令:按当前工作区创建 settings/ 与记忆目录、初始 .md 文件。 compaction · @deepseek-ai/dsh-compaction-basic / command-compact · 长故事自动压缩上下文,并提供 /compact 手动压缩命令。
cordis.patch.yml 中 persona.config.prefix 的提示词。plugins 列表里增删行;story-guard 必须保持第一个,否则它会把预设自己注册的工具也当成全局工具处理。
plugin_manager remove_bundle dsh-story-mode
plugin_manager install_bundle <本仓库绝对路径>\story-mode已有会话保留创建时的插件版本,请新建会话验证改动。
plugin_manager remove_bundle dsh-story-mode