⚠️ 原仓库已改名:mingger77/project-learning-helper—— 点击前往新地址;本页保留收录时的原始信息,仅作存档。
安装验证:生态插件:`dsh plugin add` 装得上,但未声明 dsh.bundle、不挂载任何插件能力——L1-L5 插件安装验证阶梯不作评级依据;安全扫描照常执行。安装验证详情 →
功能介绍AI
一个助新手通过项目式学习理解代码库的 DSH 预设,产出学案、备课解析和问答日志。
- 按模块数与业务复杂度分档阅读项目。
- 生成 STUDENT.md、TEACHER.md、QUESTION.md 三份学习文档。
- 项目文件只读,仅 learning plan/ 可写。
能力标签为 AI 推断或 README 规则抽取(见角标),词表受限、未经安装验证;AI = 推断,README = 原文关键词。
安装
dsh plugin --profile web add github:mingger77/project-learning-preset安装方式: GitHub · 运行验证未定论 (L5 unknown) · 验证于 dsh 0.2.0-rc.2
验证与兼容性○ 生态插件
按插件版本分组:每张卡是该插件版本实测过的 dsh 版本与安装兼容结论(L5 优先)。只列真测过的组合——未列出 = 未实测,不推定兼容。L1–L3 为插件级静态档(与 dsh 版本无关,各 dsh 行同值):在行内「验证等级」格里与 L4/L5 并列显示、标注「静态」,证据体为插件级单份、随行内「查看检查项与证据」出现,不在各版本重复存储。
External credentials(插件级):未检测到
未采集到插件清单 —— 无法得知作者声明的版本范围。
| 插件版本 \ dsh | dsh 0.2.0-rc.2 | dsh 0.2.0-rc.1 | dsh 0.1.7-rc.2 | dsh 0.1.7-rc.1 | dsh 0.1.6-alpha.2 |
|---|---|---|---|---|---|
| f453bf | ○ | ○ | ○ | ○ | ○ |
f453bfgithub○ 生态插件 102026-10-09
https://github.com/mingger77/project-learning-preset
○dsh 0.2.0-rc.22026-10-09生态插件
- • Node.js: v24.14.0
- • DSH: 0.2.0-rc.2
- • 被测插件工件: github · https://github.com/mingger77/project-learning-preset(版本未标注)
ID: project-learning-preset@f453bf@dsh0.2.0-rc.2 · 档位: l4-sandbox
签发:2026-10-09 · 有效至:2026-10-16
查看检查项与证据
未出现在 Web 档 loader 清单中
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
○dsh 0.2.0-rc.12026-09-30生态插件
- • Node.js: v24.14.0
- • DSH: 0.2.0-rc.1
- • 被测插件工件: github · https://github.com/mingger77/project-learning-preset(版本未标注)
ID: project-learning-preset@f453bf@dsh0.2.0-rc.1 · 档位: l4-sandbox
签发:2026-09-30 · 有效至:2026-10-07
查看检查项与证据
未出现在 Web 档 loader 清单中
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
○dsh 0.1.7-rc.22026-09-26生态插件
- • Node.js: v24.14.0
- • DSH: 0.1.7-rc.2
- • 被测插件工件: github · https://github.com/mingger77/project-learning-preset(版本未标注)
ID: project-learning-preset@f453bf@dsh0.1.7-rc.2 · 档位: l4-sandbox
签发:2026-09-26 · 有效至:2026-10-03
查看检查项与证据
未出现在 Web 档 loader 清单中
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
○dsh 0.1.7-rc.12026-09-23生态插件
- • Node.js: v24.14.0
- • DSH: 0.1.7-rc.1
- • 被测插件工件: github · https://github.com/mingger77/project-learning-preset(版本未标注)
ID: project-learning-preset@f453bf@dsh0.1.7-rc.1 · 档位: l4-sandbox
签发:2026-09-23 · 有效至:2026-09-30
查看检查项与证据
该档位在这次扫描中未执行。
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
○dsh 0.1.6-alpha.22026-09-20生态插件
- • Node.js: v24.14.0
- • DSH: 0.1.6-alpha.2
- • 被测插件工件: github · https://github.com/mingger77/project-learning-preset(版本未标注)
ID: project-learning-preset@f453bf@dsh0.1.6-alpha.2 · 档位: l4-sandbox
签发:2026-09-20 · 有效至:2026-09-27
查看检查项与证据
未出现在 Web 档 loader 清单中
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
○dsh 0.1.6-alpha.12026-09-17生态插件
- • Node.js: v24.14.0
- • DSH: 0.1.6-alpha.1
- • 被测插件工件: github · https://github.com/mingger77/project-learning-preset(版本未标注)
ID: project-learning-preset@f453bf@dsh0.1.6-alpha.1 · 档位: l4-sandbox
签发:2026-09-17 · 有效至:2026-09-24
查看检查项与证据
未出现在 Web 档 loader 清单中
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
○dsh 0.1.5-rc.22026-09-11生态插件
- • Node.js: v24.14.0
- • DSH: 0.1.5-rc.2
- • 被测插件工件: github · https://github.com/mingger77/project-learning-preset(版本未标注)
ID: project-learning-preset@f453bf@dsh0.1.5-rc.2 · 档位: l4-sandbox
签发:2026-09-11 · 有效至:2026-09-18
查看检查项与证据
未出现在 Web 档 loader 清单中
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
○dsh 0.1.3-alpha.22026-09-08生态插件
- • Node.js: v24.14.0
- • DSH: 0.1.3-alpha.2
- • 被测插件工件: github · https://github.com/mingger77/project-learning-preset(版本未标注)
ID: project-learning-preset@f453bf@dsh0.1.3-alpha.2 · 档位: l4-sandbox
签发:2026-09-08 · 有效至:2026-09-15
查看检查项与证据
未出现在 Web 档 loader 清单中
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
○dsh 0.1.3-alpha.12026-09-07生态插件
- • Node.js: v24.14.0
- • DSH: 0.1.3-alpha.1
- • 被测插件工件: github · https://github.com/mingger77/project-learning-preset(版本未标注)
ID: project-learning-preset@f453bf@dsh0.1.3-alpha.1 · 档位: l4-sandbox
签发:2026-09-07 · 有效至:2026-09-14
查看检查项与证据
该档位在这次扫描中未执行。
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
○版本史前2026-10-04生态插件
- • Node.js: v24.14.0
- • DSH: unknown
- • 被测插件工件: github · https://github.com/mingger77/project-learning-preset(版本未标注)
ID: project-learning-preset@f453bf@dshunknown · 档位: l4-sandbox
签发:2026-10-04 · 有效至:2026-10-11
查看检查项与证据
未出现在 Web 档 loader 清单中
L1–L3 为插件级静态结论(基础门槛,全 dsh 版本相同):证据为插件级单份,不在各版本重复存储。
作者徽章
将官方徽章嵌入你的 README,展示插件的安全与安装检测状态:
`[](https://www.dsh.so/artifact/project-learning-preset/)`安全报告
两层自动化检查,都不是人工审核:静态扫描(逐插件规则判定)与模型驱动的动态安全审计(只覆盖静态判定 warn 及以上的插件子集,不执行插件代码)。
静态扫描 低,动态审计最高 中,按「取更严者」→ 总评级 中。
—d8d2626035c5git2026-10-08d8d2626035c5版本一致clean · gitvet 为 AST 静态扫描(npm 发布物或 git 源码)。
静态发现(9 条)
- 警告shellExec · shell
opencode-variant/.opencode/skills/project-lab-method/references/check-rules.mjs:166const out = execFileSync("git", ["diff", "--numstat", "HEAD"], { - 警告childProcess · code-exec
opencode-variant/.opencode/skills/project-lab-method/references/grade.mjs:63const result = spawnSync(test.command, { - 警告shellExec · shell
pi-plugin/.pi/skills/project-lab-method/references/check-rules.mjs:166const out = execFileSync("git", ["diff", "--numstat", "HEAD"], { - 警告childProcess · code-exec
pi-plugin/.pi/skills/project-lab-method/references/grade.mjs:63const result = spawnSync(test.command, { - 警告shellExec · shell
project-learning-preset/skills/project-lab-method/references/check-rules.mjs:166const out = execFileSync("git", ["diff", "--numstat", "HEAD"], { - 警告childProcess · code-exec
project-learning-preset/skills/project-lab-method/references/grade.mjs:63const result = spawnSync(test.command, { - 警告manifest-fs-unfenced · sandbox
project-learning-preset/agent.cordis.ymlMutating filesystem tool has no explicit fs backend in realm - 警告manifest-search-unfenced · sandbox
project-learning-preset/agent.cordis.ymlSearch tool reads without an explicit fs mount - 警告manifest-shell-unfenced · sandbox
project-learning-preset/agent.cordis.ymlShell tool without a sandbox runner or policy in realm
展开 3 条审计发现
- medium评分器通过 shell 执行 lab.config.json 中的测试命令(spawnSync shell:true)
project-learning-preset/skills/project-lab-method/references/grade.mjs:63tests[].command 直接取自 lab.config.json 并交给 shell:true 的 spawnSync,因此任何字符串(管道、子 shell、&&)都会以用户权限在仓库中执行。该配置由模型经 learning_lab 生成、之后被 guard.ts 保护不得修改,但来自克隆的不可信仓库的 lab.config.json,或生成阶段被注入的命令,会在执行跑分(learning_grade / /lab grade)时变成任意命令执行。这是评分器的设计能力,但文档化的用例并不需要 shell,且未把它标注为代码执行面。
- low写入守卫仅比较解析后的路径而未做 realpath,learning_plan 内已存在的符号链接可把写入重定向到目录之外
pi-plugin/.pi/extensions/project-learning/guard.ts:53decideWrite()/isInside() 仅对 resolve() 后的路径做字符串比较。`..` 穿越与绝对路径被正确拒绝(属防御),但不解析符号链接:若已存在 `learning_plan/<proj>/out -> /some/outside/dir` 这样的链接,看似在界内的写入会落到计划目录之外。利用前提是该链接已存在(模型通常可用 write/edit 与 bash 工具创建),因此属于守卫加固缺口而非远程提权。
- low模型传入的 project/dir 参数未见校验即用于文件写入与 node 执行
pi-plugin/.pi/extensions/project-learning/tools.ts:56resolveProject() 接受任意非空的模型输入字符串,findLabDir() 也接受自由形式的 dir(`if (dir && dir.trim() !== "") return labDir(cwd, planDir, project, dir.trim())`)。这些值被用于构造 writeFileSync 的路径(REPORT.md、last-result.json、LOG.md)以及 `pi.exec("node", [join(dir, "autograder", "grade.mjs")])`。由于扩展使用自身的 fs 调用写文件,拦截模型 write/edit 的 guard.ts 并不生效;若 plan.ts 中的 projectDir/labDir 只是简单拼接,形如 `../../..` 的取值即可写到/执行 learning_plan/ 之外,破坏 R9 隔离。仅部分验证:plan.ts 未随源码提供,故记为加固缺口而非已证实的利用。
学习模式插件:评分器用 shell 执行 lab.config.json 中的命令,写入守卫仅做路径比较;未发现数据外传、密钥访问或混淆代码。
口径:动态审计只会把风险往严重里判,不会把风险降下来(只升不降,不构成豁免);模型判错时由人工复核撤回,撤回后回到静态判定。合并判定 = 两层中更严的那一个。
免责声明:静态扫描与动态安全审计都是自动化分析,不构成安全保证。安装前请自行审查。
活跃度
最近提交 2026-09-18 · 活跃度:稳定
• 仓库创建: 2026-09-06
• 星标: ★ 1 · 复刻: 0
• 健康度: 稳定 — 近 90 天有提交
来源
作者 README
GitHub 原文 ↗展示作者仓库中的原始 README 内容,实时抓取、未做改写;优先加载中文版(README.zh-CN.md 等),无中文版时回退英文。
