Stitch SDK连接清理：区分自动连接与工具失败，始终关闭客户端

素材身份：作者原创输入/可编辑参考。目标工具未在本轮执行。
先打开 index.html；input.csv 是原始字段，reference.csv 是验收基准，negative.csv 是故意构造的坏样例。
actual-results.csv 保留未测状态，实际执行后再填写。

前置条件：
本地练习资料可免费编辑与检查；执行Stitch需要可访问账号和已配置的官方MCP或SDK，云端额度/计划以账户页面为准。
在隔离练习项目操作，保留projectId、screenId和版本；本稿未调用目标云端，不能据此声称生成完成。

操作步骤：
1. 准备只读调用样例
脚本只做listTools与一次读取，写清目标项目来自练习台账。
密钥从环境变量读，不放在可下载的练习JSON里。

2. 构造客户端
按官方SDK创建StitchToolClient，记录本地阶段。
构造对象不等于已经完成网络认证。

3. 观察自动连接
首次listTools或callTool触发自动连接，按实际返回记录阶段。
无需为了演示无条件重复connect造成混乱。

4. 区分两种失败
分别保留鉴权失败和工具参数失败的错误记录。
前者没有成功进入工具执行，后者不能简单叫连接断开。

5. 用finally清理
把await client.close()放在finally中，让成功与失败路径都执行。
不要仅在正常结尾close，异常抛出会绕开它。

6. 限制重试范围
读取失败可根据错误重试，写操作失败先核对是否已生效。
本课不把未知写入结果当可无限重放的连接问题。

7. 交付生命周期日志
只记录阶段、工具名和脱敏错误，检查没有密钥。
本地假客户端测试只证明控制流，不能称目标网络连接通过。

验收：
成功与异常路径都调用close。
连接/鉴权/工具参数错误分层记录。
日志与练习包不含密钥。

官方资料：
https://github.com/google-labs-code/stitch-sdk

图片身份：assets/ 为内置image_gen生成的原创练习输入缩略版，原始文件保留在网站图片来源地址。可编辑SVG为作者原生排版。
