87 Commits

Author SHA1 Message Date
83d9d8c200 ```
feat(learning): 添加技能学习候选者合成锁定机制

添加了 DraftSynthesisInProgress 和 DraftHasNoChanges 异常来处理并发场景,
确保同一技能学习候选者的合成过程不会重复执行。实现了 claim_learning_candidate_for_synthesis
方法来原子性地锁定候选者进行合成。

fix(web): 为技能草案创建端点添加适当的HTTP状态码

当草案没有变化或正在合成时,现在正确返回409状态码而不是内部错误。

feat(skills): 实现技能修订内容比较以检测无变化情况

添加了 _is_noop_revision 方法来比较基础技能和提议的修订,
如果内容没有实际变化则抛出 NoDraftChanges 异常。

refactor(process): 修复任务证据记录后根运行状态更新逻辑

将任务证据记录事件后的状态从 waiting 更改为 done,并设置 finished_at 时间戳。

feat(tools): 防止在同一运行中重复执行外部写入操作

为邮件发送、日历创建等外部写入工具添加去重机制,避免重复的外部操作。

test: 添加技能学习和工具执行的单元测试

增加测试用例验证并发草案合成、重复外部写入抑制和无变化修订检测等功能。
```
2026-06-16 15:58:42 +08:00
a65e59fcb6 test(plugins): cover skill mirror lifecycle 2026-06-16 12:24:19 +08:00
a9b830d11e feat(skills-ui): manage plugin skill mirrors 2026-06-16 12:12:19 +08:00
0ac3cce6f3 feat(api): manage declarative plugins 2026-06-16 12:01:12 +08:00
54bced4251 feat(runtime): sync declarative plugins at boot 2026-06-16 11:58:01 +08:00
a34b1219bc feat(skill-learning): merge plugin skill updates 2026-06-16 11:55:55 +08:00
c9e6c37b5c feat(plugins): enqueue skill upgrade candidates 2026-06-16 11:47:15 +08:00
994710e232 feat(plugins): mirror enabled plugin skills 2026-06-16 11:44:55 +08:00
094dde0b81 feat(skills): store immutable plugin upstream snapshots 2026-06-16 11:42:46 +08:00
41b45e0423 feat(plugins): discover packages and persist state 2026-06-16 11:40:31 +08:00
7020f2d67f feat(agent-service): 添加直接模式下的消息处理支持
当代理服务处于非运行状态时,现在会使用process_direct方法来处理入站消息,
而不是依赖submit_direct方法。这使得服务能够在两种模式下都能正确处理消息。

添加了新的DirectModeInboundService和RunningInboundService测试类来验证
不同模式下的行为,并增加了相应的集成测试用例。
2026-06-16 11:05:08 +08:00
aadbe80a23 fix(cron_service): 修复更新任务启用状态时的死锁问题
当定时任务服务正在运行时,更新任务的启用状态可能导致死锁。
现在通过改进锁的使用方式来避免这个问题。

