Repository navigation
[Ideas] edit 工具是否应该明确提示:同一文件的多个编辑不能并行执行? #3029
Unanswered
HandleCoding
asked this question in
Q&A
Replies: 1 comment
|
个人认为靠提示词去约束模型效果还是不太稳定,这个应该属于工具层,由它们自己去决定是否支持串行还是并行,如果 edit 自身支持同个文件多个 edit,那这个其实就不是问题了,甚至可以减少调用的 round 可以看下我这个dsh-better-edit,基于 hashline 设计,对于并发跟多次修改,我是这样设计的:
|
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
问题概述
edit工具面向模型的说明中,是否应该明确写出下面这条约束?目前底层文件系统的行为是安全且合理的:写操作会按照
targetKey加锁,带保护的编辑会校验会话最近观察到的文件版本。原生工具调度器也会把修改类工具按排他方式执行。不过,如果模型通过更高层的编排工具或并行调用包装器同时发起多个
edit,这些调用仍可能在第一个编辑记录新版本之前取得相同的旧版本。第一个编辑成功后,文件版本发生变化,后续调用就会因为版本过期而返回FS_STALE_VERSION。这里不是建议削弱版本保护。版本检查正在正确地防止更新丢失。想讨论的是:这种安全使用约束是否也应该明确展示给模型。
当前模型能看到的说明
当前
master分支中的tool:edit提示说明了字面匹配、replace_all和编辑前读取文件的要求,但没有提到同一文件不能并行编辑:工具描述本身也比较简短:
通用复现方式
以
/tmp/edit-probe.txt为例:edit,分别修改该文件中不同且唯一的区域。FS_STALE_VERSION。这与当前实现一致:
fs-observation-policy将会话观察到的版本作为编辑意图传递;fs-local按targetKey串行化修改,并拒绝旧的预期版本;tool-fs在编辑成功后记录新版本;建议的最小改动
建议给
tool:edit的系统提示补充一句:也可以在工具
description中加入更短的版本,确保没有加载工具专属 prompt section 的场景也能看到这一约束。为什么原生调度已经排他,仍值得写进说明?
其他可能方案
不建议在
FS_STALE_VERSION后直接自动盲重试。其他编辑改变文件后,原始字面替换可能已经不再表达相同意图;重新读取后由模型重新判断更安全。想请教维护者
edit使用约定,而不仅是内部调度属性?这是英文 Ideas 讨论 #3017 的中文问答版本,方便中文社区参与讨论。
All reactions