Learning Coach

by Steven
5
4
3
2
1
Score: 50/100

Description

Reviews

No reviews yet.

Stats

1
stars
41
downloads
0
forks
9
days
6
days
6
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
6
commits

Latest Version

7 days ago

Changelog

0.9.4 — Separate local connection settings from learning data

Learning progress, answers, active sessions, courses, and ordinary preferences are now stored in the syncable plugin data.json without the model service address or API key. The API key and base URL are stored in the local, unencrypted config.json, which is excluded from Git and the release package.

When upgrading, Learning Coach migrates existing connection details to config.json, writes the new data format, and removes connection fields from local data backups and historical snapshots. If you synchronize plugin data between devices, keep config.json excluded and finish synchronization before switching devices; Learning Coach does not merge concurrent learning changes.

Validation

Passed: 91 automated tests, type checking and build, bundle and migration smoke checks, and 28 isolated real-Obsidian scenarios with 34 fixture HTTP requests. The release package check confirmed the archive contains only runtime files and no personal data or configuration. The Obsidian scenarios used a test vault and synthetic credentials; mobile layouts were emulated, not tested on a phone.

README file from

Github

Learning Coach

Turn your Obsidian course notes into a study routine: confirm knowledge points, plan your available time, practice, correct mistakes, and revisit the material with different questions.

Version 0.9.4 is a pre-release for acceptance testing, not the final 1.0 release. The interface defaults to English and supports Simplified Chinese. Choose your language in Settings → Learning Coach → Language / 语言. New coaching responses follow that language; your notes, answers, and previous records are not translated or rewritten.

User guide · Chinese user guide · Release notes

What you can do

  • Organize a notes folder as a course, exclude unrelated material, and confirm source-linked knowledge points.
  • Set question types for each course: single choice, multiple choice, true/false, and short answer. Use fixed proportions or let the coach adapt within your choices.
  • Plan a short study session around your available time, due reviews, and learning gaps.
  • Answer questions, ask for hints or explanations, and return later for independent review.
  • Run a unit assessment with feedback held until submission. Request a reassessment or invalidate a flawed question without losing the original answer.
  • Inspect local agent traces and export the last seven days for troubleshooting.

Generated questions are practice based on your material, not official exam questions. Source matching and model review reduce some errors but do not guarantee a correct answer. The plugin does not predict exam scores or pass rates.

Install the pre-release

Requires Obsidian 1.13.7 or later. Older versions have not been verified.

  1. Build the plugin or obtain the learning-coach-0.9.4.zip package from the maintainer.
  2. Put its learning-coach folder under <vault>/.obsidian/plugins/.
  3. Reload community plugins and enable Learning Coach.
  4. Open its settings, choose your language, and enter your model connection details.
  5. Select Test connection. This sends a short test message, not your notes, and may incur a small provider charge.

This project has not yet been published in the Obsidian community directory. Updating the plugin requires replacing only main.js, manifest.json, and styles.css; keep your existing data files.

Start studying

Open Courses → Add course, choose a notes folder, preview the included notes, and set your daily budget and question types. Each note becomes a unit.

Expand a unit and select Extract knowledge points from notes. Initial candidates are generated locally. Check the source quotes, then confirm the points you want to study. Optional model-assisted splitting and syllabus mapping send only the material described in their dialogs and require you to save the preview.

On Today, plan tasks for your available time. You can also study a confirmed point directly, or start from the current note or selected text without creating a course. Long notes use a section picker; each session accepts up to 24,000 source characters and each answer up to 6,000 characters.

Connect a model

Use an OpenAI-compatible chat endpoint or the native Ollama API. Enter the provider's base URL, API key, and exact model identifier. Compatible endpoints accept a root URL, a /v1 URL, or a complete /chat/completions URL; the settings page shows the resolved endpoint. Custom gateways may require a version prefix.

Ollama requires an already running, reachable service and an installed model. The plugin does not download or start models. On a phone, 127.0.0.1 refers to the phone, not your computer.

Real-provider quality evaluation remains pending. A successful connection test only confirms that the service returns text; it does not establish question quality.

How learning evidence works

Objective questions are graded locally against the answer saved when the question was generated. Short answers and reassessments use your model. Hints, explanations, reused questions, and self-reported confidence remain part of the evidence.

A knowledge point can become provisionally stable only after independent correct answers to different questions at least a day apart. Later gaps return it to practice. The progress bar counts assessed questions, not mastery.

