MoonshotAI / MoonshotAI/kimi-code

feat(tui): configurable frequency or opt-out for system reminders (TodoList / permission-mode / AGENTS.md / date)

Open
#3,584 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
7.5k
Forks
1.2k
Avg merge
11h 53m
Merged PRs (30d)
350

Description

Summary

The four built-in system reminders currently have no user-facing frequency control or opt-out. Measured over 7 days of real session transcripts, they independently triggered 1,376 extra LLM turns — about 13% of all LLM calls in that window.

Measured impact (7 days, 228 real session transcripts, offline wire.jsonl analysis)

System-injected turns, classified into three buckets:

bucket turns / 7d contents verdict
A. Must wake the model 140 background task / subagent completion notifications keep as-is
B. Mergeable reminders 948 TodoList stale reminder 426 · auto-permission-mode reminder 390 · AGENTS.md path reminders ~106 · interruption reminder 16 same-variant reminder repeats within one session — merge to first occurrence
C. Doesn't need the model at all 323 "Today's date is …" 305 · image-compression notices · plugin-installed notices persist to log, don't inject

97–99% of these turns independently trigger a new LLM request (verified in wire transcripts: the reminder message is immediately followed by an llm.request with no real user message in between). Buckets B + C alone account for ≥1,238 avoidable LLM calls per 7 days (~13% of total) — and each extra turn also busts the prompt prefix cache (new turn = full uncached recompute for large prefixes).

Current behavior (source pointers, 0.40.x)

  • TodoList reminder: hard-coded constants TODO_LIST_REMINDER_TURNS_SINCE_WRITE = 10 / TODO_LIST_REMINDER_TURNS_BETWEEN_REMINDERS = 10 in packages/agent-core-v2/src/features/todo/todoListReminder.ts:7-8
  • permission-mode reminder: event-triggered injection, no frequency config (agent/permissionMode/injection/)
  • AGENTS.md reminder: path-triggered, no config (agent/agentsMdReminder/)
  • date-change reminder: startup + date-change injection, no config (features/dateChange/dateChangeService.ts)
  • IAgentReminderService.register(variant, provider) has no user-facing configuration surface — each provider's cadence is baked into code

Proposed

Per-variant configuration — interval in turns, or off — e.g. in tui.toml:

[reminders]
todo_list = 50            # turns between reminders; 0 = off
permission_mode = "change-only"
agents_md = "once-per-session"
date_change = "off"

Even a single global "reminder interval multiplier / master switch" would already recover most of the cost.

Notes

  • We are not asking to remove the reminders — the TodoList reminder is genuinely useful. The issue is frequency and the inability to tune it.
  • The 7-day measurement method (offline wire.jsonl turn classification) is available on request.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with IAgentReminderService.register and the provider implementations in agent/permissionMode/injection/, agent/agentsMdReminder/, features/dateChange/dateChangeService.ts, and packages/agent-core-v2/src/features/todo/todoListReminder.ts. Trace how each reminder is injected and where tui.toml configuration is loaded. Done means users can configure or disable each listed variant and the configured cadence is respected without removing useful reminders.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
cli, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.