# Tool call parsing semantics(Go/Node 统一语义)
本文档描述当前代码中的**实际行为**,以 `internal/toolcall` 与 `internal/js/helpers/stream-tool-sieve` 为准。
文档导航:[总览](../README.MD) / [架构说明](./ARCHITECTURE.md) / [测试指南](./TESTING.md)
## 1) 当前唯一可执行格式
当前版本只把下面这类 canonical XML 视为可执行工具调用:
```xml
```
约束:
- 必须有 `...` wrapper
- 每个调用必须在 `...` 内
- 工具名必须放在 `invoke` 的 `name` 属性
- 参数必须使用 `...`
## 2) 非 canonical 内容
任何不满足上述 canonical XML 形态的内容,都会保留为普通文本,不会执行。
当前 parser 不把 allow-list 当作硬安全边界:即使传入了已声明工具名列表,XML 里出现未声明工具名时也会尽量解析并交给上层协议输出;真正的执行侧仍必须自行校验工具名和参数。
## 3) 流式与防泄漏行为
在流式链路中(Go / Node 一致):
- 只有从 `` wrapper 正常解析
- 非 canonical 内容按普通文本透传
- 代码块示例不执行