Question settings are frozen for an active session. Changing a course affects future sessions. Fixed proportions balance cumulative displayed questions, including skips; short sessions may not match the proportions exactly. Invalidated questions remain in history but are excluded from progress and review calculations.

Caching and usage

The local response cache is enabled by default. It stores validated question-generation and question-review responses for seven days, with a limit of 50 entries and about 1 MB. Hits survive restarts and issue no model request. Grading, reassessment, hints, and follow-ups are not reused from this cache.

Cache keys depend on request content and connection settings. English and Chinese prompts produce different keys. Changing connection settings or temperature clears the cache. You can disable or clear it in settings. Cache corruption or write failure does not delete study records.

Provider-side context caching is separate. The plugin displays token counts only when reported by the service; it does not estimate costs or infer saved tokens from character counts.

Agent traces

Traces are enabled by default and written to a normal vault folder:

Learning Coach/Traces/YYYY-MM-DD/<trace-id>.md

Existing configured folders are preserved, including folders named in Chinese. Changing the interface language does not rename or move files.

Each action has a separate file with request timing, reported usage, cache hits, validation results, local grading, and save results. Retries get new trace IDs linked to the same operation digest. An unfinished trace may mean an action is still running or the app closed before its result was recorded.

In settings, View agent traces shows the latest 100 records. Export last seven days reads up to the 1,000 most recently modified trace files and skips damaged files. Exports include validated fields, not text manually added to a trace. Old traces do not expire automatically; you can delete their date folders yourself.

Traces do not contain API keys, service URLs, note bodies, complete prompts, model responses, or your answers. Timing, usage, behavior, and identifier digests are still personal information. Check exports before sharing. These are execution records, not a model's internal reasoning.

Desktop, mobile, and sync

The same bundle targets desktop, iOS, and Android. Desktop uses a sidebar; mobile uses a full tab. Desktop flows and mobile-sized layouts have been tested. iOS and Android device testing is still pending.

Trace files and exported summaries can sync as ordinary notes if your sync service includes their folders. Course progress, answers, learning preferences, and active sessions live in the plugin's data.json; syncing them depends on whether your service includes plugin configuration files. The local config.json stores the unencrypted API key and base URL and should stay excluded from sync.

Before syncing plugin data between devices, keep config.json excluded and allow data.json if you want learning progress to travel with the vault. Back up before upgrading from older versions, since previously synchronized copies or file history may still contain old credentials; rotate a key if it was exposed.

There is no automatic conflict merge for simultaneous study on multiple devices. Finish or pause on one device, wait for saving and sync, then switch. If plugin data is excluded from sync, traces can sync while learning progress does not. Automatic cross-device conflict merging is not supported.

Data and privacy

Source snapshots, answers, courses, plans, assessments, active sessions, and ordinary learning preferences are stored in the current vault's plugin data.json. The previous save is retained in data.backup.json; it excludes connection secrets. The local config.json stores the API key and base URL in plaintext. The separate learning-cache.json may contain source quotes and generated questions, but not connection keys or complete requests. Exclude config.json, backups, and cache from sync services and Git.

Starting a study action sends selected material and relevant answers to your configured model service. Optional model suggestions also send the material described in the dialog. The plugin does not automatically upload the whole vault. Your provider and sync service have their own data policies.

Older data-format upgrades may retain data.pre-0.9.0.json; the current data format is 5. Back up privately before downgrading. An older snapshot does not include later work. Clearing course records does not delete source notes, exported notes, caches, or existing backups.

The release package includes only three runtime files, never personal configuration, caches, traces, or test vaults. See Security and privacy.

Development and validation

Use Node.js 22 or later and the committed lockfile.

npm ci
npm test
npm run build
npm run smoke
npm run test:e2e
npm run release:check
npm run check:public

End-to-end tests require a local Obsidian installation. They use an isolated vault and a local fixture service, never your personal API configuration. Mobile emulation is not a real-device result.

npm run package creates the installable folder and ZIP. npm run benchmark uses synthetic data. npm run evaluate:model and npm run evaluate:checker use explicit environment variables for anonymous provider evaluations; they do not read personal plugin settings.

See the contribution guide. PDF/OCR import, web question search, voice, timed full-length mock exams, and multi-device conflict merging are not implemented.

For bug reports, include the version and reproduction steps. Do not upload API keys, complete configuration files, or private course notes.