DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

wasteoneslife /

wasteoneslife/dsh-skill-creator

Verified

DeepSeek Harness plugin: create spec-compliant skills from the Web UI (Huawei Cloud / generic / REST API), with a 10-point evaluation loop

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@21a08de1

Scenes Skill Creator

在 DeepSeek Harness 的 Web 界面里真跑官方 creator 技能——通用技能 / 标准API管理技能 / 华为云基础云服务技能——并实时展示过程、自动评测、不达标就打回修改。

npm version license: MIT

包名 @cloudplugin/dsh-skill-creator,是一个 DSH bundle(Host 半边 + Client 半边,全部在 Harness 进程内,没有子进程、没有监听端口)。

它是什么

官方 creator 技能(common-skill-creator / rest-api-skill-creator / huawei-cloud-skill-creator)是给命令行或会话里的 agent 用的:需求要自己写清、流程要自己盯、产物好不好要自己判断。本插件把这件事搬进 Web 界面:

  1. 需求传递:侧边栏选分类、填表单,插件把内容整理成 creator 能直接开工的请求(已经给全的值不再反问)。
  2. 过程展示:按下「开始创建」后,Host 侧新起一个真 agent 执行该 creator 自己的流水线,面板实时渲染阶段清单与步骤日志。
  3. 评测闭环:创建结束后真跑一遍 10 分制评测,不达标就把扣分明细交回同一个 creator 就地修改,直到达标或用完轮数。

插件自己不做内容创作:SKILL.md 怎么写、references 怎么摆、脚本怎么跑,全部由该 creator 当前版本决定(插件不内嵌副本、不二次实现;上游改了,插件行为就跟着改)。

✨ 主要特性

  • 分三类组织需求:侧边栏为 通用技能 / 标准API管理技能 / 华为云基础云服务技能,创建记录按分类隔离,默认打开通用技能。
  • 真跑,不止给提示词:创建由 creator 技能在真 agent 里执行;步骤日志逐条记录它的工具调用、阶段切换与模型报错。
  • 实时展示阶段与步骤:阶段清单按 creator 自己的标记点亮(华为云 Phase 1–6 / 通用技能 阶段 1–5 / 标准API Step 1–4),运行中每 1 秒刷新。
  • 自动评测并打回修改:10 分制、通过线 8.5;不达标把扣分明细发回同一个 creator 修改,最多 3 轮,到顶输出评测报告。
  • 无人值守也不提问:提示词里禁止提问;creator 若仍然提问,插件按"只读、不执行变更类操作"的策略自动答复并继续(最多 5 次)。
  • 保护长任务不被误杀:看门狗按静默判死(默认静默 8 分钟、整段 120 分钟兜底),并识别进程被挂起(休眠)后重新计时。
  • 回看历史并可靠落盘:运行记录原子写入磁盘(临时文件 + 重命名 + 备份 + 与磁盘记录合并去重),bundle 重载或 DSH 重启后仍能重新打开,最多保留 20 条。
  • 自动发现产物目录:通用/标准API 模式没有名称与目录字段,评测阶段从 creator 写文件的路径、以及 <cwd>/skills 下新出现的 SKILL.md 自动定位产物。
  • 按需拉取华为云三级目录:只有切到华为云分类才访问仓库,逐级读取并缓存(默认每路径 10 分钟);默认分类打开页面不发请求。

快速开始

两种安装方式。装完后必须重启 DSH 一次——bundle 列表与补丁层只在启动时解析(不重启的表现是侧边栏没有图标,或面板 API 404)。

方式一 · DSH 内(任意 profile,推荐):在会话里让 agent 用 Harness 自带的插件管理安装这个 spec:

@cloudplugin/dsh-skill-creator

方式二 · 桌面端 profile(命令行):把依赖装进 profile 目录,并把同一个包名加进该 profile package.json 的 dsh.profile.bundles 数组(两处都要有):

cd ~/.dsh/profiles/desktop
pnpm add @cloudplugin/dsh-skill-creator   # 或用 npm install
cd $env:USERPROFILE\.dsh\profiles\desktop
pnpm add @cloudplugin/dsh-skill-creator   # 或用 npm install

⚠️ 装完必须重启 DSH 一次:profile 的 node_modules 解析、dsh.profile.bundles 与 cordis.patch.yml 都只在启动时生效。

另外,安装用的包名必须与 src/client.js 里 window.__ModuleLoader__.load({ id }) 的 id 完全一致(本包都是 @cloudplugin/dsh-skill-creator),不一致时浏览器侧会直接报 bundle … loaded without registering "…"。

