gemini-cli - ✅(Solved) Fix feat(prototype): Behavioral Tip Personalization (from my GSoC proposal) [1 pull requests, 1 comments, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
google-gemini/gemini-cli#26047Fetched 2026-04-28 06:49:59
View on GitHub
Comments
1
Participants
1
Timeline
3
Reactions
0
Participants
Timeline (top)
commented ×1cross-referenced ×1labeled ×1

Fix Action

Fixed

PR fix notes

PR #26048: feat(prototype): Behavioral Tip Personalization (one of the ideas from my gsoc proposal)

Description (problem / solution / changelog)

Summary

This is a prototype implementation of Behavioral Tip Personalization, derived from my GSoC proposal ("Adaptive Discovery: Personalized UX and Automated Knowledge Sync for Gemini CLI").

NOTE: This is a PROTOTYPE and is NOT intended for merging. It is created as a proof-of-concept for the "Personal Recommender" feature.

Details

This PR introduces a feedback loop between user behavior and onboarding:

  • Persistent State: Added featureUsageCounts to track interaction with specific CLI features.
  • Tip Metadata: Refactored INFORMATIVE_TIPS from strings to objects with relatedFeature tags.
  • Weighted Selection: Implemented a selection algorithm in usePhraseCycler that prioritizes tips for features the user hasn't used yet.
  • Instrumentation: Added usage tracking to slash commands, @mentions, and shell commands.

Related Issues

Related to #26047

How to Validate

  1. Switch to this branch: gsoc-tips-personalization-prototype.
  2. Run the CLI and trigger various features (e.g., /settings, !ls, @GEMINI.md).
  3. Observe the loading screen tips. Tips for the features you just used should appear less frequently, while tips for unused features (like mcp or todos) should be prioritized.

Pre-Merge Checklist

  • Updated relevant documentation and README (if needed)
  • Added/updated tests (if needed)
  • Noted breaking changes (if any)
  • Validated on required platforms/methods:
    • MacOS
      • npm run
      • npx
      • Docker
      • Podman
      • Seatbelt
    • Windows
      • npm run
      • npx
      • Docker
    • Linux
      • npm run
      • npx
      • Docker

Changed files

  • packages/cli/src/ui/constants/tips.ts (modified, +460/-152)
  • packages/cli/src/ui/hooks/atCommandProcessor.ts (modified, +4/-0)
  • packages/cli/src/ui/hooks/slashCommandProcessor.ts (modified, +5/-0)
  • packages/cli/src/ui/hooks/useExecutionLifecycle.ts (modified, +4/-0)
  • packages/cli/src/ui/hooks/usePhraseCycler.ts (modified, +31/-4)
  • packages/cli/src/utils/persistentState.ts (modified, +9/-0)
RAW_BUFFERClick to expand / collapse

What would you like to be added?

A prototype implementation of Behavioral Tip Personalization, derived from my GSoC proposal ("Adaptive Discovery: Personalized UX and Automated Knowledge Sync for Gemini CLI").

This prototype includes:

  1. Usage Tracking: A mechanism in persistentState.ts to count how often features (slash commands, @mentions, shell commands) are used.
  2. Personalized Tips: A refactored tips.ts with feature-associated metadata and a weighted random selection algorithm in usePhraseCycler.ts that prioritizes tips for underutilized features.
  3. Instrumentation: Hooks into slashCommandProcessor, atCommandProcessor, and useExecutionLifecycle to populate usage data automatically.

Why is this needed?

This is a proof-of-concept for the "Personal Recommender" feature described in my GSoC proposal. It aims to transform the CLI's loading screen from a static list of random tips into an intelligent, adaptive discovery system that helps users graduate from beginners to power users by highlighting features they haven't discovered yet.

Additional context

NOTE: This is a PROTOTYPE only and is not intended for actual merging. It is created as part of the GSoC 2026 proposal development process.

extent analysis

TL;DR

Implementing the proposed Behavioral Tip Personalization prototype requires integrating usage tracking, personalized tips, and instrumentation to create an adaptive discovery system.

Guidance

  • Review the persistentState.ts file to understand how usage tracking is implemented for features like slash commands and @mentions.
  • Examine the tips.ts refactoring to see how feature-associated metadata is used for weighted random tip selection in usePhraseCycler.ts.
  • Investigate the hooks into slashCommandProcessor, atCommandProcessor, and useExecutionLifecycle to understand how usage data is populated automatically.
  • Consider the implications of transforming the CLI's loading screen into an intelligent, adaptive discovery system.

Example

No code snippet is provided as the issue does not contain specific code details.

Notes

This prototype is not intended for actual merging and is part of the GSoC 2026 proposal development process, so any implementation should be considered experimental.

Recommendation

Apply workaround: Implement the proposed prototype as a proof-of-concept to test the adaptive discovery system, while keeping in mind that it's not intended for production use.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

gemini-cli - ✅(Solved) Fix feat(prototype): Behavioral Tip Personalization (from my GSoC proposal) [1 pull requests, 1 comments, 1 participants]