# 编辑预设

入口：设置 → 插件 → Codex Harness → 预设编辑。

Codex 模式和 DSH 的其它预设处于同一级。打开时默认选中 Codex 模式，也可以选择其它预设查看和编辑。用户预设可以直接保存；所有预设（包括 Codex 模式和用户预设）都可以创建副本。内置预设只读，先创建可编辑副本；副本会加入同一个预设选择器。

系统提示词按当前预设的组成部分编辑：Persona、可能存在的 DSH Core 源码/Web 说明、Codex 操作提示词，以及预设里已有的提示词字段。它们属于当前预设，不是另一份全局文本。编辑器还会展开安全识别的本地 Markdown 文件引用，例如 Story 的 operating/path 提示词；保存为预设内的文本，原 Markdown 文件不变。任意动态表达式不会执行，无法识别的表达式只读保留。工具定义、运行时上下文及插件动态提供的其它说明仍由 DSH 组装。普通预设可以勾选「为这个预设加入 Codex 能力」，创建副本时也可以一起加入。

DSH Core 源码说明和 Web 说明是 Web 宿主注册的提示词段，不是 Codex 能力开关。非完整 Persona 且没有主动清除宿主区段的预设可以查看和在副本中定制；极简模式的完整 Persona，以及 Story 使用的 `clean-slate` 插件，都会抑制这两段，因此编辑器也不会显示。未修改的宿主默认模板不会因保存普通预设而额外写入。

## 实际改了什么

Plan 模式插件的提示词（例如 `planning / plan-mode · section`）不进入预设提示词编辑器；复制和保存保留原有 Plan 配置。

没有额外的预设数据库。编辑器通过宿主的预设复制和安全写入服务保存名称、说明及 Codex 配置。加入 Codex 会保留原预设的身份和插件，并在副本内部挂载 Harness。`presetPrompt` 保存该预设的 Codex 工作指令，`presetSections` 保存其 Persona 和宿主说明覆盖。旧的全局 Codex 提示词在首次读取时作为迁移默认值，保存后的预设和副本独立持有各段文字。普通预设直接修改原有提示词字段，宿主说明由轻量的 `prompt-sections` 插件覆盖，不需要打开 Codex 工具。只有选择加入 Codex 时，才会解除 Persona 屏蔽追加提示词的限制；如果源预设原本没有宿主说明，副本会保留这一状态，身份文本本身不变。

保存使用版本检查、文件锁和原子替换。失败会回滚，保存前的内容放在该目录下的 `.codex-editor-backup.json`。第三方插件的运行冲突仍需在新会话验证。

## 加载方式

目录读取复用宿主列表返回的路径索引，读取单个预设只读对应文件，不再调用宿主 `resolve()` 重扫所有预设。浏览器同时短暂缓存已打开的文档，重复切换立即显示；点击刷新会清空文档缓存并重建目录。保存始终重新确认来源和可写范围，并检查版本，过期缓存不能覆盖磁盘修改。首次目录发现仍由 DSH 完成。

活动状态是全局显示设置；远程上下文压缩、托管网络搜索、终端、补丁、计划和 Codex 提示词属于 Codex 模式能力，并可随预设保存。关键文件：`src/client/preset-manager.tsx`（层级化编辑器）、`src/preset-editor.ts`（宿主写入与能力转换）、`src/preset-editor-remote.ts`（接口契约）。
