Commit Graph
358 Commits
Author SHA1 Message Date
cosoandClaude Opus 4.6 aa49b23733 feat: 实现 Aster 生态 Phase 2 核心能力
完成 Aster 生态 Phase 2 的所有开发任务,包括浏览器工具、调度器系统、
WebSocket RPC、批量任务支持和电商差评回复解决方案。

## 第一阶段: 浏览器工具接入 ✅

- 添加 Playwright MCP Server 自动配置 (migration_v3.rs)
- 实现 BrowserTool 包装器,提供 navigate/snapshot/click/type/screenshot API
- 通过 MCP 桥接集成到 Agent 工具系统

## 第二阶段: Agent Daemon 集成 ✅

- 创建 scheduler crate,实现完整的调度器系统
- 实现 AgentScheduler (SchedulerTrait),支持任务 CRUD 和状态管理
- 实现 AgentExecutor (TaskExecutor),支持多种任务类型
- 实现 Heartbeat Loop,30 秒轮询自动执行到期任务
- SQLite 持久化,完整的单元测试覆盖

## 第三阶段: Agent Gateway RPC ✅

- 扩展 WebSocket 协议,实现 JSON-RPC 2.0 风格
- 支持 7 种 RPC 方法: agent.run, agent.wait, agent.stop, sessions.list,
  sessions.get, cron.list, cron.run
- 实现 RPC 处理器,集成 Agent 和 Scheduler
- 双协议支持 (WsMessage + RPC)

## 第四阶段: 批量任务支持 ✅

- 实现 BatchTask 数据结构和 TaskTemplate 模板系统
- 支持变量替换 ({{variable}})
- 实现并发控制 (Semaphore)、失败重试、超时保护
- 提供 8 个 HTTP API 端点 (任务 + 模板管理)

## 第五阶段: 电商差评回复 MVP ✅

- 实现电商差评回复 Skill,支持淘宝/京东/拼多多
- 完整的配置系统 (语气/长度/模板)
- 5 步配置向导前端页面
- 任务列表管理和结果展示
- Tauri Command 封装和 API 集成

## 技术亮点

- 模块化设计: 独立 crate,易于维护
- 类型安全: Rust + TypeScript 全栈类型安全
- 完整测试: 所有模块都有单元测试
- 命名规范: 使用通用命名 (AgentScheduler 而非 ProxyCastScheduler)
- 可扩展性: 易于添加新功能和解决方案

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 22:14:59 +08:00
cosoandClaude Opus 4.6 b14dbe8271 feat: 实现 Agent 调度器系统
实现完整的 Agent 任务调度系统,支持定时任务、批量处理和后台持续运行。

## 新增功能

### 1. proxycast-scheduler Crate
- 创建独立的调度器 crate
- 实现 SchedulerTrait 接口
- 支持任务 CRUD 操作
- 任务持久化到 SQLite

### 2. 数据模型
- ScheduledTask: 调度任务结构
- TaskStatus: 任务状态枚举 (Pending, Running, Completed, Failed, Cancelled)
- TaskFilter: 任务查询过滤器

### 3. AgentScheduler
- 实现调度器核心逻辑
- 支持任务创建、查询、更新、删除
- 支持到期任务查询
- 自动状态管理

### 4. AgentExecutor
- 实现任务执行器
- 通过 CredentialBridge 自动选择凭证
- 支持多种任务类型:
  - agent_chat: Agent 对话任务
  - batch_process: 批量处理任务
  - scheduled_report: 定时报告任务
- 自动标记凭证健康状态

### 5. SchedulerService (Heartbeat Loop)
- 实现心跳循环服务
- 每 30 秒轮询到期任务
- 自动执行到期任务
- 支持优雅启动和关闭 (CancellationToken)
- 集成到 Tauri setup

### 6. 数据库集成
- 创建 scheduled_tasks 表
- 添加索引 (status, scheduled_at, provider_type)
- 自动初始化表结构

## 技术实现

- 使用 tokio::spawn 启动后台任务
- 使用 tokio::time::interval 实现定时轮询
- 使用 tokio::select! 监听取消信号
- 完整的错误处理和日志记录
- 所有模块包含单元测试

## 文件清单

新增:
- src-tauri/crates/scheduler/Cargo.toml
- src-tauri/crates/scheduler/src/lib.rs
- src-tauri/crates/scheduler/src/types.rs
- src-tauri/crates/scheduler/src/dao.rs
- src-tauri/crates/scheduler/src/scheduler.rs
- src-tauri/crates/scheduler/src/executor.rs
- src-tauri/src/app/scheduler_service.rs

