# dsh-evolve-modes

> 为 DeepSeek Harness Web 提供可组合的工作状态、思考策略、质量审查和人工审核的自进化模式控件。

## Metadata

- Author: [@GraySilver](https://github.com/GraySilver)
- Repo: <https://github.com/GraySilver/dsh-task-modes.git>
- GitHub: [GraySilver/dsh-evolve-modes](https://github.com/GraySilver/dsh-evolve-modes)
- Stars: 38
- Language: TypeScript
- License: [MIT](https://spdx.org/licenses/MIT.html)
- Homepage: <https://www.npmjs.com/package/@graysilver/dsh-evolve-modes>
- Topics: `acceptance-review`, `agent-review`, `ai-agents`, `deepseek-harness`, `dsh`, `dsh-plugin`, `plan-mode`, `prompt-engineering`
- Forks: 1
- Open Issues: 1
- Last push: 2026-08-18T03:28:15.000Z
- Added: 2026-08-20T00:00:00.000Z

## Install

```bash
dsh plugin --profile web add @graysilver/dsh-evolve-modes
```

## Wiki

## 一句话定位
dsh-evolve-modes 是 DeepSeek Harness 的 Web 端插件，它把"工作状态、思考策略、质量门禁、自进化"四个维度合并成输入区旁的一个紧凑控件，让用户能按任务而非按人格组合 Agent 的工作方式，并支持基于已完成会话、由人工把关的全局规则学习。

## 核心能力
- 在输入区旁展示并切换工作状态（执行 / 计划）、思考策略（标准 / 第一性原理）、质量门禁（关 / 对抗性审查 / 验收审查）、自进化（关 / 提议）四种独立维度
- 启用第一性原理时，向 system prompt 注入显式的目标-事实-假设-约束-推导-验证段，并在 Trajectory 中留下可检查的历史证据
- 在父 Agent 回复完成后启动独立 fork 子 Agent 进行对抗性或验收审查，并把 Markdown 报告渲染在对应回复下方
- 计划模式下通过工具白名单限制可执行的工具（读类 + 平台 shell + exit_plan_mode），其余工具直接拒绝
- 按默认每 3 次父回复一次的节奏从已完成会话中隔离学习，生成带证据的待审阅提议，需人工 Apply 才会成为已批准全局规则
- 提供 Self-evolution mode 设置页，用于查看待审提议、增删改已批准规则、从备份恢复、查看学习运行记录和失败原因

## 技术实现
- **语言**: TypeScript + React（服务端入口 src/index.ts，客户端 UI 在 src/client/index.tsx）
- **关键依赖**: @deepseek-ai/cordis（插件注入与 effect）、@deepseek-ai/dsh-storage-domain（持久化 storage domain）、@deepseek-ai/dsh-subagent（fork 子 Agent）、@deepseek-ai/dsh-typert-protocol（远程服务描述）
- **架构模式**: 通过 cordis.patch.yml 声明插件 ID 与默认 shellTool；Host 端用 ctx.inject 一次性订阅 agentPresets/commands/llm/systemPrompt/subagents/storageDomain/tools，再分别注册 systemPrompt section、`tools/pre-execute` 钩子、`evolve-mode` / `evolve-mode-review` 命令、`agent/turn-stopping` 监听；Client 端通过 slots 注入 conversation.input.left 控件、conversation.input.plan 计划槽、conversation.chat.turnTail 审查报告，并通过 Typert Remote 暴露 5 个 settings 接口
- **入口文件**: src/index.ts:apply（Host 端入口）、src/client/index.tsx:apply（Client 端入口）、src/typert.ts / src/remote.ts（Typert 描述）

## 适用场景
需要让 Agent 的工作方式随任务灵活组合的用户：日常任务用"正常 + 标准 + 关"保持速度，高风险决策前切换到"计划 + 第一性原理"，交付实现后再开启"对抗性或验收审查"让独立子 Agent 检查结果；如果希望长期沉淀稳定偏好与身份信息，再开启自进化，由插件按固定批次隔离学习并生成待审规则。

## 前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DeepSeek Harness | 0.1.0-rc.6 | 需提供 Web plugin loader、client UI slots、storage domain、直接 llm 服务、forked subagent、官方 planMode service 和 tools/pre-execute pipeline |
| Node.js | ^22.19.0 或 >=24.0.0 | 来自 package.json engines 字段 |
| @deepseek-ai/cordis | ^4.0.1-rc.1 | peerDependencies |
| @deepseek-ai/dsh-* | rc.1 / rc.5 | 11 个 peer 依赖，必须由宿主 profile 提供 |
| React | ^18.2.0 | 客户端 UI 依赖 |
| 平台 | macOS / Windows / Linux | 默认 shellTool 在 Windows 上为 pwsh，其余平台为 bash，由 cordis.patch.yml 的 process.platform 决定 |
| 原生模块 | 无 | 运行时仅使用 node:crypto，未引入 node-pty / node:sqlite 等原生依赖 |

## 安装方式
```bash
dsh plugin --profile web add @graysilver/dsh-evolve-modes
```

## 配置项
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| shellTool | `'bash' \| 'pwsh'` | Plan 模式工具白名单中允许执行的平台 shell，由 cordis.patch.yml 在 Windows 上自动选 pwsh、其余平台选 bash；只有在目标 profile 已注册对应 shell 时才会生效 | 跨平台自动：Windows → pwsh，其他 → bash |

> 插件的运行期行为（学习批次、待审提议上限、各维度当前状态）由 Self-evolution mode 设置页与 `/evolve-mode` 命令管理，无需也无法通过 host yaml 配置。

## 常见问题

**Q: 安装后在哪里能看到这个插件的控件？**

A: 重启 Web profile 后，自进化模式控件出现在输入区左侧（conversation.input.left 槽位），自进化设置入口在顶层 Settings 页的 Self-evolution mode 章节。

**Q: 插件会修改 DeepSeek Harness 核心代码吗？**

A: 不会。cordis.patch.yml 只插入插件自身的注入描述，插件状态保存在自己的 storage domain，不修改 AGENTS.md 或 CLAUDE.md。

**Q: 对抗性审查 / 验收审查会增加多少次模型调用？**

A: 每次父 Agent 回复完成时，质量门禁会额外触发一次 fork 子 Agent 调用并生成 Markdown 审查报告；自进化分析则每完成学习批次（默认 3 次父回复）触发一次隔离的 LLM 调用。

**Q: 自进化模式的规则会自动生效吗？**

A: 不会。学习结果只生成待审阅提议，必须在 Self-evolution mode 设置页人工点击 Apply 后才会成为已批准规则，并通过带标记的 `<dsh-evolve-modes-learned-instructions>` 段注入后续 system prompt。

**Q: 学习请求会读到父会话的哪些上下文？**

A: 学习请求是隔离的：使用独立的 persona 和 system prompt，不继承父会话历史、不继承父 Agent 工作上下文、不携带工具、不创建学习子 Agent，也不加载源工作目录的 AGENTS.md/CLAUDE.md。

**Q: 数据存在哪里？如何卸载？**

A: 会话级状态存在 graysilver_dsh_evolve_modes storage domain，跨会话的自进化规则/提议/备份/学习记录存在 graysilver_dsh_evolve_modes_evolution domain；通过 dsh plugin remove 卸载后数据仍保留在宿主存储中。

**Q: 和 DSH 自带的 plan mode 是什么关系？**

A: 插件直接复用官方 @deepseek-ai/dsh-plan-mode 服务和 exit_plan_mode 审批流程，并通过 tools/pre-execute 限制计划态下可用的工具白名单，不重复实现一套计划系统。

**Q: 旧版本的会话记录会自动迁移吗？**

A: 会。0.3.x 会从 graysilver_task_modes 和 graysilver_task_modes_evolution 旧 domain 拷贝数据，把旧单模式别名映射到新字段，且不会覆盖新 domain 已存在的数据。

## 上手难度
入门 — 控件直接挂在输入区，默认值即可使用；只需理解"四个维度独立组合"这一个心智模型，不必配置任何 host yaml。

## 已知问题与限制
- 平台 shell 在计划态下完全可用，仅靠 prompt 提示审查 Agent 不要修改文件，不是操作系统级沙箱；需要进程隔离时请配置受限 shell 或外部沙箱（README.md:191-201 / README.en.md:109-111）
- 每个完成的父回复在开启质量门禁时会增加一次模型调用和相应延迟，且审查不会自动跑项目的 test / lint / build（README.en.md:123）
- 自进化分析要求会话已解析 provider 和 model，否则会抛错并把失败记录到学习运行（src/evolution/learning.ts:49-51）
- 助手消息只作为上下文，不能单独成为规则证据，且超过 2000 字符时只保留首尾各 1000 字符（src/evolution/messages.ts:4-16、README.md:91）
- 已批准规则是全局生效且不绑定项目目录，0.3.x 起不再支持项目级作用域（src/types.ts:21-23、README.en.md:103）
- 自进化分析每次跑都固定用父会话的 provider/model，没有独立的模型路由配置

---

This document is auto-generated by [deepseek-plugin.org](https://deepseek-plugin.org). HTML page: [dsh-evolve-modes](https://deepseek-plugin.org/plugins/GraySilver/dsh-task-modes)
Wiki generated by AI (model: `MiniMax-M3`)
