LeetMate,你的力扣刷题伙伴。
不给答案,只给提示——然后在你忘记之前,把题排进复习。
English · 简体中文
LeetMate 是一个跑在终端里的 LeetCode 刷题辅导工具,围绕「面试备战」设计。它不替你解题——你卡住时给一个提示而不是答案;练过的题会被排进间隔复习队列,赶在你忘掉之前回来。
市面上的 LeetCode 工具要么只给题、要么直接给答案,都不利于真正学会。LeetMate 介于两者之间:卡住时按 1(Hint)只拿到算法方向、按 2(Nudge)拿到卡点提示、按 3(Review)让它挑你代码的 bug——前三级绝不输出完整代码;只有按 4(Answer)并二次确认才给完整解法。每一道练过的题自动进轻量 FSRS-style 复习队列;完整 FSRS 算法后续接入。
- 🧠 苏格拉底式辅导 — Hint / Nudge / Review / Answer 四级,防代答 system prompt 守住前三级不泄答案
- 📋 题单 — 内置「热题 100」「面试经典 150」,进度跟踪 + 自动跳到下一题;支持自定义题单
- 🧩 基于 leetgo — 代码骨架、本地测试、提交全交给 leetgo
- 🔁 间隔复习 — 轻量 FSRS-style 调度,练过的题会进入复习队列
- 🎛️ 自带模型 — 一行
preset切换 Gemini / 硅基流动 / Groq / DeepSeek,只填 key 即可 - 🗳️ 本地优先 — 所有练习记录、对话、进度都在本地 SQLite,数据不离机
- 🌐 中英文界面 — config 一行切换
- 📜 流式输出 + 可展开详情 — 辅导打字机式流式;默认折叠预览,
o展开全文 / 完整错误
🧪 Alpha。辅导、题单闭环和轻量 FSRS-style 复习队列已可用;完整 FSRS 调参后续接入。
| 模块 | 状态 |
|---|---|
| leetgo 集成(pick/test/submit) | ✅ |
| LLM 辅导(四级 + 防代答 + 流式) | ✅ |
| 题单 + 进度 | ✅ |
| preset 多模型 | ✅ |
| FSRS-style 间隔复习 MVP | ✅ |
首跑引导 + leetmate doctor |
✅ |
leetmate init 配置生成 |
✅ |
- leetgo:
brew install j178/tap/leetgo或go install github.com/j178/leetgo@latest,然后运行leetgo init - 用于 test/submit 的 LeetCode cookies(按下文配置到 leetgo workspace)
- 可选的 LLM API key,用于 Coach:Gemini / 硅基流动 / Groq / DeepSeek
- 只有从源码构建或通过
go install安装 leetgo 时才需要 Go 1.26+
Homebrew(macOS / Linux):
brew install DuckInAShirt/tap/leetmatenpm(会安装对应平台的 GitHub Release 二进制):
npm install -g @zxr55555/leetmatego install(需已安装 Go):
go install github.com/DuckInAShirt/leetmate/cmd/leetmate@latest预编译二进制:从 Releases 下载对应平台的压缩包,解压后把 leetmate 放进 PATH。
从源码构建:
git clone https://github.com/DuckInAShirt/leetmate.git
cd leetmate
go build -o leetmate ./cmd/leetmate安装后直接运行 leetmate。在交互终端中,首跑引导会从当前目录向上发现 leetgo.yaml,生成 LeetMate 配置,执行本地环境检查,然后启动 TUI。已有配置的用户不会多一步提示。
非交互环境或需要显式配置时:
leetmate init --preset siliconflow --workspace /path/to/your/leetgo/workspace --lang zh
leetmate doctor
leetmateleetmate doctor 会检查配置、leetgo binary、workspace、本地认证配置、LLM key 和数据目录写权限。它不会发送凭据,也不会请求 LeetCode。脚本可使用 leetmate doctor --json。
在 workspace 的 leetgo.yaml 中配置:
leetcode:
site: https://leetcode.cn # 或 https://leetcode.com
credentials:
from: cookies在同目录的 .env 中配置:
LEETCODE_SESSION=<LEETCODE_SESSION cookie>
LEETCODE_CSRFTOKEN=<csrftoken cookie>
# LEETCODE_CFCLEARANCE=<cf_clearance cookie> # leetcode.com 某些环境还需要doctor 只确认必需 cookie 已填写。会话是否仍有效,会在首次 test/submit 时由 leetgo 验证。
没有 LLM key 时 LeetMate 会进入“仅 leetgo 模式”:选题、编辑、测试、提交和间隔复习仍可使用,AI 辅导不可用。要启用 Coach,把 preset 对应的 key 填进 LeetMate 配置目录的 .env(通常是 ~/.config/leetmate/.env):
SILICONFLOW_API_KEY=... # 或 GEMINI_API_KEY / GROQ_API_KEY / DEEPSEEK_API_KEY还没有硅基流动 key 的话,可以用邀请码 hoNe8cdD 注册,体验推荐的国内友好 preset。
查看或更新当前配置:
leetmate config
leetmate config --presets
leetmate config set language zh
leetmate config set leetgo.workspace /path/to/your/leetgo/workspace
leetmate config set llm.preset siliconflow
leetmate config set code.lang go支持写入的 key:language、editor、leetgo.workspace、leetgo.binary、code.lang、llm.preset、llm.model、llm.max_history、db.path。
手动配置也可以,~/.config/leetmate/config.yaml:
language: zh # 或 en
leetgo:
workspace: /path/to/your/leetgo/workspace
# 选一个 preset,对应平台的 key 放进 .env 即可
llm:
preset: siliconflow # gemini | siliconflow | groq | deepseek刷题代码语言由 leetgo 管,不在 LeetMate 配置里保存。leetmate config set code.lang <lang> 会更新 leetgo workspace 里的 leetgo.yaml,也可以手动编辑:
code:
lang: go # 或 python3 / cpp / java / ...可选 preset:
| preset | 平台 | 默认模型 | 备注 |
|---|---|---|---|
gemini(默认) |
gemini-2.0-flash | 全球,免费 tier | |
siliconflow |
硅基流动 | GLM-4-9B(可改 DeepSeek-V3 等) | 国内访问稳,需实名 |
groq |
Groq | llama-3.3-70b | 免费、极快,海外网络 |
deepseek |
DeepSeek 官方 | deepseek-v4-flash | 极便宜、快、指令遵循强 |
leetmate进 TUI 后:
- 今日题目 / 题单 — 选题开始
e编辑代码 ·t本地测试 ·s提交1Hint ·2Nudge ·3Review ·4Answer(二次确认)Tab切代码/辅导区 ·o展开详情 ·↑/↓滚动
~/.config/leetmate/studyplans/my-plan.yaml:
id: my-plan
title: 我的薄弱题
items: ["5", "53", "200"] # leetcode 题号代码推送到 main 后会运行 GoReleaser,发布 GitHub Release、npm 和 Homebrew tap。VERSION 可指定下一个 minor 或 major 版本(当前分支设置为 0.3.0);最新 tag 达到该版本后,后续 push 恢复自动递增 patch。同一 commit 的 workflow 重跑会复用已有 release tag。手动推送 v* tag 仍会触发常规 release workflow。
Go · bubbletea · leetgo · SQLite (modernc) · FSRS
MIT
