Shiro-Design-16/dsh-preset-mixed ↗★ 0

dsh-preset-mixed

「混合模式」agent preset for dsh web: a host-side plugin that declares one agent preset to the harness's agent-preset registry at activation — a minimal persona plus the preset's standing working discipline, with the tool surface and context injections owned by the preset's own rows. No browser half, no configuration schema, no build step, no runtime dependencies. 适合需要极简人设和标准工作纪律的混合模式Agent用户。

패키지
dsh-preset-mixed
호환성
미검증
버전
0.1.0
라이선스
Apache-2.0
최근 업데이트
2026. 10. 12.

설치

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Shiro-Design-16/dsh-preset-mixed

dsh-preset-mixed

一个面向 dsh web 的 agent preset 插件:激活时向宿主的 agent-preset registry 声明一个打包在 本包内的预设,预设 id 为 mixed,显示名为 混合模式,在预设选择器里的排序为 order: 5。

它是一套精简装配的预设:极简 persona 搭配标准工作纪律(思考熔断、行动导向、并发探索、YAGNI/PDCA、 有界收敛),工具面与上下文注入由预设自身的行(presets/mixed/agent.cordis.yml)掌控,而不是由 宿主配置界面掌控。

不含浏览器半边

本包只有宿主半边。具体来说:

  • 没有 lib/client.js,package.json 里没有 dsh.client 字段,也没有 client 注入清单;
  • 没有 GUI 开关(没有新会话页上的滑块/开关),没有设置卡片,没有设置命名空间;
  • 插件的宿主入口没有 Config:不声明 schemastery schema、不读任何配置、不注册系统提示词段、 不注册任何工具。声明即启用——卸载插件(或停用该行)即注销预设。

因此「启用/停用」只能通过插件的安装与停用(profile 的插件行)来做,不能在界面里切开关;预设自身 那点可调项都在 presets/mixed/agent.cordis.yml 的行配置里(例如 tool-catalog 的 presentation、minimal-prompt 的 dispatcher、guard 的 sensitivity),要改就改文件。

目录结构

dsh-preset-mixed/
├── lib/
│   ├── index.js          # 宿主入口:解析目录 → 读 YAML → register → ctx.effect 释放
│   └── composition.js    # 自带的最小 YAML 读取器(无第三方依赖,纯 ESM JS)
├── presets/mixed/
│   ├── agent.cordis.yml  # 预设的组成(persona、工具面、guard、分页、上下文注入)
│   ├── preset.yml        # 显示名 / 描述 / 排序
│   ├── NOTICE            # 上游署名与改编说明
│   └── *.mjs             # 预设自带的 8 个插件实现
├── cordis.patch.yml      # bundle patch:向 profile 名册插入本插件行
├── LICENSE               # Apache-2.0
├── README.md             # 用户向说明
└── AGENTS.md             # 开发指导:给接手本仓库的 Agent

宿主入口只做四件事,一件不多:

  1. 用 import.meta.url 解析出本包的 presets/mixed/ 目录(不依赖 process.cwd());
  2. 把 agent.cordis.yml 与 preset.yml 解析成一个 PresetDefinition ({ id, name, description, order, plugins },相对模块名解析为 file:// URL);
  3. 调 ctx.agentPresets.register(definition),保存它返回的 disposer;
  4. 在 ctx.effect(...) 里释放该 disposer,插件卸载时预设随之注销。

registry 尚未就绪(它由自己的依赖链发布,可能晚于本行的激活)时,插件不会抛异常炸掉宿主:它只 logger.warn 一行,并通过 ctx.inject(['agentPresets'], cb) 的回调形式在服务出现后补一次声明 (回调形式不是硬依赖,不会把本行挂起,因此一个根本没有 registry 的部署照常启动)。

安装

零依赖零构建:package.json 没有 dependencies,也没有 scripts.build,克隆下来即可用。

桌面端(desktop profile)注意

desktop profile 由 Electron 应用独占管理,CLI 不能直接往里装:

dsh plugin --profile desktop add ...
# error: profile "desktop" is managed exclusively by the Electron application

两条可行路径:

  1. 市场安装(推荐):在 dsh 的市场/插件来源里使用仓库 URL 安装本包 (https://github.com/Shiro-Design-16/dsh-preset-mixed,本仓库地址),由应用自己把它写进 desktop profile。
  2. 手工写入 profile:在目标 profile 的 package.json 里把本包加进 dependencies (例如 "dsh-preset-mixed": "link:/绝对路径/dsh-preset-mixed" 或一个 file: 说明符), 并确保该 profile 的 bundle patch 层包含本包的 cordis.patch.yml (即名册里出现 - id: dsh-preset-mixed / name: 'dsh-preset-mixed'),然后重启宿主。

对 CLI 可以管理的 profile,直接:

dsh plugin --profile 
 add link:/绝对路径/dsh-preset-mixed

切换到 mixed 预设

预设是按会话选择的,不写任何全局默认:

  1. 重启(或重载)宿主,确认插件行已激活——宿主日志里会出现 dsh-preset-mixed: preset mixed declared;
  2. 新建一个会话,在预设选择器里选「混合模式」(order: 5,排在内置项之后);
  3. 若要改回,任何已有会话只是当初选了哪个预设就用哪个;新会话重新选即可。

若选择器里看不到「混合模式」,先看日志里是否有 the agent-preset registry is unavailable; the preset is not declared,再确认插件行确实被装载。

License 与来源

  • 本仓库整体以 Apache-2.0 授权,LICENSE 为 Apache License 2.0 全文。
  • 本包 fork 自 @linxin666/dsh-liangshen 0.4.6 的 presets/liangshen/,并已修改:
    • 按 Apache-2.0 §4(c) 声明:被 fork 的文件均已改动或重命名,改动范围为——预设目录名改为 presets/mixed/;preset.yml 的显示名、描述与 order 全部重写;agent.cordis.yml 开头注释块中的预设自指名称同步为新名;两个 YAML 文件内已各自按 §4(c) 携带改动声明 (preset.yml 顶部的注释、agent.cordis.yml 开头注释块的首段),声明不再只写在 README 里; 其余 8 个 .mjs 实现与 NOTICE 逐字节未改动。
    • presets/mixed/NOTICE 保留了上游对 DeepSeek Harness 内置 preset(MIT)与 xiaobright/dsh-anchored-standard(MIT)的署名,请一并保留。
  • 本仓库不含上游的浏览器半边(lib/client.js)、TypeScript 源码(src/)、构建期元数据 (README.i18n.yaml)与 tools/。