EditFlow is the official repository for the OOPSLA 2026 paper: EditFlow: Benchmarking and Optimizing Code Edit Recommendation Systems via Reconstruction of Developer Flows by Chenyan Liu, Yun Lin, Jiaxin Chang, Jiawei Liu, Binhang Qi, Bo Jiang, Zhiyong Huang, Jin Song Dong.
This repository contains both the prompt auto-tuning implementation and the VS Code extension for both editing process simulation and developer flow optimization.
Note
Please click the image to watch the demo video on YouTube.
Optimization
|
Simulation (digital twin)
|
EditFlow extension includes two independent but complementary core modules:
-
Digital twin simulator
- Purpose: Reconstruct and simulate the entire developer code editing flow based on commit history, visualize edit suggestions at each timestamp, and evaluate the effectiveness of code edit recommendation systems.
- Backend Service:
simulation_server.py(default port: 5001) - Configuration: VS Code
Settings > Digital Twin Simulator: Server URL
-
EditFlow Optimization
- Purpose: Optimize existing code editing assistants by maintaining the consistency of developer editing flows, providing context-aware next-edit suggestions, and supporting interactive modification/validation of suggestions.
- Backend Service:
optimization_server.py(default port: 5002) - Configuration: VS Code
Settings > Edit Flow: Server URL
Start the corresponding backend service before using each module:
- For Digital twin simulator: Run
python src/simulation_server.pyat project root (Default port 5001) - For EditFlow Optimization: Run
python src/optimization_server.pyat project root (Default port 5002) - For both modules: Start both backend services
- If you want to change the port, please refer to
server_config.iniand remember to update the extension configuration at:Settings > Digital Twin Simulator: Server URLorSettings > Edit Flow: Server URLas well.
- Start the Digital twin simulator backend service: Run
python src/simulation_server.pyat project root directory (port 5001); - Open VS Code;
- Press
cmd+shift+p(MacOS) orctrl+shift+p(Windows/Linux) to open the command palette; - Type
Commit simulationand pressenterto activate the simulation assistant; - Enter the
commit URLto be simulated, then select theSystem under testandSuggestion type; - Watch the simulation process:
- Check edit suggestions (location + content) at each timestamp;
- Check the flow keeping status of each suggestion;
- View the simulation process in real time;
- The plugin pauses after each edit suggestion is simulated (wait for user confirmation to continue);
- Click the
Resume Simulationbutton to simulate the next edit; - View the
Evaluation Resultsafter simulation completes.
- Set
Suggestion typeandSystem under testinsrc/simulation/main.py: __main__; - Run the batch simulation command:
python -m simulation.mainatsrcdirectory (ensure the Digital twin simulator backend service is running first);
- Start the EditFlow Optimization backend service: Run
python src/optimization_server.pyat project root directory (port 5002); - Open VS Code;
- Press
cmd+shift+p(MacOS) orctrl+shift+p(Windows/Linux) to open the command palette; - Type
Flow-keeper: Suggest Next Editand pressenterto activate the Optimization assistant; - Select the
Test System; - Start editing the project after initializing the assistant;
- Click the
Suggest Next Editbutton and enter an edit description to get the next edit suggestion; - View edit suggestions in the left sidebar:
- Click any suggested location to jump to the corresponding code position (edit suggestion shown in
diff view); - Modify the suggested content in the right panel:
- Click
Acceptbutton to apply the suggestion; - Click
Rejectbutton to discard the suggestion;
- Click
- Suggestions do not refresh automatically – continue browsing remaining suggestions until you click
Suggest Next Editagain.
- Click any suggested location to jump to the corresponding code position (edit suggestion shown in
For end-users, simply follow the instructions:
-
install the extension from the VS Code Marketplace.[TBD]
-
Install Python and dependencies:
- Python 3.10 +
- If you are using
conda, please make sure to activate the environment before running the command.
pip install -r requirements.txt
-
Install Node.js and dependencies:
- Node.js 18 +
npm install -g @anthropic-ai/claude-code
-
Download the backend models via command:
python src/systemUnderTest/CoEdPilot/download.py
-
Set configurations at
.configfile. -
Start backend models via command:
python src/simulation_server.py python src/optimization_server.py
For debugging, customization purposes, please follow the instructions
-
Install Node.js dependencies in the project root directory (~/EditFlow):
npm install
-
Open the project directory in VS Code, press
F5, chooseRun Extensionif you are required to choose a configuration; -
A new VS Code window (the "development host") will open with CoEdPilot extension loaded;
-
You may debug or customize the extension via the development host;
-
To pack your customized extension, make sure
yarnis installed:npm install -g yarn npm install -g vsce
-
Under the project root directory:
yarn package
The command will generate a
.vsixfile under./extension, based onpackage.jsonfile. -
For public usage, you may release it to VS Code extension market
- Please follow the VS Code Extension Marketplace guidelines;
- If you modify and redistribute this extension, please clearly indicate that your version is a fork or modification, and credit this project as the original.
-
For personal usage, you may open the VS Code command palette (
Ctrl+Shift+P/Cmd+Shift+P), then selectExtensions: Install from VSIX...and choose the.vsixfile generated in the previous step.
If you find our work helpful, please consider citing our paper:
@article{liu2026editflow,
author = {Liu, Chenyan and Lin, Yun and Chang, Jiaxin and Liu, Jiawei and Qi, Binhang and Jiang, Bo and Huang, Zhiyong and Dong, Jin Song},
title = {EditFlow: Benchmarking and Optimizing Code Edit Recommendation Systems via Reconstruction of Developer Flows},
journal = {Proceedings of the ACM on Programming Languages},
volume = {10},
number = {OOPSLA1},
year = {2026},
doi = {10.1145/3798249}
}You are welcomed report any bugs or feature requests through the GitHub issues page.
Enjoy!