Repository navigation
main_task_user.md中已经包含本组的diff文本,为什么还需要file_read_diff工具? #1336
|
main_task_user.md中已经包含本组的diff文本,为什么还需要file_read_diff工具? |
Replies: 2 comments
|
我去代码里对了一遍: 1. 模板里是两个不同的槽位
只有状态、路径、增删行数,一行 diff 正文都没有。而且函数名里的 所以模型实际拿到的是:本组 = 完整 diff,组外 = 一份光秃秃的清单。 2.
|
|
我感觉这个去掉没有必要,可以关掉了 |

我去代码里对了一遍:
main_task_user.md里其实只有本组的 diff 全文,组外文件是没有 diff 正文的,所以file_read_diff并不是多此一举。1. 模板里是两个不同的槽位
internal/config/template/prompts/main_task_user.md:{{diffs}}→<review_files>:本组文件的 diff 全文{{change_files}}→<other_changed_files>:只有文件名{{change_files}}由buildChangeFilesExceptGroup生成(internal/agent/agent.go:1626),每一项都走formatDiffEntry(同文件 1612 行),输出形如:只有状态、路径、增删行数,一行 diff 正文都没有。而且函数名里的
ExceptGroup就是在刻意把本组文件从这个清单里剔除,正是为了不跟<review_files>重复。所以模型实际拿到的是:本组 = 完整 diff,组外 = 一份光秃秃的清单。
file_read_diff补的就是后面这一半 —— 它的 DiffMap 由injectDiffMap(agent.go:608)按整个变更集的路径建好,正好覆盖组外文件。2.
file_read替代不了,因为它读的是「改完之后」file_read最终走FileReader.ReadLines,而Fil…