Repository navigation
Agent Harness 工具体验与执行反馈问题汇总 #1106
Description
Activity
- addedbugSomething isn't workingSomething isn't workingarea: agent-runtimeAgent execution, subagents, tools, and runtime behaviorAgent execution, subagents, tools, and runtime behavior
on Sep 26, 2026 在最新 main(
c1afefea7)上核实了 Read/Write/Edit 里的一个子项:legacy 形态的Edit(只有old_string/new_string,没有tag/ops)在old_string只匹配行内一部分时,会静默丢掉同行未匹配的文本,却仍然返回成功和新 tag。复现:用
c1afefea7编出的真实pi-desktop-host-core,经 stdiotools.execute(先 Read,再 legacy Edit),按字节对比磁盘文件:文件 old_string → new_string 期望 main 上实际 let x = foo;= foo;→= bar;let x = bar;= bar;value = 1; // keep mevalue = 1;→value = 2;value = 2; // keep mevalue = 2;call(alpha, beta);alpha→gammacall(gamma, beta);gammaa⏎foo⏎b⏎foo⏎→ ``a⏎b⏎a⏎⏎(下一行b也被删了)跨行且首尾落在行中的匹配、以及 CRLF 文件,同样会丢字。整行精确匹配是正常的(已有用例
edit_accepts_legacy_old_string_new_string_shape)。根因:
crates/host-core/src/tools/mod.rs:1547-1555(#1269 为 #1217 加的适配)只用匹配偏移算出首尾行号,然后发出PUT first.=last:,body 直接是new_string。PUT N.=M是整行替换(hashline/apply.rs:129-137),所以首行未匹配前缀、末行未匹配后缀都会丢。另外当old_string以\n结尾时,old.split('\n').count()会多算一行,下一行也被删掉。拟议修复:只改 legacy 分支,
tag+ops路径不动。- 先算出子串结果:
text[..start] + new_string + text[start + old.len()..] - 裁掉未变的首尾行,再对变更区间发一条行锚定 op(
PUT a.=b:/CUT a.=b/PUT >N:) - 仍走现有的
hashline::apply_edit+ 当前 live tag
未找到 / 歧义匹配仍返回
EDIT_LEGACY_MATCH_FAILED,相同内容替换仍返回EDIT_NO_CHANGE。本地已有修复(
tools/mod.rs约 50 行)和表驱动回归测试:其中 8 个用例在c1afefea7上失败,修后全部通过。cargo test -p host-core --locked:757 通过(main 上 755 + 2 个新测试)- 上面的 stdio probe:修后 7/7 字节一致,main 上 1/7
pnpm test:e2e:两边都是 23/23
如果还没有人在做这块,我打算开一个只覆盖这个子项的
fix(tools)PR,issue 里其它点先不动。- 先算出子串结果:
- added a commit that references this issue
on Oct 5, 2026 - added a commit that references this issue
on Oct 5, 2026
背景
记录自 Agent Harness + user-installable plugins 预览阶段的使用反馈。本 issue 聚焦工具发现、命令执行、文件读写和会话体验;不涉及插件功能设计。
问题归类
工具发现与反馈
asktool仅支持纯文本,无法呈现富格式选项。Grep/Glob不在默认工具列表中,需先通过ToolSearch激活;改用 Bash 搜索时输出可能失控、缺少限制。Bash 与路径
$PI_SCRATCH_DIR路径不能直接在 Bash 中使用;分支会话中的路径更新/提示不足,可能静默指向错误位置。Read / Write / Edit
Read/Write的行号区间与tag校验可能造成反复读取和重写,失败、写错位置或写入成功不易区分。PUT操作时出现行号定位问题;展示的行号看似对应目标位置,实际内容却落在其他行。会话与长对话体验
期望
范围说明
截图中已划掉的模型切换/自动选模反馈不纳入本 issue;编码根因中的推测不作为已确认结论。