Skip to content

fix(cowork): 加固外部 Agent CLI 集成与会话标题生成#45

Merged
freestylefly merged 14 commits into
freestylefly:mainfrom
Activer007:fix/session-title-generation
Jun 8, 2026
Merged

fix(cowork): 加固外部 Agent CLI 集成与会话标题生成#45
freestylefly merged 14 commits into
freestylefly:mainfrom
Activer007:fix/session-title-generation

Conversation

@Activer007

@Activer007 Activer007 commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

Summary

本 PR 加固 Cowork 外部 Agent CLI 集成,修复模型路由、provider 兼容、CLI 探测和会话标题生成中的不稳定问题,并补充 smoke test、单元测试和 changelog 记录。

本分支相对 upstream/main 包含 9 个提交,重点覆盖 external Agent CLI runtime、WeSight model/proxy routing、OpenAI-compatible proxy、MiniMax provider/model normalization、Windows CLI detection、session title generation、Windows release packaging script 收敛,以及 CodeQL inline review 修复。

Related Issue

Fixes #(issue number)

Changes Made

外部 Agent CLI runtime 与环境配置

  • 加固 external Agent CLI runtime 集成,完善 CLI 进程启动、运行状态同步、runtime telemetry、错误处理和 UI 状态反馈,降低外部 agent 启动失败或状态漂移的概率。
  • 扩展 external agent environment resolution,统一处理 PATH、proxy、provider env、system env 和本地 CLI 环境,减少不同运行入口之间的环境差异。
  • 重构 external agent config sync,让外部 CLI 能更稳定地接收 WeSight 当前 provider、model、baseURL、API key 和代理配置。
  • Windows CLI detection 会跳过 WSL 路径,避免在 Windows 桌面应用中选中无法直接执行的 Linux/WSL CLI binary。

WeSight model/proxy 路由与 provider 兼容

  • 扩展 WeSight OpenAI-compatible proxy 路径,为外部 Agent CLI 提供更一致的 chat completions 兼容层。
  • 让 Claude Code 通过 WeSight model/proxy 配置路由,避免 Claude Code 使用外部默认配置而绕过应用内模型设置。
  • 标准化 MiniMax provider/model 处理,覆盖 Cowork、本地 agent 配置、IM Cowork session 和 OpenAI-compatible proxy 请求路径。
  • 补充 MiniMax 等 provider 的请求归一化处理,降低模型名、请求体和兼容参数在不同入口之间漂移的风险。

Cowork 会话标题生成

  • 优化 Cowork session title generation,改为基于规范化后的多行 prompt context 构造标题,而不是只依赖 prompt 第一行。
  • 抽出 shared session title helper,统一 markdown 清理、fallback 标题、上下文截断和 LLM prompt 生成逻辑。
  • 同步 renderer 临时会话标题 fallback 逻辑,让用户发送 prompt 后立即看到的临时标题与 main process 最终标题保持一致。

Windows packaging 与发布记录

  • 收敛 Windows release workflow、Electron builder 配置和 NSIS installer 脚本,统一带日期的构建输出命名并降低 packaging script 漂移。
  • 更新 CHANGELOG.md,将已发布的 2026-06-05 内容归档到独立版本段,并为当前分支新增 Unreleased - 2026-06-07 条目。

测试与验证资产

  • 新增 scripts/wesight-agent-cli-smoke.cjs 和对应验证文档,用于 programmatic smoke test 外部 CLI、模型代理和配置同步路径。
  • 新增和扩展 external CLI runtime、OpenAI-compatible proxy、Claude settings、external agent config sync、external agent environment、runtime telemetry 和 session title generation 的测试覆盖。

Review 反馈修复

  • 修复 GitHub Advanced Security / CodeQL inline review 指出的 dynamic hostname regex fallback 问题。
  • matchesApiHostname() fallback 分支从动态 RegExp 构造改为字符串边界扫描,避免 incomplete string escaping or encoding 风险。

当前分支解决的问题