修改:
- src-tauri/Cargo.toml (添加 scheduler 依赖)
- src-tauri/src/app/mod.rs (导出 scheduler_service)
- src-tauri/src/app/setup.rs (集成调度器服务)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-02-09 21:47:52 +08:00
coso bf0c1a05fb chore: bump version to 0.61.0 2026-02-09 02:08:53 +08:00
coso 98c124b0bb refactor: 迁移 agent/mcp/skills/voice 模块到独立 crate
- 创建 proxycast-agent crate(event_converter, mcp_bridge, prompt)
- 创建 proxycast-skills crate(ExecutionCallback/LlmProvider trait, skill_loader)
- 扩展 voice-core crate(device, threaded_recorder, types)
- 主 crate 各模块替换为 re-export 层 + Tauri 实现
- 更新 processor/mod.rs 为纯 re-export
- 更新 app/runner.rs MCP 初始化
- 添加 capabilities/default.json
- 清理已迁移的测试文件
2026-02-08 22:42:01 +08:00
coso bb319d7bb0 refactor: 迁移 MCP 模块到 proxycast-mcp crate
- 创建 proxycast-mcp crate(client, manager, tool_converter, types)
- 主 crate mcp/mod.rs 替换为 re-export 层
- McpClientManager、ProxyCastMcpClient 等类型迁移
2026-02-08 22:41:07 +08:00
coso f169e93e6e refactor: 添加 EventEmit trait 到 proxycast-core
- 新增 event_emit 模块:EventEmit trait、DynEmitter、NoOpEmitter
- 解耦 Tauri 事件发射,供独立 crate 使用
- app/types.rs 添加 TauriEventEmitter 实现
2026-02-08 22:40:48 +08:00
coso 146db0d110 refactor: 迁移 server 模块到 proxycast-server crate
- 创建 proxycast-server crate,包含完整的 HTTP 服务器逻辑
- 迁移 server/handlers/ 下所有 8 个处理器模块
- 迁移 client_detector 模块
- 主 crate server/mod.rs 替换为 re-export 层
- 升级 proxycast-core logger:完整的日志轮转、压缩归档、正则脱敏
- 提取 network 模块到 proxycast-core(从 network_cmd 中分离纯逻辑)
- 修复 bootstrap.rs/state.rs 中 LogStore::with_config 调用
- 修复 provider_calls.rs doctest 代码块标记
2026-02-08 22:34:56 +08:00
coso a32133490e refactor: 迁移 server_utils 到独立 proxycast-server-utils crate
- 创建 crates/server-utils/ 独立 crate (1403 行, 0 Tauri 依赖)
- 包含响应解析、字符串处理、响应构建等工具函数
- 12 个测试全部通过 (3 单元测试 + 9 属性测试)
- src/server_utils.rs 改为 re-export 层
2026-02-08 21:09:37 +08:00
coso 3257580f36 refactor: 迁移 processor steps 到独立 proxycast-processor crate
- 创建 crates/processor/ 独立 crate(~2207 行)
- 迁移 7 个 step 模块: auth, injection, plugin, provider, routing, telemetry, traits
- 迁移 RequestProcessor 基础结构(processor.rs)
- 主 crate processor/steps/mod.rs 改为 re-export 层
- RequestProcessor 保留在主 crate(依赖 Tauri 相关类型)
- 30 个 crate 单元测试 + 8 个主 crate 测试全部通过
2026-02-08 19:36:02 +08:00
coso a4ca895aa3 refactor: 迁移 credential 模块(balancer/quota/sync)到独立 proxycast-credential crate
- 创建 proxycast-credential crate,包含 balancer、quota、sync 三个模块
- 主 crate credential/mod.rs 改为 re-export 层
- 37 个 crate 单元测试 + 31 个主 crate 属性测试全部通过
2026-02-08 18:58:00 +08:00
coso e3c9efdf9f refactor: 迁移 config/observer 到 proxycast-config crate
- 创建 proxycast-config crate,包含配置观察者系统
- ConfigEventEmit trait 抽象 Tauri AppHandle 的 emit 功能
- TauriConfigEmitter 和 TauriObserver 保留在主 crate
- 11 个 crate 测试 + 58 个主 crate config 测试全部通过
- 主 crate config/observer 重写为重新导出层
2026-02-08 18:24:23 +08:00
coso 9978c4827e refactor: 提取 proxycast-websocket 独立 crate
将 WebSocket 模块 (~2100 行) 从主 crate 迁移至 crates/websocket/:
- handler、lifecycle、processor、stream 四个子模块
- crate::logger::LogStore 改为 proxycast_core::LogStore
- crate::models 改为 proxycast_core::models
- 主 crate 保留重导出层
- 51 个测试全部通过(含属性测试)
2026-02-08 17:29:23 +08:00
coso ccca4cd479 refactor: 提取 proxycast-terminal 独立 crate
将终端模块 (~13k 行) 从主 crate 迁移至 crates/terminal/:
- 设计 TerminalEventEmit/TerminalEventEmitter 两层 trait 抽象
- DynEmitter newtype 包装 Arc<dyn TerminalEventEmit>
- 主 crate 保留 TauriEmitter 桥接层和重导出
- 187 个单元测试全部通过
2026-02-08 16:41:23 +08:00
coso 46b2303acc refactor: 创建 proxycast-services crate,迁移 ~37k 行业务服务
- 新建 proxycast-services crate(依赖 core + providers)
- 迁移 28 个 service 模块 + 2 个子模块(general_chat, content_creator)
- ClientType 从 server/client_detector 迁移到 core/models/client_type
- 主 crate services/mod.rs 改为 re-export 层
- 保留 file_browser_service、sysinfo_service、update_window 在主 crate(依赖 Tauri)
- 所有 crate::xxx 引用已替换为对应 crate 路径
- workspace 全量编译通过,测试编译通过
2026-02-08 15:15:39 +08:00
coso 49f0a49b41 refactor: migrate processor types (context/error) and websocket types to proxycast-core 2026-02-08 14:01:46 +08:00
coso bbed059a49 refactor: migrate router and credential core (types/pool/health/risk) to proxycast-core 2026-02-08 13:31:33 +08:00
coso b70a6e748d refactor: migrate database/workspace/memory/content/agent-types/general_chat-types to proxycast-core
Phase 2 of workspace crate migration:
- database/ (12,420 lines, all DAO + schema + migration)
- workspace/ (860 lines)
- memory/ (1,002 lines)
- content/ (657 lines)
- agent::types (583 lines, pure data types)
- general_chat::types (pure data types)
- models::project_model (1,576 lines)

