前言¶
在 DSH 里做算法练习,常见做法是开浏览器刷力扣,或自己搭 OJ、写脚本拉题。题面、判题、进度和复习往往分散在不同工具里;若还想按知识点先学再练、或按描述自动加题,又要额外接 API 和测试数据。下面介绍社区插件 kapelame/deepseek-harness-leetcode(包名 dsh-plugin-learn):把 LeetCode Hot 100 与配套课程、本机 Docker 沙箱判题、渐进提示与 AI 导师、间隔复习,以及「用自然语言描述需求自动加题」的 Agent,收进 DSH 侧边栏的 Learn 工作流。
这是什么¶
维护者为 kapelame,在 SkillHub 目录中归类为工作流。插件面向已在使用 DeepSeek Harness 的用户:在 Harness 内完成算法学习路径,而不替代力扣官网题面(每题仍链到 LeetCode 官方页)。许可证为 MIT;仓库预置 lib/ 构建产物,安装时不跑构建脚本。
核心功能¶
题库与讲解¶
- 覆盖 LeetCode Hot 100 全部 100 题,并额外包含 8 道经典题;每题配有原创小结、三档递进提示与带讲解的解法说明。
- 题目分组与力扣 Hot 100 一致,可按组查看进度。
本地判题(Docker)¶
- 代码在无网络的 Docker 容器内执行,文件系统只读,并受内存、CPU、进程数限制;期望答案不进入容器。
- 测试集在官方样例之外,包含隐藏边界、随机与大用例;对设计类、原地修改、链表/树节点等题型有专门处理。通过表示通过本地测试,不等同于力扣站内「Accepted」。
- 可选 AI 判题仅补充反馈,不能改写由测试执行得出的结论。配置里可将
agents.judge设为false,仅做确定性判题。
先上课再做题¶
- 16 个主题(从哈希到动态规划等),每课含可逐步跟读的例题。
- 导师根据课程内容出题做理解检查、批改作答,并判断你是否可以进入配套练习题。
练习界面与记录¶
- Solve:编辑器、Run / Submit、隐藏测试。
- Submissions:历次提交的状态、耗时、内存与代码。
- Your record:按难度统计、年度日历、连续打卡与近期通过记录等。
提示与辅导¶
- 提示分档解锁:方向、关键思路、提纲、解法。
- 支持 AI 导师对话;配置默认模型(例如登录 DeepSeek)后,可用于导师、课内检查、提交反馈与加题 Agent。运行、判题、书面提示与课内内置检查题可在不配置默认模型的情况下使用。
间隔复习与扩展¶
- 间隔重复复习,并可生成经校验的变体题。
- 按概念查看进度;可选每日提醒邮件(需自行配置 SMTP 等)。
Add problems(按描述加题)¶
在 Practice → Add problems 中用自然语言描述需求并选择数量(1–5)。Agent 按仓库内技能 skills/learn-problem-author/SKILL.md 在 LeetCode 上检索,编写测试并在通过与本库题目相同校验后才写入题库。题号、标题、难度、标签、函数签名与样例均来自 LeetCode 元数据,不由模型编造;付费题与本插件无法判题的题会跳过。进度可流式查看并可中途停止,已加入的题会保留。README 记载在 DeepSeek 上的实测中,单次约 70–300 秒,且能加满请求数量。
安装与启用¶
环境要求:DSH 0.2.0-rc.2 及以上、低于 0.3(README 写明在 0.2.0-rc.2 与 0.2.1-alpha.3 上测试)。需安装 Docker Desktop;Learn 可引导一键启动 Docker 并拉取运行镜像,也可自行执行:
docker pull python:3.13-alpine node:24-alpine
Web 端安装(命令来自 README):
dsh plugin --profile web add github:kapelame/deepseek-harness-leetcode
dsh web
Desktop:在 Plugins → install from GitHub 安装 github:kapelame/deepseek-harness-leetcode。
Desktop 命令行(需完全退出 Desktop 后执行捆绑 CLI,再重新打开):
"/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh" plugin --profile desktop add github:kapelame/deepseek-harness-leetcode
需要可复现安装时,可固定 commit:github:kapelame/deepseek-harness-leetcode#<commit>。
安装后在侧边栏打开 Learn。讲解默认中文,可在 Learn → Settings 切换英文。
典型用法¶
- 完成 Docker 与插件安装后,从 Learn 进入 Hot 100 或主题课。
- 跟读课内例题,完成导师的理解检查,再进入对应练习题。
- 在编辑器中编写代码,先 Run 再 Submit;在 Submissions 查看历史。
- 需要时逐级解锁提示,或使用导师对话;按需开启间隔复习。
- 想扩充题库时,在 Practice → Add problems 输入描述(例如 README 示例:「3 medium BFS problems I haven’t done」),选择题数并等待 Agent 完成校验与写入。
配置与数据(可选)¶
插件在 profile 中增加 learn(服务)与 learn-ui(Remote API 与 UI)两行。在 cordis.patch.yml 中覆盖配置时须保留整段 config 及 dataRoot。README 示例片段如下:
- id: learn
config:
dataRoot: !!js dshHomePath('learn')
defaultLocale: en
reviewDailyLimit: 3
agents:
judge: false
variantGeneration: true
finder:
enabled: true
maxProblems: 5
maxSubmissionsPerProblem: 3
maxLeetcodeRequests: 40
requestIntervalMs: 1000
email:
transport: capture
学习数据默认位于 DSH 主目录(一般为 ~/.dsh)下的 learn/;可在 Settings 中导出 JSON 或重置。
适用场景与注意¶
适合:已在用 DSH 0.2.x、本机可跑 Docker,希望按 Hot 100 与主题课系统刷题、本地离线判题,并可选 AI 辅导与按描述加题的用户。
隐私与出站(据 README):代码仅在离线 Docker 中执行。配置默认模型后,提交(除非关闭 agents.judge)、提示、导师、反思与变体生成等会把题面摘要与代码发给该模型;课内检查发送课程与作答;Add problems 发送描述与 LeetCode 元数据,不发送你的代码。Add problems 仅查询 LeetCode 公开 GraphQL 获取元数据。除可选 SMTP 提醒邮件外,其余数据默认不出本机。
安全:DSH 插件以当前 dsh 进程权限运行。安装前请自行查看仓库源码与 MIT 许可证,确认符合你的环境与合规要求;社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
kapelame/deepseek-harness-leetcode 把 Hot 100 学习路径、Docker 本地判题、课内辅导与可选 AI 加题 Agent 放进 DSH 的 Learn 工作流,适合把算法练习留在 Harness 内闭环完成的开发者。