L7.首席
4700
0
645
在之前的探索中,我们重点分析了Cursor的原理及其关键工具edit_file的实现。为了更全面地了解当前的技术生态,我们也需要对其他主流的Coding Agent进行摸底调研,看看它们各自有哪些优秀的设计。
edit_file
本次调研覆盖了不同类型的主流AI编程助手,大致可分为以下几类:
VSCode 插件
Cline
GitHub Copilot
IDE
命令行工具
Claude Code
Gemini CLI
Aider
OpenCode
通过查阅官方文档和代码库,我们对上述Coding Agent的工具能力进行了梳理。有趣的是,Claude Code的工具命名与Aider非常相似,我们有理由推测其早期版本可能基于Aider开发。
下图清晰地展示了各大Coding Agent在各功能类别下的支持情况对比:
为了更深入地理解,下面我们逐一列举各工具的核心工具集:
Cursor
codebase_search
grep_search
file_search
web_search
list_dir
read_file
delete_file
reapply
run_terminal_cmd
update_memory
fetch_pull_request
fetch_github_issue
create_diagram
read
write
edit
ask_question
plan_mode_respond
bash
ls
grep
web_fetch
list_code_definition_names
use_mcp_tool
access_mcp_resource
load_mcp_documentation
new_task
attempt_completion
browser_action
apply_patch
create_file
insert_edit_into_file
replace_string_in_file
create_directory
semantic_search
search_workspace_symbols
list_code_usages
test_search
get_search_view_results
read_project_structure
get_doc_info
run_tests
test_failure
get_errors
run_vs_code_task
create_and_run_task
get_changed_files
run_in_terminal
get_terminal_output
get_terminal_selection
get_terminal_last_command
run_vscode_command
install_extension
get_vscode_api
update_user_preferences
create_new_jupyter_notebook
edit_notebook_file
run_notebook_cell
read_notebook_cell_output
copilot_getNotebookSummary
create_new_workspace
get_project_setup_info
fetch_webpage
github_repo
open_simple_browser
think
list_directory
search_file_content
glob
replace
write_file
read_many_files
run_shell_command
save_memory
google_web_search
Bash
Read
Write
Edit
MultiEdit
Glob
Grep
LS
WebSearch
WebFetch
TodoRead
TodoWrite
NotebookRead
NotebookEdit
exit_plan_mode
**/*.js
Task
fetch
sourcegraph
view
patch
agent
diagnostics
文件编辑(edit_file或类似工具)是Coding Agent的核心能力之一。我们选取几个代表性工具,深入分析其实现原理。
Cline (edit)
参数
file_path
edits
old_string
new_string
输出格式 返回按顺序应用文件修改的结构化结果。支持:
核心字符串匹配层次结构
const exactIndex = originalContent.indexOf(currentSearchContent, lastProcessedIndex)
indexOf()
lastProcessedIndex
function lineTrimmedFallbackMatch(originalContent: string, searchContent: string, startIndex: number)
trim()
function blockAnchorFallbackMatch(originalContent: string, searchContent: string, startIndex: number)
const fullFileIndex = originalContent.indexOf(currentSearchContent, 0)
算法特性
Gemini CLI (replace)
expected_replacements
fs.readFileSync
replaceAll()
fs.writeFileSync
currentContent.replaceAll(oldString, newString)
String.replaceAll()
\\n
\n
Claude Code (Edit)
replace_all
.replace()
.replaceAll()
replace_all=false
string.replace(oldString, newString)
string.replaceAll(oldString, newString)
纵观这些工具,我个人感觉在工具集的使用层面,各个Coding Agent并没有本质上的代差。它们都围绕一套核心的基础能力进行构建。我仍然认为以下几个是Coding Agent不可或缺的关键能力:
对于想深入研究这些开源项目实现细节的开发者,建议直接到其GitHub仓库查看源码,并结合官方技术文档进行理解,这往往是最直接有效的学习路径。
收藏0回复 显示全部楼层 举报
发表回复 回帖后跳转到最后一页
手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )
GMT+8, 2026-4-8 10:29 , Processed in 0.646035 second(s), 41 queries , Gzip On.
Powered by Discuz! X3.5
© 2025-2026 云栈社区.