最小可用配置(写进 profile 的 cordis.patch.yml,id 与包内补丁一致):

- id: dsh-skill-creator
  name: '@cloudplugin/dsh-skill-creator'
  config:
    run:
      cwd: '/absolute/path/to/your/workspace'
      permissionPreset: 'danger-full-access'
      passScore: 8.5
      maxEvalRounds: 3
      evalReadonlyOnly: true
      idleTimeoutMs: 480000
      phaseTimeoutMs: 7200000

run.cwd 是技能落盘根,产物写在 <cwd>/skills/…。不设时回落到 DSH host 进程的 cwd(实测就是 profile 目录),技能会被写进 profile 里而不是你的工作区。上面的 run 键要写全,原因见「配置」一节的坑。

命令行安装(等价方式)

# Web / 普通 profile
dsh plugin add @cloudplugin/dsh-skill-creator

# 桌面端:先完全退出客户端,再指定 desktop profile
dsh plugin --profile desktop add @cloudplugin/dsh-skill-creator

装完重启一次 DSH。桌面端的 dsh CLI 随安装包提供(resources\runtime\cli\bin\dsh.cmd);若手边没有该命令,也可以在插件页里直接填包名 @cloudplugin/dsh-skill-creator 安装。

⚠️ 权限要求(必读)

发布包默认 run.permissionPreset: 'danger-full-access'(写在包内 cordis.patch.yml 里,不是文档假设)。

原因:creator 流程要跑 bash 脚本(ensure_cli.sh / validate-skill.sh / test-cli-commands.sh)与云 CLI,这些 fork 在只读或 workspace-write 沙箱下会被审批拦住。无人值守时没有人点「允许」,运行就静默,随后被看门狗判死——表现为**"跑一半超时退出"**(本机运行记录里确有 permission: null 的运行以 等待「creator」超时:已静默 8 分钟(无任何工具调用或文本) 结束)。

风险:创建与评测 agent 都会以完全访问权限运行(可读写文件、执行命令)。请只在信任的工作区使用本插件。若改成受限 preset,请确保有人在场处理审批,否则长任务大概率静默超时。

三种技能类型

显示名(侧边栏顺序) 内部 mode 委托的官方 creator 来源
通用技能 generic common-skill-creator grape-skills main → skills/coding/scaffolding/common-skill-creator
标准API管理技能 api rest-api-skill-creator grape-skills main → skills/coding/scaffolding/rest-api-skill-creator
华为云基础云服务技能 huawei huawei-cloud-skill-creator huaweicloud-skills master → skills/devtools/common/huawei-cloud-skill-creator
  • 显示名就是侧边栏菜单文案,数组顺序即菜单顺序(华为云固定最后),默认选中第一项(通用技能)。
  • 内部 mode 键是 Host API 契约(POST /run 的 spec.mode)与记录隔离键;改显示名不动它。
  • 记录按分类隔离:创建记录卡片只列出当前分类的历史。
  • 三级目录按需拉取:只有切到华为云分类才访问仓库(逐级读取,默认每路径缓存 10 分钟)。
  • 三个 creator 都会按需注册为可加载的 DSH skill,缓存 24 小时,可点「从仓库拉取最新」强制刷新。

各分类要填什么:

分类 表单字段
通用技能 一个「技能功能描述」文本框(≥8 字符)。没有名称、目录、tags 字段——这些是打包约定,由该 creator 自己推导。
标准API管理技能 一个「REST API 技能需求」文本框(≥8 字符),占位符是一份需求模板:技能名称 / 一句话描述 / 目标系统 / API 地址 / 认证方式 / API 文档。
华为云基础云服务技能 一级目录(固定 skills,不可改)+ 二级目录 + 三级目录(均从仓库实时读取)+ 技能名(前缀 huawei-cloud- 固定,后缀 1–64 字符小写字母/数字/连字符)+「功能概括」文本框(可留空)。技能名即仓库路径第四级:skills/<二级>/<三级>/<技能名>。

标准API模式里「API 文档」最关键:该 creator 不猜端点——它解析你给的文档,或用 curl 实测探测;两者都拿不到就不产出。请把凭据放进环境变量,不要写在这段文本里。

工作流程

