Koishi 的 WebUI 插件
53.3/100
综合分
40
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/9 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add koishijs/webui该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包@root/webui(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/30 02:38:37
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 40 处,展示前 38 条)
- 读取本地文件packages/client/src/index.ts:16
if (!existsSync(root + '/client')) return - 读取本地文件packages/client/src/index.ts:19
if (existsSync(outDir)) { - 写入本地文件packages/online/src/build.ts:111
copyFile(findModulePath('vue') + '/dist/vue.runtime.esm-browser.prod.js', dist + '/vue.js'), - 写入本地文件packages/online/src/build.ts:158
await appendFile(dist + '/style.css', file.source) - 读取本地文件packages/online/src/dev.ts:36
return koa.body = createReadStream(filename) - 读取本地文件packages/online/src/dev.ts:42
const stats = await stat(filename).catch<Stats>(noop) - 读取本地文件packages/online/src/dev.ts:46
const template = await readFile(resolve(root, 'index.html'), 'utf8') - 读取本地文件packages/online/src/dev.ts:89
const meta = await readFile(metafile, 'utf8').then(JSON.parse) as PackageJson - 读取本地文件packages/online/src/dev.ts:106
ctx.body = createReadStream(entry) - 读取本地文件packages/online/src/dev.ts:115
const meta = await readFile(metapath, 'utf8').then(JSON.parse) as PackageJson - 读取本地文件packages/online/src/serve.ts:16
if (ctx.path.endsWith('/') || !existsSync(root + ctx.path)) { - 读取本地文件packages/online/src/serve.ts:20
ctx.body = createReadStream(filename) - 读取本地文件packages/registry/src/local.ts:43
const files = await readdir(base).catch(() => []) - 读取本地文件packages/registry/src/local.ts:49
const files = await readdir(base2).catch(() => []) - 读取本地文件packages/registry/src/local.ts:69
const meta: PackageJson = JSON.parse(await readFile(filename, 'utf8')) - 读取本地文件plugins/explorer/src/index.ts:71
const buffer = await readFile(filename) - 写入本地文件plugins/explorer/src/index.ts:84
await writeFile(filename, buffer) - 写入本地文件plugins/explorer/src/index.ts:86
await writeFile(filename, content, 'utf8') - 写入本地文件plugins/explorer/src/index.ts:93
await mkdir(filename) - 删除本地文件递归plugins/explorer/src/index.ts:99
await rm(filename, { recursive: true }) - 写入本地文件plugins/explorer/src/index.ts:106
await rename(oldValue, newValue) - 读取本地文件plugins/explorer/src/index.ts:122
const dirents = await readdir(root, { withFileTypes: true }) - 读取本地文件plugins/explorer/src/index.ts:131
return { type: 'symlink', name: dirent.name, target: await readlink(filename) } - 写入本地文件plugins/locales/src/index.ts:34
await mkdir(folder, { recursive: true }) - 读取本地文件plugins/locales/src/index.ts:35
const files = await readdir(folder) - 读取本地文件plugins/locales/src/index.ts:39
const content = await readFile(resolve(folder, file), 'utf8') - 写入本地文件plugins/locales/src/index.ts:60
await writeFile(resolve(ctx.baseDir, config.root[0], locale + '.yml'), content) - 写入本地文件plugins/logger/src/index.ts:58
await mkdir(root, { recursive: true }) - 读取本地文件plugins/logger/src/index.ts:61
for (const filename of await readdir(root)) { - 删除本地文件plugins/logger/src/index.ts:79
await rm(`${root}/${date}-${index}.log`).catch((error) => { - 发起网络请求plugins/sandbox/src/bot.ts:51
return this.request('deleteMessage', { channelId, messageId }) - 发起网络请求plugins/sandbox/src/bot.ts:55
return this.request('getMessage', { channelId, messageId }) - 发起网络请求plugins/sandbox/src/bot.ts:59
return this.request('getChannel', { channelId, guildId }) - 发起网络请求plugins/sandbox/src/bot.ts:63
return this.request('getChannelList', { guildId }) - 发起网络请求plugins/sandbox/src/bot.ts:67
return this.request('getGuild', { guildId }) - 发起网络请求plugins/sandbox/src/bot.ts:71
return this.request('getGuildList') - 读取本地文件plugins/sandbox/src/index.ts:193
koa.body = createReadStream(fileURLToPath(url)) - 读取本地文件plugins/status/src/envinfo.ts:32
const meta = await readFile(metapath, 'utf8').then(JSON.parse)
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
README
由 DeepSeek 最新模型翻译生成Koishi WebUI
文档
- 关于 Koishi 控制台
包
核心包
- @koishijs/client
- @koishijs/components
- @koishijs/market
- @koishijs/registry
官方插件
- @koishijs/plugin-actions
- @koishijs/plugin-admin
- @koishijs/plugin-analytics
- @koishijs/plugin-auth
- @koishijs/plugin-commands
- @koishijs/plugin-config
- @koishijs/plugin-console
- @koishijs/plugin-explorer
- @koishijs/plugin-insight
- @koishijs/plugin-locales
- @koishijs/plugin-logger
- @koishijs/plugin-market
- @koishijs/plugin-notifier
- @koishijs/plugin-oobe
- @koishijs/plugin-sandbox
- @koishijs/plugin-status
协议
AGPL-3.0
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
koishijs/webui
Koishi 的 WebUI 插件
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,344已汉化DSH
71.5
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,045已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,202已汉化DSH
71.1