🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

懒人资深工程师 hoyyang/dsh-best-ponytail

DeepSeek 客户端
hoyyang41 天前有提交已提供中文文档扫描:高危兼容 / 相关生态

用七级阶梯约束 AI 少写代码,专治过度工程

29.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/hoyyang/dsh-best-ponytail.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
该类项目属生态应用(桌面端 / Web 外壳),不以 dsh plugin add 方式安装,请按仓库说明部署
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 41 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/9/30) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
🔴 安全扫描发现高危能力自动 · 静态分析源码
v2.7.0
🔴 扫描:高危尚无人工评估

静态扫描发现安装期即执行代码,或命令参数由运行时变量拼接(参数来源无法静态判定,从严处理)。

命令参数由运行时变量拼接读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 46 处,展示前 46 条)
  • 读取本地文件
    lib/index.js:90
    entries = await readdir(dir, { withFileTypes: true });
  • 读取本地文件
    lib/index.js:100
    const text = await readFile(p, 'utf8');
  • 读取本地文件
    lib/index.js:138
    const text = await readFile(candidate.locator, 'utf8');
  • 读取本地文件
    lib/index.js:170
    rulesetBody = parseFrontmatter(readFileSync(UPSTREAM_RULESET, 'utf8')).body.trim();
  • 读取本地文件
    upstream/benchmarks/claude-email.js:4
    const skill = fs.readFileSync(path.join(__dirname, '..', 'skills', 'ponytail', 'SKILL.md'), 'utf8');
  • 读取本地文件
    upstream/benchmarks/claude-email.js:9
    const kv = Object.fromEntries(fs.readFileSync(path.join(__dirname, '..', '.env'), 'utf8')
  • 请求外部主机api.anthropic.com
    upstream/benchmarks/claude-email.js:17
    const r = await fetch('https://api.anthropic.com/v1/messages', { method: 'POST',
  • 发起网络请求
    upstream/benchmarks/claude-email.js:17
    const r = await fetch('https://api.anthropic.com/v1/messages', { method: 'POST',
  • 执行外部命令来自配置/变量
    upstream/benchmarks/correctness.js:43
    execSync(cmd, { timeout: correctnessTimeoutMs(), encoding: 'utf8', stdio: 'pipe', ...opts });
  • 写入本地文件
    upstream/benchmarks/correctness.js:67
    fs.writeFileSync(p, content);
  • 删除本地文件
    upstream/benchmarks/correctness.js:127
    fs.unlinkSync(f);
  • 删除本地文件
    upstream/benchmarks/correctness.js:172
    fs.unlinkSync(f);
  • 删除本地文件
    upstream/benchmarks/correctness.js:221
    try { fs.unlinkSync(f); } catch (e) {}
  • 删除本地文件
    upstream/benchmarks/correctness.js:222
    try { fs.unlinkSync(csvPath); } catch (e) {}
  • 读取本地文件
    upstream/benchmarks/generate-examples.mjs:7
    const j = JSON.parse(readFileSync(new URL('./output.json', import.meta.url), 'utf8'));
  • 写入本地文件
    upstream/benchmarks/generate-examples.mjs:42
    writeFileSync(new URL(`../examples/${slug}.md`, import.meta.url), md);
  • 写入本地文件
    upstream/benchmarks/generate-examples.mjs:62
    writeFileSync(new URL('../examples/README.md', import.meta.url), readme);
  • 读取本地文件
    upstream/benchmarks/model-email.js:4
    const skill = fs.readFileSync(path.join(__dirname, '..', 'skills', 'ponytail', 'SKILL.md'), 'utf8');
  • 读取本地文件
    upstream/benchmarks/model-email.js:9
    const kv = Object.fromEntries(fs.readFileSync(path.join(__dirname, '..', '.env'), 'utf8')
  • 请求外部主机api.openai.com
    upstream/benchmarks/model-email.js:17
    const r = await fetch('https://api.openai.com/v1/chat/completions', { method: 'POST',
  • 发起网络请求
    upstream/benchmarks/model-email.js:17
    const r = await fetch('https://api.openai.com/v1/chat/completions', { method: 'POST',
  • 执行外部命令运行时拼接
    upstream/benchmarks/robustness-audit.js:16
    try { execSync(`${cmd} -c "import sys"`, { stdio: 'pipe' }); pythonCmd = cmd; return pythonCmd; }
  • 读取本地文件
    upstream/benchmarks/robustness-audit.js:27
    kv = Object.fromEntries(fs.readFileSync(path.join(ROOT, '.env'), 'utf8')
  • 读取密钥环境变量
    upstream/benchmarks/robustness-audit.js:31
    const KEY = process.env.OPENAI_API_KEY || kv.OPENAI_API_KEY;
  • 读取本地文件
    upstream/benchmarks/robustness-audit.js:32
    const SKILL = fs.readFileSync(path.join(ROOT, 'skills', 'ponytail', 'SKILL.md'), 'utf8');
  • 写入本地文件
    upstream/benchmarks/robustness-audit.js:149
    fs.writeFileSync(f, harness);
  • 执行外部命令运行时拼接
    upstream/benchmarks/robustness-audit.js:150
    try { execSync(`${python()} "${f}"`, { timeout: 10000, encoding: 'utf8', stdio: 'pipe' }); return true; }
  • 删除本地文件
    upstream/benchmarks/robustness-audit.js:152
    finally { try { fs.unlinkSync(f); } catch (_) {} }
  • 请求外部主机api.openai.com
    upstream/benchmarks/robustness-audit.js:158
    const r = await fetch('https://api.openai.com/v1/chat/completions', {
  • 发起网络请求
    upstream/benchmarks/robustness-audit.js:158
    const r = await fetch('https://api.openai.com/v1/chat/completions', {
  • 读取本地文件
    upstream/hooks/ponytail-activate.js:66
    if (fs.existsSync(settingsPath)) {
  • 读取本地文件
    upstream/hooks/ponytail-activate.js:68
    const raw = fs.readFileSync(settingsPath, 'utf8').replace(/^ FEFF/, '');
  • 读取本地文件
    upstream/hooks/ponytail-activate.js:79
    if (!hasStatusline && !fs.existsSync(nudgeFlagPath)) {
  • 写入本地文件
    upstream/hooks/ponytail-activate.js:80
    try { fs.writeFileSync(nudgeFlagPath, ''); } catch (e) { }
  • 读取本地文件
    upstream/hooks/ponytail-config.js:90
    const config = JSON.parse(fs.readFileSync(configPath, 'utf8').replace(/^ FEFF/, ''));
  • 读取本地文件
    upstream/hooks/ponytail-config.js:112
    const config = JSON.parse(fs.readFileSync(getConfigPath(), 'utf8').replace(/^ FEFF/, ''));
  • 读取本地文件
    upstream/hooks/ponytail-config.js:129
    const config = JSON.parse(fs.readFileSync(getConfigPath(), 'utf8').replace(/^ FEFF/, ''));
  • 写入本地文件
    upstream/hooks/ponytail-config.js:142
    fs.mkdirSync(path.dirname(configPath), { recursive: true });
  • 读取本地文件
    upstream/hooks/ponytail-config.js:145
    config = JSON.parse(fs.readFileSync(configPath, 'utf8').replace(/^ FEFF/, ''));
  • 写入本地文件
    upstream/hooks/ponytail-config.js:149
    fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf8');
  • 读取本地文件
    upstream/hooks/ponytail-instructions.js:88
    filterSkillBodyForMode(fs.readFileSync(SKILL_PATH, 'utf8'), effectiveMode);
  • 写入本地文件
    upstream/hooks/ponytail-runtime.js:42
    fs.mkdirSync(path.dirname(statePath), { recursive: true });
  • 写入本地文件
    upstream/hooks/ponytail-runtime.js:43
    fs.writeFileSync(statePath, mode);
  • 删除本地文件
    upstream/hooks/ponytail-runtime.js:47
    try { fs.unlinkSync(statePath); } catch (e) {}
  • 读取本地文件
    upstream/hooks/ponytail-runtime.js:53
    return fs.readFileSync(statePath, 'utf8').trim() || null;
  • 读取本地文件
    upstream/hooks/ponytail-runtime.js:69
    return fs.existsSync(rule) ? rule : null;
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
涉及外部主机:api.anthropic.com、api.openai.com

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 七级最小代码阶梯
  • 六个技能命令
  • 可选常驻注入

Ponytail 懒资深开发规则集,给 DeepSeek Harness 用:7 级最小代码阶梯、六个技能(review/audit/debt/gain/help)、/ponytail 会话命令、可选常驻注入。MIT 协议,上游未改动。

README

由 DeepSeek 最新模型翻译生成
dsh-best-ponytail banner 把 ponytail(MIT)装进 DeepSeek Harness:让 AI agent 像屋里最懒的资深工程师那样写代码——最好的代码是你永远不用写的那行。 English · Releases · 更新日志 安装 dsh plugin add dsh-best-ponytail # npm 渠道(独占安装名) dsh plugin add github:hoyyang/dsh-best-ponytail # 或 GitHub 渠道 零配置开箱即用:装上后默认零行为改变(常驻注入缺省关闭,6 个技能即刻可用)。实测最低 dsh 版本 0.1.5。npm 包名 dsh-best-ponytail(原名 dsh-ponytail 被第三方占用故改名)+ GitHub 双渠道分发。
展开完整文档(README 剩余 1 节)
dsh-best-ponytail

banner

把 ponytail(MIT)装进 DeepSeek Harness:让 AI agent 像屋里最懒的资深工程师那样写代码——最好的代码是你永远不用写的那行。

English · Releases · 更新日志

安装

dsh plugin add dsh-best-ponytail # npm 渠道(独占安装名)
dsh plugin add github:hoyyang/dsh-best-ponytail # 或 GitHub 渠道

零配置开箱即用:装上后默认零行为改变(常驻注入缺省关闭,6 个技能即刻可用)。实测最低 dsh 版本 0.1.5。npm 包名 dsh-best-ponytail(原名 dsh-ponytail 被第三方占用故改名)+ GitHub 双渠道分发。

有啥用

六个技能(被动触发 + 显式点名)

- ponytail 主规则——写代码前先过 7 级懒人阶梯:要做吗 → 库里有吗 → 标准库 → 平台原生 → 已装依赖 → 一行 → 最小可用实现
- ponytail-review——只审过度工程的专项 review:标库重复造的轮子、多余依赖、投机抽象、死灵活性,每条一行「在哪、删什么、换什么」
- ponytail-audit——全仓 bloat 审计:按优先级排出整个代码库里该删、该简化、该换标库的清单,只报告不动手
- ponytail-debt——收割代码里所有 ponytail: 标记注释,汇总成欠账台账,让「以后再说」不变成「永不」
- ponytail-gain——上游基准计分板:更少代码、更低成本、更快速度的中位数成绩单
- ponytail-help——全模式速查卡:技能、命令、档位一览

一个命令,随时调档

- /ponytail 调档——lite / full / ultra / off 会话级切换,下一轮生效
- /ponytail status——查看当前档位、来源(config 默认还是会话覆盖)
- /ponytail reset——清掉会话覆盖,回到配置默认

可选常驻注入(上游 hook 的 DSH 等价物)

- systemPrompt 区块注入——把懒人阶梯焊进每轮系统提示词,写代码 100% 在规则之下,小改动也不漏
- config 四档——off / lite / full / ultra,full 为上游基准实测档
- 会话级覆盖——/ponytail off 单会话临时关,重启回配置默认

打包特性

- 上游内容零改动——skills、hooks、benchmarks、docs 等 193 个文件原样 vendored 于 upstream/ 目录,可溯源(钉在 commit e3ba2aa)
- 零工具注册——不进 tools schema,不占上下文预算,卸载零残留
- MIT + 归属声明——上游 © DietrichGebert,适配层同 MIT

30 秒上手

1. 执行 dsh plugin add dsh-best-ponytail
2. 什么也不用配——6 个技能已进技能目录,编码任务自动可用
3. 想验证:对 agent 说「ponytail,帮我写个 XX」,回复结尾应出现 skipped: X, add when Y
4. 想看档位:输入框敲 /ponytail status
5. 想要常驻:profile 配置里把 mode 改成 full(见下方配置示例)
6. 想审过度设计:说「audit this codebase」
7. 想查技术债:说「ponytail debt」
8. 单会话免打扰:/ponytail off
9. 回到默认:/ponytail reset
10. 卸载:dsh plugin remove dsh-best-ponytail,进程外零残留

日常使用

- 装完后什么都不用做——编码任务里懒人阶梯自动可用,技能目录随时可见
- 想 100% 覆盖写代码场景:把配置 mode 开成 full,每轮系统提示词都带着阶梯
- 临时要极简:说「ponytail ultra」,agent 会先反问需求是否需要存在
- 临时要温和:说「ponytail lite」,agent 照常实现但附一句更懒的替代方案
- 写完想返工:说「review for over-engineering」,拿到删除清单再决定
- 接手陌生仓库:先跑「audit this codebase」,按排名从高往低瘦
- 长期项目:定期「ponytail debt」,欠账台账防止口头承诺蒸发
- 汇报优化成果:说「ponytail gain」,拿上游基准计分板当参考
- 忘了怎么用:说「ponytail help」,速查卡直接列出全部模式与命令
- 多会话并行:每个会话的档位互相独立,/ponytail off 只影响当前会话

使用场景

- 快速原型——一句「做个 XX」不再带回 5 个依赖 3 层抽象,标库和原生特性能解决的不装包
- 老项目重构——review 模式专挑能删的:重复实现的标库函数、没人用的配置项、为「以后」准备的脚手架
- 代码审查补刀——正确性 review 之外,专职猎杀复杂度,每条发现一行说完
- 技术债盘点——周期性跑 debt 台账,把「以后再说」变成看得见的清单
- 多 agent 一致性——团队每人 DSH 装同款规则集,产出风格统一,审查省心
- 成本与速度优化——少写代码,token 消耗更少、交付更快;上游实测成本 -20%、耗时 -27%
- 学习写作范式——看 agent 如何先问「要不要存在」再动手,反向训练自己的取舍
- 大仓瘦身——audit 排名清单直接当重构 backlog 用
- 依赖治理——阶梯第 5 级强制先查已装依赖,遏制「为一个函数装一个库」
- 升级/换模型回归——规则集与模型解耦,换模型不换规矩

输入与输出

真实回显样例(会话内实拍):

$ /ponytail status
ponytail always-on injection: FULL (config default) — injected into the system prompt, effective next turn
Skills (passive + explicit) are available regardless of this setting.
Switch: /ponytail lite|full|ultra|off · /ponytail reset (back to config default: full)

$ /ponytail ultra
ponytail always-on injection set to ULTRA for THIS session — effective next turn. ponytail always-on injection: ULTRA (session override) — injected into the system prompt, effective next turn
Skills (passive + explicit) are available regardless of this setting.
Switch: /ponytail lite|full|ultra|off · /ponytail reset (back to config default: full)

| 你说 / 你敲 | 得到 |
| /ponytail status | 当前档位 + 来源 + 切换提示 |
| /ponytail ultra | 本会话切 YAGNI 极端档,下一轮生效 |
| 「ponytail,加个缓存」 | 先过阶梯的最小实现 + skipped 一行说明 |
| 「review for over-engineering」 | 每条一行的删除清单:位置 / 删什么 / 换什么 |
| 「audit this codebase」 | 全仓 bloat 排名清单,只报告不改码 |
| 「ponytail debt」 | 全库 ponytail: 注释汇总台账 |
| 「ponytail gain」 | 上游基准计分板(-54% 代码 / -20% 成本 / -27% 耗时) |
| 「stop ponytail」 | 本会话回到自然风格 |

产出

- 最小实现 diff——阶梯通过后的最短可用改动,不带没人要的抽象层
- skipped 一行说明——每次偷懒都留痕:跳过了什么、什么时候该加回来
- review 删除清单——每条一行:位置 / 删什么 / 换成什么
- audit 排名报告——全仓过度工程优先级排名,可直接当重构 backlog
- debt 欠账台账——全库 ponytail: 注释的汇总清单,含升级路径
- gain 计分板——上游基准中位数:代码 -54% / 成本 -20% / 耗时 -27%
- status 状态文本——当前档位、来源、切换方法的即时回显
- installable tgz——GitHub Release 预构建包,dsh plugin add 一条命令装机

进阶用法(配置)

常驻注入档位在 profile 配置里调(缺省 off):

- id: dsh-best-ponytail
config:
mode: full # off | lite | full | ultra

工作原理

bundle 插件三层映射上游概念:skills/ 经 ctx.skills provider 注册为 DSH 技能(description 匹配被动触发);上游 SessionStart hook 的「每轮注入规则集」改由 ctx.systemPrompt 区块实现,config.mode 控制开关、会话内 /ponytail 可覆盖(内存态,零残留);上游 commands/ponytail.toml 的调档语义映射为 host 命令 /ponytail。其余上游文件原样 vendored 仅供溯源。

可靠性与验收

- 冒烟测试:mock ctx 跑真实 apply()——6 技能注册、阶梯正文可达、档位状态机、未知档位报用法,全部断言通过(npm test)
- 冷启动检测:boot-check 六类静态检测(junction / bundle manifest / disabled 矛盾 / 运行时导入 / client 注册一致性 / insert id 重复)全绿
- 生命周期:注入→卸载→再注入两轮实测,技能目录实时出现/消失,junction 删除,残留检查 PASS
- fail loud:技能树缺失、规则文件不可读、非法 config 直接抛错点名对象,无静默回退
- 安全边界:不碰凭据、零新工具、依赖仅 schemastery(^3.18.0 锁范围)、无安装脚本
- 内容保真:上游 193 文件逐字节未改,commit 钉死可审计
- 兼容性:实测 dsh 0.1.5 web profile;headless profile 缺 services 时降级并告警
- 升级安全:profile 配置改动先备份(.bak-时间戳)再落盘,可一键还原
- 归属清晰:上游 MIT 独立声明,适配层代码仅 lib/index.js 一个文件
- 已知限制:收益集中在 agent 过度建设场景,代码本已精简时收益趋零;npm 名 dsh-ponytail 被第三方占用,故改名 dsh-best-ponytail 发布

常见问题装完为什么没变化?——默认 mode: off:技能已可用(被动触发 + 显式点名),常驻注入需显式开启。这是有意的最小惊讶设计。

和 npm 上那个 dsh-ponytail 什么关系?——无关联。那是第三方独立实现(ccll,2026-08);本包因重名改名 dsh-best-ponytail 发布(npm + GitHub 双渠道)。

被动触发会漏吗?——会,这是所有按需加载 skill 的物理上限。要写代码 100% 在规则之下,把 mode 开成 full。

上游的 benchmarks/tests 也打进来了?——是,全部 vendored 于 upstream/,仅作溯源参考件,不在 DSH 自动运行。

本地构建

npm install && npm run build && npm test # 纯 JS 无转译:语法校验 + 冒烟测试

许可证

MIT。上游 ponytail © DietrichGebert(MIT),本包仅做 DSH 适配打包,上游内容未修改;适配层代码同以 MIT 发布。详见 LICENSE。
预览分享卡片长什么样 ↓hoyyang/dsh-best-ponytail
分享 · DeepSeek Harness Hub
hoyyang/dsh-best-ponytail

用七级阶梯约束 AI 少写代码,专治过度工程

回到顶部