先看完整content数组

响应文本看起来少了一段时,先检查后端或前端是否只读取content[0].text。Messages响应的content是分块数组;即使一次样例只有一个text,也不应据此把所有响应都当单字符串。

本文处理非流式完整对象的展示门禁。SDK简化字段、CLI的result和SSE流都属于不同接口,不能把这些例子的字段路径互相替换。

用两段构造结果重现丢失

离线对象有两个text块,依次写第一段和第二段,stop_reason为end_turn。预期两段按顺序显示,保留两个块对象;只取第一个元素会直接丢掉第二段。

样例是人工构造,不是一次真实模型输出。它用于验证应用如何读数组,而不是证明某个模型总会输出多个文本块。

对构造的多文本块响应逐块展示;完整响应:content可能有多个不同类型块;只读首项:第二个text块会丢失;纯文本演示:逐块拼接,同时保留原blocks;其他类型:分支处理,不自动执行或强转
本站原创示意图:对构造的多文本块响应逐块展示。构造的非流式响应;未进行真实API或工具调用。查看大图 ↗

窄范围处理,比强行拼接更可控

文末inspectTextMessage仅在自然结束且所有块都是text时拼接展示文字,块间加换行,同时返回原blocks以保留元数据。遇到工具或其他内容类型,返回needs_review,不自动执行工具。

这个策略适合演示纯文本展示,不是完整消息处理器。有工具调用、思考或服务端内容时,真实应用应分别处理各类型;不认识的块不能靠JSON.stringify塞进用户答案。

引用不能在拼接时悄悄丢掉

块中的citations等信息需要与文字位置共同保存。示例保留原块,只生成简化text供纯文本展示;它没有将引用索引重新映射到拼接后的字符串,也不生成可点击来源组件。

如果UI只用text,引用元数据不会自动显示。处理带引用的产品应保留块层结构并实现对应渲染,不能在页面挂一个统一“有来源”图标就宣称逐句引用完整。

怎样运行和复测

保存为message-text-blocks.mjs,用Node.js 24 LTS运行node message-text-blocks.mjs --demo。text内包含以换行分隔的两段,blocks长度为2。

本地测试覆盖两段、引用对象保留、工具类型拒绝以及max_tokens等非自然结束分支。kind为text只意味着进入这个展示路径,事实、权限和最终任务完成状态仍需另验。

排查时保留接口边界

先确认原响应有几块,再检查转换层和UI层;如果原响应已经只有第一段,就不能把问题归到数组读取。日志应脱敏,不保存无必要的用户材料。

没有真实调用Claude API,没有测试SSE、真实引用点击或工具循环。只有离线对象解析通过,不能宣传为整个API客户端已经端到端验收。

参考资料与核验范围

资料核对日期:2026年10月21日。以下为官方原始资料;产品入口和可用范围仍以当前账户为准。

1. [官方资料1](https://platform.claude.com/docs/en/build-with-claude/working-with-messages)

2. [官方资料2](https://platform.claude.com/docs/en/agents-and-tools/tool-use/handle-tool-calls)