Originally created by: Misaka09982
Summary
<!-- 1-3 bullet points: what changed and why -->- 正式支持
reasoningEffort 推理强度配置:作为一等配置字段,支持在 .env、inkos.json 及 modelOverrides 中设置,并自动映射到 OpenAI Chat (reasoning_effort) 和 Responses (reasoning: { effort }) API。 - 修复 WriterAgent 覆盖参数失效 Bug:移除了
WriterAgent 第一阶段写作中硬编码的 0.7 温度,使其能够正确响应用户在 modelOverrides.writer.temperature 中的自定义设置。 - 优化配置合并链路:改进了
PipelineRunner 的逻辑,确保当用户仅覆盖 temperature、maxTokens 或 reasoningEffort 时,这些参数能正确下沉到实际的 API 请求中。
Motivation (optional)
<!-- Why this change is needed. Link issues if applicable. -->目前的 InkOS 在使用 OpenAI o1/o3 等具备推理能力的模型时,无法通过配置控制推理强度(reasoning_effort)。此外,由于部分 Agent(如 WriterAgent)内部存在参数硬编码,导致用户即便在配置文件中设置了覆盖参数也无法生效。
Changes
<!-- File-level change list: what each file does -->
File | Change
-- | --
packages/core/src/models/project.ts | 在 Schema 中新增 reasoningEffort 字段,并补全 AgentLLMOverrideSchema 中的可选覆盖项。
packages/core/src/utils/config-loader.ts | 增加对环境变量 INKOS_LLM_REASONING_EFFORT 的读取支持。
packages/core/src/llm/provider.ts | 实现 reasoningEffort 在不同协议(Chat/Responses)下的请求参数映射。
packages/core/src/pipeline/runner.ts | 修正 resolveOverride 逻辑,确保非 baseUrl 变化的覆盖配置也能创建正确携带默认值的客户端。
packages/core/src/agents/writer.ts | 将创意写作阶段的 temperature 从硬编码 0.7 改为读取 client.defaults.temperature。
packages/cli/src/commands/config.ts | KNOWN_KEYS 增加推理强度支持,并在 set-global 中添加 --reasoning-effort 参数。
packages/cli/src/commands/init.ts | 在项目初始化的 .env 模板中加入推理强度的配置示例和注释。
Usage (optional)
<!-- Code snippets, CLI examples, or config samples showing how to use the new feature -->命令行设置全局推理强度:
<button class="" title="Copy code" aria-label="Copy code to clipboard" style="color: rgba(204, 204, 204, 0.87); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; font-size: 13px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(26, 26, 26); border-color: rgb(69, 69, 69); border-style: solid; border-width: 0.8px; border-image: none 100% / 1 / 0 stretch; cursor: pointer; opacity: 0; display: flex; border-radius: 4px; justify-content: center; align-items: center; padding: 4px; transition: opacity 0.15s, background 0.15s; position: absolute; top: 4px; right: 4px;">
</button>
inkos config set-global --reasoning-effort high --provider openai --model o3-mini ...
在 inkos.json 中针对特定模型配置:
<button class="" title="Copy code" aria-label="Copy code to clipboard" style="color: rgba(204, 204, 204, 0.87); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; font-size: 13px; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(26, 26, 26); border-color: rgb(69, 69, 69); border-style: solid; border-width: 0.8px; border-image: none 100% / 1 / 0 stretch; cursor: pointer; opacity: 0; display: flex; border-radius: 4px; justify-content: center; align-items: center; padding: 4px; transition: opacity 0.15s, background 0.15s; position: absolute; top: 4px; right: 4px;">
</button>
"modelOverrides": {
"writer": {
"model": "o3-mini",
"reasoningEffort": "high",
"temperature": 1.0
}
}
Test plan
Breaking changes (optional)
<!-- List any breaking changes to public API, CLI flags, config format, etc. -->无破坏性变更。reasoningEffort 为可选字段,未设置时不会影响现有逻辑。
🤖 Generated with Claude Code