@wenaixi/dsh-ponytail 5.1.0 → 5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +142 -240
- package/README.md +97 -104
- package/cordis.patch.yml +0 -1
- package/lib/client.js +71 -16
- package/lib/ponytail-config.d.ts +19 -2
- package/lib/ponytail-config.d.ts.map +1 -1
- package/lib/ponytail-config.js +11 -2
- package/lib/ponytail-config.js.map +1 -1
- package/lib/ponytail-instructions.d.ts.map +1 -1
- package/lib/ponytail-instructions.js +31 -31
- package/lib/ponytail-instructions.js.map +1 -1
- package/lib/ponytail-priority.d.ts +2 -2
- package/lib/ponytail-priority.js +2 -2
- package/lib/ponytail-remote.d.ts +19 -10
- package/lib/ponytail-remote.d.ts.map +1 -1
- package/lib/ponytail-remote.js +55 -52
- package/lib/ponytail-remote.js.map +1 -1
- package/lib/ponytail-skills.d.ts +10 -0
- package/lib/ponytail-skills.d.ts.map +1 -1
- package/lib/ponytail-skills.js +23 -5
- package/lib/ponytail-skills.js.map +1 -1
- package/lib/ponytail.d.ts +4 -0
- package/lib/ponytail.d.ts.map +1 -1
- package/lib/ponytail.js +110 -13
- package/lib/ponytail.js.map +1 -1
- package/locale/en.json +9 -0
- package/locale/zh.json +9 -0
- package/package.json +1 -1
- package/skills/descriptions.en.json +8 -0
- package/skills/descriptions.zh.json +8 -0
- package/skills/ponytail/SKILL.md +89 -46
- package/skills/ponytail-audit/SKILL.md +27 -17
- package/skills/ponytail-debt/SKILL.md +27 -14
- package/skills/ponytail-gain/SKILL.md +32 -19
- package/skills/ponytail-help/SKILL.md +61 -32
- package/skills/ponytail-review/SKILL.md +36 -24
|
@@ -13,7 +13,7 @@ export function filterSkillBodyForMode(body, mode) {
|
|
|
13
13
|
if (labelMode)
|
|
14
14
|
return labelMode === effectiveMode;
|
|
15
15
|
}
|
|
16
|
-
//
|
|
16
|
+
// 上游正文用 ASCII 引号,本仓历史中文版用「」与中文冒号;两种形态都要能识别
|
|
17
17
|
const exampleLabel = line.match(/^-\s*([^:]+)(?::|:)\s*["「]/);
|
|
18
18
|
if (exampleLabel) {
|
|
19
19
|
const labelMode = normalizeMode(exampleLabel[1].trim());
|
|
@@ -26,38 +26,38 @@ export function filterSkillBodyForMode(body, mode) {
|
|
|
26
26
|
}
|
|
27
27
|
export function getFallbackInstructions(mode) {
|
|
28
28
|
const m = mode;
|
|
29
|
-
return ('PONYTAIL
|
|
29
|
+
return ('PONYTAIL active - level: ' +
|
|
30
30
|
m +
|
|
31
31
|
'\n\n' +
|
|
32
|
-
'
|
|
33
|
-
'##
|
|
34
|
-
'
|
|
35
|
-
'
|
|
32
|
+
'You are a lazy senior developer. Lazy means efficient, not careless. The best code is the code never written.\n\n' +
|
|
33
|
+
'## Persistence\n\n' +
|
|
34
|
+
'ACTIVE EVERY RESPONSE. Off only: "stop ponytail" / "normal mode".\n\n' +
|
|
35
|
+
'Current level: **' +
|
|
36
36
|
m +
|
|
37
|
-
'
|
|
38
|
-
'##
|
|
39
|
-
'
|
|
40
|
-
'1.
|
|
41
|
-
'2.
|
|
42
|
-
'3.
|
|
43
|
-
'4.
|
|
44
|
-
'5.
|
|
45
|
-
'6.
|
|
46
|
-
'7.
|
|
47
|
-
'
|
|
48
|
-
'##
|
|
49
|
-
'
|
|
50
|
-
'
|
|
51
|
-
'
|
|
52
|
-
'##
|
|
53
|
-
'
|
|
54
|
-
'##
|
|
55
|
-
'
|
|
56
|
-
'
|
|
57
|
-
'##
|
|
58
|
-
'Ponytail
|
|
37
|
+
'**. Switch: `/ponytail lite|full|ultra`.\n\n' +
|
|
38
|
+
'## The ladder\n\n' +
|
|
39
|
+
'Stop at the first rung that holds (understand the problem first, then pick):\n' +
|
|
40
|
+
'1. Does this need to exist at all? (YAGNI)\n' +
|
|
41
|
+
'2. Already in this codebase? Reuse it, do not re-write.\n' +
|
|
42
|
+
'3. Stdlib does it? Use the stdlib.\n' +
|
|
43
|
+
'4. Native platform feature covers it? Use native.\n' +
|
|
44
|
+
'5. Already-installed dependency solves it? Use it.\n' +
|
|
45
|
+
'6. Can it be one line? One line.\n' +
|
|
46
|
+
'7. Only then: the minimum code that works.\n\n' +
|
|
47
|
+
'Bug fix = root cause: grep every caller of the function you are about to change, fix it once in the shared place instead of patching each caller.\n\n' +
|
|
48
|
+
'## Rules\n\n' +
|
|
49
|
+
'No unrequested abstractions, no avoidable dependencies, no boilerplate nobody asked for. Deletion over addition, boring over clever, fewest files possible. ' +
|
|
50
|
+
'Ship the lazy version and question complex requests in the same response. Between two same-size stdlib options, take the one that is correct on edge cases. ' +
|
|
51
|
+
'Mark deliberate simplifications with a known ceiling using a `ponytail:` comment naming the ceiling and upgrade path.\n\n' +
|
|
52
|
+
'## Output\n\n' +
|
|
53
|
+
'Code first, then at most three short lines: what was skipped, when to add it. If the explanation is longer than the code, delete it. Give in full any explanation the user explicitly asked for.\n\n' +
|
|
54
|
+
'## When NOT to be lazy\n\n' +
|
|
55
|
+
'Never simplify away: understanding the problem, input validation at trust boundaries, error handling that prevents data loss, security, accessibility, hardware calibration, anything explicitly requested. ' +
|
|
56
|
+
'Non-trivial logic leaves one runnable check (an assert-based self-check or one small test file); a trivial one-liner needs no test.\n\n' +
|
|
57
|
+
'## Boundaries\n\n' +
|
|
58
|
+
'Ponytail governs what you build, not how you talk. "stop ponytail" / "normal mode" reverts; the level persists until changed or session end.');
|
|
59
59
|
}
|
|
60
|
-
//
|
|
60
|
+
// 路径解析:给定 skillDir 返回主技能路径
|
|
61
61
|
export function getMainSkillPath(skillDir) {
|
|
62
62
|
return join(skillDir, 'ponytail', 'SKILL.md');
|
|
63
63
|
}
|
|
@@ -71,11 +71,11 @@ const INDEPENDENT_MODES = new Set(['review']);
|
|
|
71
71
|
*/
|
|
72
72
|
export function render(skillDir, mode) {
|
|
73
73
|
if (INDEPENDENT_MODES.has(mode)) {
|
|
74
|
-
return 'PONYTAIL
|
|
74
|
+
return 'PONYTAIL active - level: ' + mode + '. Behavior is defined by the /ponytail-' + mode + ' skill.';
|
|
75
75
|
}
|
|
76
76
|
try {
|
|
77
77
|
const raw = readFileSync(getMainSkillPath(skillDir), 'utf8');
|
|
78
|
-
return 'PONYTAIL
|
|
78
|
+
return 'PONYTAIL active - level: ' + mode + '\n\n' + filterSkillBodyForMode(raw, mode);
|
|
79
79
|
}
|
|
80
80
|
catch {
|
|
81
81
|
return getFallbackInstructions(mode);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ponytail-instructions.js","sourceRoot":"","sources":["../src/ponytail-instructions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAElE,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAE,IAAY;IAC/D,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,IAAK,YAAuB,CAAA;IACrE,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAA;IAC/E,OAAO,kBAAkB;SACtB,KAAK,CAAC,OAAO,CAAC;SACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,CAAA;YACtD,IAAI,SAAS;gBAAE,OAAO,SAAS,KAAK,aAAa,CAAA;QACnD,CAAC;QACD,
|
|
1
|
+
{"version":3,"file":"ponytail-instructions.js","sourceRoot":"","sources":["../src/ponytail-instructions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAElE,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAE,IAAY;IAC/D,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,IAAK,YAAuB,CAAA;IACrE,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAA;IAC/E,OAAO,kBAAkB;SACtB,KAAK,CAAC,OAAO,CAAC;SACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;QACzD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,CAAA;YACtD,IAAI,SAAS;gBAAE,OAAO,SAAS,KAAK,aAAa,CAAA;QACnD,CAAC;QACD,2CAA2C;QAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;QAC7D,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,CAAA;YACxD,IAAI,SAAS;gBAAE,OAAO,SAAS,KAAK,aAAa,CAAA;QACnD,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,MAAM,CAAC,GAAG,IAAI,CAAA;IACd,OAAO,CACL,2BAA2B;QAC3B,CAAC;QACD,MAAM;QACN,mHAAmH;QACnH,oBAAoB;QACpB,uEAAuE;QACvE,mBAAmB;QACnB,CAAC;QACD,8CAA8C;QAC9C,mBAAmB;QACnB,gFAAgF;QAChF,8CAA8C;QAC9C,2DAA2D;QAC3D,sCAAsC;QACtC,qDAAqD;QACrD,sDAAsD;QACtD,oCAAoC;QACpC,gDAAgD;QAChD,uJAAuJ;QACvJ,cAAc;QACd,8JAA8J;QAC9J,8JAA8J;QAC9J,2HAA2H;QAC3H,eAAe;QACf,sMAAsM;QACtM,4BAA4B;QAC5B,8MAA8M;QAC9M,yIAAyI;QACzI,mBAAmB;QACnB,8IAA8I,CAC/I,CAAA;AACH,CAAC;AAGD,2BAA2B;AAC3B,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,OAAO,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;AAC/C,CAAC;AAED,wDAAwD;AACxD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAA;AAE7C;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,QAAgB,EAAE,IAAY;IACnD,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO,2BAA2B,GAAG,IAAI,GAAG,yCAAyC,GAAG,IAAI,GAAG,SAAS,CAAA;IAC1G,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAA;QAC5D,OAAO,2BAA2B,GAAG,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACxF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,KAAoB;IACxE,KAAK,CAAC,YAAY,EAAE,CAAA;IACpB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAA;IACxB,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,EAAE,CAAA;IACtC,OAAO,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AAC/B,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* 回答一个用户反复踩的问题:「我在界面上点了等级,为什么没反应?」
|
|
5
5
|
* 根因永远是某一级更高优先级的配置把界面写入的值盖掉了。
|
|
6
6
|
* 本模块把「哪一级在说话」从 apply() 与 HTTP 路由里剥出来,
|
|
7
|
-
*
|
|
7
|
+
* 由宿主一次读齐三个来源的真值后传入,产出可直接渲染的诊断链。
|
|
8
8
|
*
|
|
9
9
|
* 设计约束:纯函数,不读文件、不读环境变量。
|
|
10
10
|
* 所有外部事实由调用方读好后传入,因此单测无需触碰磁盘与环境变量,
|
|
@@ -43,7 +43,7 @@ export interface PriorityReport {
|
|
|
43
43
|
effective: RuntimeMode;
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
|
-
*
|
|
46
|
+
* 解析三级优先级链,得出最终生效档与每一级的命中/被覆盖/问题状态。
|
|
47
47
|
*
|
|
48
48
|
* @param input.envRaw - 环境变量 PONYTAIL_DEFAULT_MODE 的原始值;undefined 表示未设置
|
|
49
49
|
* @param input.patchMode - cordis.patch.yml 显式声明的 defaultMode;undefined 表示未声明
|
package/lib/ponytail-priority.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* 回答一个用户反复踩的问题:「我在界面上点了等级,为什么没反应?」
|
|
5
5
|
* 根因永远是某一级更高优先级的配置把界面写入的值盖掉了。
|
|
6
6
|
* 本模块把「哪一级在说话」从 apply() 与 HTTP 路由里剥出来,
|
|
7
|
-
*
|
|
7
|
+
* 由宿主一次读齐三个来源的真值后传入,产出可直接渲染的诊断链。
|
|
8
8
|
*
|
|
9
9
|
* 设计约束:纯函数,不读文件、不读环境变量。
|
|
10
10
|
* 所有外部事实由调用方读好后传入,因此单测无需触碰磁盘与环境变量,
|
|
@@ -31,7 +31,7 @@ const PROBLEMS = {
|
|
|
31
31
|
fallback: '',
|
|
32
32
|
};
|
|
33
33
|
/**
|
|
34
|
-
*
|
|
34
|
+
* 解析三级优先级链,得出最终生效档与每一级的命中/被覆盖/问题状态。
|
|
35
35
|
*
|
|
36
36
|
* @param input.envRaw - 环境变量 PONYTAIL_DEFAULT_MODE 的原始值;undefined 表示未设置
|
|
37
37
|
* @param input.patchMode - cordis.patch.yml 显式声明的 defaultMode;undefined 表示未声明
|
package/lib/ponytail-remote.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* ponytail-remote — 只读推导值的官方跨端通道
|
|
3
3
|
*
|
|
4
|
-
* 迁移到官方配置组合后,可持久化字段(defaultMode、disabledSkills)由
|
|
5
|
-
* volatile
|
|
6
|
-
*
|
|
4
|
+
* 迁移到官方配置组合后,可持久化字段(defaultMode、disabledSkills、skillDescriptionLang)由
|
|
5
|
+
* Cordis Config 的 volatile 字段承载,官方表单负责读写;但「优先级诊断链」与「当前生效等级」
|
|
6
|
+
* 是**运行时推导值**,不是配置——它们由环境变量、profile 补丁与内置兜底三层按优先级合并得出,
|
|
7
7
|
* 写进配置层等于让缓存永久盖住真值(env 只有进程重启才变,落盘反而会遮蔽新值)。
|
|
8
8
|
*
|
|
9
9
|
* 因此这两个值走 DSH 官方的 Typert 通道下发,而不是自制 HTTP:
|
|
@@ -12,29 +12,38 @@
|
|
|
12
12
|
* 无需在任何注册表里登记;
|
|
13
13
|
* - 浏览器侧以 `ctx.remote.ponytail.snapshot()` 调用,走已有的 RPC 载体。
|
|
14
14
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
15
|
+
* 技能描述的语言也在这个通道上:模型目录与配置面板消费的是同一个字符串,
|
|
16
|
+
* 由配置决定下哪一套,缓存的构建期常量会让切换停在旧语言。
|
|
17
17
|
*/
|
|
18
18
|
import { TypertRemoteService } from '@deepseek-ai/dsh-typert-protocol';
|
|
19
19
|
import type { Context } from '@deepseek-ai/cordis';
|
|
20
20
|
import type { PriorityReport } from './ponytail-priority.js';
|
|
21
|
+
/** 技能描述的语言。与 Config.skillDescriptionLang 同一取值域。 */
|
|
22
|
+
export type SkillLang = 'zh' | 'en';
|
|
21
23
|
export interface SkillMeta {
|
|
22
24
|
id: string;
|
|
23
25
|
name: string;
|
|
24
26
|
description: string;
|
|
25
27
|
}
|
|
26
28
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
29
|
+
* 从包内描述文件读取技能元数据;文件不可读或缺项时回退短描述。
|
|
30
|
+
*
|
|
31
|
+
* lang 缺省或非法一律按 zh 处理:调用方(面板、Provider)读的是配置值,
|
|
32
|
+
* 而配置可能来自手写的补丁,不保证取值域干净。
|
|
30
33
|
*/
|
|
31
|
-
export declare function readSkillMeta(
|
|
34
|
+
export declare function readSkillMeta(lang?: SkillLang): SkillMeta[];
|
|
35
|
+
/** 读 skills/descriptions.<lang>.json;不可读返回 null 由调用方回退。 */
|
|
36
|
+
export declare function readSkillDescriptions(lang?: SkillLang): Record<string, string> | null;
|
|
32
37
|
/** 跨端下发的只读快照:形状必须是 lossless JSON(typert-protocol 的 isRemoteJsonValue) */
|
|
33
38
|
export interface PonytailRemoteSnapshot {
|
|
34
39
|
/** 当前会话生效的等级(null 表示关闭,序列化为字符串 'off') */
|
|
35
40
|
currentMode: string;
|
|
36
|
-
/**
|
|
41
|
+
/** 三级优先级诊断链 */
|
|
37
42
|
priority: PriorityReport;
|
|
43
|
+
/** 技能描述语言(服务端解析后的有效语言:显式值或按宿主对齐值;面板据此展示) */
|
|
44
|
+
skillLang: SkillLang;
|
|
45
|
+
/** 6 个技能元数据,描述已按 skillLang 取好 */
|
|
46
|
+
skills: SkillMeta[];
|
|
38
47
|
}
|
|
39
48
|
export interface PonytailRemoteDeps {
|
|
40
49
|
snapshot(): PonytailRemoteSnapshot;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ponytail-remote.d.ts","sourceRoot":"","sources":["../src/ponytail-remote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,EAAU,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAC9E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"ponytail-remote.d.ts","sourceRoot":"","sources":["../src/ponytail-remote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,EAAU,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAC9E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAE5D,mDAAmD;AACnD,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;AAiCnC,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAQ3D;AAED,2DAA2D;AAC3D,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAgBrF;AAED,yEAAyE;AACzE,MAAM,WAAW,sBAAsB;IACrC,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe;IACf,QAAQ,EAAE,cAAc,CAAA;IACxB,4CAA4C;IAC5C,SAAS,EAAE,SAAS,CAAA;IACpB,iCAAiC;IACjC,MAAM,EAAE,SAAS,EAAE,CAAA;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,IAAI,sBAAsB,CAAA;CACnC;AAED;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,mBAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;gBAE7B,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB;IAMlD,QAAQ,IAAI,sBAAsB;CAGnC"}
|
package/lib/ponytail-remote.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* ponytail-remote — 只读推导值的官方跨端通道
|
|
3
3
|
*
|
|
4
|
-
* 迁移到官方配置组合后,可持久化字段(defaultMode、disabledSkills)由
|
|
5
|
-
* volatile
|
|
6
|
-
*
|
|
4
|
+
* 迁移到官方配置组合后,可持久化字段(defaultMode、disabledSkills、skillDescriptionLang)由
|
|
5
|
+
* Cordis Config 的 volatile 字段承载,官方表单负责读写;但「优先级诊断链」与「当前生效等级」
|
|
6
|
+
* 是**运行时推导值**,不是配置——它们由环境变量、profile 补丁与内置兜底三层按优先级合并得出,
|
|
7
7
|
* 写进配置层等于让缓存永久盖住真值(env 只有进程重启才变,落盘反而会遮蔽新值)。
|
|
8
8
|
*
|
|
9
9
|
* 因此这两个值走 DSH 官方的 Typert 通道下发,而不是自制 HTTP:
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
* 无需在任何注册表里登记;
|
|
13
13
|
* - 浏览器侧以 `ctx.remote.ponytail.snapshot()` 调用,走已有的 RPC 载体。
|
|
14
14
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
15
|
+
* 技能描述的语言也在这个通道上:模型目录与配置面板消费的是同一个字符串,
|
|
16
|
+
* 由配置决定下哪一套,缓存的构建期常量会让切换停在旧语言。
|
|
17
17
|
*/
|
|
18
18
|
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
19
19
|
var useValue = arguments.length > 2;
|
|
@@ -49,60 +49,63 @@ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn,
|
|
|
49
49
|
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
50
50
|
done = true;
|
|
51
51
|
};
|
|
52
|
-
import { readFileSync
|
|
53
|
-
import { join } from 'node:path';
|
|
54
|
-
import { parse as parseYaml } from 'yaml';
|
|
52
|
+
import { readFileSync } from 'node:fs';
|
|
55
53
|
import { Remote, TypertRemoteService } from '@deepseek-ai/dsh-typert-protocol';
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
catch {
|
|
81
|
-
return null;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
54
|
+
/** 技能 id 列表与描述的唯一真源:skills/descriptions.{lang}.json */
|
|
55
|
+
const SKILL_IDS = ['ponytail', 'ponytail-review', 'ponytail-audit', 'ponytail-debt', 'ponytail-gain', 'ponytail-help'];
|
|
56
|
+
/**
|
|
57
|
+
* 短描述兜底:描述文件不可读时用(模型目录与面板至少有一行说明,不至于空白)。
|
|
58
|
+
* 完整描述在 skills/descriptions.{lang}.json,不在此重复。
|
|
59
|
+
*/
|
|
60
|
+
const FALLBACK_DESCRIPTION = {
|
|
61
|
+
zh: {
|
|
62
|
+
'ponytail': '懒人模式本体:7 阶梯子,lite/full/ultra 三档强度',
|
|
63
|
+
'ponytail-review': '过度设计评审:只挑能删的代码,一行一条',
|
|
64
|
+
'ponytail-audit': '全仓过度设计审计:按可删行数降序猎取臃肿',
|
|
65
|
+
'ponytail-debt': '收割 ponytail: 注释列成债务台账',
|
|
66
|
+
'ponytail-gain': '收益看板:benchmark 中位数实测收益',
|
|
67
|
+
'ponytail-help': '速查卡:模式、技能与命令',
|
|
68
|
+
},
|
|
69
|
+
en: {
|
|
70
|
+
'ponytail': 'Lazy senior dev mode: seven-rung ladder, lite/full/ultra',
|
|
71
|
+
'ponytail-review': 'Over-engineering review: only what can be deleted',
|
|
72
|
+
'ponytail-audit': 'Whole-repo audit for over-engineering, ranked by cut size',
|
|
73
|
+
'ponytail-debt': 'Harvest ponytail: shortcut comments into a debt ledger',
|
|
74
|
+
'ponytail-gain': 'Measured-impact scoreboard from benchmark medians',
|
|
75
|
+
'ponytail-help': 'Quick reference: modes, skills, commands',
|
|
76
|
+
},
|
|
77
|
+
};
|
|
84
78
|
/**
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
79
|
+
* 从包内描述文件读取技能元数据;文件不可读或缺项时回退短描述。
|
|
80
|
+
*
|
|
81
|
+
* lang 缺省或非法一律按 zh 处理:调用方(面板、Provider)读的是配置值,
|
|
82
|
+
* 而配置可能来自手写的补丁,不保证取值域干净。
|
|
88
83
|
*/
|
|
89
|
-
export function readSkillMeta(
|
|
90
|
-
|
|
84
|
+
export function readSkillMeta(lang) {
|
|
85
|
+
const safeLang = lang === 'en' ? 'en' : 'zh';
|
|
86
|
+
const text = readSkillDescriptions(safeLang);
|
|
87
|
+
return SKILL_IDS.map((id) => ({
|
|
88
|
+
id,
|
|
89
|
+
name: id,
|
|
90
|
+
description: text?.[id] ?? FALLBACK_DESCRIPTION[safeLang][id] ?? id,
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
/** 读 skills/descriptions.<lang>.json;不可读返回 null 由调用方回退。 */
|
|
94
|
+
export function readSkillDescriptions(lang) {
|
|
91
95
|
try {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
+
const raw = readFileSync(new URL(`../skills/descriptions.${lang === 'en' ? 'en' : 'zh'}.json`, import.meta.url), 'utf8').replace(/^\uFEFF/, '');
|
|
97
|
+
const parsed = JSON.parse(raw);
|
|
98
|
+
const out = {};
|
|
99
|
+
for (const id of SKILL_IDS) {
|
|
100
|
+
const value = parsed[id];
|
|
101
|
+
if (typeof value === 'string' && value.length > 0)
|
|
102
|
+
out[id] = value;
|
|
103
|
+
}
|
|
104
|
+
return Object.keys(out).length === SKILL_IDS.length ? out : null;
|
|
96
105
|
}
|
|
97
106
|
catch {
|
|
98
|
-
return
|
|
99
|
-
}
|
|
100
|
-
const metas = [];
|
|
101
|
-
for (const name of names) {
|
|
102
|
-
const fm = parseSkillFrontmatter(join(skillDirPath, name, 'SKILL.md'));
|
|
103
|
-
metas.push({ id: name, name, description: fm?.description ?? name });
|
|
107
|
+
return null;
|
|
104
108
|
}
|
|
105
|
-
return metas.length > 0 ? metas : FALLBACK_SKILL_META.map((m) => ({ ...m }));
|
|
106
109
|
}
|
|
107
110
|
/**
|
|
108
111
|
* 远程服务:只暴露 snapshot 一个只读端点。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ponytail-remote.js","sourceRoot":"","sources":["../src/ponytail-remote.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"ponytail-remote.js","sourceRoot":"","sources":["../src/ponytail-remote.ts"],"names":[],"mappings":"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"}
|
package/lib/ponytail-skills.d.ts
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* 事件监听,注册处一行构造调用。
|
|
9
9
|
*
|
|
10
10
|
* 边界:skillDir 由 entry 解析后传入(config.skillDir 的优先级归 entry 模块)。
|
|
11
|
+
* 描述语言由 getDescriptionLang 闭包现读,来源 skills/descriptions.{lang}.json。
|
|
11
12
|
* 与 @deepseek-ai/dsh-skill 的关系:实现其 SkillProvider 接口;
|
|
12
13
|
* 字段以该包 lib/types/index.d.ts 的生成类型为准。
|
|
13
14
|
*/
|
|
@@ -19,11 +20,20 @@ export declare class PonytailProvider implements SkillProvider {
|
|
|
19
20
|
private readonly ctx;
|
|
20
21
|
private readonly control;
|
|
21
22
|
private readonly isSkillEnabled?;
|
|
23
|
+
/** 当前配置要求的描述语言;每次求值现读 volatile 引用,不缓存 */
|
|
24
|
+
private readonly getDescriptionLang?;
|
|
22
25
|
constructor(ctx: Context, control: SkillProviderControl, options: {
|
|
23
26
|
providerName?: string;
|
|
24
27
|
skillDir: string;
|
|
25
28
|
isSkillEnabled?: (name: string) => boolean;
|
|
29
|
+
getDescriptionLang?: () => 'zh' | 'en';
|
|
26
30
|
});
|
|
31
|
+
/**
|
|
32
|
+
* 当前语言的描述表;描述文件不可读时返回 null,调用方回退 frontmatter 里的英文。
|
|
33
|
+
* 每次现读:配置改动经 loader/volatile-update 就地更新引用并触发目录失效,
|
|
34
|
+
* 缓存表会让切换停在旧语言。
|
|
35
|
+
*/
|
|
36
|
+
private descriptions;
|
|
27
37
|
invalidate(): void;
|
|
28
38
|
list(options: SkillLookupOptions): Promise<readonly SkillCandidate[] | SkillProviderObservation>;
|
|
29
39
|
get(candidate: SkillCandidate, options: SkillLookupOptions): Promise<SkillDefinition | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ponytail-skills.d.ts","sourceRoot":"","sources":["../src/ponytail-skills.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ponytail-skills.d.ts","sourceRoot":"","sources":["../src/ponytail-skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,wBAAwB,CAAA;AAuK/B,qBAAa,gBAAiB,YAAW,aAAa;IACpD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAA2B;IAC3D,yCAAyC;IACzC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAmB;gBAGrD,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE;QACP,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,QAAQ,EAAE,MAAM,CAAA;QAChB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;QAC1C,kBAAkB,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI,CAAA;KACvC;IAUH;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAIpB,UAAU,IAAI,IAAI;IAQZ,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,cAAc,EAAE,GAAG,wBAAwB,CAAC;IA+DhG,GAAG,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;CAgCxG"}
|
package/lib/ponytail-skills.js
CHANGED
|
@@ -8,12 +8,14 @@
|
|
|
8
8
|
* 事件监听,注册处一行构造调用。
|
|
9
9
|
*
|
|
10
10
|
* 边界:skillDir 由 entry 解析后传入(config.skillDir 的优先级归 entry 模块)。
|
|
11
|
+
* 描述语言由 getDescriptionLang 闭包现读,来源 skills/descriptions.{lang}.json。
|
|
11
12
|
* 与 @deepseek-ai/dsh-skill 的关系:实现其 SkillProvider 接口;
|
|
12
13
|
* 字段以该包 lib/types/index.d.ts 的生成类型为准。
|
|
13
14
|
*/
|
|
14
15
|
import { readdir, readFile } from 'node:fs/promises';
|
|
15
16
|
import { dirname, join } from 'node:path';
|
|
16
17
|
import { parse } from 'yaml';
|
|
18
|
+
import { readSkillDescriptions } from './ponytail-remote.js';
|
|
17
19
|
const SKILL_NAME_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
18
20
|
const PONYTAIL_RANK = 550;
|
|
19
21
|
function isSkillName(v) {
|
|
@@ -126,11 +128,14 @@ async function parseSkillFile(path, signal) {
|
|
|
126
128
|
/**
|
|
127
129
|
* 私有组装流水线:从 frontmatter 提取并验证公共基础字段。
|
|
128
130
|
* 校验失败或格式非法时抛出 Error,由外层根据上下文决定记录日志或静默处理。
|
|
131
|
+
*
|
|
132
|
+
* 描述不在这里决定:SKILL.md 的 frontmatter 只保留英文原文(上游真源),
|
|
133
|
+
* 中文描述在 skills/descriptions.zh.json,由 Provider 按配置选择下发哪一套。
|
|
134
|
+
* frontmatter 的 description 因此只作为「文件可解析」的存在性校验与缺项兜底。
|
|
129
135
|
*/
|
|
130
|
-
function assembleSkillBase(data, filePath, providerName) {
|
|
136
|
+
function assembleSkillBase(data, filePath, providerName, description) {
|
|
131
137
|
const name = readString(data, 'name');
|
|
132
|
-
|
|
133
|
-
if (!name || !description) {
|
|
138
|
+
if (!name || !readString(data, 'description')) {
|
|
134
139
|
throw new Error('frontmatter 必须包含 name 和 description');
|
|
135
140
|
}
|
|
136
141
|
if (!isSkillName(name)) {
|
|
@@ -157,12 +162,23 @@ export class PonytailProvider {
|
|
|
157
162
|
ctx;
|
|
158
163
|
control;
|
|
159
164
|
isSkillEnabled;
|
|
165
|
+
/** 当前配置要求的描述语言;每次求值现读 volatile 引用,不缓存 */
|
|
166
|
+
getDescriptionLang;
|
|
160
167
|
constructor(ctx, control, options) {
|
|
161
168
|
this.ctx = ctx;
|
|
162
169
|
this.control = control;
|
|
163
170
|
this.name = options.providerName ?? 'ponytail';
|
|
164
171
|
this.skillDir = options.skillDir;
|
|
165
172
|
this.isSkillEnabled = options.isSkillEnabled;
|
|
173
|
+
this.getDescriptionLang = options.getDescriptionLang;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* 当前语言的描述表;描述文件不可读时返回 null,调用方回退 frontmatter 里的英文。
|
|
177
|
+
* 每次现读:配置改动经 loader/volatile-update 就地更新引用并触发目录失效,
|
|
178
|
+
* 缓存表会让切换停在旧语言。
|
|
179
|
+
*/
|
|
180
|
+
descriptions() {
|
|
181
|
+
return readSkillDescriptions(this.getDescriptionLang?.() ?? 'zh');
|
|
166
182
|
}
|
|
167
183
|
invalidate() {
|
|
168
184
|
try {
|
|
@@ -206,9 +222,10 @@ export class PonytailProvider {
|
|
|
206
222
|
this.ctx.logger.warn(`[ponytail] 跳过 ${entry.name}:缺少或无效的 frontmatter`);
|
|
207
223
|
continue;
|
|
208
224
|
}
|
|
225
|
+
const descriptions = this.descriptions();
|
|
209
226
|
let base;
|
|
210
227
|
try {
|
|
211
|
-
base = assembleSkillBase(parsed.data, skillPath, this.name);
|
|
228
|
+
base = assembleSkillBase(parsed.data, skillPath, this.name, descriptions?.[entry.name] ?? readString(parsed.data, 'description'));
|
|
212
229
|
}
|
|
213
230
|
catch (err) {
|
|
214
231
|
this.ctx.logger.warn(`[ponytail] 跳过 ${skillPath}:${err.message}`);
|
|
@@ -243,7 +260,8 @@ export class PonytailProvider {
|
|
|
243
260
|
return undefined;
|
|
244
261
|
let base;
|
|
245
262
|
try {
|
|
246
|
-
|
|
263
|
+
const descriptions = this.descriptions();
|
|
264
|
+
base = assembleSkillBase(parsed.data, targetPath, this.name, descriptions?.[candidate.name] ?? readString(parsed.data, 'description'));
|
|
247
265
|
}
|
|
248
266
|
catch {
|
|
249
267
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ponytail-skills.js","sourceRoot":"","sources":["../src/ponytail-skills.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ponytail-skills.js","sourceRoot":"","sources":["../src/ponytail-skills.ts"],"names":[],"mappings":"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"}
|
package/lib/ponytail.d.ts
CHANGED
|
@@ -16,11 +16,13 @@ export declare const Config: Schema<Schemastery.ObjectS<NoInfer<{
|
|
|
16
16
|
skillDir: Schema<string, string, "plain">;
|
|
17
17
|
defaultMode: Schema<"full" | "off" | "lite" | "ultra", "full" | "off" | "lite" | "ultra", "volatile">;
|
|
18
18
|
disabledSkills: Schema<NoInfer<string[]>, NoInfer<string[]>, "volatile">;
|
|
19
|
+
skillDescriptionLang: Schema<"zh" | "en", "zh" | "en", "volatile">;
|
|
19
20
|
}>>, Schemastery.ObjectT<NoInfer<{
|
|
20
21
|
providerName: Schema<string, string, "defined">;
|
|
21
22
|
skillDir: Schema<string, string, "plain">;
|
|
22
23
|
defaultMode: Schema<"full" | "off" | "lite" | "ultra", "full" | "off" | "lite" | "ultra", "volatile">;
|
|
23
24
|
disabledSkills: Schema<NoInfer<string[]>, NoInfer<string[]>, "volatile">;
|
|
25
|
+
skillDescriptionLang: Schema<"zh" | "en", "zh" | "en", "volatile">;
|
|
24
26
|
}>>, "plain">;
|
|
25
27
|
export declare const name = "ponytail";
|
|
26
28
|
export declare const inject: readonly ["skills", "systemPrompt"];
|
|
@@ -33,11 +35,13 @@ declare const _default: {
|
|
|
33
35
|
skillDir: Schema<string, string, "plain">;
|
|
34
36
|
defaultMode: Schema<"full" | "off" | "lite" | "ultra", "full" | "off" | "lite" | "ultra", "volatile">;
|
|
35
37
|
disabledSkills: Schema<NoInfer<string[]>, NoInfer<string[]>, "volatile">;
|
|
38
|
+
skillDescriptionLang: Schema<"zh" | "en", "zh" | "en", "volatile">;
|
|
36
39
|
}>>, Schemastery.ObjectT<NoInfer<{
|
|
37
40
|
providerName: Schema<string, string, "defined">;
|
|
38
41
|
skillDir: Schema<string, string, "plain">;
|
|
39
42
|
defaultMode: Schema<"full" | "off" | "lite" | "ultra", "full" | "off" | "lite" | "ultra", "volatile">;
|
|
40
43
|
disabledSkills: Schema<NoInfer<string[]>, NoInfer<string[]>, "volatile">;
|
|
44
|
+
skillDescriptionLang: Schema<"zh" | "en", "zh" | "en", "volatile">;
|
|
41
45
|
}>>, "plain">;
|
|
42
46
|
apply: typeof apply;
|
|
43
47
|
};
|
package/lib/ponytail.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ponytail.d.ts","sourceRoot":"","sources":["../src/ponytail.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAKlD,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAE7C,OAAO,
|
|
1
|
+
{"version":3,"file":"ponytail.d.ts","sourceRoot":"","sources":["../src/ponytail.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAKlD,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAE7C,OAAO,EAOL,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAA;AAkB7B,MAAM,MAAM,MAAM,GAAG,cAAc,CAAA;AAInC,eAAO,MAAM,MAAM;;;;;;;;;;;;aAqBjB,CAAA;AAMF,eAAO,MAAM,IAAI,aAAa,CAAA;AAC9B,eAAO,MAAM,MAAM,qCAAsC,CAAA;AA0DzD,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAE,MAAqB,GAAG,IAAI,CA0WvE;;;;;;;;;;;;;;;;;;;AAED,wBAA8C"}
|