把资料变成小步练习,用原文和作答给出反馈并安排复习
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Qinling-Melon-Farmers/dsh-tutorloop该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · other
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 3 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 30 处,展示前 30 条)
- 发起网络请求lib/client.js:49
response = await fetch("/api/dsh-tutorloop/action", { - 写入剪贴板lib/client.js:685
await navigator.clipboard.writeText(request); - 执行外部命令来自配置/变量scripts/cli.mjs:9
const child = spawn(executable, args, { shell: false, windowsHide: true, stdio: capture ? ['ignore', 'pipe', 'pipe'] : 'inherit', env: { ...process.en - 写入本地文件scripts/cli.mjs:33
mkdirSync(home, { recursive: true }) - 读取本地文件scripts/cli.mjs:35
if (!existsSync(managed)) await run(base, ['-m', 'venv', join(home, 'venv')]) - 读取本地文件src/bridge-client.js:21
if (!existsSync(join(backendPath, 'bridge.py'))) throw new Error('教学内核 bridge.py 不存在,请检查安装。') - 执行外部命令来自配置/变量src/bridge-client.js:26
const child = spawn(pythonPath, ['-X', 'utf8', join(backendPath, 'bridge.py')], { - 读取本地文件src/server.js:38
const parse = path => JSON.parse(readFileSync(path, 'utf8').replace(/^ FEFF/, '')) - 读取本地文件src/server.js:44
if (lstatSync(entries).isSymbolicLink()) throw new Error('Trust entry directory must not be a symlink') - 读取本地文件src/server.js:45
for (const entry of readdirSync(entries, { withFileTypes: true })) { - 写入本地文件src/server.js:60
mkdirSync(entries, { recursive: true }) - 读取本地文件src/server.js:61
if (lstatSync(entries).isSymbolicLink()) throw new Error('Trust entry directory must not be a symlink') - 写入本地文件src/server.js:64
writeFileSync(temporary, JSON.stringify({ workspace: item }), { flag: 'wx', mode: 0o600 }) - 写入本地文件src/server.js:65
renameSync(temporary, join(entries, filename)) - 删除本地文件src/server.js:67
finally { if (temporary) { try { unlinkSync(temporary) } catch {} } } - 读取本地文件src/server.js:123
const root = await realpath(cwd) - 读取本地文件src/server.js:124
const path = await realpath(resolve(cwd, payload.path)) - 读取本地文件scripts/runtime.mjs:23
if (typeof backendPath !== 'string' || !isAbsolute(backendPath) || !existsSync(join(backendPath, 'bridge.py'))) { - 读取本地文件scripts/runtime.mjs:28
const pythonPath = configuredPython ?? (existsSync(cachedPython) ? cachedPython : 'python') - 执行外部命令来自配置/变量scripts/check-package.mjs:6
const output = execFileSync(process.execPath, [process.env.npm_execpath, 'pack', '--dry-run', '--ignore-scripts', '--json'], { encoding: 'utf8', windo - 读取本地文件scripts/check-package.mjs:14
const manifest = JSON.parse(readFileSync('package.json', 'utf8')) - 执行外部命令来自配置/变量scripts/ci-check.mjs:14
const child = spawn(command, args, { cwd, shell: false, windowsHide: true, stdio: ['ignore', 'pipe', 'pipe'] }) - 执行外部命令固定命令scripts/release-notes.mjs:107
const changelog = execFileSync('git', ['show', `refs/tags/${tag}:CHANGELOG.md`], { encoding: 'utf8', windowsHide: true }); - 执行外部命令固定命令scripts/release.mjs:16
export function checkRelease(pkg, lock, tag, git = args => execFileSync('git', args, { encoding: 'utf8' }).trim()) { - 写入本地文件scripts/release.mjs:65
if (process.env.GITHUB_OUTPUT) await appendFile(process.env.GITHUB_OUTPUT, lines); - 读取本地文件scripts/release.mjs:69
const pkg = JSON.parse(await readFile('package.json', 'utf8')); - 读取本地文件scripts/release.mjs:71
const lock = JSON.parse(await readFile('package-lock.json', 'utf8')); - 写入本地文件scripts/release.mjs:79
await mkdir('release-assets', { recursive: true }); - 写入本地文件scripts/release.mjs:81
await writeFile(path, bytes); - 执行外部命令来自配置/变量scripts/test-backend.mjs:4
const child = spawn(process.env.TUTORLOOP_TEST_PYTHON || process.env.TUTORLOOP_PYTHON || 'python', ['-X', 'utf8', '-m', 'unittest', 'discover', '-s',
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
README
由 DeepSeek 最新模型翻译生成dsh-tutorloop
中文 · English · 更新日志 · Releases
DeepSeek Harness(DSH)的通用学习陪练插件。 把你选的资料变成小步练习,用原文和你的作答给出反馈,再安排后续复习。可用于英语阅读、编程基础、课程概念或其他自学主题,学习记录保存在当前工作区。
资料导入 → 小步练习 → 证据反馈 → 复习。 例如,读一篇英语短文后练习定位依据,或根据编程讲义解释一次循环的执行过程;一次只聚焦一个问题,遇到困难逐步提示,再换一个例子检验理解。
当前 DSH 会话模型负责讲解、出题和主观反馈。面板不另开模型 API,也不要求额外密钥;Python 教学内核随 npm 分发,无需 Streamlit。记录保存在本机,但你选用的材料、答案与工具返回可以进入 DSH 模型上下文,请按宿主模型服务的隐私约定选择资料。
安装
要求 DSH 0.2.1-rc.2、Node 22.19+ / 24+、Python 3.11+。通过正式 npm 包安装,当前版本见页首 npm 徽章。
展开完整文档(README 剩余 1 节)
dsh-tutorloop 中文 · English · 更新日志 · Releases DeepSeek Harness(DSH)的通用学习陪练插件。 把你选的资料变成小步练习,用原文和你的作答给出反馈,再安排后续复习。可用于英语阅读、编程基础、课程概念或其他自学主题,学习记录保存在当前工作区。 资料导入 → 小步练习 → 证据反馈 → 复习。 例如,读一篇英语短文后练习定位依据,或根据编程讲义解释一次循环的执行过程;一次只聚焦一个问题,遇到困难逐步提示,再换一个例子检验理解。 当前 DSH 会话模型负责讲解、出题和主观反馈。面板不另开模型 API,也不要求额外密钥;Python 教学内核随 npm 分发,无需 Streamlit。记录保存在本机,但你选用的材料、答案与工具返回可以进入 DSH 模型上下文,请按宿主模型服务的隐私约定选择资料。 安装 要求 DSH 0.2.1-rc.2、Node 22.19+ / 24+、Python 3.11+。通过正式 npm 包安装,当前版本见页首 npm 徽章。 dsh plugin --profile web add dsh-tutorloop npx --yes --package=dsh-tutorloop dsh-tutorloop setup npx --yes --package=dsh-tutorloop dsh-tutorloop doctor 第一条命令用于 web 配置档;使用 desktop 时,在该宿主的插件管理器安装同一个 npm 包 dsh-tutorloop。安装到你实际启动的配置档,按宿主要求重载,在带工作目录的会话中打开 TutorLoop。界面与教学默认中文,支持 English/跟随 DSH;材料原文保留原语言。 首次使用 1. 在会话中说明目标、基础和科目,保存学习档案。 2. 选择工作区资料,例如 materials/lesson.pdf 或 materials/notes.md,也可选择公开网页。导入保留原文用于检索和练习,不自动生成可判分试卷。 3. 确认哪些原文可以作为练习材料,哪些只是教师参考;答案与解析不混入学生题面。 4. 从一个小任务开始,先独立尝试,卡住后再逐步提示。需要分项评分时在作答前确认要求;未准备评分标准的题先给定性反馈,已有答案后不补改标准。 5. 独立作答。必要图像须全部成功加载并由你确认;缺图、不支持的图源或加载失败不能正常交卷。 6. 主观题提交后复制批改请求,回到同一 DSH 会话让模型反馈。请求绑定具体练习与作答,面板读取对应反馈;待批改不是零分。 可以直接在会话中说:「导入 materials/lesson.pdf,先了解我的基础,再用小问题带我练习;反馈请引用材料和我的原句,最后安排复习。」 能力与边界 | 能力 | 行为 | | 证据反馈 | 校验材料编号与学生原句;模型对内容的理解和判断仍需核对 | | 学生/教师分离 | 学生题面隐藏参考答案、参考图文、量表与教师来源;旧来源未显式公开时隐藏,保留旧题干材料 | | 未标定题 | uncalibrated 只给定性反馈,分项分值、总分、满分为 null,不推进掌握或计算数值正确率 | | 图文题 | 结构化文本/图像,不执行原始 HTML;图源仅限 fb.fbstatic.cn、fb.fenbike.cn 的 HTTPS 地址,仍需确认实际加载 | | 可选题库适配 | 有兼容题库时支持选题、整卷与组卷;每轮绑定独立练习实例,不继承旧轮成绩 | | 通用主题与长度 | 科目/技能来自题目或档案;characters 统计非空白字符(含标点),words 按词计数,均为教学口径 | | 检索 | 保留引用原文,修复大型库候选召回;候选集 BM25 排序不承诺与全库完全等价 | | 复习与记忆 | 区分辅助、重做与独立作答,安排后续复测;Memoir 只生成待审阅候选摘要 | | StudyHub 导出 | 内部转换器生成草稿与来源说明;当前不支持图文而明确拒绝视觉题,未标定开放题不能导出评分量表 | 题库适配是可选能力,资料导入和通用练习无需现成题库。题库数据不随 npm 分发;使用适配器需要你有权使用且符合格式的材料。可练性取决于原文、选项和参考是否完整,来源声明不代表权威认证。适配格式见后端说明。 18 个 tutor_ 教师工具与学生面板共用后端。新题用 student_material_ids 明确公开来源;tutor_prepare_rubric 可在作答前确认题目特定量表。get_context、create_practice、prepare_rubric、apply_feedback、find_materials 仅供教师工具调用。用户仍可自行读取自己的原件;面板不是防作弊系统。提交编号和版本避免把重试变成另一份答案;不是所有写入都幂等,取消也可能晚于提交,应先重读状态。 TutorLoop 不是官方评分或监考平台,也不声称复现 ChatGPT 内部架构或达到同等教学质量。模型已收到的教师信息仍可能被其披露;主观反馈质量需要实际评估。 工作区与授权 | 配置 | 默认 | 说明 | | dbPath | <workspace>/.dsh-tutorloop/tutor.sqlite3 | 显式指定同一库意味着主动共享记录 | | workspacePath | 无 | 显式预信任工作区;日常使用会话 cwd | | trustStore | ~/.dsh-tutorloop/trusted-workspaces.json | 兼容旧 JSON,新确认写入对应 .d 目录 | 新授权放在 ~/.dsh-tutorloop/trusted-workspaces.json.d/,按工作区独立原子写入,避免多实例互相覆盖;这不是共享远程宿主的多租户鉴权。 撤销全部持久授权:同时删掉旧 trusted-workspaces.json 和 trusted-workspaces.json.d/,再重启所有相关宿主。 运行中的进程仍保留内存授权;如果有显式 workspacePath,也要一并移除。自定义 trustStore 时,处理对应文件与 .d 目录。撤销授权不会删除学习库。 开发与发布 git clone https://github.com/Qinling-Melon-Farmers/dsh-tutorloop.git cd dsh-tutorloop npm ci npm run build node scripts/cli.mjs setup npm test npm run test:python CI 在 Windows/Linux 上为 PR 与 main 运行检查;推送 v 标签后,经验证与 GitHub 环境配置,以 OIDC 发布 npm 并创建 GitHub Release。附件取自 npm 实际 tarball 并验证完整性。详见 CI 与机器人、架构和后端协议;已执行检查与未完成验收以验证记录为准。 Apache-2.0 License © 2026 Qinling-Melon-Farmers
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Qinling-Melon-Farmers/dsh-tutorloop
把资料变成小步练习,用原文和作答给出反馈并安排复习
相关插件 · 其他
模型破甲清洗YuJunZhiXue/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,148已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,266已汉化DSH
70.7
这是你的仓库?认领条目