Multi Search Engine
一个面向 Research 场景的 Agent 技能。原始说明:Multi search engine integration with 16 engines (7 CN + 9 Global). Supports advanced search operators, time filters, site search, privacy engines, and Wolfra...
name: personal-tutor
description: >
🎓 Personal Tutor — Your private AI learning coach. 你的私人AI学习导师。
Formerly knowledge-digest, now rebranded and upgraded to v1.0.1.
原名 knowledge-digest,现已全面升级为 personal-tutor v1.0.1。
Full-cycle learning management: start a subject → daily lessons → quizzes →
three-layer post-lesson archiving (learning records + memory + knowledge base).
全流程学习管理:开新课→每日上课→测验→三层课后归档(学习记录+记忆+知识库)。
NEW in v1.0.1: Mandatory Post-Lesson Self-Verification Protocol — agent cannot
declare "lesson complete" until all three archive layers are verified.
v1.0.1 新增:强制课后自查协议——三层归档全部验证通过,agent 才能说"下课"。
Trigger / 触发:"start learning [subject]" / "开始学[科目]" /
"continue [subject]" / "继续[科目]" / "update learning records" / "更新学习记录"。
NOT for: casual Q&A, one-off lookups, non-learning conversations.
不适用于:随手问答、一次性查询、非学习类对话。
version: 1.0.3
changelog: |
v1.0.3 (2026-05-29):
v1.0.2 (2026-05-29):
v1.0.0 (2026-05-28): Initial release.
metadata:
tags: [learning, knowledge-management, obsidian, productivity, education, study, note-taking]
Personal Tutor turns every learning session into structured, searchable, long-term knowledge. It handles three scenarios / 三个场景:
Before executing any workflow, check for a config file at:
{workspace}/.personal-tutor-config.json
If it does not exist, run the onboarding flow / 如不存在则运行引导流程:
Ask the user these questions (one at a time, or all at once if they prefer):
D:\Learning\ or ~/Documents/Learning/obsidian — wikilinks ([[link]]), vault-basedplain — standard Markdown, folder-based / 纯文件夹notion — notes only (API integration not included)none — skip concept archiving entirely / 跳过概念归档none) — Where is your vault/notes root?D:\Obsidian\MyVault\ or ~/Notes/light — update log + syllabus + memory only / 仅更新记录+大纲+记忆full — light + extract concepts to knowledge base + refresh index / 完整归档含概念入库+索引刷新zh (Chinese), en (English), zh-en (bilingual / 中英双语), or auto (follow user's language)obsidian or plain) — Do you have a rules file that defines how concepts should be structured, named, and linked?D:\Notes\WIKI-SCHEMA.md). This file will be read before every concept extraction and its rules take priority over built-in defaults.After onboarding, create:
{
"version": "1.0",
"learningRoot": "/path/to/learning/",
"knowledgeBase": {
"tool": "obsidian",
"path": "/path/to/vault/",
"schemaPath": "/path/to/WIKI-SCHEMA.md"
},
"archiveDepth": "full",
"language": "auto",
"subjects": {}
}
The subjects field will be populated as new subjects are added.
User says "start learning [subject name]" or "open a new subject: [name]"。
中文触发:"开启[学科名]学习"、"新建学科[学科名]"。
.personal-tutor-config.json to get learningRoot and preferences.{learningRoot}/ for existing subdirectories:大学专业知识/, 职业发展/, Academic/, Professional/), they are treated as categories / 分类。Present them to the user and ask which one the new subject belongs to. If none fit, offer to create a new category.{learningRoot}/ is flat (no subdirectories), the subject goes directly under {learningRoot}/.category.{learningRoot}/{category}/ (or {learningRoot}/ if no category), create a folder named after the subject.{learningRoot}/{category}/{subject}/syllabus.md⏳ Pending / 待学.{learningRoot}/{category}/{subject}/learning-log.mdsubjects: "subject-name": {
"currentDay": 1,
"category": "大学专业知识",
"syllabusPath": "{learningRoot}/{category}/{subject}/syllabus.md",
"logPath": "{learningRoot}/{category}/{subject}/learning-log.md",
"status": "active",
"startedAt": "YYYY-MM-DD"
}
archiveDepth = full and knowledgeBase.tool ≠ none) — Create an empty subject folder under {knowledgeBase.path}/ if it doesn't exist.✅ New subject "[Subject Name]" is ready. / 新学科"[学科名]"已开启。
Created / 已创建:
📋 Syllabus: {category}/{subject}/syllabus.md
📝 Learning log: {category}/{subject}/learning-log.md
⚙️ Config updated / 配置已更新
You're all set for Day 1. Say "start learning [subject]" when ready.
User says "start learning [subject]" or "continue [subject]"。
中文触发:"开始[学科名]学习"、"继续[学科名]学习"。
.personal-tutor-config.json.syllabus.md and learning-log.md to understand where we are.📚 Today's lesson on [Subject] (Day [N]) is complete. / 今日课程完成。
Covered / 内容: [brief summary]
Mastery / 掌握: [assessment]
Issues / 问题: [any problems noted]
✅ Archive verified / 归档自检:
📁 Learning records: updated
🧠 Knowledge base: [N concepts created/updated, or "no changes"]
⚙️ Config: updated
Ready for Day [N+1]! / 准备好下一课了!
User says "update learning records" or "archive today's learning"。
中文触发:"更新学习记录"、"归档今天的学习"。
This is the most important scenario — it turns a conversation into permanent knowledge.
这是最关键的步骤——把对话变成永久知识。
Append to the learning log (path from config):
## Day [N] — YYYY-MM-DD
**Content / 内容:** [summary of what was covered]
**Mastery / 掌握程度:** [good / okay / needs review]
**Quiz results / 测验成绩:** [scores & wrong answers if applicable]
**Issues / 遇到问题:** [concepts the user struggled with]
**Next / 下一步:** Day [N+1] — [next topic from syllabus]
In syllabus.md, mark the current phase/day as ✅ Complete / 完成. If a milestone was reached, note it.
In .personal-tutor-config.json, update:
"subject-name": {
"currentDay": N+1,
...
}
If the agent has a memory system, update it with the subject's new progress.
Only if archiveDepth = full and knowledgeBase.tool ≠ none.
Follow the Knowledge Base Rules section below. If a custom schemaPath is configured, read that file first — its rules take priority over built-in defaults.
从当日课程提炼核心概念,严格按照下方「知识库规则」章节执行。如配置了自定义 schema 文件,先读取它——其规则覆盖内置默认。
If no new concepts were introduced: note this in the report / 如无新概念,在汇报中说明。
✅ Learning records updated. / 学习记录已更新。
📚 Subject: [Subject Name]
📍 Progress: Day [N] → Day [N+1]
🆕 New concepts: [list, or "none"]
📁 Archived to: {path}
🧠 Knowledge base: [updated / no changes]
⚙️ Config updated / 配置已更新
🚨 THIS IS A RED LINE. DO NOT CROSS IT.
这是红线。不可越界。
Every agent that teaches a lesson via this skill MUST self-verify all three layers below before telling the user "lesson complete" ("学完了"/"done"/etc). If any layer is missing, you are NOT done. There is no exception. There is no "I'll do it later." Fix the gap now.
每个使用此 skill 教课的 agent,在告诉用户"学完了"之前,必须自检以下三层。少一层就不是"学完了"。没有例外。没有"待会补"。现在修。
After every lesson (whether triggered via Scenario 2 or via the agent's own workflow), the agent MUST self-verify the following three layers before declaring the session complete:
| # | Layer / 层 | What to check / 检查内容 | How to verify / 验证方式 |
|:-:|-----------|------------------------|------------------------|
| 1 | 📁 Learning Records / 学习记录 | Learning log appended with new knowledge + quiz results; syllabus marked as complete | Read the last few lines of the log file; check syllabus for ✅ mark |
| 2 | 🧠 Agent Memory / 智能体记忆 | MEMORY.md or equivalent updated with current progress | Read the subject's progress line in memory |
| 3 | 📝 Knowledge Base / 知识库 | Each core concept has its own .md file with proper frontmatter, bilingual content, and wikilinks | List files in the subject's knowledge base folder; verify new files exist and are non-empty |
Before saying anything that means "done", mentally run this checklist:
1️⃣ D盘/Learning records → ✅ ?
2️⃣ Agent memory → ✅ ?
3️⃣ Knowledge base → ✅ ?
→ All three checked? NOW you can say "lesson complete."
Only skip knowledge base archiving if:
archiveDepth is set to light (not full), ORknowledgeBase.tool is set to none, ORIn all other cases, Layer 3 is mandatory.
If any verification fails:
If the user catches you skipping a layer (they will notice):
This protocol is designed for environments where different agents may handle different sessions. Each agent is independently responsible for completing all three layers. Do not assume a previous agent already did it — verify.
⚠️ If a custom
schemaPathis configured, read that file before every concept extraction — its rules take priority over the defaults below.
如配置了自定义 schema 文件,每次提取概念前先读取它——其规则优先于以下默认。
When extracting concepts from a lesson, follow these rules strictly:
从课程提炼概念时,严格遵循以下规则:
.md file. Never bundle multiple concepts into one file.{NN}-{ConceptName}.md (e.g., 01-Derivative.md, 01-导数.md){knowledgeBase.path}/.Every concept file must include:
---
aliases:
- ConceptName
- 别名1
- 别名2
---
# ConceptName / 概念名
> One-line summary. 一句话概述。
## Core Content / 核心内容
...
## Related / 关联
- [[path/to/related-concept|Related Concept]] — relationship description
aliases — list synonyms and translations for searchabilitylanguage settinglanguage = zh-en, output bilingual (Chinese + English)Obsidian (wikilink) mode:
[[full/path/to/file|Display Name]] format — full path from vault root, pipe (|) without spaces[[01-Derivative]], not [[Derivative]])[[OtherFolder/SomeFile|Display]]Plain Markdown mode:
[Display Name](../folder/file.md)Bidirectional linking / 双向链接:
💡 方法借鉴 (method reference), 💡 思维模型类比 (mental model analogy)Before creating any new file, check for existing content:
aliases in frontmatter)⚠️ 待确认 and flag to the user / 发现矛盾则标记待确认If the knowledge base has an index file (e.g., 00_概念索引.md) or subject outlines (e.g., XX-XXX总纲.md):
After creating or modifying knowledge base files:
.personal-tutor-config.json| Field | Type | Description |
|:------|:-----|:------------|
| version | string | Config schema version ("1.0") |
| learningRoot | string | Absolute path to the learning directory / 学习资料根目录 |
| knowledgeBase.tool | string | "obsidian" / "plain" / "notion" / "none" |
| knowledgeBase.path | string | Absolute path to vault/notes root / 知识库路径 |
| knowledgeBase.schemaPath | string | (Optional) Path to custom knowledge base rules file / 自定义规则文件路径 |
| archiveDepth | string | "light" (log + syllabus + memory) or "full" (includes knowledge base + index) |
| language | string | "zh" / "en" / "zh-en" / "auto" |
| subjects | object | Keyed by subject name, each containing currentDay, category, syllabusPath, logPath, status, startedAt |
{learningRoot}/
├── {Category/分类}/
│ ├── {Subject Name/学科名}/
│ │ ├── syllabus.md
│ │ └── learning-log.md
│ └── {Another Subject}/
│ ├── syllabus.md
│ └── learning-log.md
├── {Another Category}/
│ └── ...
└── ...
{knowledgeBase.path}/
├── {Subject Name}/
│ ├── 01-concept.md
│ ├── 02-concept.md
│ └── ...
└── (existing vault structure preserved / 现有结构保留)
| Situation / 情况 | Handling / 处理方式 |
|:----------|:---------|
| User forgot which day they're on / 忘记学到哪了 | Read config → currentDay, confirm with user |
| User wants to skip ahead / 想跳过某天 | Update config to the new day, note in log |
| User restarted a subject from scratch / 重启学科 | Archive old log (rename with date suffix), create fresh files |
| Multiple subjects in one session / 同一会话多学科切换 | Process each archive command independently |
| Knowledge base tool is none / 未配置知识库 | Silently skip Steps 5-6 in Scenario 3 |
| Config file is corrupted/missing / 配置文件损坏或缺失 | Re-run onboarding; old learning files are preserved |
| Subject name has special characters / 学科名含特殊字符 | Sanitize for filesystem: replace <>:"/\|?* with - |
| Agent skipped knowledge base update / Agent 漏了知识库归档 | v1.0.1 新增。This is the most common failure mode. Recovery: (1) Check if the subject folder exists at {knowledgeBase.path}; (2) Read the latest learning log to identify which concepts were taught; (3) Create/update .md files for each missing concept; (4) Run Post-Lesson Self-Verification Protocol; (5) This failure suggests the agent DID read the skill but skipped verification — after recovery, the agent should update its local rules (SOUL.md, TOOLS.md, etc.) to prevent recurrence. |