🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

电脑启蒙乐园 baixiaoustc/dsh-kidlab

DeepSeek Harness
baixiaoustc17 天前有提交已提供中文文档扫描:含敏感能力

给小朋友的电脑启蒙插件系列DeepSeek Harness / Cordis:7 个插件,一个仓库一个系列

30.2/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add baixiaoustc/dsh-kidlab
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · other
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/11/03·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 17 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 97 处,展示前 85 条)
  • 执行外部命令来自配置/变量
    plugins/kid-3d/build.mjs:27
    execFileSync(ESBUILD, [
  • 读取本地文件
    plugins/kid-3d/build.mjs:35
    let code = readFileSync(OUT, 'utf8')
  • 写入本地文件
    plugins/kid-3d/build.mjs:41
    writeFileSync(OUT, code)
  • 发起网络请求
    plugins/kid-3d/client.js:133
    fetch(url(PATH_STATE), { cache: 'no-store' })
  • 写入本地文件
    plugins/kid-3d/index.js:907
    await mkdir(paths.dir, { recursive: true });
  • 读取本地文件
    plugins/kid-3d/index.js:911
    const text = await readFile(paths.modelFile, "utf8");
  • 写入本地文件
    plugins/kid-3d/index.js:919
    await writeFile(paths.modelFile, `${JSON.stringify(model, null, 2)}
  • 写入本地文件
    plugins/kid-3d/index.js:924
    await writeFile(file, text, "utf8");
  • 写入本地文件
    plugins/kid-3d/index.js:928
    await writeFile(file, data);
  • 写入本地文件
    plugins/kid-3d/index.js:937
    await mkdir(paths.archiveDir, { recursive: true });
  • 读取本地文件
    plugins/kid-3d/index.js:949
    const names = (await readdir(dir)).filter((n) => n.endsWith(".json"));
  • 读取本地文件
    plugins/kid-3d/index.js:953
    const info = await stat(join(dir, name2));
  • 删除本地文件
    plugins/kid-3d/index.js:959
    await unlink(join(dir, item.name));
  • 读取本地文件
    plugins/kid-3d/index.js:966
    const names = (await readdir(paths.archiveDir)).filter((n) => n.endsWith(".json"));
  • 读取本地文件
    plugins/kid-3d/index.js:970
    const model = await readFile(full, "utf8").then(parseModel).catch(() => void 0);
  • 读取本地文件
    plugins/kid-3d/index.js:972
    const time = await stat(full).then((info) => info.mtimeMs).catch(() => 0);
  • 发起网络请求
    plugins/kid-3d/index.js:6266
    const outcome = await approval.approver.request({
  • 发起网络请求
    plugins/kid-3d/index.js:9042
    const outcome = await approval.request({
  • 读取本地文件
    plugins/kid-3d/src/card.ts:88
    const entries = await readdir(paths.dir, { withFileTypes: true })
  • 读取本地文件
    plugins/kid-3d/src/card.ts:99
    archive = (await readdir(paths.archiveDir)).length
  • 读取本地文件
    plugins/kid-3d/src/card.ts:105
    mtimeMs = (await stat(paths.modelFile)).mtimeMs
  • 写入本地文件
    plugins/kid-3d/src/state.ts:45
    await mkdir(paths.dir, { recursive: true })
  • 读取本地文件
    plugins/kid-3d/src/state.ts:50
    const text = await readFile(paths.modelFile, 'utf8')
  • 写入本地文件
    plugins/kid-3d/src/state.ts:59
    await writeFile(paths.modelFile, `${JSON.stringify(model, null, 2)}\n`, 'utf8')
  • 写入本地文件
    plugins/kid-3d/src/state.ts:64
    await writeFile(file, text, 'utf8')
  • 写入本地文件
    plugins/kid-3d/src/state.ts:69
    await writeFile(file, data)
  • 写入本地文件
    plugins/kid-3d/src/state.ts:81
    await mkdir(paths.archiveDir, { recursive: true })
  • 读取本地文件
    plugins/kid-3d/src/state.ts:93
    const names = (await readdir(dir)).filter((n) => n.endsWith('.json'))
  • 读取本地文件
    plugins/kid-3d/src/state.ts:97
    const info = await stat(join(dir, name))
  • 删除本地文件
    plugins/kid-3d/src/state.ts:103
    await unlink(join(dir, item.name))
  • 读取本地文件
    plugins/kid-3d/src/state.ts:124
    const names = (await readdir(paths.archiveDir)).filter((n) => n.endsWith('.json'))
  • 读取本地文件
    plugins/kid-3d/src/state.ts:128
    const model = await readFile(full, 'utf8').then(parseModel).catch(() => undefined)
  • 读取本地文件
    plugins/kid-3d/src/state.ts:130
    const time = await stat(full).then((info) => info.mtimeMs).catch(() => 0)
  • 读取本地文件
    plugins/kid-3d/verify.mjs:38
    const model = () => JSON.parse(readFileSync(join(dir, 'model.json'), 'utf8'));
  • 读取本地文件
    plugins/kid-3d/verify.mjs:42
    return readFileSync(join(dir, file), 'utf8');
  • 读取本地文件
    plugins/kid-3d/verify.mjs:49
    return readFileSync(join(dir, file));
  • 读取本地文件
    plugins/kid-3d/verify.mjs:93
    ok('view 写出主 SVG', existsSync(join(dir, `${cur()}.svg`)), readdirSync(dir).sort().join(','));
  • 读取本地文件
    plugins/kid-3d/verify.mjs:93
    ok('view 写出主 SVG', existsSync(join(dir, `${cur()}.svg`)), readdirSync(dir).sort().join(','));
  • 读取本地文件
    plugins/kid-3d/verify.mjs:102
    ok(`view ${v} 写出文件`, existsSync(join(dir, `${cur()}-${v}.svg`)), r.error ?? '');
  • 删除本地文件递归
    plugins/kid-3d/verify.mjs:292
    for (const p of [work, empty, solo]) rmSync(p, { recursive: true, force: true });
  • 发起网络请求
    plugins/kid-coder/client.js:105
    fetch(PATH, {
  • 执行外部命令固定命令
    plugins/kid-coder/tools.js:98
    execFile(
  • 读取本地文件
    plugins/kid-coder/verify.mjs:27
    const pkg = JSON.parse(readFileSync(join(DIR, 'package.json'), 'utf8'))
  • 读取本地文件
    plugins/kid-coder/verify.mjs:36
    assert.ok(existsSync(join(DIR, f)), '文件不存在 ' + f)
  • 执行外部命令来自配置/变量
    plugins/kid-coder/verify.mjs:45
    check(f + ' 可解析', () => { execFileSync(process.execPath, ['--check', join(DIR, f)], { stdio: 'pipe' }) })
  • 读取本地文件
    plugins/kid-coder/verify.mjs:126
    const cli = readFileSync(join(DIR, 'client.js'), 'utf8')
  • 发起网络请求
    plugins/kid-memory/client.js:152
    fetch(PATH, { cache: 'no-store' })
  • 执行外部命令来自配置/变量
    plugins/kid-memory/collect.js:37
    execFile(file, args, { timeout: timeoutMs, maxBuffer: 8 * 1024 * 1024, encoding: 'utf8' }, (error, stdout) => {
  • 执行外部命令固定命令
    plugins/kid-memory/tools.js:38
    execFile('/bin/sh', ['-c', cmd], { timeout: timeoutMs, encoding: 'utf8' }, (err, stdout) => {
  • 读取本地文件
    plugins/kid-memory/verify.mjs:42
    const pkg = JSON.parse(readFileSync(join(DIR, 'package.json'), 'utf8'))
  • 读取本地文件
    plugins/kid-memory/verify.mjs:58
    assert.ok(existsSync(join(DIR, f)), '文件不存在 ' + f)
  • 执行外部命令来自配置/变量
    plugins/kid-memory/verify.mjs:66
    check(f + ' 可解析', () => { execFileSync(process.execPath, ['--check', join(DIR, f)], { stdio: 'pipe' }) })
  • 读取本地文件
    plugins/kid-memory/verify.mjs:216
    const clientSource = readFileSync(new URL('./client.js', import.meta.url), 'utf8')
  • 发起网络请求
    plugins/kid-memory/verify.mjs:228
    fetch: (...a) => globalThis.fetch(...a),
  • 发起网络请求
    plugins/kid-network/client.js:96
    fetch(PATH, { cache: 'no-store' })
  • 执行外部命令固定命令
    plugins/kid-network/index.js:60
    execFile('/bin/sh', ['-c', cmd], { timeout: timeoutMs, maxBuffer: 8 * 1024 * 1024, encoding: 'utf8' }, (_err, stdout) => {
  • 执行外部命令固定命令
    plugins/kid-network/tools.js:79
    execFile('/bin/sh', ['-c', cmd], { timeout: timeoutMs, encoding: 'utf8' }, (err, stdout) => {
  • 读取本地文件
    plugins/kid-network/verify.mjs:51
    const pkg = JSON.parse(readFileSync(join(DIR, 'package.json'), 'utf8'))
  • 读取本地文件
    plugins/kid-network/verify.mjs:67
    assert.ok(existsSync(join(DIR, f)), '文件不存在 ' + f)
  • 读取本地文件
    plugins/kid-network/verify.mjs:72
    const y = readFileSync(join(DIR, 'cordis.patch.yml'), 'utf8')
  • 执行外部命令来自配置/变量
    plugins/kid-network/verify.mjs:79
    check(f + ' 可解析', () => { execFileSync(process.execPath, ['--check', join(DIR, f)], { stdio: 'pipe' }) })
  • 读取本地文件
    plugins/kid-network/verify.mjs:244
    const cli = readFileSync(join(DIR, 'client.js'), 'utf8')
  • 发起网络请求
    plugins/kid-process/client.js:113
    fetch(PATH, { cache: 'no-store' })
  • 执行外部命令固定命令
    plugins/kid-process/collect.js:47
    execFile('/bin/sh', ['-c', cmd], { timeout: timeoutMs, maxBuffer: 8 * 1024 * 1024 }, (_err, stdout) => {
  • 执行外部命令固定命令
    plugins/kid-process/tools.js:53
    execFile('/bin/sh', ['-c', cmd], { timeout: timeoutMs, encoding: 'utf8' }, (err, stdout) => {
  • 读取本地文件
    plugins/kid-process/verify.mjs:299
    const clientSource = readFileSync(new URL('./client.js', import.meta.url), 'utf8')
  • 发起网络请求
    plugins/kid-process/verify.mjs:311
    fetch: (...a) => globalThis.fetch(...a),
  • 发起网络请求
    plugins/kid-security/client.js:113
    fetch(PATH, { cache: 'no-store' })
  • 执行外部命令固定命令
    plugins/kid-security/collect.js:42
    execFile('/bin/sh', ['-c', cmd], { timeout: timeoutMs, maxBuffer: 8 * 1024 * 1024 }, (_err, stdout) => {
  • 执行外部命令固定命令
    plugins/kid-security/tools.js:34
    execFile('/bin/sh', ['-c', cmd], { timeout: timeoutMs, encoding: 'utf8' }, (err, stdout) => {
  • 读取本地文件
    plugins/kid-security/verify.mjs:164
    const clientSource = readFileSync(new URL('./client.js', import.meta.url), 'utf8')
  • 发起网络请求
    plugins/kid-security/verify.mjs:172
    fetch: (...a) => globalThis.fetch(...a),
  • 读取本地文件
    plugins/kid-security/verify.mjs:240
    const src = readFileSync(new URL(file, import.meta.url), 'utf8')
  • 发起网络请求
    plugins/kid-storage/client.js:126
    fetch(PATH, { cache: 'no-store' })
  • 执行外部命令来自配置/变量
    plugins/kid-storage/collect.js:30
    execFile(file, args, { timeout: timeoutMs, maxBuffer: 4 * 1024 * 1024, encoding: 'utf8' }, (error, stdout) => {
  • 执行外部命令固定命令
    plugins/kid-storage/tools.js:29
    execFile('/bin/sh', ['-c', cmd], { timeout: timeoutMs, encoding: 'utf8' }, (err, stdout) => {
  • 读取本地文件
    plugins/kid-storage/verify.mjs:134
    const clientSource = readFileSync(new URL('./client.js', import.meta.url), 'utf8')
  • 发起网络请求
    plugins/kid-storage/verify.mjs:144
    fetch: (...a) => globalThis.fetch(...a),
  • 发起网络请求
    plugins/kid-sysmon/client.js:99
    fetch(PATH, { cache: 'no-store' })
  • 执行外部命令固定命令
    plugins/kid-sysmon/collect.js:14
    execFile('/bin/sh', ['-c', cmd], { timeout: timeoutMs, encoding: 'utf8' }, (err, stdout) => {
  • 执行外部命令固定命令
    plugins/kid-sysmon/tools.js:14
    execFile('/bin/sh', ['-c', cmd], { timeout: timeoutMs, encoding: 'utf8' }, (err, stdout) => {
  • 读取本地文件
    plugins/kid-sysmon/verify.mjs:23
    const pkg = JSON.parse(readFileSync(join(DIR, 'package.json'), 'utf8'))
  • 读取本地文件
    plugins/kid-sysmon/verify.mjs:32
    assert.ok(existsSync(join(DIR, f)), '文件不存在 ' + f)
  • 执行外部命令来自配置/变量
    plugins/kid-sysmon/verify.mjs:39
    check(f + ' 可解析', () => execFileSync(process.execPath, ['--check', join(DIR, f)], { stdio: 'pipe' }))
  • 读取本地文件
    plugins/kid-sysmon/verify.mjs:89
    const cli = readFileSync(join(DIR, 'client.js'), 'utf8')
扫描于 2026/11/4(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 电脑启蒙插件系列
  • 卡片与比喻讲解
  • 共七个插件

README

由 DeepSeek 最新模型翻译生成
dsh-kidlab · 给小朋友的电脑启蒙插件系列 给 DeepSeek Harness(@deepseek-ai/dsh-,Cordis 插件框架)写的一整系列插件,用小朋友听得懂的话 + 能动手玩的卡片,把「电脑里到底在发生什么」讲明白。 统一命名空间 @kidlab/。一个仓库 = 一个系列:每个插件一个子目录,新增插件就是加一个目录。 📦 已发布到 npm:7 个包均在 <https://www.npmjs.com/org/kidlab> 下(@kidlab/dsh-kid-@0.2.0)。装法见下方「安装 → C」。 npm i @kidlab/dsh-kid-coder / dsh plugin --profile web add @kidlab/dsh-kid-coder 系列成员(第一批 7 个) | # | 插件 | 吉祥物 | 讲什么 | 模型工具 | 形态 | | 1 | kid-coder | 🐵 | 编程启蒙:真的把 Python/海龟画图跑起来 | kid_run kid_explain kid_practice kid_review kid_steps | ✅ 单包 bundle(工具+卡片) |
展开完整文档(README 剩余 1 节)
dsh-kidlab · 给小朋友的电脑启蒙插件系列

给 DeepSeek Harness(@deepseek-ai/dsh-,Cordis 插件框架)写的一整系列插件,用小朋友听得懂的话 + 能动手玩的卡片,把「电脑里到底在发生什么」讲明白。

统一命名空间 @kidlab/。一个仓库 = 一个系列:每个插件一个子目录,新增插件就是加一个目录。

📦 已发布到 npm:7 个包均在 <https://www.npmjs.com/org/kidlab> 下(@kidlab/dsh-kid-@0.2.0)。装法见下方「安装 → C」。
npm i @kidlab/dsh-kid-coder / dsh plugin --profile web add @kidlab/dsh-kid-coder

系列成员(第一批 7 个)

| # | 插件 | 吉祥物 | 讲什么 | 模型工具 | 形态 |
| 1 | kid-coder | 🐵 | 编程启蒙:真的把 Python/海龟画图跑起来 | kid_run kid_explain kid_practice kid_review kid_steps | ✅ 单包 bundle(工具+卡片) |
| 2 | kid-sysmon | 🐻 | 电脑体检:CPU/内存/磁盘/网络/电池/负载/进程 | system_status | ✅ 单包 bundle(工具+体检卡片) |
| 3 | kid-network | 🕊️ | 网络 = 信鸽邮局:身份 / 送信 / 测速 | net_my_identity net_dns net_trace_trip net_test_speed net_who_is_home | ✅ 单包 bundle(工具+卡片) |
| 4 | kid-storage | 🐿️ | 存储 = 电脑的大仓库 / 长期记忆 | storage_boxes storage_home storage_heavy | ✅ 单包 bundle |
| 5 | kid-memory | 🦉 | 内存 = 电脑的工作台 / 短期记忆 | mem_now mem_pressure mem_workbench mem_top | ✅ 单包 bundle(工具+卡片) |
| 6 | kid-security | 🐕 | 电脑安全 = 城堡守卫 | sec_wall sec_lock sec_locker sec_door sec_login | ✅ 单包 bundle |
| 7 | kid-process | 🐝 | 进程 = 工作台上干活的小工人 | proc_count proc_busiest proc_family proc_badge | ✅ 单包 bundle |

隐喻是成体系的:内存 = 工作台(短期) ↔ 存储 = 大仓库(长期);进程 = 工作台上干活的小工人;网络 = 信鸽邮局;安全 = 城堡守卫。

卡片长什么样(演示)

每个插件在对话输入框上方都有一个可折叠卡片:平时只留一行摘要,点标题展开看明细。
下面是 7 张卡片的真实录屏动图(不是截图拼的):

| 插件 | 演示 |
| 🐵 kid-coder · 跑代码 | kid-coder |
| 🐻 kid-sysmon · 电脑体检 | kid-sysmon |
| 🕊️ kid-network · 信鸽邮局 | kid-network |
| 🐿️ kid-storage · 仓库大管家 | kid-storage |
| 🦉 kid-memory · 记忆小管家 | kid-memory |
| 🐕 kid-security · 城堡安检 | kid-security |
| 🐝 kid-process · 工人点名 | kid-process |

README 里放 GIF 的意思就是——首页放一小段几秒的录屏动图,让人不用装就能一眼看到卡片真实的样子和交互。

系列约定(保证「一眼是同一套」)

- 命名:包名一律 @kidlab/dsh-kid-<名字>;patch 行 id 一律 kid-<名字>;卡片槽位一律 conversation.input.dock。
- 形态:优先单包 bundle——一个包同时提供 host 工具与 client 卡片(index.js + tools.js + client.js + cordis.patch.yml),零构建、纯 ESM。
- 版本:整批对齐(当前目标 0.2.0)。
- 元数据:每个包都带 license、keywords(含 dsh-plugin)、dsh.bundle、dsh.client。
- 不 import @deepseek-ai/:工具用 JSON-schema 普通对象交给 ctx.tools.register,client 只从模块表 require('react')——这样 bundle 能独立安装。

安装(任选其一)

A. 用包名/路径装进某个 profile(推荐,持久)
dsh plugin --profile web add /本仓库/plugins/kid-coder
(或在 agent 会话里:plugin_manager { action: "install_bundle", target: "<路径>" })

B. 从 GitHub 安装
dsh plugin --profile web add github:baixiaoustc/dsh-kidlab#path:plugins/kid-coder

C. 从 npm 安装(已发布,按包名最省事)
dsh plugin --profile web add @kidlab/dsh-kid-coder
或直接: npm i @kidlab/dsh-kid-coder
其余同理:@kidlab/dsh-kid-{sysmon,network,storage,memory,security,process}

装完首次需要重启 dsh web(进客户端模块表),之后改内容只要刷新页面。
每个插件目录里的 README.md 有各自的细节与配置项。

许可

MIT。详见 LICENSE。
预览分享卡片长什么样 ↓baixiaoustc/dsh-kidlab
分享 · DeepSeek Harness Hub
baixiaoustc/dsh-kidlab

给小朋友的电脑启蒙插件系列DeepSeek Harness / Cordis:7 个插件,一个仓库一个系列

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部