Main crate modules rewritten as thin re-exports.
2026-02-08 13:09:23 +08:00
coso 881d45f089 fix: 升级 tauri npm 包版本对齐 Rust crate
- @tauri-apps/api: 2.9.1 → 2.10.1 (匹配 tauri 2.10.2)
- @tauri-apps/plugin-dialog: 2.5.0 → 2.6.0 (匹配 tauri-plugin-dialog 2.6.0)
2026-02-08 03:42:56 +08:00
coso 19e14c0f4c refactor: 拆分 crate 架构 - models/providers/config/middleware/plugin 迁移到子 crate
- proxycast-core: models, data, logger, errors, backends, connect, session_files,
  orchestrator, session(rate_limit/sticky), config, middleware, plugin
- proxycast-providers: providers, converter, streaming, translator, stream,
  session(SessionManager/signature_store)
- 主 crate 保留 Tauri 业务逻辑,通过 re-export 保持 API 兼容
- 版本号升级到 0.60.0
- 移除已删除的 useFlowEvents hook 导出
- 移除已废弃的 flow_monitor 端到端测试
2026-02-08 03:19:44 +08:00
coso 37054b49f6 fix: regenerate Cargo.lock with git source for aster (without local patch) 2026-02-07 22:51:25 +08:00
coso 931ac90967 fix: switch aster dependency to git for CI build 2026-02-07 22:44:50 +08:00
coso 65f9d310e7 chore: bump version to 0.59.0 2026-02-07 22:26:51 +08:00
coso 9afbc3c7ba fix: switch aster dep to git for CI/CD build 2026-02-07 09:17:38 +08:00
coso e287fd3d39 release: v0.58.0 2026-02-07 02:01:04 +08:00
cosoandWarp 174ae555db perf: 优化 CI 构建时间 v0.57.0
- whisper-rs 改为可选依赖 (local-whisper feature)
- 禁用 LTO (CARGO_PROFILE_RELEASE_LTO=off)
- 增加 codegen-units 到 32
- 移除构建后清理步骤
- 统一内容创作系统增强

