LoveLosita
|
96be3e2a02
|
Version: 0.6.6.dev.260317
✨ feat(task,agent): 新增任务完成接口,并打通聊天全链路 Token 记账
- ✅ 新增“标记任务为完成”接口,并补充幂等保护,避免重复完成导致状态污染
- 📊 为聊天链路补充 Token 统计能力:
- 流式主对话链路直接读取模型 `usage`
- Agent 链路通过 `Eino callback + ctx` 聚合 `Generate usage`
- 在流式场景下补齐缺失的 `usage` 数据
- 🧾 按口径 B 完成 Token 落库:
- 用户消息 `token` 记为 `0`
- 助手消息记录本轮总 `token`
- 持久化时同步更新 `chat_histories.tokens_consumed`、`agent_chats.tokens_total`、`users.token_usage`
- 🔄 异步标题生成产生的 Token 通过 Outbox 事件完成账本增量调整,保证统计口径一致
- 📝 同步更新 `AGENTS.md` 与 `.gitignore`
- 📚 小幅更新 README 说明文档
|
2026-03-17 18:23:07 +08:00 |
|
Losita
|
09dca9f772
|
Version: 0.6.5.dev.260316
✨ feat(agent): 通用分流接入随口问图编排,修复任务查询条数与重复输出问题
- ♻️ 将 Agent 路由升级为通用 `action` 分流机制,统一支持 `chat` / `quick_note_create` / `task_query`
- 🧩 新增 `taskquery` 子模块并落地图编排链路:`plan -> quadrant -> time_anchor -> tool_query -> reflect`
- 🔧 在图内接入 `query_tasks` 工具调用,支持自动放宽检索条件与反思重试,最多重试 2 次
- 🚪 保持 `/agent/chat` 作为多合一入口,不额外新增任务查询 HTTP 接口
- 🪄 修复“随口问”场景下的双重列表输出问题:LLM 仅保留简短前缀,任务列表统一由后端进行确定性渲染
- 🎯 修复显式数量约束失效问题:支持提取“来一个”“前 3 个”“top5”等数量表达,并将其锁定为 `limit`
- 🛡️ 防止在重试或放宽检索阶段改写用户显式指定的数量约束
- ✅ 补充并更新测试,覆盖路由解析、数量提取、`limit` 生效及重复输出等关键场景
📝 docs: 更新随口问链路文档与决策记录
- 📚 更新 README 5.4,新增/修订随口问链路 Mermaid 图
- 🧭 新增随口问功能决策记录 FDR
|
2026-03-16 22:30:45 +08:00 |
|
Losita
|
84371e2ff8
|
Version: 0.6.3.dev.260316
✨ feat(task): 新增四象限任务懒触发自动平移链路(读时派生 + Outbox 异步收敛)
- 🧩 为 `Task` 模型新增 `urgency_threshold_at` 字段,并补充复合索引 `user_id,is_completed,urgency_threshold_at,priority` 及相关事件 payload
- ♻️ 重构 `TaskService.GetUserTasks`:调整为“缓存/DB 读取原始任务 -> 读时派生优先级(`2 -> 1`、`4 -> 3`)-> 通过 `SETNX` 去重后发布平移事件”的处理链路
- 🚚 新增任务平移事件链路:
- `service/events/task_urgency_promote.go`
- 事件类型:`task.urgency.promote.requested`
- 支持 `Publish` + `RegisterHandler` + `ConsumeAndMarkConsumed` 的事务化消费流程
- 🛡️ 为 `TaskDAO` 新增幂等批量更新能力 `PromoteTaskUrgencyByIDs`,采用条件更新策略,仅对“达到阈值且未完成”的任务生效
- 🔌 更新启动接线逻辑:注册任务平移 handler,并将 `eventBus` 注入 `NewTaskService`
- 🧹 修复并升级任务缓存层,统一为 `[]model.Task` 原始模型缓存;同时清理误导性注释,并补充详细中文步骤化注释
- 🔗 打通 `QuickNote` 链路中的 `urgency_threshold_at` 透传与校验,覆盖 `state` / `tool` / `nodes` / `prompt` / `agent_quick_note` 全链路
- 💾 写库时补充落库 `task.UrgencyThresholdAt`
- 📝 新增功能决策记录
之前画的饼正在一块块填上~这一块饼填上之后,第一批开发的后端部分基本已经搞定了。后面的功能全都是天马行空的拓展功能。
|
2026-03-16 20:33:33 +08:00 |
|
Losita
|
7603a7561a
|
Version: 0.5.8.dev.260315
♻️ refactor(agent): 拆分 agentsvc,并增强 quicknote/outbox 注释与可维护性
- 📦 将 Agent 服务实现从 `service` 根目录迁移到 `service/agentsvc`,包含 `agent.go`、`agent_quick_note.go` 及相关测试
- 🔌 新增 service 层兼容桥接 `agent_bridge.go`,保持 `service.NewAgentService` 与 `*service.AgentService` 现有调用方式不变
- 📝 为 `quicknote` 补充高密度中文步骤化注释,覆盖 `graph` / `runner` / `nodes` / `tool` / `state` / `prompt`,明确职责边界、分支条件、重试与兜底策略
- 🧭 为 `infra/outbox` 与 service agent 链路补充详细中文注释,覆盖状态机流转、幂等处理、失败回写与异步持久化语义
- ✅ 统一格式化相关文件,并通过全量后端测试:`go test ./...`
📝 chore(docs): 更新 AGENTS.md 注释强制规范
- 📚 追加“注释规范(强制)”与“注释风格示例”
- ✍️ 明确复杂逻辑必须使用步骤化注释、跨文件调用需写调用目的、注释需同步维护
|
2026-03-15 18:08:33 +08:00 |
|
Losita
|
c689af56c8
|
Version: 0.5.6.dev.260314
✨ feat(agent): 重构 Agent 分层并修复普通聊天助手消息未写入 Redis 的问题
🔧 按职责重构 backend/agent 目录为 route/chat/quicknote 三层结构
🔄 将随口记链路拆分为 graph/nodes/tool/state/prompt,其中 graph 仅负责连线
🏃 新增 quicknote runner(方法引用)来收口节点依赖,提升代码可读性
🔀 将控制码分流逻辑抽离到 agent/route,服务层改为薄封装调用
📚 更新相关 README 与测试引用路径,保持原业务逻辑不变
🐛 修复普通聊天链路遗漏 assistant 写入 Redis 的问题(确保 MySQL 和 Redis 的口径一致)
|
2026-03-14 19:42:26 +08:00 |
|
Losita
|
0b7d1b999c
|
Version: 0.5.4.dev.260313
feat(agent): 重构随口记为模型控制码分流 + 单请求聚合规划,关闭非流式thinking并修复假成功,将随口记全流程从10s+缩短到5s左右,显著提升用户体验
路由层改为“模型控制码协议”分流(quick_note|chat),替换关键词/置信度猜测
路由命中 quick_note 时信任路由,graph 跳过二次意图判定(减少一次 LLM 调用)
新增单请求聚合规划:一次返回 title/deadline_at/priority_group/priority_reason/banter
快路径优先复用聚合结果;优先级缺失时本地兜底,避免再次触发优先级模型调用
最终回复优先使用聚合 banter,聚合路径缺失时使用固定文案,不再额外润色调用
非流式 Generate 全面显式关闭 thinking,并收紧 max_tokens/temperature(路由、JSON规划、banter)
保留并强化写库成功门槛:task_id > 0 才允许成功回包,修复“回复成功但未落库”风险
增加/更新测试:控制码解析、nonce 校验、标题提取、banter 复用与无效 task_id 防假成功
保持 OpenAI 兼容 SSE 格式与现有流式聊天链路不变
|
2026-03-13 18:17:57 +08:00 |
|
Losita
|
fb87ceaff5
|
Version: 0.5.2.dev.260312
feat(agent): ✨ 在 Agent 聊天接口中新增 AI 随口记功能
* 无相关意图时保持正常聊天,若识别到相关意图则自动切换为随口记模式
* 支持阶段状态反馈与话题化回复,提升交互体验
- 引入请求级当前时间基准,支持相对时间解析(如“明天”、“下周一”等)
- 增加非法日期拦截机制,防止用户输入格式错误的时间并返回修正提示
- 优化随口记图谱,补充阶段打点与详细中文注释,失败/重试分支处理更清晰
- 推送 `reasoning_content` 阶段状态,涵盖 `request.accepted`、`intent`、`deadline`、`priority`、`persisting`、`persisted`、`reply.polishing` 等状态
- 最终文案改为“事实句 + AI 生成的贴题轻松跟进句”,避免硬编码调侃内容
- 完善时间解析相关测试,确保功能正确性,测试通过 `go test ./...`
---
improvements: 🛠️ 开发心路历程与优化
* 修复随口记链路中 `assistant` 消息未写入 Redis 的问题,确保消息持久化
* 去除“分段正文伪流式”处理,改为最终正文一次性输出,简化内容流转
|
2026-03-12 22:17:20 +08:00 |
|
Losita
|
912a6d8cfe
|
Version: 0.5.0.dev.260310
refactor: ♻️ 调整 Outbox 写入时序并移除 Kafka 首包同步投递逻辑
* 将 `outbox` 表写入逻辑后置到 LLM 请求之后,减少主链路阻塞
* 删除 Codex 生成的 Kafka 首包同步投递抽象逻辑,简化消息发送流程
* 优化 SSE 首字到达时间,整体降低约 1s 延迟
* 当前在请求 LLM 之前的流程全部为 Redis 操作,显著降低 IO 开销
docs: 📊 保留 SSE 链路性能打点逻辑
* 保留原有 SSE 全链路打点计时代码,便于后续性能排查与分析
* 当前默认注释,如需使用可手动启用进行性能调试
|
2026-03-10 23:10:09 +08:00 |
|
LoveLosita
|
4906f814fd
|
Version: 0.4.6.dev.260307
feat: 🎯 新增 Token 估算与裁剪工具
* 在 `backend/pkg/token_budget.go` 中新增 Token 估算与裁剪工具
* 最大上下文 Token 数量设置为 224000,预留冗余 28000
* 从最旧消息开始裁剪,直到历史 Token 数量低于预算
* 根据裁剪后的历史消息数量动态计算 Redis 动态窗口大小
refactor: ♻️ 接入 Token 裁剪至 Service 主流程
* 在 `backend/service/agent.go` 中接入 Token 裁剪逻辑
* 先从历史数据获取(缓存未命中则查询数据库)
* 按 Token 预算裁剪历史消息,裁剪后再喂模型
* 根据裁剪结果动态调整 Redis 会话窗口
refactor: ♻️ 改造 Redis 历史队列为会话级动态窗口
* 在 `backend/dao/agent-cache.go` 中新增 `SetSessionWindowSize` 与 `EnforceHistoryWindow`
* `PushMessage` 和 `BackfillHistory` 方法使用会话动态窗口,而非固定 20 条历史消息
* 默认窗口大小提升至 128,但会被会话动态窗口值覆盖
|
2026-03-07 16:37:07 +08:00 |
|
LoveLosita
|
3f95d23376
|
Version: 0.4.5.dev.260307
feat: 📡 更新 SSE 消息流格式
* 将 SSE 消息流格式更新为 Apifox 可识别的 OpenAI 格式
* 便于后续与前端的对接与协作
|
2026-03-07 16:11:11 +08:00 |
|
LoveLosita
|
cb5ac07e3c
|
Version: 0.4.2.dev.260305
feat: 🧠 支持切换模型思考模式
* 新增模型思考开关配置,支持动态控制模型是否启用思考模式
|
2026-03-05 21:45:57 +08:00 |
|
LoveLosita
|
f9d52e0c5e
|
Version: 0.4.1.dev.260304
feat: 💬 新增对话创建与上下文记忆机制
* 新增对话的创建与使用功能,实现会话级上下文隔离
* 实现上下文保存与传递机制,使模型具备持续对话记忆能力
* 引入滑动窗口策略控制上下文规模
* 当前窗口大小限制为 20 条消息,超过后自动丢弃最早消息以控制上下文长度
docs: 📝 更新示例配置文件
* 更新示例配置文件,新增 `agent` 相关配置信息
* 明确 Agent 模块运行所需参数,方便本地部署与环境初始化
undo: ⚠️ Agent 上下文读取性能待优化
* 当前测试中模型响应速度偏慢
* 计划后续将上下文暂存至缓存层,以减少读取与拼接开销并提升响应速度
|
2026-03-04 19:56:08 +08:00 |
|
LoveLosita
|
5f86dcda2b
|
Version: 0.4.0.dev.260302
修改了gitignore文件,使得yaml不会被上传,保护隐私
接入eino,实现了agent的消息sse流式传输
|
2026-03-02 14:30:07 +08:00 |
|