Skip to content

Conversation

@luispater
Copy link

No description provided.

kaitranntt and others added 6 commits November 30, 2025 12:40
docs: add CCS (Claude Code Switch) to projects list
…ecutors

Extract applyThinkingMetadata and applyThinkingMetadataCLI helpers to
payload_helpers.go and use them across all four Gemini-based executors:
- gemini_executor.go (Execute, ExecuteStream, CountTokens)
- gemini_cli_executor.go (Execute, ExecuteStream, CountTokens)
- aistudio_executor.go (translateRequest)
- antigravity_executor.go (Execute, ExecuteStream)

This eliminates code duplication introduced in the -reasoning suffix PR
and centralizes the thinking config application logic.

Net reduction: 28 lines of code.
…-helpers

refactor(executor): dedupe thinking metadata helpers across Gemini executors
@gemini-code-assist
Copy link

Summary of Changes

Hello @luispater, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request primarily focuses on improving the maintainability and reusability of the code responsible for applying 'thinking metadata' to AI model requests, specifically for Gemini and Antigravity. By centralizing this logic into dedicated helper functions, the individual executor implementations are simplified. Additionally, the project's documentation has been updated to feature a new, related CLI tool.

Highlights

  • README Updates: The README.md and README_CN.md files have been updated to include a new project, 'CCS (Claude Code Switch)', which is a CLI wrapper for switching between AI accounts and models.
  • Refactored Thinking Metadata Logic: The logic for applying 'thinking metadata' (e.g., -reasoning, -thinking-N suffixes) to Gemini and Antigravity request payloads has been centralized and refactored into new helper functions.
  • New Helper Functions for Payload Processing: Two new helper functions, applyThinkingMetadata and applyThinkingMetadataCLI, have been introduced in payload_helpers.go to handle the application of thinking configurations for standard Gemini and Gemini CLI formatted payloads, respectively.
  • Simplified Executor Logic: The aistudio_executor.go, antigravity_executor.go, gemini_cli_executor.go, and gemini_executor.go files now utilize these new helper functions, leading to cleaner and more consistent code for processing thinking metadata.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors the logic for applying 'thinking' metadata by centralizing it into helper functions in a new payload_helpers.go file. This is a good improvement for code maintainability and reduces duplication. However, I've found an issue in the implementation of applyThinkingMetadataCLI which leads to inconsistent and inefficient behavior. My review includes a suggestion to fix this.

Comment on lines +31 to +41
func applyThinkingMetadataCLI(payload []byte, metadata map[string]any, model string) []byte {
budgetOverride, includeOverride, ok := util.GeminiThinkingFromMetadata(metadata)
if !ok {
return payload
}
if budgetOverride != nil && util.ModelSupportsThinking(model) {
norm := util.NormalizeThinkingBudget(model, *budgetOverride)
budgetOverride = &norm
}
return util.ApplyGeminiCLIThinkingConfig(payload, budgetOverride, includeOverride)
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The implementation of applyThinkingMetadataCLI is inconsistent with applyThinkingMetadata and can lead to inefficient processing. Specifically, it doesn't check if the model supports thinking before attempting to apply the configuration. This is problematic in gemini_cli_executor.go, where util.StripThinkingConfigIfUnsupported is called immediately after, causing the configuration to be applied and then potentially stripped right away if the model doesn't support it.

To improve consistency and efficiency, this function should check for model support early, similar to applyThinkingMetadata.

Suggested change
func applyThinkingMetadataCLI(payload []byte, metadata map[string]any, model string) []byte {
budgetOverride, includeOverride, ok := util.GeminiThinkingFromMetadata(metadata)
if !ok {
return payload
}
if budgetOverride != nil && util.ModelSupportsThinking(model) {
norm := util.NormalizeThinkingBudget(model, *budgetOverride)
budgetOverride = &norm
}
return util.ApplyGeminiCLIThinkingConfig(payload, budgetOverride, includeOverride)
}
func applyThinkingMetadataCLI(payload []byte, metadata map[string]any, model string) []byte {
budgetOverride, includeOverride, ok := util.GeminiThinkingFromMetadata(metadata)
if !ok {
return payload
}
if !util.ModelSupportsThinking(model) {
return payload
}
if budgetOverride != nil {
norm := util.NormalizeThinkingBudget(model, *budgetOverride)
budgetOverride = &norm
}
return util.ApplyGeminiCLIThinkingConfig(payload, budgetOverride, includeOverride)
}

@luispater luispater merged commit c6ecdf4 into router-for-me:main Dec 1, 2025
1 check passed
@luispater luispater deleted the Plus branch December 1, 2025 01:11
luispater pushed a commit that referenced this pull request Dec 6, 2025
- Added setKiroIncognitoMode() helper function to handle Kiro auth incognito mode setting
- Replaced 3 duplicate code blocks (21 lines) with single function calls (3 lines)
- Kiro auth defaults to incognito mode for multi-account support
- Users can override with --incognito or --no-incognito flags

This addresses the code duplication noted in PR #1 review.
Ravens2121 pushed a commit to Ravens2121/CLIProxyAPIPlus that referenced this pull request Dec 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants