dsh-prompt-presets

by fff122

工具与能力github收录于 08-23

本地提示词预设插件:存可复用模板、支持 {{variable}} 占位符,agent 使用时渲染成完整提示词

A local prompt preset plugin for DeepSeek Harness. It stores reusable prompt templates, supports {{variable}} placeholders, and renders a finished prompt when the Agent…

安装

dsh plugin --profile web add github:fff122/dsh-prompt-presets

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗

安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。

README

目录

A local prompt preset plugin for DeepSeek Harness. It stores reusable prompt templates, supports {{variable}} placeholders, and renders a finished prompt when the Agent supplies values.

Preset data stays in the current working directory under .dsh/prompt-presets/presets.json. The plugin does not send templates or variables over the network.

Quick install

Requirements

You need Node.js 22 or newer, pnpm, and a DeepSeek Harness installation that supports JavaScript or TypeScript plugins.

Step 1: Download and build

Copy and run:

git clone https://github.com/fff122/dsh-prompt-presets.git
cd dsh-prompt-presets
pnpm install
pnpm build

Step 2: Create the plugin configuration

Run this command from the repository root:

cat > prompt-presets.patch.yml <<EOF
- insert:
    - id: dsh-prompt-presets
      name: '$PWD/dist/src/index.js'
EOF

The plugin path is absolute because the Harness patch loader requires an absolute path.

Step 3: Start Harness with the plugin

If Harness is installed as a command:

dsh web --patch "$PWD/prompt-presets.patch.yml"

Otherwise, run:

npx @deepseek-ai/dsh web --patch "$PWD/prompt-presets.patch.yml"

Verify the installation

Ask the Agent:

保存一个名为 meeting-summary 的提示词模板:总结 {{topic}},面向 {{audience}},语气保持简洁。标签用 work。

Then ask:

应用 meeting-summary,topic 是产品发布会,audience 是工程团队。

If the plugin is loaded, the Agent can use preset_save and preset_apply to save and render the template.

Available tools

Tool Purpose
preset_save Save a new preset or update an existing preset with the same name.
preset_list List saved presets, optionally filtered by tags.
preset_apply Replace {{variable}} placeholders with supplied values.
preset_delete Delete a preset by name.

Template behavior

Variable names use letters, digits, and underscores, and must start with a letter or underscore. Spaces inside braces are allowed, so {{topic}} and {{ topic }} refer to the same variable. Variables are returned in first-seen order.

If a variable is missing, preset_apply leaves its placeholder in the rendered text and lists the name in missing. This makes it possible to review an incomplete prompt without losing the original placeholder.

Strings are inserted as-is. Numbers and booleans use their text form, while arrays and objects are inserted as compact JSON.

Updating the plugin

From the cloned repository:

git pull
pnpm install
pnpm build

Restart Harness with the same patch command after rebuilding.

Development

Run the complete package quality gate from the repository root:

pnpm run format:check
pnpm run typecheck
pnpm run test
pnpm run build

The implementation is split into small modules:

src/
  index.ts          # Harness entry point and tool registration
  preset-schema.ts  # Preset types, validation, and template rendering
  preset-store.ts   # Local persistence, filtering, updating, and deletion

test/
  index.test.ts
  mount.test.ts
  preset-schema.test.ts
  preset-store.test.ts

For the plugin model and patch overlay format, see the official DeepSeek Harness plugin guide.

原始 README: https://github.com/fff122/dsh-prompt-presets/blob/main/README.md ↗