Files
inkos/packages
Ma a662224308 fix(core): let short-fiction output language follow the user's request instead of the session language
修复 issue #345 残留缺口:用户用中文对话要求"写一篇英文短篇"时,产出仍然是中文。

根因:
- Studio 用 inferLanguage 按 CJK/拉丁字符比例推断会话语言,中文指令推断为 zh;
- zh 分支短篇系统提示词硬编码"shortRun 填 language=zh"(en 分支同样硬编码 language=en),
  即使用户明确要求另一种产出语言,模型也照抄硬编码值;
- propose_action 的 shortRun.language schema description 只写了
  "Confirmed short-fiction language.",没有告诉模型产出语言可以和对话语言不同。

修法:
- agent-system-prompt.ts 短篇 zh/en 两个分支对称改为:language 填用户要求的产出语言,
  用户没提时跟对话语言一致;同时把 charsPerChapter 指引改为按 language 分语言说明
  (zh 每章 900-1200 字默认 1000,en 每章 600-800 个英文单词默认 650);
- agent-tools.ts 的 shortRun.language description 改为说明按用户要求的产出语言填,
  可以和对话语言不同,未指定时默认对话语言。

传参链路本身无需改动:proposedActionPayload 里 { language, ...shortRun } 的展开顺序
保证模型显式填的 language 覆盖会话默认值,且会话默认只注入 language 不注入字数,
runner 在未填 charsPerChapter 时按 language 取对应默认(en 650 词),不会把 zh 字数
带给 en 任务。新增测试固定以上行为和提示词/schema 文案。
2026-07-15 01:01:03 +08:00
..