填需求(选分类 + 填表单)
  └─ POST /dsh-skill-creator/api/run
       └─ Host:ctx.agents.create() 起一个真 agent
            agent.followup(creator 请求)           把需求交给 creator 技能
            ctx.on('agent/assistant-stream', …)    把流式帧转成阶段与步骤
       └─ 面板每 1 秒 GET /run?id=…                 渲染阶段清单 + 步骤日志

创建结束(creator 空闲)
  └─ 目标目录自动发现(通用/标准API 模式表单里没有名称,路径由 creator 决定)
       └─ 评测第 1 轮(真跑只读用例,10 分制)
            ├─ 得分 ≥ 8.5 ──────────────────────► done(附评测报告)
            └─ 得分 < 8.5 → 扣分明细 followup 回同一个 creator 就地修改(fixing)
                 └─ 评测第 2 轮 … 最多 3 轮
                      ├─ 本轮提升 < 0.2 ────────► below-threshold(早停,附报告)
                      └─ 3 轮到顶仍未达标 ──────► below-threshold(附报告)

运行状态:creating → evaluating →(fixing → evaluating)* → done / below-threshold;任何阶段都可能 cancelled / failed,进程重启后残留的进行中记录会标为 interrupted。运行中可「取消」,结束后可「← 返回」再开一次。

各 creator 的阶段清单(阶段标题就是面板上显示的文案,插件按 creator 自己的标记点亮,只前进不回退):

分类 阶段
华为云 Phase 1 · 需求分析(苏格拉底式问答)
华为云 Phase 2 · 技术调研(CLI→SDK→API 三级回退)
华为云 Phase 3 · 文档生成(SKILL.md + references + 载体)
华为云 Phase 4 · 测试准备(templates/test-vars.json)
华为云 Phase 5 · 详细测试(真实执行验证)
华为云 Phase 6 · 资源清理与合规检查
通用技能 阶段 1 · 需求分析
通用技能 阶段 2 · 设计
通用技能 阶段 3 · 生成(skill 包 + 模板)
通用技能 阶段 4 · 验证(规范 + lint 检查点双通过)
通用技能 阶段 5 · eval 迭代
标准API Step 1 · 需求澄清
标准API Step 2 · 技术调研
标准API Step 3 · 骨架生成
标准API Step 4 · 自测与收尾(创建 PR/交棒属平台流水线,本面板不做)

评测机制(10 分制,通过线 8.5)

创建结束后真跑一遍评测:由评测 agent 在被测 skill 目录里执行只读用例,再由本地评分器按平台口径打分。

维度 满分 明细
稳定性 4 功能可用 3 + 触发词充足度 1
成本 1 消耗总 token
效率 2 8 项 × 0.25:完成时间 / 工具失败次数 / 重试次数 / cli / sdk / api 调用次数 / LLM 调用次数 / 上下文是否压缩
安全 3 本地规则扫描:高危 ≥1 扣 3;告警 ≥2 扣 2;告警 1 扣 1
  • 通过线 8.5/10(即"85 分");分级参考平台:=10 技能满分、[8,10) 优质技能。
  • 容差 10% 且单向:成本与效率只罚超支、不罚更省;基线为 0 视为无参照,恒通过。
  • 首轮即基线:第 1 轮没有可比基线,因此成本(1 分)与效率(2 分)自动满分——首轮得分主要看稳定性与安全,也更容易达标(见「边界」第 4 条)。
  • 只跑只读/语法用例:取 templates/test-vars.json(或 test-defaults.json)里 type 为 readonly / syntax 的用例,最多 20 条,写操作一律不执行(evalReadonlyOnly: false 才放开,不建议)。没有用例文件时,评测 agent 从 SKILL.md 的命令区自行挑只读命令。
  • 无提升早停:本轮比上轮提升 < minImprovement(默认 0.2)时提前结束并出报告,不把 3 轮跑满。

指标来源(全部本地,不需要 CodeArts / Hermes / OBS):

指标 本地来源
token 评测会话 assistant/message.data.usage 累加
工具失败 tool/result 的 error / message.isError
重试 连续两次完全相同的工具调用
完成时间 评测轮的墙钟时长
cli / sdk / api 调用分类 工具调用文本按平台 LOG_PATTERNS 的本地移植分类

未纳入的平台侧信号(报告里逐条标注,不猜测、不扣分):

  • 外部门禁扣分(skills_test 测试结论 / skills_bot 审查结论)
  • pr / simulate 模式的功能可用扣分上限
  • CodeArts / Hermes 运行时导出(本评测用同一会话的 usage 与工具事件代替)
  • 上下文压缩事件(本地不可观测,按"未压缩"计入,不扣分)

