JianFeeeee
43eaa17b41
fix(agent): 补齐 registerToolCancel 的定义——修复 HEAD 不可编译
## 我造成的破坏
上一个提交 e6023e1 里,我用 `git add internal/agent/core/toolcall.go`
(整文件)时,把工作区中**别人尚未提交**的两行调用一起暂存了:
toolCancelID := a.registerToolCancel(cancel)
defer a.unregisterToolCancel(toolCancelID)
而这两个方法与它们依赖的字段(cancelTools/toolSeq/toolMu)留在了
agent.go / eventloop.go 里没被提交。
⇒ **e6023e1 单独 checkout 编译不过**:
internal/agent/core/toolcall.go:234:20:
a.registerToolCancel undefined (type *Agent has no field or method registerToolCancel)
已用 git worktree 在 e6023e1 上实测确认,不是推测。
## 为什么这违反了模块化设计
按本仓的模块化设计,`eventloop.go` 里的 registerToolCancel 与 `agent.go`
的字段是**一个内聚单元**,必须同批提交。把它们与 toolcall.go 的调用拆散,
就等于交付了一个引用不存在的符号 —— 构建的可 bisect 性被破坏。
★ 根因是我的提交操作,不是设计问题:我用整文件 add 代替了只暂存自己的
hunk。当时确实检查过 toolcall.go「只有我的改动」,但只 grep 了
`cancelRunningTools|cancelTool`,漏掉了 `registerToolCancel` ——
**检查用了错误的模式串,等于没检查**。
## 本次提交
把那个内聚单元的完整改动补齐(这是「停止键能取消正在跑的工具」特性):
- `agent.go`:cancelTools / toolSeq / toolMu 字段
- `eventloop.go`:registerToolCancel / unregisterToolCancel / cancelRunningTools
以及 stop 分支的调用点
- `stop_cancels_tool_test.go`:该特性的判据
特性说明见字段与方法上的注释(原始作者撰写)。
## 验证
go build ./... → 0
go test -run TestStopCancelsRunningTool → PASS
go test ./... -count=1 -race → 见下一条
2026-11-03 08:46:46 +08:00
..
2026-10-29 23:53:48 +08:00
2026-10-29 23:53:48 +08:00
2026-10-29 23:53:48 +08:00
2026-11-03 08:46:46 +08:00
2026-10-29 23:53:48 +08:00
2026-10-22 20:49:44 +08:00
2026-10-29 23:53:48 +08:00
2026-10-29 23:53:48 +08:00
2026-10-21 12:17:19 +08:00
2026-10-17 19:18:24 +08:00
2026-10-21 12:17:19 +08:00
2026-10-29 23:53:48 +08:00
2026-10-21 12:17:19 +08:00
2026-10-30 17:00:47 +08:00
2026-10-27 15:53:49 +08:00
2026-10-29 23:53:48 +08:00
2026-10-29 23:53:48 +08:00
2026-10-26 20:55:25 +08:00
2026-10-26 20:55:25 +08:00
2026-10-29 23:53:48 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-11-03 08:46:46 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-29 23:53:48 +08:00
2026-10-29 23:53:48 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-30 17:00:47 +08:00
2026-10-29 23:53:48 +08:00
2026-10-25 13:37:29 +08:00
2026-10-25 21:39:12 +08:00
2026-10-30 17:00:47 +08:00
2026-10-25 13:48:35 +08:00
2026-10-21 12:17:19 +08:00
2026-10-29 23:53:48 +08:00
2026-10-18 13:20:54 +08:00
2026-10-25 15:55:26 +08:00
2026-10-29 23:53:48 +08:00
2026-10-25 15:55:26 +08:00
2026-10-25 15:55:26 +08:00
2026-10-29 23:53:48 +08:00
2026-10-25 15:55:26 +08:00
2026-10-29 23:53:48 +08:00
2026-10-29 23:53:48 +08:00
2026-10-21 12:17:19 +08:00
2026-10-29 23:53:48 +08:00
2026-10-29 23:53:48 +08:00
2026-10-26 20:55:25 +08:00
2026-10-27 12:16:06 +08:00
2026-10-21 12:17:19 +08:00
2026-10-27 15:40:43 +08:00
2026-10-21 12:17:19 +08:00
2026-10-25 15:55:26 +08:00
2026-10-21 12:17:19 +08:00
2026-10-25 17:03:09 +08:00
2026-10-26 20:55:25 +08:00
2026-10-25 17:03:09 +08:00
2026-10-22 22:42:02 +08:00
2026-11-02 21:54:35 +08:00
2026-11-02 21:54:35 +08:00
2026-10-29 23:53:48 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-26 20:55:25 +08:00
2026-10-21 12:17:19 +08:00
2026-09-19 16:49:16 +08:00
2026-10-29 23:53:48 +08:00
2026-10-30 17:00:47 +08:00
2026-10-21 12:17:19 +08:00
2026-10-29 23:53:48 +08:00
2026-10-29 23:53:48 +08:00
2026-10-26 20:55:25 +08:00
2026-10-29 23:53:48 +08:00
2026-10-23 15:51:02 +08:00
2026-10-27 11:49:26 +08:00
2026-10-30 17:00:47 +08:00
2026-10-23 15:51:02 +08:00
2026-10-21 12:17:19 +08:00
2026-10-06 09:22:12 +08:00
2026-10-29 23:53:48 +08:00
2026-10-31 11:39:13 +08:00
2026-10-23 15:51:02 +08:00
2026-10-30 17:00:47 +08:00
2026-10-21 12:17:19 +08:00
2026-10-22 20:49:44 +08:00
2026-10-31 06:35:32 +08:00
2026-10-31 06:35:32 +08:00
2026-10-21 12:17:19 +08:00
2026-10-30 17:00:47 +08:00
2026-10-30 17:00:47 +08:00
2026-10-30 17:00:47 +08:00
2026-10-31 19:16:58 +08:00
2026-10-30 17:00:47 +08:00
2026-10-30 17:00:47 +08:00
2026-10-30 17:00:47 +08:00
2026-10-31 10:03:43 +08:00
2026-10-30 21:54:40 +08:00
2026-10-31 06:35:32 +08:00
2026-10-31 07:14:09 +08:00
2026-10-25 18:25:37 +08:00
2026-10-29 23:53:48 +08:00
2026-10-21 12:17:19 +08:00
2026-10-23 15:51:02 +08:00
2026-09-13 08:59:15 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-26 20:55:25 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-09-13 07:00:51 +08:00
2026-10-24 14:34:24 +08:00
2026-10-21 12:17:19 +08:00
2026-10-27 15:58:55 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-11-03 08:42:50 +08:00
2026-10-31 07:14:09 +08:00
2026-11-03 08:42:50 +08:00
2026-10-29 23:53:48 +08:00
2026-10-29 23:53:48 +08:00
2026-10-29 23:53:48 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-30 17:00:47 +08:00
2026-10-26 20:55:25 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-25 15:55:26 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-29 23:53:48 +08:00
2026-11-03 08:46:46 +08:00
2026-10-21 12:17:19 +08:00
2026-10-25 10:10:21 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-11-03 08:42:50 +08:00
2026-10-27 16:24:09 +08:00
2026-10-27 15:27:35 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-18 06:38:51 +08:00
2026-10-29 23:53:48 +08:00
2026-10-21 12:17:19 +08:00
2026-10-23 15:51:02 +08:00
2026-10-29 23:53:48 +08:00
2026-10-26 20:55:25 +08:00
2026-10-29 23:53:48 +08:00
2026-11-03 08:42:50 +08:00
2026-10-31 06:35:32 +08:00
2026-10-21 12:17:19 +08:00
2026-10-29 23:53:48 +08:00
2026-10-29 23:53:48 +08:00
2026-10-23 15:51:02 +08:00
2026-10-21 12:17:19 +08:00
2026-10-05 11:25:20 +08:00
2026-10-21 12:17:19 +08:00
2026-10-25 20:16:16 +08:00
2026-10-25 20:16:16 +08:00
2026-10-26 20:55:25 +08:00
2026-10-29 23:53:48 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-21 12:17:19 +08:00
2026-10-25 18:25:37 +08:00
2026-10-21 12:17:19 +08:00