Files
gemini-cli/plans/topic-grouping.md
Abhijit Balaji 400da42cf3 feat(core): implement linear semantic topic grouping system
Introduces a 'create_new_topic' tool to organize agent work into logical chapters in the UI.

Key changes:
- Added TopicManager singleton to track active session phase.
- Updated Scheduler to prioritize topic markers at the start of batches.
- Injected active topic context into prompt footers for model alignment.
- Removed 'Explain Before Acting' mandate in favor of semantic headers.
- Added behavioral eval to ensure model compliance with grouping.
2026-03-13 09:16:25 -07:00

2.3 KiB

Plan: Linear Semantic Topic Grouping (Chapters)

Implement a semantic topic grouping system to organize tool calls into sequential "Chapters" in the UI using a dedicated tool and prompt feedback.

1. Core Component: Topic Management

Create a lightweight TopicManager to maintain the session's current semantic state.

  • Location: packages/core/src/tools/topicTool.ts
  • Role: A singleton that stores the activeTopicTitle.
  • Logic:
    • setTopic(title: string): Updates the current title.
    • getTopic(): Returns the current title (defaults to undefined).

2. The create_new_topic Tool

A nearly No-OP tool that acts as the trigger for UI "Chapter" breaks.

  • Name: create_new_topic
  • Parameters: title: string (e.g., "Researching Codebase", "Implementing Fix").
  • Execution Logic:
    • Calls TopicManager.setTopic(title).
    • Returns a simple confirmation message: Topic changed to: "${title}".
  • UI Impact: The UI detects this tool name in the stream and renders a visual divider/header.

3. Scheduler Ordering (Turn-Ahead Alignment)

Ensure the "Chapter Header" appears before actions in a single turn.

  • Location: packages/core/src/scheduler/scheduler.ts
  • Change: In _startBatch, sort incoming toolCalls. Move create_new_topic to index 0.
  • Reason: Correct UI rendering order for simultaneous calls.

4. Context Reinjection (Loop Feedback)

Keep the model aware of its current "Chapter" to prevent redundant calls.

  • Location: packages/core/src/prompts/promptProvider.ts
  • Change: Append the current topic to the system prompt footer (e.g., [Active Topic: Researching Auth Flow]).
  • Instruction: Add mandate: "If the current active topic no longer describes your current phase of work, use create_new_topic to start a new chapter."

5. System Prompt Refinement

Update packages/core/src/prompts/snippets.ts with guidance.

  • Guidance: "Use create_new_topic to organize your work into logical chapters. Call it when transitioning between major steps (e.g., Research -> Strategy -> Implementation)."
  • Constraint: Forward-only semantic marker.

6. Verification & Evaluation

  • Behavioral Eval: Create evals/topic_grouping.eval.ts.
  • Validation: Run npm run preflight to ensure monorepo-wide stability.