配置

配置写在 cordis.patch.yml 的 config 下;下表的默认值取自代码与包内补丁文件。

键 默认值 说明
run.cwd 不设 → DSH host 进程 cwd(实测 = profile 目录) 技能落盘根 <cwd>/skills/…。发布环境请显式设置,否则写进 profile
run.permissionPreset 'danger-full-access'(包内默认) 创建/评测 agent 的权限 preset,见上面「权限要求」
run.passScore 8.5 通过线(10 分制)
run.maxEvalRounds 3 最多评测轮数;0 = 关闭评测,只创建
run.evalReadonlyOnly true 只跑只读/语法用例
run.idleTimeoutMs 480000(8 分钟) 无任何工具调用或文本即判死;收到活动就重新计时
run.phaseTimeoutMs 7200000(120 分钟) 单个创建/评测阶段的绝对兜底(旧键 run.evalTimeoutMs 亦可)
run.minImprovement 0.2 修复轮提升低于此值就早停;0 关闭
run.agentPreset 不设 → 部署默认 preset(实测 standard) 创建与评测 agent 使用的 preset
run.agentOptions 不设 → profile 默认模型 覆盖 provider / model
run.wakeGraceMs 1200 whenIdle() 之前的宽限期(防"消息未被受理"被当成已完成)
run.persistDebounceMs 1500 运行中落盘的防抖间隔
run.idlePollMs 15000 看门狗轮询间隔(超过 5 倍间隔即视为进程被挂起)
catalog.repo 'huaweicloud/huaweicloud-skills' 华为云三级目录来源
catalog.ref 'master' 目录来源的引用
catalog.root 'skills' 一级目录(固定根)
catalog.localDir '' 可选本地克隆,仅当目录 API 失败时兜底
catalog.ttlMs 600000(10 分钟) 每个目录路径的缓存时长
catalog.timeoutMs 15000 单次目录请求超时

环境变量:DSH_SKILL_CREATOR_CACHE(creator 缓存与运行记录目录,默认 %TEMP%\dsh-skill-creator-cache)、DSH_SKILL_CREATOR_TTL_MS(creator 缓存 TTL,默认 24 小时)。

坑:profile 覆盖层是逐顶层键整体替换,不是深合并。 在 ~/.dsh/profiles/<name>/cordis.patch.yml 里覆盖 config 时,该块是整体赋值:所以要覆盖 run 就把想保留的 run 键写全——例如少写 permissionPreset,等于把发布包的 danger-full-access 默认值丢掉,运行会退回部署默认权限(很可能卡在审批上)。

另外:包内 cordis.patch.yml 的 creators: 段当前不被插件读取(三个分类由 src/core/creators.mjs 内置),改它不会改变走哪个 creator。

运行环境

依赖 用途 备注
Node.js ≥ 18 插件本体与 bin/ 脚本 package.json 的 engines
DSH 本体 提供 webServer / skills / agents 服务 Host 契约实测于 0.2.0-rc.2
git 抓取 creator(sparse clone,只取 creator 子树) 无 git 时回退 gitcode contents API(慢,可能 429)
bash 跑 creator 自带脚本(ensure_cli.sh / validate-skill.sh / test-cli-commands.sh) Windows 用 Git Bash;沙箱要允许 fork
python3 creator 脚本用它做 JSON/哈希处理(如 yaml-check-frontmatter.py) 没有 python3 时脚本回退 python
网络可达 gitcode.com 抓 creator 与华为云三级目录 失败时继续用旧副本并标 stale
华为云 hcloud 凭据(AKSK profile) 华为云模式:creator 的 Pre-check 与评测只读用例 只读巡检也需要可用的 hcloud profile
目标系统可达(URL + 凭据) 标准API模式:解析文档或用 curl 探测 探测不到就不产出

