Files
iAs/ias-db/migrations/20260709004000_insert_upgrade_log_0_3_0.sql
T
wunianxiao af6cfdaa83 feat: 拆分 worker 架构并增强 assistant 安全保护
- 新增 daemon/channel/assistant/function/scheduler/logging worker 架构和 JetStream 消息协议

- 修复邮件通知误入 assistant、迁移 checksum、日志 subject 和工具调用无限循环风险

- 新增 assistant 工具轮次熔断、工具结果截断和提示词软收敛规则

- 补充邮件推送关键字、可信发件人配置、升级日志和验证测试
2026-07-10 00:41:36 +08:00

47 lines
3.6 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
INSERT INTO ias_upgrade_logs (
version,
released_at,
title,
description,
changes,
modules
) VALUES (
'0.3.0',
'2026-07-09T00:00:00+08:00',
'进程拆分与 JetStream 数据面',
'按架构拆分设计新增 daemon 控制面、独立 worker 和 async-nats JetStream 公共数据面,HTTP、调度、日志和本地 NATS 部署配置同步接入。',
'[
"新增 ias-daemon 控制面,负责 worker 进程管理、control socket、JetStream 初始化和状态汇总;依赖边界测试确保 daemon 不依赖 AI、上下文、微信或邮件业务 crate。",
"ias-common 新增 MessageEnvelope、inbound/outbound/function/schedule/log/DLQ payload、固定 stream/subject 命名和 JetStreamBus 薄封装,统一使用 async-nats + JetStream durable pull consumer、explicit ack、有限并发消费、消费循环持续回收 handler 任务、handler 失败显式 NAK 和最后一次失败后显式 DLQ 转发;DLQ message id 使用原消息 id + UUID,避免同毫秒并发去重碰撞。",
"新增 ias-channel、ias-assistant、ias-function、ias-scheduler 和 ias-logging worker;微信入站、assistant 回复、工具调用、邮件提醒、定时触发和结构化日志均通过 JetStream subject 路由;邮件提醒只发布微信 outbound,不会误进入 assistant inboundWeChat Worker 启动后继续发送上线提醒和版本更新通知。",
"CLI 新增 ias daemon run、ias worker assistant/wechat/mail/function/scheduler/logging 和 ias http --hostias service start/stop/restart/status/logs 改为管理 daemon 控制面。",
"HTTP 新增 /v1/daemon/statusdaemon control socket 不可用时返回 degraded 状态,HTTP 可独立启动。",
"数据库新增 ias_schedules、ias_schedule_fires 和 ias_assistant_turns 表;Scheduler Worker 通过 fire_id 主键保证同一触发只发布一次,失败 fire 可重试,publishing 超时后可回收;Assistant Worker 持久化 active/completed/cancelled turn 状态,worker 重启后 function result 可继续当前 turn。",
"删除 ias-service::run_service、旧 ias-service supervisor、内存队列/control/runtime 单进程代码和旧微信 looper,避免新 daemon 与旧 supervisor 双实现并存;daemon 对初始启动失败或运行后退出的 worker 会在后续健康检查 tick 中按配置重试。",
"新增 docker-compose.nats.yml,本地 NATS JetStream 使用 file store ./data/nats,客户端和监控端口默认只绑定 127.0.0.1。",
"新增 worker 消息序列化/幂等测试、daemon cargo tree 依赖边界测试、max_deliver 语义测试和 JetStream ack/redelivery/DLQ 集成测试模板;/data 已加入 .gitignore,避免误提交 NATS file store;已验证 cargo fmt --check、cargo check 和 cargo test,真实 NATS JetStream 集成测试默认 ignored,需要启动 docker-compose.nats.yml 后手动运行。"
]'::jsonb,
'{
"ias-common": "0.2.0",
"ias-ai": "0.1.14",
"ias-wechat": "0.1.1",
"ias-context": "0.1.6",
"ias-http": "0.1.17",
"ias-mail": "0.1.17",
"ias-db": "0.1.2",
"ias-service": "0.1.27",
"ias-daemon": "0.1.0",
"ias-channel": "0.1.0",
"ias-assistant": "0.1.0",
"ias-function": "0.1.0",
"ias-scheduler": "0.1.0",
"ias-logging": "0.1.0",
"ias-main": "0.3.0"
}'::jsonb
) ON CONFLICT (version) DO UPDATE SET
released_at = EXCLUDED.released_at,
title = EXCLUDED.title,
description = EXCLUDED.description,
changes = EXCLUDED.changes,
modules = EXCLUDED.modules;