本地优先 · v1.4.0
Δ 从改动与文档中学习

知返 AhaDiff

读懂这次改动。

Git · 文件 · Diff · 快照 · Markdown

自己的修复、同事的修改、AI 输出或一份 Markdown,都可以用来学习。先在本地预览来源,再对照证据阅读讲解,之后回来复习问题。文件与文档学习无需 Git。

v1.4.0 · 五种来源,同一套学习流程

Get Started GitHub
auth/session.py
@@ -12,2 +12,6 @@ class SessionManager:     def validate(self, token: str): -       return jwt.decode(token, KEY) +       try: +           payload = jwt.decode(token, KEY, algorithms=["HS256"]) +           return payload if payload["exp"] > time.time() else None +       except jwt.InvalidTokenError: +           return None
AhaDiff 证据链课程示例
verified解码调用显式传入 algorithms=["HS256"] auth/session.py:14
verified新增代码将 payload["exp"] 与 time.time() 比较 auth/session.py:15
weak新增 jwt.InvalidTokenError 异常处理;运行行为仍需测试 auth/session.py:16
把解释和来源放在一起看。AhaDiff
选择来源

从你手头的材料开始

欢迎、快速上手和使用指南共用五个入口。AI 工具指引是可选项。

Git 改动

已有 Git 仓库时,选择工作区修改或提交范围。可以学习自己的 bug 修复、同事的 commit 或 AI 编辑。

两份文件

分别点选或拖放修改前、修改后的文件。代码练习、SQL、配置、Markdown 和 Notebook 两版本都能从这里开始。

粘贴改动

粘贴从 review 或其他工具复制的统一 diff。先看安全处理后的变化预览,再决定是否生成课程。

本地快照

修改前选一个文件、命名并明确保存,下次选择修改后文件比较。仅保存过滤后的学习基准,不是完整备份,也不覆盖原文件。

单份 Markdown

选择一份 .md 或 .markdown,预览原文并从章节、段落引用中学习。不伪造 diff,引用只支持这篇文档写了什么。

需要交代背景时,可在对比中添加 Review 说明(最多 8 KiB)。说明只提供上下文,不计入来源证据。

HOW IT WORKS

从变化到课程和复习

不同来源接入同一条学习流程,结论保留证据状态。

1
Git / files / patch / snapshot / document

选择并预览来源

Git、两份文件、patch、快照或单篇 Markdown。先本地预览,修改输入后重新预览;保存快照需要明确操作。

→
2
verify

沿引用核对来源

查看 Markdown 章节、Notebook 单元格或 JSON/TOML/YAML 键路径。每条声明保留证据状态;不支持的结构可能使用较弱的行级证据。

→
3
learn

生成学习材料

阅读课程,回答混合测验。需要预测、补全和解释错误的开放题时,在预览前启用“主动迁移练习”。知返不执行练习代码。

→
4
ratchet

查看课程质量

查看评分和必需的证据检查,可选模型评判会补充反馈。通过自己的作答和后续回忆,评估学到了多少。

FEATURES

阅读、核对、练习、复习

读解释、查证据、独立作答,再按计划复习。

带来源链接的声明

断言附来源行、结构定位、前后侧、内容哈希和证据状态。源文本存在、语义解释和运行效果分别判断。

练习与间隔复习

主动迁移练习需显式开启,默认仍为混合题。先尝试,再对照参考并自评,复用原有 SRS。Challenge 用于复现已看过的原解。

选择讲解深度

Full → Hint → Compact 三阶段学习撤架。由 FSRS 记忆稳定度自动驱动,越熟悉提示越少。

八个评分维度

Accuracy、Evidence 等维度与安全门禁衡量产物质量。Score/Judge 不代表实际掌握度,也不能替代真实学习样本。

课程质量记录

improve-run 可在已有运行上重新生成课程,仅在确定性评分提高时保留新结果;原运行保留。

控制发送的内容

strict_local / redacted_remote / explicit_remote 三档隐私。远端请求前会执行隐私与脱敏门禁。

选择你的模型

使用本地模型,或自备密钥接入远程服务。设置页展示模型限制和受支持的思考选项。模型出现在列表中,不代表账号能调用它。

可选的 AI 工具集成

设置与指南共用 16 个当前工具目标的目录。无需安装集成也能使用文件、patch 和普通 Git 学习。

TAKE IT WITH YOU

学完之后,带着走

把学习记录导出、复习,或接进你的 agent 与 CI。

导出到 Anki / TSV

WebUI 一键导出 Anki .apkg;CLI 用 export-results 写 results.tsv,export preview 生成本地静态预览包。

按需接入 AI 工具

需要自动化时,再配置 Claude、Codex、Cursor、GitHub Actions 或 Git hooks 等项目级指引。

TUTORIAL VIDEO

看一遍完整流程

从 learn 到复习,一个真实 run 的完整演示(带字幕)。

视频展示早期界面。快照、Markdown 学习与主动练习请按 1.4.0 使用指南操作。

SEE IT IN ACTION

习惯终端,也能直接学习

先配置 provider,再对比工作目录内的两份文件。Git 用户也可使用 --last 或提交范围。

Terminal
$ pipx install ahadiff
$ cd my-project
$ ahadiff learn --compare before.py after.py --force-learn --open
 
✓ 捕获 1 组文件版本,6 行变化
✓ 生成 3 条 diff 锚定 claim (3 weak)
✓ Created lesson (full/hint/compact)
✓ Generated 5 quiz questions
✓ Score: 86/100 (PASS) ; weakest: quiz_transfer
→ Opening http://127.0.0.1:8765 ...

示例输出,不是验证结果。分数、题数和证据状态取决于输入与配置。

WEBUI

界面预览

以下为已有界面示例;五来源与主动练习按本页和用户指南操作。

Dashboard
运行面板:运行记录、分数、棘轮轨迹
Lesson
课程页:带证据链的解释
Diff
差异查看器:claim 高亮
Quiz
测验:证据在作答前锁定
Review
复习:FSRS 间隔重复
Concept graph
概念图谱:跨 diff 概念
Run detail overview
运行详情:概览与分数
Settings
设置:供应商与偏好
适用场景

这些改动,可以怎么学

选择来源后,共用同一套课程、测验、复习和质量历史。

你要学什么怎么输入证据边界
自己的修复、同事或 AI 的提交Git 改动:工作区或提交范围回查变化行;有可用代码上下文时补充符号证据。
代码练习、SQL、配置、Markdown两份文件:修改前与修改后比较文本来源,证据不足的结论会标明状态。
Notebook 两个版本选择两份 .ipynb 文件按单元格比较来源,不执行 Notebook。
复制来的 review patch粘贴改动:统一 diff 文本只有 diff hunk 支持时使用较弱证据,不冒充仓库符号证明。
一份 Markdown 文档单份 Markdown:.md / .markdown独立 document 来源,章节与段落引用不证明外部事实。
希望下次继续比较的文件显式保存本地快照,再选择修改后文件过滤后的学习基准,最多 100 份 / 16 MiB;不是原文件备份。
PDF、网页或任意目录自动快照暂不支持请使用单份本地 Markdown、统一 diff 或两份文本文件。

来源引用确认文本与位置;运行时行为需要另行测试。目录对比与 Git hooks 需要 macOS/Linux。

COMMANDS

常用命令

按任务选择命令,把 RUN_ID 替换为运行结束后输出的 ID。

ahadiff init在仓库里初始化 .ahadiff/ 状态目录
ahadiff provider test --help查看提供商配置参数
ahadiff learn HEAD~1..HEAD把一段 diff 变成带证据的课程
ahadiff snapshot save before.md --name "Baseline"显式保存过滤后的本地学习基准
ahadiff learn --document reading.md从一篇 Markdown 原文生成课程
ahadiff learn --compare before.py after.py --review-context-file notes.md为文件对比添加 Review 说明,补充背景
ahadiff learn --document reading.md --active-practice显式生成主动迁移题;默认运行保留混合题
ahadiff regenerate RUN_ID --only quiz --active-practice将本次测验替换为主动练习,重新评分并清除旧评判结果。使用 --mixed-practice 可生成混合题。
ahadiff quiz <run_id>对刚学的 run 做主动回忆测验
ahadiff review按 FSRS 复习到期卡片
ahadiff verify <run_id>重新校验 claims 与评分
ahadiff improve-run <run_id>重新生成课程,仅当确定性评分更高时保留;任何安装方式可用(含 pip)
ahadiff serve在仓库或普通目录打开本地 WebUI
ahadiff export preview RUN_ID --out ./preview生成本地静态预览包
ahadiff watch工作区变更自动 learn
ahadiff install hooks --auto-learn每次 commit 后后台自动 learn
ahadiff mcp-server面向 AI 工具的只读 MCP server(7 个工具)

中英使用指南介绍输入限制、模型配置、导出与平台要求。

开始使用

三步开始

几步之内,从安装到第一节课。

1

打开本地界面

用 pipx 或 uv tool 安装。在准备保存课程的文件夹运行 ahadiff serve,再到设置添加本地或远程提供商。普通文件夹也可以。

已有安装?先停止服务、备份 .ahadiff/,再运行 pipx upgrade ahadiff 或 uv tool upgrade ahadiff。1.4.0 安装包包含 WebUI。
$ pipx install ahadiff
$ cd your-folder
$ ahadiff serve
2

选来源,预览变化

选择五种来源之一。文件每份最多 256 KiB,粘贴 diff 最多 64 KiB。快照先显式保存,单份 Markdown 预览原文;预览不调用 LLM。开始学习使用你的 provider 与隐私设置。

欢迎 → 两份文件 → 放入修改前后文件 → 预览变化 → 开始学习

3

读课、作答、复习

先作答,再揭示参考答案。对照答案评估理解,卡片到期后回来复习。课程评分描述材料质量,不代表掌握程度。

课程 → 差异 → 测验 → 复习

FAQ

常见问题

我的代码会被上传吗?
默认 strict_local,不向任何远端模型发送内容。要用远端模型时,必须显式切到 redacted_remote 或 explicit_remote;远端请求前会执行隐私与脱敏门禁。
没有 Git 仓库或 AI 助手也能用吗?
可以从两份文件、粘贴 diff、本地快照或单份 Markdown 开始。在普通文件夹运行 ahadiff serve 并配置 provider。init 和 doctor 仍要求 Git;无需为这些来源专门建仓库。
支持哪些模型?
可以在本地使用 LM Studio 或 Ollama,也可以自备密钥接入 OpenAI、Anthropic、Gemini、Azure、NewAPI 或 OpenAI 兼容服务。选择与接口匹配的协议,开始学习前测试所选模型。
要花钱吗?
AhaDiff 本身免费。预览与显式保存快照不调用 LLM;provider 探测和课程生成可能向所选服务发请求,费用按该服务计。
高分代表我已经学会了吗?
分数用于检查课程材料质量。是否学会要看你能否独立解释、作答和完成类似修改。最终判定来自确定性评分和硬门禁;可选 LLM judge 的建议不覆盖它。