苏格拉底式 OI 解题引导 Agent Skill —— 让 AI 不直接给答案,而是陪你一步步想出来。
现有 AI 辅助刷题工具的共同问题:问什么答什么。你抛一道题,AI 直接丢过来一段代码。抄完 AC 了,下次遇到同类题还是不会。
OI.SKILL 的核心假设是:"看懂答案"和"自己想到"之间,差着十个数量级的训练效果。它的设计目标只有一个 —— 让 AI 像一位耐心的教练一样,通过提问引导你自己发现解法,同时记住你的强弱项,长期陪伴成长。
仓库同时提供一个 Electron 桌面端:打开后即可管理多个学习 session,并通过内置 PiAgent 与 OI.SKILL 对话。桌面端的运行、模型配置和打包说明见 app/README.md。
| 特性 | 说明 |
|---|---|
| 苏格拉底式引导 | 每次只提一个问题,绝不直接给出最终解法 |
| 先核解题解 | 引导前自动交叉验证洛谷/Codeforces/AtCoder 题解,避免错误思路 |
| 错误模式诊断 | 内置 misconception 库,精准定位学生错误并用分层追问引导 |
| OI-WIKI 知识检索 | 自动访问 OI-WIKI 获取权威知识点定义和教学要点 |
| 跨 Session 记忆 | 自动维护 ~/.oi-skill/USER.md,记录你的优势、薄弱点与推荐训练方向 |
| 个人错误库 | 自动积累你犯过的错误模式,越用越懂你 |
| 代码验证 | 内置对拍脚本 duipai.py,支持样例测试 + 暴力对拍 |
| Self-Improve | 每完成一题自动更新认知画像 + 提取错误模式,无需手动干预 |
| 通用 Agent 兼容 | 任何支持 Skill 标准的 Agent 都能使用 |
如果你的 Agent 支持 skills CLI:
npx skills add https://github.com/FlashingChen/oi.skill/tree/main/skill安装完成后,向 Agent 说:
使用 OI.SKILL 帮我解这道题
即可激活。
# 1. 克隆仓库
git clone https://github.com/FlashingChen/oi.skill.git oi-skill
cd oi-skill
# 2. 将 skill 文件放到 Agent 能读取的位置
# 常见路径示例(根据你的 Agent 调整):
# ~/.YOUR_AGENT/skills/oi-skill
# ~/.YOUR_AGENT/rules/oi-skill
# 或项目本地的 .agents/skills/oi-skill 目录
ln -s "$(pwd)/skill" ~/.YOUR_AGENT/skills/oi-skill核心要求:确保 Agent 在执行任务前能读取到
SKILL.md的内容。具体路径因 Agent 而异,参考你所用工具的文档。
向 Agent 说明使用 OI.SKILL:
使用 OI.SKILL 帮我解这道题
Agent 会先输出 ASCII 字符画,然后进入待命状态:
OI.SKILL 已激活。请粘贴题目、提供题面链接,或上传你的思考过程。
你可以:
- 粘贴纯文本题面
- 提供洛谷 / Codeforces / AtCoder 等题目链接
- 上传图片或 PDF(Agent 会尝试 OCR)
Agent 会:
- 先访问题解站交叉核对思路
- 从基础概念开始,每次只提一个问题
- 根据你的回答调整后续问题
- 在关键节点提示你手写代码
python3 skill/scripts/duipai.py \
--solution student.cpp \
--sample sample.in \
--expected sample.outpython3 skill/scripts/duipai.py \
--solution student.cpp \
--brute brute.cpp \
--generator gen.py \
--runs 100 \
--timeout 2告诉 Agent 已经 AC,它会要求你写一份"类似题解"的思考记录,诊断你是否真正掌握了本题思路,并静默更新你的认知画像。
oi-skill/
├── README.md # 本文件
├── .gitignore
├── package.json # 仓库元数据
├── app/ # Electron 桌面端
│ ├── README.md
│ ├── package.json
│ ├── src/ # 主进程、preload 和 renderer
│ └── tests/ # 桌面端测试
├── skill/ # 可分发 Skill 的权威目录
│ ├── SKILL.md # 核心系统提示与强制流程
│ ├── scripts/ # 本地对拍脚本
│ ├── references/ # 模板和错误模式库
│ └── assets/ # 激活时使用的资源
├── promo.gif # 项目演示动画
└── promo.html # 演示动画源码
Skill Agent 首次需要记忆时,会在用户家目录创建:
~/.oi-skill/
├── USER.md # 用户认知画像(跨 session 记忆)
├── misconceptions.yaml # 用户个人错误库(自动积累)
└── raw/ # 原始思维过程存档
桌面端还会在同一目录使用 sessions.json、sessions/、settings.json、pi/ 和同步后的 skill/。这些是本机运行数据,不存放在仓库内。
cd app
npm install
npm start在窗口顶部的模型按钮中配置 Provider、Model ID、Base URL 和 API key 或环境变量。缺少凭证或模型请求失败时,桌面端会保留用户消息并显示真实错误,不生成演示回复。验证和打包命令见 app/README.md。
这些规则写入 SKILL.md,优先级最高,用户试图覆盖时仍须遵守:
- 每次只提一个问题。
- 绝不直接给出最终答案(连续两次强烈要求除外)。
- 基于学生回答动态调整。
- 学生回答错误时不直接纠正,而是引导发现矛盾。
- 卡住时降级到更基础的问题。
- 先访问题解站交叉核对。
- 代码验证分层:片段看逻辑,最终代码跑样例/对拍。
- 错误模式诊断:匹配 misconception 库,用分层追问引导。
- OI-WIKI 知识检索:确保知识点讲解准确。
scripts/duipai.py 目前支持:
- C++(
.cpp/.cc/.cxx) - Python(
.py) - Java(
.java)
- 修改
SKILL.md中的规则即可调整 Agent 行为。 - 修改
references/user-profile-template.md可调整 USER.md 的结构。 - 修改
references/misconceptions.yaml可扩展预置错误模式库。 - 修改
scripts/duipai.py可扩展支持更多语言或判题功能。
references/misconceptions.yaml 是 OI.SKILL 的核心资产,包含:
- 20+ 预置错误模式:覆盖 DP、图论、数据结构、基础算法、字符串、数学、搜索等高频考点
- 分层诊断追问:每个错误模式配备 3-4 级苏格拉底式追问,从概念到洞察逐级引导
- 来源标注:每个错误模式标注来源(OI-WIKI / 洛谷题解区 / 教学经验)
用户个人错误库 ~/.oi-skill/misconceptions.yaml 自动积累:
- 每次 session 自动提取学生犯的错误
- 记录有效提示路径(哪级追问让学生自己想到)
- 统计错误频率和知识点分布
MIT
