Anki add-on: FSRS : Dynamic Desired Retention (For Sound's Fork)

Dynamic Desired Retention Warning: this add-on is intended for an Anki fork/build that includes the dynamic desired-retention reviewer hook, such as JSchoreels/anki releases . It will not work on standard Anki builds that do not provide that hook. Dynamic Desired Retention lets you use different FSRS desired retention targets for different cards, based on normal Anki search queries or note-field thresholds. For example, you can keep your default deck/preset desired retention, while using a higher target for high-priority cards. Example rules: Frequency<1000 note:Japanese -> 90% tag:exam -> 95% note field Frequency , absolute threshold 1000 -> 90% note field Frequency , relative threshold Top 10% -> 90% Rules are ordered. The first matching rule is used. If no rule matches, Anki uses the deck/preset desired retention as usual. Requirements This add-on requires a recent Anki build that supports dynamic desired retention during review. How To Use Open Tools > Dynamic Desired Retention Table . Add one row per search rule, or open the field-rule tab and select a note type plus field. For search rules, enter an Anki search query in the first column. For field rules, optionally set a Scope Filter to limit the cards checked by the rule, and an Exclusion query to skip matching cards. For field rules, choose whether values are Absolute field values or Relative top-percentiles. Use Higher DR for to decide whether lower field values or higher field values should receive the higher desired retention. Enter desired retention as a percent, such as 90 . Save. Field Rules Field rules let you map note-field values to desired retention without writing a separate Anki search query for every threshold. For example, you can map Frequency values or Top 10% percentiles to different retention targets. Numeric field rules support: Scope Filter , an Anki search query that must match for the field rule to apply. Exclusion , an Anki search query that skips matching cards. Absolute thresholds, such as Frequency = 1000 . Relative thresholds, such as Top 10% , computed from matching notes at review time. Higher DR for: Lower Field Values , useful when lower numbers are more important or more work. Higher DR for: Higher Field Values , useful when higher numbers are more important. Minimum Retention , used for values beyond the least-important threshold. The threshold table also shows estimated workload. Total Workload is the projected workload from the rule, and (Current: ...) shows the current stored workload for comparison. Expected Retention summarizes the workload-weighted retention across the slices. Notes Test search queries in Anki's Browse screen first. More specific rules should be placed above broader rules. The add-on does not move cards into filtered decks. The add-on does not retroactively reschedule cards. It affects the scheduling states computed when a matching card is reviewed. Workload estimates are read-only UI estimates. Cards without FSRS stability are skipped. Troubleshooting If the menu item does not appear, check that the add-on is enabled and that your Anki build includes the required reviewer hook. If a rule does not seem to apply, copy the query into Anki's Browse screen and confirm it matches the card you expect.

GitHub repository: jschoreels/anki-addon-dynamic-desired-retention
Languages: Python, Shell