外部 Agent CLI 配置链路不稳定

  • 外部 Agent CLI 启动链路过于依赖分散配置,provider、model、baseURL、API key、proxy 和 PATH 在不同入口中可能不一致。
  • external agent config sync 和 environment resolution 缺少统一约束,导致外部 CLI、本地 agent、IM Cowork session 和应用内模型配置之间容易出现行为漂移。
  • 外部 Agent CLI 的运行状态和 runtime telemetry 不够稳定,UI 可能无法准确反映当前 engine 状态。

Claude Code 与 WeSight 模型配置不一致

  • Claude Code 没有稳定复用 WeSight 当前模型配置,可能导致用户在 WeSight 中选择的模型与外部 CLI 实际调用的模型不同。
  • Claude Code 可能绕过 WeSight model/proxy 路由,使用本地 CLI 默认配置,影响模型切换和 provider 管理体验。

OpenAI-compatible provider 与 MiniMax 兼容问题

  • OpenAI-compatible provider 的请求代理能力不足,外部 CLI 接入 MiniMax 等 provider 时容易遇到模型名、请求体或兼容参数不一致的问题。
  • MiniMax provider/model 的归一化逻辑分散在多个模块中,Cowork、本地 agent、IM session 和 proxy 路径之间存在行为漂移风险。

Windows CLI detection 误选 WSL 路径

  • Windows 环境下 CLI detection 可能误选 WSL 路径,导致桌面应用拿到一个存在但无法在当前 Windows 进程中直接执行的 CLI 路径。
  • 这会让用户看到 CLI 已被识别,但实际启动时失败,排查成本较高。

Cowork 会话标题质量不稳定

  • Cowork 会话标题过度依赖 prompt 第一行,多行任务、带文件路径的任务或先描述背景再给目标的 prompt 容易生成过泛标题。
  • renderer 临时会话标题和 main process 最终标题的 fallback 逻辑不一致,用户可能看到标题先后跳变或语义不一致。
  • LLM title prompt 缺少更清晰的上下文边界,面对包含指令式内容的用户 prompt 时可控性不足。

测试覆盖与发布记录边界不清晰

  • external Agent CLI、proxy、config sync 和 environment resolution 缺少足够测试,后续改动容易引入回归。
  • Windows packaging 相关脚本和输出命名仍有漂移空间,不利于 release artifact 追踪和复现。
  • CHANGELOG.md 原先把已发布的 2026-06-05 内容和当前分支内容混在 Unreleased 下,release note 边界不清晰。

Security review 反馈

  • CodeQL 指出 hostname fallback 正则构造存在 incomplete string escaping or encoding 风险。
  • 当前分支已移除该动态正则构造,改用字符串边界扫描完成 fallback hostname 匹配。

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Code refactoring
  • Documentation update
  • Performance improvement
  • Other (please describe):

Testing

  • Tested locally
  • Added new tests
  • Updated existing tests
  • Manual testing performed

新增或更新的测试覆盖包括:

  • external CLI runtime behavior
  • OpenAI-compatible proxy behavior
  • Claude settings provider/model handling
  • external agent config sync
  • external agent environment resolution
  • runtime telemetry store
  • session title context、fallback、normalization 和 prompt isolation

本轮已针对 CodeQL 修复执行单文件 lint:

  • npx eslint --ext ts,tsx --report-unused-disable-directives --max-warnings 0 src/main/libs/coworkUtil.ts

未重新执行完整门禁:

  • npm run build
  • npm run lint
  • npm test

Screenshots (if applicable)

不适用。本 PR 主要涉及 Cowork runtime、配置同步、proxy、测试、release 脚本和 changelog。

Checklist

  • My code follows the project's style guidelines
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes

Electron-Specific Changes

  • Changes to main process (src/main/)
  • Changes to preload script (src/main/preload.ts)
  • Changes to IPC communication
  • Changes to window management
  • None

Additional Notes

当前分支相对 upstream/main 为 9 commits ahead、0 commits behind。

CHANGELOG.md 已按 docs/release-process.md 拆分:当前分支内容记录在 Unreleased - 2026-06-07

正式发布前仍需按 release gate 确认 Windows/macOS 签名、公证、checksum、SmartScreen/Gatekeeper 信任链,并重新记录 npm run buildnpm run lintnpm test 的完整结果。

Comment thread src/main/libs/coworkUtil.ts Fixed
@freestylefly freestylefly merged commit c3e09f4 into freestylefly:main Jun 8, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants