Skip to main content

deepseek-manners

15Stars0Forks1Issues0Watchers

Append a thank-you note after every message. Mind your manners.

Evidence4/5methodologySourceInstallMaintenanceDSH versionSecurity scan
Machine-auditedInstall commandRepo verifieddsh-plugin topicLicenseREADMEAI wiki
Language
TypeScript
Branch
main
dshdsh-plugin

Install

cmdweb profile
$ dsh plugin --profile web add github:Moeblack/deepseek-manners

Run the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial

Install via your agent

Install the DeepSeek Harness plugin Moeblack/deepseek-manners for me: review the repository at https://github.com/Moeblack/deepseek-manners first, then run the install command and verify the plugin loads successfully.

Paste this instruction to the DSH Web GUI assistant — it will install and verify for you.

一句话定位

给 DeepSeek Harness Web 端加一只鲸鱼娘:在输入框右侧放一个心形开关,开启后每当你发出新一轮消息,DSH 请求底部都会被自动追加一句「谢谢你,鲸鱼大人」(可在 settings.yaml 中改写)。

核心能力

  • 在 Web 输入框右侧「conversation.input.right」槽位显示一个可点击的心形开关
  • 通过开关随时切换是否启用本次会话的后缀注入
  • 仅在包含用户直接输入(即每个对话回合的第一次模型请求)追加后缀,工具调用循环不重复注入
  • 后缀内容固定为 settings.yaml 中配置的 text 字段,默认「谢谢你,鲸鱼大人」,可写为多行 YAML 块标量
  • 当最近一次助手回复超过 hideAboveChars 时主动跳过「回收最近一条旧后缀」,避免污染 prompt cache
  • 提供独立 HTTP 端点 /deepseek-manners/settings,GET 读快照、POST 写入 enabled 持久化到插件目录 config.json

技术实现

  • 语言: TypeScript(ESM),Node 侧构建产物为 index.mjs,浏览器侧构建产物为 client.js(CommonJS 模块包裹)
  • 关键依赖: @deepseek-ai/cordis(Host 注入与 HTTP 注册)、@deepseek-ai/schemastery(配置 schema 校验)、react ^18(Client 端心形组件)
  • 架构模式: Cordis 双端插件。Host 半侧注册 settings 命名空间「deepseek-manners」、注册 /deepseek-manners/settings 路由、钩 agent/pre-step 在每轮模型调用前决定是否追加或回收后缀;Client 半侧通过 slot 系统向 conversation.input.right 注入 MannersToggle 组件,读写通过自定义 HTTP 端点绕开 settings 白名单
  • 入口文件: Host 入口 src/index.ts(apply(ctx) 注册 settings + 端点 + pre-step 钩子);Client 入口 src/client/index.ts(apply 注册心形槽位);构建配置 tsdown.config.ts 同时输出 ESM Node 与 CJS Browser 两个产物

适用场景

想给长期协作的 DSH 会话加一句固定的角色扮演式礼貌提醒(默认是「谢谢你,鲸鱼大人」),又不想每次手动敲字;或者想让 DSH 在每次发消息前自动追加一段系统级指令(如思考模式、输出格式、字数要求),用 YAML 块标量写在 settings.yaml 即可。

前置依赖与兼容性

依赖最低版本说明
DeepSeek Harness未声明仓库未声明 DSH 最低版本;插件使用 settings 服务、webServer 路由、agent/pre-step 事件与 conversation.input.right 槽位,需要的 DSH 同时支持 Host 这三类扩展点
Node.js未声明仓库未在 engines 中声明 Node 版本;按 tsdown target: es2024 与 npm 工程现状推断需支持 ESM 的现代 Node
运行平台macOS / Windows / Linux客户端通过浏览器加载,仅依赖宿主运行的 WebServer;Host 半侧纯 Node,无 os/cpu 限制
原生模块无不依赖 node-pty、node:sqlite 等原生模块;持久化开关只用一个本地 JSON 文件

安装方式

dsh plugin --profile web add github:Moeblack/deepseek-manners