边界与已知限制

  1. 不做内容创作:SKILL.md、references、测试模板都由 creator 生成,插件只负责传需求、展示过程、评测产物。
  2. 不做平台流水线的事:creator 流程尾部的"创建 PR → A2A 交棒 QA"只在平台内可用;本面板独立运行、禁止远端推送,所以标准API模式最后一段只走到自测与收尾。
  3. 评测是"同口径、不同源":评分公式、权重、容差逐条照抄 skill-verify-leader,但指标来自本地会话事件,外部门禁扣分不参与(报告里标注"未纳入")。本地 8.5 与平台 8.5 口径相同、数据来源不同。
  4. 首轮偏松:首轮即基线,成本与效率自动满分,得分主要反映稳定性与安全;另外当评测 agent 没有给出结构化结论时,"功能可用"会退化为本地结构校验判定(报告里写明依据)。
  5. 评测只覆盖只读/语法用例:写操作与资源生命周期用例一律不跑,所以"能读"不等于"能改"。
  6. 没有单轮 token/时间预算:只有与基线比对的超支容差;maxEvalRounds 限的是轮数,不是花费。
  7. 一次完整流程是十几到几十分钟量级:创建 + 每轮评测各起一个真 agent(最多 1 次创建 + 3 次评测 = 4 个会话),轮次越多越慢。
  8. 本地校验器是近似实现:权威裁定是 creator 自带的 scripts/validate-skill.sh(node scripts/audit-skill.mjs <skill-dir> 用的就是它)。本地结构校验的 error 数与评测结论可能不一致,评测 agent 的结论优先。
  9. 记录有上限:最多保留最近 20 条运行,每条最多 200 步(内存日志窗口 400 步);超出后淘汰最旧的已结束运行,进行中的不会被淘汰。
  10. 华为云模式需要凭据:creator 的 Pre-check 是硬门槛;没有可用凭据时前段能跑,后续步骤会停下并把原因写进日志。
  11. 默认权限偏大:发布包默认完全访问权限(见「权限要求」),这不是最小权限默认值。
  12. 生效方式不同:src/client.js 改动刷新页面即可;核心模块改动需要禁用/启用一次 bundle(插件每次 apply 都以查询参数重新导入核心模块);包名 / cordis.patch.yml / dsh.profile.bundles 只在启动时解析,必须重启 DSH。

验证情况

  • 单元测试:node --test → 132 个用例 / 18 个套件全部通过(0 失败)。
  • 端到端实跑(三种模式各一次,作者本机:Windows + Git Bash + KooCLI):
模式 产物 结果
华为云基础云服务技能 skills/bigdata/mrs/huawei-cloud-mrs-manage 第 1 轮 10.00/10 达标
通用技能 skills/text/markdown-notes-index 第 1 轮 10.00/10 达标
标准API管理技能 skills/jsonplaceholder-posts 第 1 轮 10.00/10 达标

三次运行均为零提问、零运行错误(自动答复 0 次、错误步骤 0 条、工具失败 0 次)。这些数字来自本机运行记录(面板「创建记录」读的就是它),不是估算。

开发

npm test                                      # node --test(132 个用例)
npm run creator:status                        # 各 creator 的缓存状态(含 commit)
npm run creator:refresh                       # 强制拉取最新 creator
node scripts/audit-skill.mjs <skill-dir>      # 用 creator 自带的 validate-skill.sh 审一个技能包
node scripts/recover-runs.mjs                 # 从会话日志重建创建记录(幂等,可加 --dry-run)
node bin/dsh-skill-create.mjs --mode huawei --domain computing --product ecs --name ecs-manage
node bin/dsh-skill-validate.mjs <skill-dir> [--mode huawei|generic] [--edit]

bin/dsh-skill-create.mjs 只打印要交给 creator 的请求文本(创建本身由 creator 完成)。注意:它接收的 --summary / --tags 等参数当前不会被 buildHandoff 采用(只读 name / domain / product / description / extra),因此该命令产出的请求只含名称与目录信息。

发布包只含 19 个文件(npm pack --dry-run 实测):package.json、README.md、LICENSE、icon.svg、cordis.patch.yml、bin/(2 个 CLI)、locale/(2 个)、src/client.js、src/lib/yaml.mjs、src/core/ 下的 8 个模块(catalog / creators / evaluator / plugin / routes / runner / spec / validators)。

不随包发布:test/、scripts/(audit-skill.mjs / recover-runs.mjs)、src/core/dsh-install.mjs(仅作者本机安装 profile 用)、docs/、contrib/。包内 npm scripts 为 test / creator:status / creator:refresh,其中 test 的测试目录不在包里,只在仓库内有意义。

许可与链接

  • License:MIT(见 package.json 的 license 与仓库 LICENSE)
  • 仓库:https://github.com/wasteoneslife/dsh-skill-creator
  • npm:https://www.npmjs.com/package/@cloudplugin/dsh-skill-creator
  • Issues:https://github.com/wasteoneslife/dsh-skill-creator/issues
—/ 5

No ratings yet

Verified DSH bundle

Commit 21a08de11ec7

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout