Skip to content

A quick one-key ai modification helper #14

@Kailian-Jacy

Description

@Kailian-Jacy

Motivation

Currently, applying the fully automated AI coder is very unreliable and feasible to be adopted in massive industry production. So I want to integrate my neovim with the lightweighted and highly interactive AI assistance.

Philosophy

  • Keep it as simple as possible, evolve it. Add AI technology evolves. Learn from the bit lesson of Avante.
  • Minimize the intervention to my usual coding as much as possible since the special intelligence help is not always stable.

Scenerios

  • Implement based on pseudocode.
  • Fix problem on the basis of comment instruction.
  • Provide Hazard Check and Suggestions for the selected code.

To put it simple, just select the region of code, query the artificial intelligence and edit the piece of code.

Demos

  • Extmark region shifting.
  • Openrouter LLM query.
  • Keymaps & configurations.
  • Buf local pending modifications.
  • Highlight color shifting.
  • Floating buffer gathering informations and display.

Features: v0: implementation based on the other plugin

GpRewrite

Finished.

Features: v1: implementation of the core functionality

Just rely on the assumption that we are working on very fast model that we are going to edit in sync mode.

  • Interaction and appearance.
    • Marks to indicate the generation working progress
    • Keymaps to stop generation. Keymaps to discard/accept pending changes and retry.
  • Core feature: Select, Added and Replacement.
    • Interaction with artificial intelligence model.
    • Templating, prompting, and the result parsing.
  • Fault tolerance and timeout control.
    • Timeout configuration.
    • Retry keymap and automatic retry.
  • Observability and benchmark.
    • Just set up benchmark mode and gave some test cases to run on.
      • This benchmark should focus on the stability and the capacity of each model following the rules we gave them, rather than how wise or how deep their understanding toward code is.
      • In order to simplify this experiment, instead of using some very complex test cases to benchmark, use some very fixed and easy to understand test cases and compare the results with the correct answers automatically, possibly with git diff.
    • Set a dashboard to display the results.

Feartures: v2

Introduce more facilities about asynchronous and to unleash the potential of using more powerful reasoning models that are more time wasting.

  • Interaction and appearance.
    • Picker to operate on edition.
    • Diff mode to select and merge.
    • [Optional] Marker to track the origin to be replaced.
  • Floating window to track the progress.
    • Reversing position from the cursor position to the region that edited by LLM.
    • Floating window scrolling display.
  • Pending status and resolve.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions