基于 Electron、React 和 TypeScript 的 Windows 桌面 ReAct AI Agent 一期工程。
- Electron 安全窗口与 context-isolated IPC
- 标准 ReAct:Reason → Skill → Act → Validate
- ReAct 输出协议校验与自动纠正,兼容 JSON、Thought/Action/Action Input 文本及 OpenAI
tool_calls - 工具参数分级恢复:字段别名与类型标准化、安全默认值、当前任务唯一值补全、精简上下文定向修复、歧义路径用户确认及重复修复熔断
- 模型首包和 SSE 流停顿检测,自动降级非流式请求;重试共享总超时预算并显示状态
- 保留当前工具 Observation、附件和写入内容供后续轮次使用,超出预算时优先压缩较早的历史与重复结果
- 按当前任务隔离模型上下文:完整会话仅用于本地展示,模型只接收一个相关任务片段;历史附件仅在明确追问时复用,成功任务不再携带旧工具轨迹
- Token 感知的分级上下文压缩:达到可用输入预算 80% 后压缩至约 62%,保留当前请求和最新 Observation,并在 UI 标记完成状态
- OpenAI 兼容 chat/completions 适配与演示模式
- 本地配置、任务历史持久化,以及模型配置面板
- 多模型配置档案、默认模型管理,以及会话级模型切换
- 内置 Word/Excel 本地解析工具和 PPT MCP 处理服务
- 内部文件解密工具,已验证支持 txt、csv、pdf、docx、xlsx、pptx
- TypeScript、ESLint、Vitest、构建与 Windows 打包脚本
npm install
npm run dev当前支持直接上传现代 Office OOXML 格式:.docx、.xlsx、.pptx。上传的 Office 附件会安全保存到工作区的 .codext-attachments 目录。
- Word 和 Excel 分别由本地
parse_word、parse_excel工具解析。 - PowerPoint 由内置 PPT MCP 的
parse_powerpoint工具解析。应用在127.0.0.1:3777启动 Streamable HTTP MCP 服务,并在每次连接和工具发现前在对应会话消息流中请求用户“允许一次”。 - PPT Processing Service 使用
officeparser提取幻灯片结构、文本和备注。环境中存在 LibreOffice 时会报告渲染能力;不可用时自动跳过。OCR Vision 当前关闭,不影响结构和文本提取。 - 文本、CSV 或 Office 文件出现 NUL、乱码、异常二进制内容或解析失败时,Agent 会先调用
decrypt_file,将解密副本保存回工作区,再使用返回的output_path继续读取或解析。原文件不会被覆盖。
调用链如下:
Electron/React -> ReAct Agent -> GPT API -> 单次用户确认 -> PPT MCP -> PPT Processing Service
每个会话可以选择独立工作区。未设置覆盖路径时,会话直接继承全局配置中的工作目录;选择会话目录不会修改全局配置,使用“恢复全局目录”即可重新继承默认值。附件、文件工具、Office 解析、解密和 PPT MCP 均使用当前会话的有效工作区。切换工作区时,已落盘的会话附件会复制到新目录。
会话附件会持续保存并自动加入后续请求,但发送后不会继续占用输入框附件区域;模型请求失败或应用重启不会清除附件状态。旧版本会话会从最近一条含附件的用户消息自动恢复该状态。
设置页可以保存多个 OpenAI 兼容模型配置,并指定一个默认模型。聊天输入区底部可以为当前会话选择独立模型;选择“跟随默认模型”时,后续请求会自动使用当前默认配置。模型切换只影响切换后的新任务,不会改变正在运行的任务。
当任务存在多个互斥执行方案时,Agent 会在当前消息流中显示单选列表和“确认选择”按钮。用户确认后,选择结果会回到同一次 ReAct 任务中继续执行,不需要再发送一条对话消息。
使用 npm run verify 执行类型、规范、测试和构建校验;使用 npm run package:win 输出 NSIS 与便携版 Windows 安装产物。