在此之前 `toApiMessage` **只回传文本块**,工具块整块丢弃。代价: - 模型每轮从零开始,会重复调同一个工具; - 它上一轮唯一能看到的只有**自己说过的话** —— 而那正是"背出成品句子"的温床。 现在按 blocks 原始顺序拼(⛔ 不把工具记录堆到末尾:先查什么、再说什么本身是脉络): - 工具调用 → `〔调用 名字 {关键参数} → 结果摘要〕`,args 截 120 / result 截 220 - 失败 → **只留第一行且切掉堆栈**。⚠ ️ 光靠长度截不住(实测:堆栈就在前 120 字里, 回归当场红了)—— 要按结构剥,` at ` 之后的是给开发者看的,进历史纯属污染 - 卡片 / 确认单 → 只留一个存在性锚(内容是渲染产物,复述没意义且很长) 配套改提示词:原来那条「⛔ 不许从上文抄数字」是为"历史里没有数字"写的, 现在自相矛盾了。改成**条件对得上才能用**:摘要行里写着当时传的参数, 主管一换条件旧数就作废 —— 这正是"同一批人报出 12、17、13、70"的由来。 测试:web 20 passed(新增 7 条分层回传回归,含肥载荷截断与堆栈剥离); service 1237 passed;tsc / build 干净。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| ai-invocations | Loading commit data... | |
| assistant | Loading commit data... | |
| host-admin | Loading commit data... | |
| pet | Loading commit data... | |
| plan-detail | Loading commit data... | |
| plans | Loading commit data... | |
| realtime-coach | Loading commit data... | |
| recall-debug | Loading commit data... | |
| supervisor | Loading commit data... | |
| ui | Loading commit data... | |
| auth-gate.tsx | Loading commit data... | |
| can.tsx | Loading commit data... | |
| identity-cluster.tsx | Loading commit data... | |
| mock-login-dialog.tsx | Loading commit data... | |
| priority-hover.tsx | Loading commit data... | |
| session-expired.tsx | Loading commit data... |