在update_enabled方法中添加了正确的变量初始化,
并在循环逻辑中进行了优化以确保正确释放锁。
同时添加了专门的测试用例来验证在并发场景下不会发生死锁。
2026-06-16 09:40:57 +08:00
66f1f089c5 ```
feat: 增强URL基础地址验证功能

- 在app-instance/frontend/lib/api.ts中实现更严格的URL验证逻辑,
  包括检查是否以斜杠开头、包含空格字符,以及使用URL构造函数进行验证

- 在app-instance/frontend/lib/auth-portal.ts中应用相同的URL验证改进,
  提升认证门户的基础地址处理安全性

- 在auth-portal/src/lib/auth-client.ts中增强前端跳转URL构建功能,
  添加错误处理机制并在URL构造失败时抛出相应异常

- 统一三个文件中的normalizeBaseUrl函数实现,确保一致的输入验证行为
```
2026-06-16 09:26:55 +08:00
beddf12bc0 ```
feat(learning): 修复任务运行记录排序逻辑处理空attempt_index的情况

当RunRecord的attempt_index为None时,之前的排序逻辑会出现问题。
现在通过在排序键中显式处理None值来解决这个问题,
将None值排在前面,并将其转换为0进行比较。

同时添加了单元测试验证团队运行记录(没有attempt_index)的处理情况。
```
2026-06-15 18:00:59 +08:00
4b0bf65ace ```
feat(engine): 优化智能体循环中的助手消息处理逻辑

- 在没有工具调用时才添加助手消息到上下文
- 确保工具调用响应正确添加到消息上下文中
- 修复了消息构建的条件逻辑

fix(cron): 改进定时任务调度的时间解析功能

- 添加正则表达式导入用于时间显示解析
- 实现从显示文本中提取毫秒间隔的功能
- 增强整数转换的安全性,避免类型错误
- 优化定时任务配置的解析逻辑

feat(outlook): 增强Outlook集成的功能和稳定性

- 将默认超时时间从10秒增加到180秒
- 为状态检查函数添加可选的验证参数
- 串行执行邮件概览获取操作而非并行
- 改进连接状态验证逻辑

feat(channel): 添加设备名称作为会话标识的选项

- 为终端WebSocket适配器添加新的配置选项
- 实现基于设备名称生成会话对等ID的功能
- 记录原始对等ID和设备名称的元数据
- 支持从设备名称创建会话对等ID

feat(skills): 完善技能学习评估系统和进度跟踪

- 在应用启动时自动调度待评估的技能草稿
- 为技能评估工作创建独立的循环工厂
- 实现异步技能评估任务的取消和清理机制
- 添加技能评估进度报告和状态跟踪功能
- 扩展会话列表API以包含更多详细信息
- 防止对不存在的会话进行操作
- 优化技能草稿提交和评估的业务逻辑

perf(skills): 提升技能评估的并发性能

- 实现并行技能案例评估以提高效率
- 添加最大并行案例数的环境变量控制
- 实现实时评估进度更新和回调机制
- 优化评估过程中的资源管理和同步

refactor(services): 创建隔离的智能体循环实例

- 添加创建独立智能体循环的工厂方法
- 确保新循环继承运行时服务配置
- 支持技能评估等需要隔离环境的场景
```
2026-06-15 14:48:16 +08:00
8aeb97a5fc feat(app): 移除内置agents并添加CORS支持和技能上传优化
移除了agents/registry.json中的所有内置agents配置,将agents数组清空。
为web应用添加了CORS中间件支持,允许指定的前端地址跨域访问。
重构了技能上传功能,增加了LLM重写机制,自动规范化上传的技能格式。
新增了工具名称提取逻辑,从技能正文中自动识别Required Tools段落。
更新了技能学习候选者和草稿的载荷结构,添加评估报告统计信息。
修改了意图路由技能的说明,改进任务状态管理逻辑。
2026-06-12 13:25:20 +08:00
fc9fd93c36 feat: 支持多语言提示词本地化和界面优化
- 添加 prompt_locale 参数支持简体中文、繁体中文和英文提示词本地化
- 移除内置 agents 配置以简化系统架构
- 更新 ContextBuilder 使用动态提示词模板而非硬编码内容
- 在 AgentLoop、Web 接口和 AgentService 中传递 locale 参数
- 添加输出语言指令确保用户界面内容按指定语言生成
- 扩展前端 LanguageSwitcher 组件支持三种语言选项
- 优化 Header 和侧边栏组件的响应式布局和文本截断处理
- 更新测试用例验证不同语言环境下的提示词正确性
2026-06-10 16:11:05 +08:00
9cc3334ea7 ```
feat(app-instance): 添加Outlook MCP调用超时配置选项

新增OUTLOOK_MCP_CALL_TIMEOUT_SECONDS环境变量,默认值为60秒,
用于控制后端等待Outlook MCP调用的超时时间。

在create-instance.sh脚本中添加了相应的命令行参数解析和处理逻辑,
同时更新了deploy-control组件的相关配置和测试用例。

BREAKING CHANGE: 新增配置项可能需要现有部署进行相应调整。
```
2026-06-09 14:23:37 +08:00
dc4c6f313d fix(providers): avoid chat template body for vllm mistral 2026-06-09 13:19:09 +08:00
9e2c02a333 feat(skills-ui): show replay eval coverage 2026-06-08 13:38:10 +08:00
b9171998b9 feat(skill-learning): gate publish on replay confidence 2026-06-08 13:36:55 +08:00
64d789a3d0 feat(skill-learning): produce replay eval reports 2026-06-08 13:35:58 +08:00
cc1bf85517 feat(skill-learning): run replay arms through agent loop 2026-06-08 13:33:53 +08:00
4c8bc53d33 feat(skill-learning): add surrogate tool evaluator 2026-06-08 13:33:02 +08:00
70014c0f70 feat(engine): allow replay tool executor injection 2026-06-08 13:32:14 +08:00
eb69bb168a feat(skill-learning): add replay tool policy 2026-06-08 13:31:13 +08:00
7287e93f87 feat(skill-learning): select replay eval cases 2026-06-08 13:30:00 +08:00
a925f0e77f feat(skill-learning): preserve base skill during synthesis 2026-06-08 13:28:41 +08:00
6dc580ab26 feat(skill-learning): add draft preservation checks 2026-06-08 13:27:10 +08:00
3a16dc283d feat(skill-learning): extend eval report payload 2026-06-08 13:26:12 +08:00
e0bc6c55b0 chore: update external connector deployment flow 2026-06-05 17:27:05 +08:00
2c5205b06e feat: 添加MinIO文件系统支持并优化外部连接器功能
- 添加MinIO用户文件系统配置选项(BEAVER_MINIO_ROOT_USER等)
- 更新外部连接器配置结构,包括BASE_URL和认证令牌设置
- 改进connector provider支持更多类型(official, feishu_bot等)
- 实现Mistral模型推理模式支持reasoning_effort参数
- 增强外部连接器策略配置和运行时配置管理
- 添加connector bridge事件验证和安全保护机制
- 优化任务路由逻辑,区分simple_chat和new_task场景
- 更新初始技能工具提示配置,分离authoring admin功能
2026-06-05 11:46:40 +08:00
236ac19789 test: add pytest asyncio dependency 2026-06-03 16:34:37 +08:00
ba2417c7f2 merge: personal user filesystem minio integration 2026-06-03 16:32:29 +08:00
c3d84b904a feat: implement channel runtime connectors 2026-06-03 16:22:44 +08:00
ffa1249403 feat: integrate MinIO-backed user filesystem 2026-06-03 12:06:34 +08:00
33a9845566 ```
feat(engine): 添加技能查看工具并优化异步任务管理

- 添加SkillViewTool到引擎加载器中,增强技能管理功能
- 在AgentLoop中引入_active_direct_task来跟踪活跃任务
- 实现直接任务执行时的同步处理逻辑
- 更新工具实例化方式以支持依赖注入

feat(config): 增加智能体运行时参数配置支持

- 扩展AgentDefaultsConfig添加max_tokens和temperature字段
- 实现配置解析函数_first_config_value处理多个配置源
- 支持通过Web API动态更新智能体运行时参数
- 添加前端页面配置表单和验证逻辑

refactor(provider): 统一最大令牌数参数类型为可选整型

- 将所有LLM提供者的max_tokens参数改为int | None类型
- 为AnthropicProvider实现模型特定的最大令牌数默认值
- 调整参数传递逻辑,优先级:调用参数 > 配置文件 > 模型默认值
- 移除硬编码的默认值,改用条件判断

feat(process): 增强事件投影功能

- 添加工具调用开始/结束事件的映射逻辑
- 实现技能激活事件的识别和展示
- 添加辅助函数处理工具调用名称和参数提取
- 优化运行记录关联逻辑,提升事件匹配准确性

fix(web): 更新网络请求客户端信任环境设置

- 将WebFetchTool和WebSearchTool的trust_env参数设为True
- 确保HTTP客户端能够正确使用系统代理配置
- 修复可能的网络连接问题

test: 添加配置加载和事件投影相关测试

- 新增智能体默认参数配置测试用例
- 实现API配置持久化和重载测试
- 添加技能卡片和工具事件的投影测试
```
2026-05-27 13:37:06 +08:00
55b39563a0 test: cover task detail live timeline updates 2026-05-26 13:49:31 +08:00
41ac87e322 feat: make task detail timeline first 2026-05-26 13:48:18 +08:00
542b23ef6e fix: tighten task detail component interactions 2026-05-26 12:48:27 +08:00
9002d1206f feat: add task detail timeline components 2026-05-26 12:30:22 +08:00
dd9f40b38c fix: allow user task timeline actor 2026-05-26 12:24:50 +08:00
96562877cc fix: align agent timeline event contract 2026-05-26 12:20:33 +08:00
f58a57e5b8 test: cover failed task team timeline projection 2026-05-26 12:13:20 +08:00
362aae9b12 feat: enrich task process timeline events 2026-05-26 12:09:57 +08:00
29d175222d fix: make acceptance timeline dedupe robust 2026-05-26 12:04:12 +08:00
2e4f8541ee fix: dedupe task timeline milestones 2026-05-26 11:59:49 +08:00
a1164dc49a fix: harden task timeline model 2026-05-26 11:52:46 +08:00
7b638b083a feat: add task timeline model 2026-05-26 11:28:57 +08:00
6e9e74d1ee feat(engine): 添加运行时上下文支持并重构工具迭代限制
添加 RuntimeContext 类用于捕获模型运行时的日期时间信息,
包括UTC时间、本地时间和时区信息,并在系统提示中显示这些信息。

同时增加最大上下文消息数和工具迭代次数的配置选项,
将验证服务从引擎加载器中移除,并更新相关的数据结构和接口。

BREAKING CHANGE: 移除了验证服务,相关字段被替换为证据状态和接受状态。

- 添加 RuntimeContext 类和相关渲染方法
- 增加 max_context_messages 和 max_tool_iterations 配置
- 移除 ValidationService 相关代码
- 更新消息记录中的验证状态字段
- 添加原始工具调用检测和回退处理
2026-05-26 11:18:35 +08:00