Просмотр исходного кода

revert(docs): CLAUDE.md 的 maxTokens 设计细节回退到单行索引

1f43f6a 里给 CLAUDE.md 的"防止 maxTokens 回归"条款加了 5 行
fallback/cap 字段设计细节,违反 CLAUDE.md 的渐进式披露原则
(CLAUDE.md 是 spec 索引,设计细节应该在代码注释 / 独立 spec 里)。

LLMClient 的 maxTokens / maxTokensCap 语义规则已经在
packages/core/src/llm/provider.ts 的 type definition 注释里写清楚;
回归测试在 provider.test.ts 的 "createLLMClient maxTokensCap
regression" describe block。后续改动者读到那两处即可。

CLAUDE.md 恢复到单行"防止 maxTokens 回归"的索引条款。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
fanghanjun 6 месяцев назад
Родитель
Сommit
8b89668386
1 измененных файлов с 1 добавлено и 6 удалено
  1. 1 6
      CLAUDE.md

+ 1 - 6
CLAUDE.md

@@ -25,12 +25,7 @@ pnpm --filter @actalk/inkos-core build     # 改了 core 后必须重建(或
 - **不要推测错误** — 遇到报错先读完整错误信息,定位根因后再修,不凭猜测改代码
 - **原子化提交** — 每个 commit 只做一件事,功能和修复分开提交;不要把不相关的改动塞进同一个 commit
 - **每步都跑测试** — 每个 task 完成后必须 `pnpm test` 全量通过,不能攒到最后才跑
-- **防止 maxTokens 回归** — 替换 LLM provider / 改 `createLLMClient` 时必须遵守以下设计,违反了会让 agent per-call 指定的大 maxTokens 被意外裁剪、基础设定/章节输出被截断:
-  - `LLMConfig.maxTokens` 的语义是 **per-call fallback**(agent 调 chat() 没指定 maxTokens 时用这个),**不是硬上限**
-  - `LLMConfig.maxTokensCap` 的语义才是 **硬上限**——只有用户确实想封顶 per-call 最大输出时才显式 set,默认 undefined → `client.defaults.maxTokensCap = null` = 不封顶
-  - 两个字段在 `createLLMClient` 里的赋值**禁止合并**:`maxTokens: config.maxTokens ?? 8192`、`maxTokensCap: config.maxTokensCap ?? null`;**严禁**写成 `maxTokensCap: config.maxTokens ?? null`(历史 bug,会让 architect 的 per-call 16384 被 config.maxTokens=8192 裁到 8192)
-  - 任何改动必须让 `packages/core/src/__tests__/provider.test.ts` 里 "createLLMClient maxTokensCap regression" 那组回归测试继续通过
-  - agent 内部调 `this.chat(..., { maxTokens: N })` 时 N 要反映该 agent 实际产出长度需求;**不要硬编码到 defaults**、**不要在 stub 测试里写具体数字误导后人**(stub 用 `as unknown as LLMClient` cast 即可)
+- **防止 maxTokens 回归** — 替换 LLM provider 时必须确认 maxTokens 参数正确传递,不能丢失或硬编码;写测试验证
 - **禁止简写/比喻式表达** — 不用"记账""接住""一等公民""跑全仓""闭环""抓手""赋能""落""落盘""落地""打(接口)"这类简写、借喻或商务黑话。一律用完整、直白的中文句子说清楚到底在做什么。示例:
   - "打 OpenAI 的 /models" → "向 OpenAI 的 /models 接口**发送请求**"(所有"打 XX 接口 / 打 API"都改为"向 XX 发送请求"或"调用 XX 接口")
   - "接住错误" → "catch 住异常并写日志"