生成教案试卷与学情诊断,闭环调整下一课
26.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/13 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/AIMarshallLee/dsh-teacher-preset.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 58 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 116 处,展示前 81 条)
- 读取本地文件dist/index.js:61
if (fs.existsSync(candidate) && fs.readdirSync(candidate).some(f => f.endsWith('.md'))) { - 读取本地文件dist/templates.js:74
return fs.readFileSync(filePath, 'utf-8'); - 读取本地文件dist/templates.js:90
return fs.existsSync(path.join(this.templatesDir, `${type}.md`)); - 读取本地文件dist/tools/save-material.js:65
if (fs.existsSync(filePath)) { - 读取本地文件dist/tools/save-material.js:67
while (fs.existsSync(path.join(dir, `${dateStr}-${safeTitle}-${counter}.md`))) { - 写入本地文件dist/tools/save-material.js:74
fs.writeFileSync(filePath, args.content, { encoding: 'utf-8', flag: 'wx' }); - 读取本地文件dist/tools/list-materials.js:65
if (!fs.existsSync(outputDir)) { - 读取本地文件dist/tools/list-materials.js:73
if (!fs.existsSync(dir)) - 读取本地文件dist/tools/list-materials.js:76
const files = fs.readdirSync(dir).filter((f) => f.endsWith('.md')); - 读取本地文件dist/tools/list-materials.js:80
const stat = fs.statSync(filePath); - 读取本地文件dist/tools/read-material.js:57
if (!fs.existsSync(filePath)) { - 读取本地文件dist/tools/read-material.js:61
const content = fs.readFileSync(filePath, 'utf-8'); - 读取本地文件dist/tools/search-materials.js:90
if (!fs.existsSync(outputDir)) { - 读取本地文件dist/tools/search-materials.js:108
if (!fs.existsSync(dir)) - 读取本地文件dist/tools/search-materials.js:111
const files = fs.readdirSync(dir).filter((f) => f.endsWith('.md')); - 读取本地文件dist/tools/search-materials.js:117
const content = fs.readFileSync(filePath, 'utf-8'); - 读取本地文件dist/tools/export-material.js:129
if (!fs.existsSync(mdPath)) { - 读取本地文件dist/tools/export-material.js:134
const mdContent = fs.readFileSync(mdPath, 'utf-8'); - 写入本地文件dist/tools/export-material.js:144
fs.writeFileSync(htmlPath, htmlContent, 'utf-8'); - 读取本地文件dist/tools/update-material.js:62
if (!fs.existsSync(filePath) || !fs.statSync(filePath).isFile()) { - 读取本地文件dist/tools/update-material.js:74
while (fs.existsSync(backupPath)) { - 写入本地文件dist/tools/update-material.js:80
fs.writeFileSync(tempPath, args.content, { encoding: 'utf-8', flag: 'wx' }); - 写入本地文件dist/tools/update-material.js:85
fs.renameSync(filePath, backupPath); - 写入本地文件dist/tools/update-material.js:87
fs.renameSync(tempPath, filePath); - 写入本地文件dist/tools/update-material.js:90
fs.renameSync(backupPath, filePath); - 读取本地文件dist/tools/update-material.js:95
if (fs.existsSync(tempPath)) - 删除本地文件dist/tools/update-material.js:96
fs.unlinkSync(tempPath); - 读取本地文件dist/tools/list-backups.js:75
const boundary = fs.existsSync(outputDir) ? new WorkspaceBoundary(outputDir, false) : null; - 读取本地文件dist/tools/list-backups.js:78
if (!fs.existsSync(backupDir)) - 读取本地文件dist/tools/list-backups.js:81
for (const backupFilename of fs.readdirSync(backupDir)) { - 读取本地文件dist/tools/list-backups.js:94
const stat = fs.statSync(backupPath); - 读取本地文件dist/tools/restore-material.js:74
if (!fs.existsSync(filePath) || !fs.statSync(filePath).isFile()) { - 读取本地文件dist/tools/restore-material.js:81
if (!fs.existsSync(sourceBackupPath) || !fs.statSync(sourceBackupPath).isFile()) { - 读取本地文件dist/tools/restore-material.js:86
const restoredContent = fs.readFileSync(sourceBackupPath, 'utf-8'); - 读取本地文件dist/tools/restore-material.js:92
while (fs.existsSync(safetyBackupPath)) { - 写入本地文件dist/tools/restore-material.js:98
fs.writeFileSync(tempPath, restoredContent, { encoding: 'utf-8', flag: 'wx' }); - 写入本地文件dist/tools/restore-material.js:103
fs.renameSync(filePath, safetyBackupPath); - 写入本地文件dist/tools/restore-material.js:105
fs.renameSync(tempPath, filePath); - 写入本地文件dist/tools/restore-material.js:108
fs.renameSync(safetyBackupPath, filePath); - 读取本地文件dist/tools/restore-material.js:113
if (fs.existsSync(tempPath)) - 删除本地文件dist/tools/restore-material.js:114
fs.unlinkSync(tempPath); - 读取本地文件dist/workspace/package-transaction.js:24
return createHash('sha256').update(fs.readFileSync(filePath)).digest('hex'); - 写入本地文件dist/workspace/package-transaction.js:44
fs.writeFileSync(descriptor, content, 'utf8'); - 读取本地文件dist/workspace/package-transaction.js:55
if (!fs.existsSync(dir)) - 读取本地文件dist/workspace/package-transaction.js:58
if (fs.readdirSync(dir).length === 0) - 删除本地文件dist/workspace/package-transaction.js:59
fs.rmdirSync(dir); - 读取本地文件dist/workspace/package-transaction.js:64
if (fs.existsSync(stagedPath)) { - 删除本地文件dist/workspace/package-transaction.js:66
fs.unlinkSync(stagedPath); - 读取本地文件dist/workspace/package-transaction.js:69
if (fs.existsSync(journalPath)) { - 删除本地文件dist/workspace/package-transaction.js:71
fs.unlinkSync(journalPath); - 读取本地文件dist/workspace/package-transaction.js:102
if (fs.existsSync(targetPath)) { - 删除本地文件dist/workspace/package-transaction.js:112
fs.unlinkSync(stagedPath); - 写入本地文件dist/workspace/package-transaction.js:124
fs.renameSync(stagedPath, targetPath); - 删除本地文件dist/workspace/package-transaction.js:154
fs.unlinkSync(targetPath); - 删除本地文件dist/workspace/package-transaction.js:243
fs.unlinkSync(stagedPath); - 读取本地文件dist/workspace/store.js:9
value = JSON.parse(fs.readFileSync(filePath, 'utf8')); - 读取本地文件dist/workspace/store.js:26
JSON.parse(fs.readFileSync(filePath, 'utf8')); - 读取本地文件dist/workspace/store.js:34
if (fs.existsSync(filePath)) - 删除本地文件dist/workspace/store.js:35
fs.unlinkSync(filePath); - 写入本地文件dist/workspace/store.js:55
fs.writeFileSync(descriptor, content, 'utf8'); - 读取本地文件dist/workspace/store.js:64
if (!fs.existsSync(parent)) - 读取本地文件dist/workspace/store.js:71
if (fs.existsSync(filePath)) { - 读取本地文件dist/workspace/store.js:78
if (fs.existsSync(nextPath) && isCompleteJson(nextPath)) { - 写入本地文件dist/workspace/store.js:79
fs.renameSync(nextPath, filePath); - 写入本地文件dist/workspace/store.js:86
fs.renameSync(previousPath, filePath); - 写入本地文件dist/workspace/store.js:108
fs.renameSync(filePath, previousPath); - 写入本地文件dist/workspace/store.js:109
fs.renameSync(nextPath, filePath); - 写入本地文件dist/workspace/store.js:114
fs.renameSync(nextPath, filePath); - 写入本地文件dist/workspace/boundary.js:13
fs.mkdirSync(this.rootPath, { recursive: true }); - 读取本地文件dist/workspace/boundary.js:14
if (!fs.existsSync(this.rootPath)) - 读取本地文件dist/workspace/boundary.js:41
if (fs.existsSync(current)) { - 读取本地文件dist/workspace/boundary.js:42
const stat = fs.lstatSync(current); - 写入本地文件dist/workspace/boundary.js:50
fs.mkdirSync(current); - 读取本地文件dist/workspace/boundary.js:58
if (!fs.existsSync(target)) - 读取本地文件dist/workspace/boundary.js:69
if (fs.existsSync(absolute)) { - 读取本地文件dist/workspace/boundary.js:70
const stat = fs.lstatSync(absolute); - 读取本地文件dist/workspace/material-writer.js:24
while (fs.existsSync(filePath) || reserved.has(process.platform === 'win32' ? filePath.toLowerCase() : filePath)) { - 读取本地文件dist/workspace/material-writer.js:25
if (fs.existsSync(filePath)) - 写入本地文件dist/workspace/material-writer.js:48
fs.writeFileSync(planned.path, material.content, { encoding: 'utf8', flag: 'wx' }); - 读取本地文件dist/workspace/package-integrity.js:11
if (!fs.existsSync(filePath)) - 读取本地文件dist/workspace/package-integrity.js:14
const actual = createHash('sha256').update(fs.readFileSync(filePath)).digest('hex');
扫描于 2026/10/31(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
面向教师的 DeepSeek Harness 垂直行业预设——生成教案、评分标准、测验和教学材料
README
由 DeepSeek 最新模型翻译生成dsh-teacher-preset
面向教师的 DeepSeek Harness (DSH) 本地优先 AI 教学工作台 — 支持学校教师和教培教师,把教学上下文、成套备课、评价诊断与下一课调整连接为可追溯闭环。
功能
将 DSH 从通用智能体转变为教师专用助手。核心价值在于可复用教学上下文 + 单元教学包 + 评价证据 + 诊断反馈 + 本地版本恢复,同时保持 v0.4 Markdown 材料完全兼容。
核心能力:
- 模式切换:school(学校教师)/ tutoring(教培教师)/ all(全模式,默认)
- 学校教师:7 种教学文档模板(教案、评价量规、试卷、课堂检测、家校通知、教学反思、练习单)
- 教培教师:7 种教培专用模板(试听课教案、学情分析报告、续报话术、招生简章、课程大纲、学员档案、知识点切片)
- 模式隔离:school 模式下 LLM 只能看到学校模板,tutoring 模式下只看到教培模板
- 自动文件保存与归档(按类型/日期命名,同日同名不覆盖)
- 课程标准参考(覆盖小学/初中/高中 6 个学科)
- 3 套条件系统提示词,按模式注入对应工作流和方法论
- 批量模板加载:一次调用加载多个模板,减少 LLM 轮次
- 全文搜索:跨所有已保存材料搜索关键词,返回行号和上下文
展开完整文档(README 剩余 1 节)
dsh-teacher-preset 面向教师的 DeepSeek Harness (DSH) 本地优先 AI 教学工作台 — 支持学校教师和教培教师,把教学上下文、成套备课、评价诊断与下一课调整连接为可追溯闭环。 功能 将 DSH 从通用智能体转变为教师专用助手。核心价值在于可复用教学上下文 + 单元教学包 + 评价证据 + 诊断反馈 + 本地版本恢复,同时保持 v0.4 Markdown 材料完全兼容。 核心能力: - 模式切换:school(学校教师)/ tutoring(教培教师)/ all(全模式,默认) - 学校教师:7 种教学文档模板(教案、评价量规、试卷、课堂检测、家校通知、教学反思、练习单) - 教培教师:7 种教培专用模板(试听课教案、学情分析报告、续报话术、招生简章、课程大纲、学员档案、知识点切片) - 模式隔离:school 模式下 LLM 只能看到学校模板,tutoring 模式下只看到教培模板 - 自动文件保存与归档(按类型/日期命名,同日同名不覆盖) - 课程标准参考(覆盖小学/初中/高中 6 个学科) - 3 套条件系统提示词,按模式注入对应工作流和方法论 - 批量模板加载:一次调用加载多个模板,减少 LLM 轮次 - 全文搜索:跨所有已保存材料搜索关键词,返回行号和上下文 - HTML 导出:将 Markdown 材料导出为可打印的 HTML(A4 排版 + 中文字体) - 版本生命周期:安全更新、自动备份、历史版本列表与恢复;恢复前再次保护当前版本 - 结构化教学上下文:本地保存教师、班级、课程和学生信息,支持更新历史与安全恢复 - 一键单元教学包:一次调用以可恢复事务保存多份材料,并关联教学目标、相对路径和 SHA-256 校验和 - 结构化质量门禁:拦截错误模式、未替换占位符、缺失答案、未知目标引用和目标覆盖缺口 - 评价诊断闭环:录入逐学生、逐目标证据,计算掌握度并生成可执行的下一课调整 - 非破坏迁移:只为 v0.4 材料建立索引,不移动、不改写原文件;索引可重复刷新 安装 前置条件 - Node.js ^22.19.0 || >=24.0.0 - npm 11.12.1(插件构建器);Corepack 0.34.6 与 pnpm 11.24.0(独立 DSH 验收配置档)。构建插件本身不要求 pnpm - DSH 0.1.1-rc.2(发布候选依赖,必须固定版本)与 Cordis 4.0.1 - DSH 安装:npm install -g @deepseek-ai/dsh@0.1.1-rc.2 从 GitHub 安装(推荐) dsh plugin --profile web add github:AIMarshallLee/dsh-teacher-preset#v1.0.0 dsh web 从本地安装 git clone https://github.com/AIMarshallLee/dsh-teacher-preset.git cd dsh-teacher-preset && git checkout v1.0.0 && npm ci && npm run build dsh plugin --profile web add file:./dsh-teacher-preset dsh web 配置 在 DSH 配置目录创建或编辑 cordis.patch.yml: - id: dsh-teacher-preset config: mode: "all" # school | tutoring | all gradeLevel: "小学六年级" # 年级 subject: "数学" # 学科 textbookVersion: "人教版" # 教材版本 outputDir: "./teacher-materials" # 输出目录 language: "zh-CN" # 输出语言 配置项 | 字段 | 类型 | 默认值 | 说明 | | mode | school \| tutoring \| all | all | 教师场景模式 | | gradeLevel | string | 小学六年级 | 教师所教年级 | | subject | string | 数学 | 教学学科 | | textbookVersion | string | 人教版 | 教材版本 | | outputDir | string | ./teacher-materials | 生成材料保存目录 | | language | string | zh-CN | 输出语言 | 模式说明 | 模式 | 适用教师 | 可用模板 | 系统提示词 | | school | 公立/私立学校在职教师 | 7 种学校模板 | 备课→上课→课后反馈 | | tutoring | 教培机构教师 | 7 种教培模板 | 招生→试听→排课→上课→反馈→续报 | | all | 两类都适用 | 全部 14 种模板 | 自动判断需求,先问清楚教师身份 | 工具 | 工具 | 说明 | | teacher_load_template | 按类型加载文档模板(enum 随 mode 动态变化) | | teacher_load_templates | 批量加载多个模板(数组参数,自动去重,减少 LLM 轮次) | | teacher_save_material | 将生成材料保存到输出目录,同日同名不覆盖(自动加后缀) | | teacher_list_materials | 列出已保存的材料,支持按类型筛选 | | teacher_read_material | 读取已保存的材料内容,用于查看或修改 | | teacher_update_material | 原地更新已有材料,自动备份旧版本 | | teacher_list_backups | 查看自动备份版本,支持按类型和原文件筛选 | | teacher_restore_material | 从指定备份恢复材料,恢复前自动备份当前版本 | | teacher_search_materials | 全文搜索已保存材料(大小写不敏感,返回行号和上下文) | | teacher_load_curriculum | 加载当前学科和年级的课程标准参考 | | teacher_export_material | 将材料导出为可打印 HTML(A4 排版 + 中文字体 + 打印 CSS) | | teacher_migrate_workspace | 初始化/刷新 v1 工作区并非破坏性索引 v0.4 材料 | | teacher_save_context | 创建或更新教学上下文,更新前自动保留旧版本 | | teacher_list_contexts | 按当前模式列出可复用教学上下文 | | teacher_read_context | 读取教师、班级、课程和学生上下文 | | teacher_list_context_versions | 列出教学上下文历史版本 | | teacher_restore_context | 恢复教学上下文,恢复前保护当前版本 | | teacher_create_unit_package | 一次创建并关联多份单元材料,通过质量门禁后以 staging + journal 可恢复落盘 | | teacher_list_unit_packages | 列出单元包及其上下文、目标和材料数量 | | teacher_read_unit_package | 读取单元包关系、材料校验和与质量报告 | | teacher_record_assessment | 记录评价证据、计算诊断并生成下一课调整 | | teacher_read_assessment | 读取评价证据、诊断与后续教学建议 | v1 教学闭环 一次自然语言任务可以驱动插件内部完成以下链路: 1. teacher_save_context 保存或复用教师、班级、课程和学生上下文。 2. teacher_create_unit_package 一次写入教案、练习、测评、量规等完整材料,并保存教学目标关联。 3. 教学后用 teacher_record_assessment 录入逐学生、逐目标的分数与观察。 4. 插件按固定阈值生成诊断:掌握 >= 0.80、发展中 >= 0.60、其余为需要支持。 5. 下一课再次调用 teacher_create_unit_package,传入 previousPackageId 和 sourceAssessmentId,形成证据可追溯的改进闭环。 本地存储、迁移与隐私 v1 元数据保存在 <outputDir>/.teacher-workspace/,原有 Markdown 仍位于 <outputDir>/<type>/: teacher-materials/ ├── lesson-plan/... ├── quiz/... ├── .backups/... └── .teacher-workspace/ ├── workspace.json ├── legacy-materials.json ├── contexts/ ├── packages/ ├── assessments/ ├── transactions/ └── staging/ 首次升级或复制旧材料后调用 teacher_migrate_workspace。迁移只读取文件并记录相对路径、大小、修改时间和 SHA-256,不改写材料;复制整个 outputDir 即可迁移工作区。JSON 写入使用可恢复 sidecar,单元包使用 staging + transaction journal;进程中断后插件启动会完成有日志的事务,无法关联的 staging 会保留并警告。损坏、不支持或越过目录联接边界的结构会报错并停止,不会静默重建。 所有数据仅保存在本地输出目录;配置的绝对输出路径不会加入模型提示,正常工具结果只返回工作区相对路径。底层文件系统异常的诊断可能含本机路径并被 DSH 发送给模型提供方,因此 outputDir 不应包含学生姓名等敏感标识。不要在上下文或材料中写入密码、API Key、Token、Cookie,学生信息只保留教学所需的最小范围。 完整的数据最小化、保留、删除和导出说明见 数据生命周期;安装、升级、卸载、回退和 DSH RC 风险见 运维手册;漏洞报告见 SECURITY.md。 模板 学校教师模板(mode: school) | 模板 | 说明 | | lesson-plan | 教案 — 教学目标、教学过程、板书设计 | | rubric | 评价量规 — 多维度评分表格 | | quiz | 试卷 — 选择题、填空题、判断题、解答题 | | exit-ticket | 课堂检测 — 快速形成性评价(3-5题) | | parent-notice | 家校通知 — 家校沟通文档 | | reflection | 教学反思 — 目标达成、成功与不足 | | worksheet | 练习单 — 基础题、提高题、拓展题 | 教培教师模板(mode: tutoring) | 模板 | 说明 | | trial-lesson | 试听课教案 — 破冰展示、互动练习、成果转化 | | student-report | 学情分析报告 — 入学测评、进步对比、薄弱分析 | | renewal-script | 续报话术 — 学情回顾、问题诊断、方案推荐、异议处理 | | enrollment-flyer | 招生简章 — 课程亮点、师资、排课、收费 | | course-outline | 课程大纲 — 多周排课、知识点分配、阶段测评 | | student-profile | 学员档案 — 学习风格、知识掌握、课堂表现、家长沟通 | | knowledge-map | 知识点切片 — 考点拆解、难度分级、前置依赖、常见错误 | 架构 DSH Agent (Node.js) └─ Cordis Framework └─ dsh-teacher-preset plugin (apply(ctx, config)) ├─ Config Schema (zod: mode, gradeLevel, subject, textbookVersion, outputDir, language) ├─ TemplateManager(mode → getTypesForMode() → 7 或 14 种类型) ├─ System Prompt:buildSystemPrompt(mode) → school / tutoring / all │ ├─ buildSchoolPrompt() — 备课→上课→课后反馈 + 教学法指南 │ ├─ buildTutoringPrompt() — 招生→试听→排课→上课→反馈→续报 + 教培方法论 │ └─ buildAllPrompt() — 双工作流 + 自动判断指引 ├─ Tool:teacher_load_template(enum = tm.types,按 mode 过滤) ├─ Tool:teacher_load_templates(批量加载,array 参数,去重) ├─ Tool:teacher_save_material(type 校验 = tm.types) ├─ Tool:teacher_list_materials(只扫描 mode 对应的目录) ├─ Tool:teacher_read_material(type 校验 = tm.types) ├─ Tool:teacher_update_material(原子替换 + 自动备份) ├─ Tool:teacher_list_backups(列出版本历史) ├─ Tool:teacher_restore_material(安全恢复 + 备份当前版本) ├─ Tool:teacher_search_materials(全文搜索,不区分大小写) ├─ Tool:teacher_load_curriculum(课程标准) ├─ Tool:teacher_export_material(MD → HTML,走 marked + wrapHtml) ├─ WorkspaceStore(.teacher-workspace JSON + 原子写入 + 上下文历史) ├─ Tool group:上下文迁移 / 保存 / 列表 / 读取 / 版本 / 恢复 ├─ Tool group:单元包创建 / 列表 / 读取 + 结构质量门禁 ├─ Tool group:评估记录 / 读取 + 确定性诊断 ├─ html-template.ts(打印 CSS、中文字体、A4 页面) ├─ 14 个 Markdown 模板(7 个学校 + 7 个教培) └─ ctx.effect() 清理 使用示例 学校教师模式 帮我写一节"分数的初步认识"的教案 → 自动加载教案模板 → 生成内容 → 保存到 teacher-materials/lesson-plan/ 生成一份第一单元的数学试卷,10道选择题 → 自动加载试卷模板 → 生成题目和答案 → 保存到 teacher-materials/quiz/ 教培教师模式 帮我生成一份小数乘法试听课教案 → 自动加载试听课模板 → 生成五环节内容 → 保存到 teacher-materials/trial-lesson/ 写一份春季班续报话术,这个学生计算薄弱 → 自动加载续报话术模板 → 生成学情回顾+方案+异议处理 → 保存到 teacher-materials/renewal-script/ 全模式 帮我出一份招生简章 → LLM 自动判断为教培场景 → 加载招生简章模板 → 生成内容 → 保存 写一节圆的面积的教案 → LLM 自动判断为学校场景 → 加载教案模板 → 生成内容 → 保存 项目结构 dsh-teacher-preset/ ├── src/ │ ├── index.ts # 插件入口: apply(ctx, config) + 3 套系统提示词 │ ├── templates.ts # 模板管理器 + 模式过滤 (SCHOOL/TUTORING/ALL types) │ ├── params.ts # buildParameters() JSON Schema 转换 │ ├── html-template.ts # HTML 导出模板 (打印 CSS + 中文字体) │ └── tools/ │ ├── load-template.ts # teacher_load_template (动态 enum) │ ├── load-templates.ts # teacher_load_templates (批量加载 + 去重) │ ├── save-material.ts # teacher_save_material (动态 type 校验) │ ├── list-materials.ts # teacher_list_materials (动态 type 扫描) │ ├── read-material.ts # teacher_read_material (动态 type 校验 + 路径遍历防护) │ ├── update-material.ts # teacher_update_material (原子更新 + 自动备份) │ ├── list-backups.ts # teacher_list_backups (备份版本列表) │ ├── restore-material.ts # teacher_restore_material(安全恢复) │ ├── search-materials.ts # teacher_search_materials(全文搜索) │ ├── export-material.ts # teacher_export_material(HTML 导出) │ └── load-curriculum.ts # teacher_load_curriculum ├── templates/ # 14 个 Markdown 模板 │ ├── lesson-plan.md # 学校:教案 │ ├── rubric.md # 学校:评价量规 │ ├── quiz.md # 学校:试卷 │ ├── exit-ticket.md # 学校:课堂检测 │ ├── parent-notice.md # 学校:家校通知 │ ├── reflection.md # 学校:教学反思 │ ├── worksheet.md # 学校:练习单 │ ├── trial-lesson.md # 教培:试听课教案 │ ├── student-report.md # 教培:学情分析报告 │ ├── renewal-script.md # 教培:续报话术 │ ├── enrollment-flyer.md # 教培:招生简章 │ ├── course-outline.md # 教培:课程大纲 │ ├── student-profile.md # 教培:学员档案 │ └── knowledge-map.md # 教培:知识点切片 ├── test/ │ ├── integration.mjs # v0.4 兼容与插件回归(723 assertions) │ ├── v1-integration.mjs # v1 工作区、恢复与教学闭环场景 │ ├── release-contract.mjs # 发布元数据、安全与运维文档契约 │ └── fixtures/ # v0.4 字节级迁移基线 ├── cordis.patch.yml # 示例配置 ├── package.json ├── tsconfig.json ├── CHANGELOG.md └── LICENSE 路线图 | 阶段 | 范围 | 状态 | | Phase 1 — MVP | 5 工具 + 系统提示词 + 7 学校模板 + 配置 + 测试 | Complete | | Phase 1.5 — DSH 兼容 | 修复 8 个 DSH 环境兼容性问题 + 真实 LLM 验证 | Complete | | Phase 2 — 教培模式 | mode 切换 + 7 教培模板 + 条件系统提示词 + 模式隔离 | Complete | | Phase 3 — 增强 | 批量模板加载 + 全文搜索 + HTML 导出 | Complete | | Phase 4 — 材料生命周期 | 安全更新 + 自动备份 + 版本列表 + 安全恢复 | Complete | | Phase 5 — AI 教学闭环工作台 | 教学上下文 + 单元包 + 质量门禁 + 评价诊断 + 下一课调整 | Complete | License MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
AIMarshallLee/dsh-teacher-preset
生成教案试卷与学情诊断,闭环调整下一课
相关插件 · 技能 / 提示词
人设统管ZiChuanLan/agent-purge
一份系统提示词,喂给多个 coding…
★ 931已汉化DSH
73.8
人物画像蒸馏titanwings/distilly
Distilly — 把他们的思考方式提炼成可复用的技能,供任何智能体或机器人使用。原名 Colleague Skill(原同事 Skill)。
★ 25,659已汉化DSH
71.3
推理工作空间套件Tiger3807861189/J-Space-Cognition-Suite
J-Space 是面向复杂推理、大型仓库工程、子代理协作与授权安全分析的推理时工作空间和控制套件。
★ 2,957已汉化DSH
70.5
两阶段工具锚定预设xiaobright/dsh-anchored-standard
实验性 DeepSeek Harness agent preset…
★ 3,742已汉化DSH
70.1
智能体工作流编排nrslib/takt
不再日夜盯着 AI 编码智能体。
★ 1,402已汉化DSH
70
Agent 运行时手册Electricitysheep/dsh-handbook
DeepSeek Harness dsh 从 0 到 1 深度手册:安装/插件开发/性能调优/实测案例/同模型多…
★ 827已汉化DSH
68.7