DSH HUB
HomePlugin StoreCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

jasper-zsh /

dsh-plugin-skill-panel

Topic repository only

DeepSeek Harness(DSH)的只读技能清单插件,在 Web GUI 中展示全局技能和当前会话可见的技能,并从会话日志推导技能加载状态。

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

dsh-plugin-skill-panel

DeepSeek Harness(DSH) 的只读技能清单插件,在 Web GUI 中展示全局技能和当前会话可见的技能,并从会话日志推导技能加载状态。

功能

  • 会话技能视图:在会话顶部视图栏增加“技能”页签,按“项目技能”和“全局技能”分组。
  • 全局技能清单:在设置面板增加“技能”页面,只显示默认 Agent Preset 可见的非项目技能。
  • 只读展示:没有加载、刷新、启停等操作按钮;清单每 15 秒自动更新一次。
  • 技能详情对话框:点击任一技能行,在模态对话框中查看技能说明和入口正文,不再占用列表行内空间。
  • 技能文件浏览器:对话框左侧以树形结构展示入口正文明确引用的本地资源,右侧按需读取并显示 UTF-8 文本文件内容。
  • 安全读取边界:不枚举可变目录;仅允许读取安全清单中的文件,打开时限制在 backing SKILL.md 目录内且不跟随符号链接。单文件最大展示 1 MiB,文件树最多 1,000 项。
  • 会话排序:会话页每个技能分组中的自定义技能固定排在该分组末尾。
  • 状态推导:展示“可用 / 已加载 / 加载中 / 加载失败 / 仅手动 / 已禁用”。
  • 来源标记:区分项目 .dsh、项目 .agents、全局 .dsh、全局 .agents、内置、自定义和运行时来源。
  • 静态 TypeScript 双端插件:Host 查询 DSH 技能注册表和会话事件,Client 只接收最小化 JSON 数据。

当前 DSH 没有可追加的通用右侧详情页签槽位;details 只服务于选中的 Tool call。插件因此使用官方的 conversation.view 加性槽位作为独立会话页面,不会替换详情栏或聊天界面。

状态含义

状态 含义
可用 当前会话目录可见,允许模型通过 skill 工具加载,但本会话尚无成功加载记录。
已加载 会话日志中存在成功的 skill 工具结果,或存在用户显式技能调用注入。
加载中 已记录 skill 工具调用,尚未记录配对结果。
加载失败 最近一次加载尝试失败,且本会话此前没有成功加载记录。
仅手动 不允许模型调用,但允许用户显式调用。
已禁用 模型和用户调用策略均关闭。

“已加载”不是 DSH Skill Registry 的原生字段,而是插件根据持久化的 tool/call、tool/result 和 skill-invocation 会话事件推导。

项目结构

src/
├── index.ts              # Host 入口和只读 HTTP 端点
├── catalog.ts            # 技能目录查询、作用域解析和加载状态折叠
├── services.ts           # 插件使用的 Host 服务结构类型
├── types.ts              # Host/Client 共享 JSON 类型
└── client/
    ├── index.tsx         # Web Client 入口与槽位注册
    ├── api.ts            # 同源技能目录请求
    ├── components.tsx    # 会话及全局只读清单
    └── styles.ts         # 主题变量驱动的紧凑列表样式

构建输出:

  • lib/index.js:Host ESM;
  • lib/client.js:DSH Web lazy-CJS Client bundle。

开发

pnpm install
pnpm typecheck
pnpm build
pnpm dev

pnpm dev 使用 tsdown --watch 持续重建 Host 和 Client bundle。Web profile 还需要启用 Cordis hmr 行,并将本仓库的 realpath 加入 hmr.config.root。Client bundle 由 DSH client-hmr 的轮询与 SSE 通道热替换;首次新增插件到 profile 后需要刷新一次页面,后续 Client 修改无需刷新。

安装到 Web profile

dsh plugin --profile web add "$PWD"

在 ~/.dsh/profiles/web/cordis.patch.yml 中加入:

- insert:
    - id: skill-panel
      name: dsh-plugin-skill-panel

- id: hmr
  disabled: false
  config:
    root:
      - .
      - /absolute/real/path/to/dsh-plugin-skill-panel

HTTP API

请求 说明
GET /skill-panel/catalog.json 默认 Agent Preset 可见的全局技能。
GET /skill-panel/catalog.json?sessionId=<id> 指定已附着会话可见的项目/全局技能及加载状态。
GET /skill-panel/detail.json?name=<name> 读取全局技能正文和声明资源文件树。
GET /skill-panel/detail.json?name=<name>&sessionId=<id> 读取指定会话可见技能的正文和声明资源文件树。
GET /skill-panel/file.json?name=<name>&path=<relative-path> 读取全局技能安全清单中的 UTF-8 文本文件。
GET /skill-panel/file.json?name=<name>&path=<relative-path>&sessionId=<id> 读取指定会话技能安全清单中的文本文件。

所有响应使用 Cache-Control: no-store。API 不返回绝对路径;文件端点拒绝目录穿越、符号链接、非 UTF-8 文件和超过 1 MiB 的文件。

—/ 5

No ratings yet

Manifest verification required

Commit e262069eb4e3

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