HB123X/dsh-ponytail1

dsh-ponytail

Ponytail for DSH — the lazy senior dev. Live intensity switching (off/lite/full/ultra) with a toggle in the composer, injecting a minimal-code ruleset before every step to cut token usage.

包名
dsh-ponytail
版本
1.0.0
许可证
MIT
最近更新
2026年8月18日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:HB123X/dsh-ponytail

dsh-ponytail

Ponytail for DSH — 把你的 AI 变成「懒而高效」的资深工程师。

一个 DeepSeek Harness(DSH)插件:在每次模型推理前注入「极简代码」规则,让模型倾向于复用原生能力、标准库、已有代码,而不是手写一大坨,从而降低写代码的 token 消耗。永不牺牲校验、错误处理、安全与可访问性。

灵感源自 DietrichGebert/ponytail,但定位做了调整:核心目标是省 token(少写代码),而不是反驳用户需求


功能

  • 设置页总开关:DSH 设置里新增「马尾辫」页面,可开关整个插件——关闭后输入框不再显示档位选择器、也不注入任何规则。
  • 输入框内档位切换:开启后,在 composer 工具行、模型选择器左侧出现一个 ponytail 下拉框,实时切换强度。
  • 四档强度
    档位行为
    Off关闭,不注入任何规则
    Lite倾向 stdlib/原生,输出精简
    Full(默认)七级阶梯强制:原生 → stdlib → 已有 → 一行 → 最小
    Ultra极简主义:最少 token、最少代码、零新依赖
  • 即时生效:切换后下一条消息即按新档位生成。
  • 持久化:开关与档位都记住上次选择,重启 DSH / 重开会话不丢失(存于 ~/.dsh/dsh-ponytail.json)。

目录结构

dsh-ponytail/
├── lib/
│   ├── index.js          # Host 半:规则注入 + /ponytail/mode API + 档位持久化
│   └── client.js         # Client 半:输入框内档位下拉框(手写 bundle)
├── cordis.patch.yml      # bundle patch:把插件 insert 进 DSH profile
├── package.json          # npm 包清单 + dsh 声明
├── README.md
└── LICENSE               # MIT

安装

本插件是 DSH 的仓库插件(repository plugin),装进 profile 后跨重启持久生效。

前置

需要 DSH 的一个 profile(桌面版默认是 desktop),并能在 profile 目录执行 pnpm install

步骤

  1. 把本仓库 clone 或拷贝到一个稳定目录(不要放在会变动的临时路径)。

  2. 把插件包拷贝进 profile 的 vendor/

    # 假设 profile 在 ~/.dsh/profiles/desktop
    $dst = "$HOME/.dsh/profiles/desktop/vendor/dsh-ponytail"
    Copy-Item -Recurse -Force "path/to/dsh-ponytail" $dst
    
  3. 编辑 profile 的 package.json,加两处(顺序很重要,且改完不要再用 pnpm 重写它):

    • dependencies 加:"dsh-ponytail": "file:./vendor/dsh-ponytail"
    • dsh.profile.bundles 数组末尾加:"dsh-ponytail"
  4. 在 profile 目录执行 pnpm install

  5. 重启 DSH

⚠️ 注意:手动改 package.json 后若再跑一次 pnpm install,pnpm 可能重写该文件把手动条目抹掉(并 prune 掉孤儿包)。正确顺序是「先改 package.json → 立刻 install → 立刻校验 package.json 未被回退」。

校验

重启后,DSH 侧边栏 → 设置 → 插件清单里应出现 dsh-ponytail(状态 active),输入框内模型选择器左侧出现 ponytail 下拉框。


原理

核心是一条「七级阶梯」,在写任何代码前停在第一个成立的阶梯:

  1. 平台原生能力覆盖? 用原生(``、CSS、DB 约束),绝不手写组件/选择器/解析器。
  2. 标准库覆盖? 用 stdlib(Intl.DateTimeFormatDateURL、数组方法)。
  3. 代码库里已有? 复用,别重写。
  4. 已装依赖能解? 用已有依赖,绝不为几行代码新增依赖。
  5. 整件事能一行搞定? 写成一行。
  6. 只有到这一步,才写「最少能跑」的代码。

关键:多个功能 ≠ 多个文件/大 class。用原生能力拼接——范围选择器就是两个 ``,本地化就是 Intl,绝不搭框架。

Bug 修复 = 治根因而非症状:grep 所有调用方,在共享函数里修一次。

永不删减:信任边界的校验、防数据丢失的错误处理、安全、可访问性,以及任何显式要求。


许可

MIT。灵感来源:DietrichGebert/ponytail(MIT)。