导航式 Command Registry Viewer — 通过
help <路径>逐层浏览框架中所有已注册的指令。
- 只读查看器:从框架 Command Registry 读取指令树,不执行任何命令、不拦截路由
- 逐级导航:
help→ 根节点列表;help gh.仓库→ 查看 gh.仓库 的子命令 - 多触发词:
help/帮助/菜单/ 自定义触发词 - 路径解析:支持
.分隔(help gh.仓库.订阅)和空格分隔(help gh 仓库 订阅) - 图片模式:可选调用 Puppeteer 插件将指令列表渲染为图片发送
- Web UI 管理面板:修改触发词、黑白名单、插件白名单、图片模式开关
- 模糊匹配建议:输入不存在的路径时,返回最接近的指令作为建议
npm install
npm run build
npm run pack生成 dian-help.zip 后,在 Dian Web UI → 插件 → 上传插件 即可安装。
help # 查看所有根指令
help gh # 查看 gh 插件的子命令
help gh.仓库 # 查看 gh.仓库 的子命令
help gh.仓库.订阅 # 查看叶子指令的用法和示例
输出示例:
📖 gh 仓库 - GitHub 仓库管理
├─ 订阅
├─ 取消订阅
└─ 列表
路径:gh.仓库
请输入 help gh.仓库.<子命令> 查看详情
返回上级:help gh
通过 Web UI 或直接编辑 config.json:
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
command |
string |
"help" |
主触发词 |
imageMode |
boolean |
false |
是否以图片模式发送 |
puppeteerUrl |
string |
"http://127.0.0.1:3000" |
Puppeteer 插件地址 |
helpTemplate |
string |
(内置 HTML) | 图片模式的 HTML 模板 |
blacklist |
string[] |
[] |
群/用户黑名单 |
whitelist |
string[] |
[] |
群/用户白名单(优先级高于黑名单) |
pluginWhitelist |
string[] |
[] |
只显示指定插件的指令(空 = 全部) |
npm run dev:ui # 开发模式,端口 5173,自动代理 API 到 3000
npm run dev:plugin # 后端 watch 模式UI 功能:
- 修改触发词(改后立即生效)
- 切换图片/文字模式
- 编辑黑白名单和插件白名单
- 编辑图片模板 HTML(带实时预览)
- 检查 Puppeteer 连接状态
- 按分类浏览所有已注册指令
- 搜索框按名称/描述筛选
| 方法 | 路径 | 说明 |
|---|---|---|
GET |
/plugins/dian-help/api/config |
获取当前配置 |
POST |
/plugins/dian-help/api/config |
更新配置 |
GET |
/plugins/dian-help/api/commands |
获取所有已注册指令(扁平列表) |
POST |
/plugins/dian-help/api/render |
调用 Puppeteer 渲染图片(返回 base64) |
POST |
/plugins/dian-help/api/preview-html |
返回渲染后的 HTML |
GET |
/plugins/dian-help/api/puppeteer-status |
检查 Puppeteer 连接状态 |
src/
index.ts # 插件主体:@Plugin 装饰器、ctx.command 注册、路由、模板渲染
config.ts # Config 接口定义、load/save、默认 HTML 模板
version.ts # 从 package.json 读取版本号
ui/
App.tsx # React 管理面板主组件
index.css # 样式
vite.config.ts # Vite 构建配置
pages/
Dashboard.tsx # 指令浏览面板
Config.tsx # 配置编辑面板
Logs.tsx # 日志面板
scripts/
pack.mjs # 打包为 ZIP 的脚本
tsup.config.ts # 后端构建配置
dian-help 是一个只读的 Command Registry Viewer:
- 通过
ctx.dian.commands.resolveHelpPath(query)读取指令树 - 不参与命令路由、不拦截 bare input、不执行任何指令
- 仅在用户发送
help <路径>前缀时响应 - 指令元数据(
fullPath、segment、aliases、usage、examples)由各插件在ctx.command()中声明,Command Registry 统一管理