Co-Authored-By: Warp <agent@warp.dev>
2026-02-04 20:34:49 +08:00
coso 322b2e07f8 feat: 统一内容创作系统 v0.56.0
- 项目选择器支持按主题类型筛选
- 修复 Select 组件点击外部不关闭的问题
- projectId 贯穿整个聊天生命周期
- 修复 lint 错误和 clippy 警告
- 新增人设、素材、模板管理功能
2026-02-04 00:00:01 +08:00
cosoandClaude Opus 4.5 08ad7a332e release: v0.55.0 - 代码重构与 ESLint 修复
- 更新版本号到 0.55.0
- 修复 ESLint 警告:将 CREATION_MODE_CONFIG 移至单独的 constants.tsx
- 修复 ESLint 警告:将 CreationMode 类型移至 types.ts
- 修复 ProviderPoolPage 未使用变量警告
- 修复 Rust 测试中缺少的 Config 字段

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 12:42:19 +08:00
cosoandClaude Opus 4.5 2ba5eaa4c8 release: v0.54.0 - 代码质量改进与 Clippy 修复
- 更新版本号到 0.54.0
- 修复所有 ESLint 警告
- 通过 cargo clippy --fix 自动修复大量代码风格问题
- 修复 format! 字符串内联变量
- 修复 &PathBuf 改为 &Path
- 使用 #[derive(Default)] 替代手动实现
- 修复 aster 依赖版本 (v0.7.1 -> v0.7.0)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 03:27:40 +08:00
cosoandClaude Opus 4.5 2b65f6ac89 chore: 更新 aster 依赖到 v0.7.0
- 新增渐进式修剪 (Progressive Pruning) 功能
- 新增自动溢出重试 (Auto Overflow Retry) 功能

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 01:41:50 +08:00
cosoandClaude Opus 4.5 91fe7ff481 feat: v0.53.0 - 统一对话系统与内容创作增强
Features

统一对话系统
- 新增 useUnifiedChat Hook 支持多种对话模式 (Agent/General/Creator)
- 新增统一对话 API 封装 (unified-chat.ts)
- 新增 Chat 类型定义系统 (chat.ts)
- 支持流式响应和工具调用

内容创作增强
- 新增 Content Creator 文档和系统提示词
- 新增 writeFile 解析器支持画布输出
- 优化 General Chat 组件支持内容创作模式
- 支持多种创作主题 (社交媒体/海报/音乐/知识/规划/文档/视频/小说)

会话管理优化
- 增强 Aster Agent 状态管理
- 新增统一会话命令 (unified_chat_cmd)
- 新增 Chat DAO 数据访问层
- 优化数据库迁移脚本

Bug Fixes
- 修复 ESLint 警告和未使用变量问题
- 修复 React Hooks 依赖警告

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 00:01:34 +08:00
coso be4c4641c2 release: v0.52.0
## Features

### Artifact 系统优化
- 修复代码块点击后右侧面板无法显示代码的问题
- 移除重复的「生成中...」状态指示器(保留右下角)
- 优化代码块折叠卡片的点击交互,自动匹配对应 Artifact

### 会话历史持久化
- 新增 Aster SessionStore 实现,将会话数据存储到 ProxyCast 数据库
- 修复切换话题时无法加载历史消息的问题
- 统一 Aster 框架与 ProxyCast 的会话存储

### AI 自动生成标题
- 新增 AI 自动生成会话标题功能
- 使用本地代理服务器调用 AI 生成简洁标题
- 失败时自动回退到简单截断方式

### 流式状态优化
- 代码渲染器工具栏在流式生成时显示旋转加载图标
- Artifact 占位符卡片支持流式状态显示
- 统一流式状态的传递和显示逻辑

## Bug Fixes
- 修复 db.lock() 调用缺少错误处理的编译错误
- 修复 ArtifactToolbar 中未使用的变量警告
2026-02-02 15:38:00 +08:00
coso 2f3194a56e feat: v0.51.0 - Artifact System 集成与 Content Creator 增强
主要更新:
- 集成 Artifact 系统到聊天界面,支持代码块折叠和画布预览
- 新增 Novel/Script Canvas 类型支持
- 新增 Projects 模块(项目管理、内容编辑、记忆系统)
- 新增 Memory 系统(角色、大纲、风格指南、世界观)
- 新增 Reasoning Handler 支持思维链处理
- 优化 Workspace 管理和 Agent 类型定义
2026-02-02 01:15:54 +08:00
coso ef43d3e74d feat: v0.50.0 - 图片生成支持 base64 格式、语音功能优化、Smart Input 重构 2026-02-01 00:05:41 +08:00
coso d79ab9a49e ci: 添加 libxdo-dev 依赖修复 Linux 构建 2026-01-31 12:14:10 +08:00
coso f135398963 fix: 修复测试代码编译错误 - 添加缺失的 asr 字段和 import 2026-01-31 11:48:18 +08:00
coso 5a81ea2f1b ci: 添加 libasound2-dev 依赖修复 Linux 构建 2026-01-31 11:38:39 +08:00
coso 2fa51b49fe fix: 修复编译错误和 dead_code 警告 2026-01-31 09:54:17 +08:00
coso 562464f53f feat: 语音输入合并到截图输入框,版本更新至 0.49.0
- 将语音输入功能合并到截图输入框(pill-shaped 浮动栏)
- 添加麦克风按钮(32x32px)支持点击录音
- 支持录音、转写、润色三种状态显示
- 修复讯飞 ASR Broken pipe 错误
- 清理旧的语音输入 UI 文件
- 修复 DropdownMenu 组件支持受控模式
- 修复 StreamResponse 导出问题

注:部分编译错误待后续修复
2026-01-31 00:01:20 +08:00
coso 2a7ed06d21 chore: bump version to 0.48.4 2026-01-30 01:31:09 +08:00
coso e7385a2467 docs: 添加 AI Agent 开发指南和测试策略文档 2026-01-29 02:20:38 +08:00
coso f34f120b83 chore: bump version to 0.48.3 2026-01-25 01:16:40 +08:00
coso c6f433f190 feat: complete plugin system refactoring and credential management improvements 2026-01-25 01:13:50 +08:00
coso 66ddc6ce70 chore: bump version to 0.48.2 2026-01-25 01:10:04 +08:00
coso a98fc91860 chore: bump version to 0.48.1 2026-01-25 01:06:53 +08:00
cosoandClaude Opus 4.5 769709a467 feat(stage-1): 删除 OAuth 插件 UI 组件
删除内容:
- 删除 OAuthPluginTab.tsx - OAuth 插件标签页
- 删除 OAuthPluginContainer.tsx - 插件容器组件
- 从 ProviderPoolPage 移除 "OAuth 插件" 标签按钮
- 移除 CategoryType 中的 "plugins" 类型
- 更新 index.ts 导出,移除已删除组件的引用

保留内容:
- ClaudeOAuthForm.tsx - 被内置 OAuth 表单使用
- OAuthUrlDisplay.tsx - 被内置 OAuth 表单使用
- 所有内置 OAuth 凭证管理功能

验证:
- TypeScript 编译通过,无错误
- 前端代码结构完整

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 23:43:53 +08:00
coso 2e41683134 fix: 修复后台线程调用 UI 导致的 macOS 崩溃问题
修复了在 tokio 后台线程中调用 macOS UI 操作导致的崩溃:
- 使用 run_on_main_thread() 将更新窗口创建操作调度到主线程
- 解决 "Must only be used from the main thread" 断言失败
- 修复测试代码中过时的 iflow 字段引用
- 更新版本号到 0.48.0
2026-01-22 12:37:23 +08:00
coso 2989ba2582 fix: 修复 Tauri 插件版本不匹配问题
- 将 tauri-plugin-dialog 从 v2.6.0 降级到 v2.5.0
- 确保与前端 @tauri-apps/plugin-dialog v2.5.0 版本匹配
- 修复 CI/CD 构建中的版本冲突错误
2026-01-18 21:54:05 +08:00
coso 89541bf38d feat: 升级到 v0.48.0 并更新 Aster 框架依赖
- 版本号从 0.47.4 升级到 0.48.0
- 更新 Aster Agent Framework 依赖从 v0.4.2 到 v0.4.3
- 切换到远程 GitHub 仓库依赖,支持 CI/CD 环境
- 保留本地开发路径配置注释,便于开发时切换
- 修复图像分析工具组件的 React 导入问题
- 格式化代码以符合项目规范
2026-01-18 21:30:20 +08:00
coso e493714f02 fix(ci): 分离 Linux 和 macOS/Windows 构建步骤
- Linux: 设置 OPENSSL_NO_VENDOR=1 使用系统 OpenSSL
- macOS/Windows: 不设置该变量,使用 vendored OpenSSL 编译
2026-01-16 19:16:51 +08:00
coso 8073f23263 fix(ci): 修复 Windows 和 Linux 构建问题
- Windows: 使用 PowerShell 语法替代 rm -rf
- Linux: 安装 libssl-dev 并设置 OPENSSL_NO_VENDOR 使用系统 OpenSSL
  避免 OpenSSL 源码编译时的汇编器兼容性问题
2026-01-16 18:28:25 +08:00