配置项

配置类型说明默认值
text字符串每次注入到请求末尾的固定文本,空字符串时停止注入;可用 YAML 的 |/|- 块标量写多行指令"谢谢你,鲸鱼大人"
enabled布尔总开关;写在 settings.yaml 时给一个初始偏好,运行时心形按钮可覆盖并保存到插件目录 config.jsontrue
hideAboveChars整数最近一次助手回复超过此字符数时跳过「把上一轮后缀替换为空」的操作,从而保护长回复场景下的 prompt cache;0 = 总是回收0

常见问题

Q: 这个插件是真的在和谁聊天吗?

A: 不是。它只是在你每次发送消息之后,自动把一段固定文本追加到你发送给模型的请求末尾,默认是「谢谢你,鲸鱼大人」,可在 settings.yaml 改成任意内容。模型本身不会被另一个角色接管。

Q: 关闭心形开关之后,已经注入过的「谢谢」还在吗?

A: 还在。关闭开关只停止「下一次注入」,不会回滚历史消息里已经注入的后缀。下一轮回收时仍按规则判断是否替换最近一条。

Q: 为什么回复很长的时候会自动保留后缀?

A: 这是为了保护 prompt cache。当最近一次 assistant 回复超过 hideAboveChars 字符数时,本插件主动放弃把上一轮注入的「谢谢」替换为空,避免长回复场景下消息序列变化对缓存命中率造成过大损失。

Q: 修改 settings.yaml 需要重启 DSH 吗?

A: 不需要。DSH 默认开启文件热重载,改动后 1 到 2 秒内自动生效。如果 YAML 写错语法,服务会保留上一份合法配置并在日志里告警,不会崩溃。

Q: text 字段可以写成多行吗?支持模板变量吗?

A: 可以,使用 YAML 的 | 或 |- 块标量写法(块内每一行至少缩进 6 个空格)即可保留换行。text 不支持模板变量,写什么就注入什么,常用于追加多行系统提示或角色扮演指令。

Q: 这个插件只在 Web UI 里能用吗?

A: Host 半侧在 DSH 服务端运行,触发点是 agent/pre-step,对所有调用路径生效;Client 半侧是一个插入 Web 输入框右侧槽位的心形按钮,所以可视化的开关面板只出现在 Web 端。

Q: 怎么彻底卸载?

A: 运行 dsh plugin --profile web remove github:Moeblack/deepseek-manners 即可;插件目录里的 config.json 也会随之被丢弃,settings.yaml 中由你手动编写的 deepseek-manners 段保留在那里不会自动删除。

Q: 后缀消息会污染其它会话或多 Agent 协作吗?

A: 每条后缀都带有 source.plugin=moeblack/deepseek-manners 的来源标签,回收逻辑只匹配自己注入的那条,不会误删其他插件或用户手动加入的消息。

上手难度

入门 — 心形开关可视化地启停,settings.yaml 改文本是单字段;想理解「为什么长回复不回收」需要看 README 的「机制」部分,但日常使用无需关心。

已知问题与限制

  • 当最近一次助手回复超过 hideAboveChars 时,被跳过回收的那条后缀会永久保留在新一轮的请求中;这是 prompt cache 保护权衡,不是 bug,但需要心里有数
  • 注入只在「包含用户直接输入」的 step 发生;如果某个 turn 完全由工具调用驱动,不会出现新的「谢谢」后缀
  • 关闭心形开关后,仅停止「下一次注入」,不会追溯移除历史已注入的消息
  • 开关状态写入插件目录下的 config.json,卸载插件后该文件会被丢弃;如要保留自定义 enabled 偏好请写在 settings.yaml
  • 后缀消息内容是静态文本,不支持模板变量或上下文插值,写什么就注入什么

Read the usage guide →

Install steps, key points, FAQ and compatibility for this plugin — auto-derived from indexed fields.

Listing badge

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/Moeblack/deepseek-manners)

Paste this markdown into your GitHub README to link back to this listing. The badge only states the listing — not a security endorsement.

← Back to plugin directory