Files
sundynix-agentix/PROGRESS.md
T
Blizzard 31bf3e5907 feat(dispatcher): 熔断降级真三态状态机(弃用空桩)+ 单测
CircuitBreaker 此前是空桩(Allow 恒 true、Report 空操作),dispatcher 调 LLM/工具
无任何失败保护——今天就撞上 DeepSeek 流连接累积把报告卡死。改为真实三态熔断:

- Closed:正常放行;连续失败达阈值(默认5) → Open。
- Open:快速拒绝;冷却(默认10s)到点 → HalfOpen 放行少量探测(默认1)。
- HalfOpen:探测成功 → Closed 恢复;探测失败 → 重新 Open。
- sync.Mutex 并发安全(多任务 goroutine 共享);时钟可注入便于确定性测试。

orchestrator.Handle:熔断开启时不再静默丢弃任务,改为回流"服务繁忙"提示 +
CompleteStream 收尾,让客户端解阻不挂死。

测试(含 -race):达阈值断开、成功清零、半开恢复、探测失败重断、并发安全 —— 全过。
PROGRESS.md 勾掉熔断项。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 15:02:45 +08:00

108 lines
5.6 KiB
Markdown
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.
# sundynix-agentix · 进度清单
对照 [architecture.md](architecture.md)(5 层 + NATS 总线)与功能规划的完成度。**活文档:完成一项就把 `[ ]` 勾成 `[x]`。**
图例:`[x]` 已完成 · `[ ]` 未做 · 🟡 部分/桩(旁注说明)。最近更新:2026-06-17(至提交 `79f9912`)。
---
## 第 1 层 · CLIENTsundynix-desktop
- [x] React 19 + TypeScript + Tailwind 工业级 UI(🟡 自建 UI primitives,未用 shadcn —— 与架构图有偏差)
- [x] React Flow 编排画布 + JSON DSL 导出(含 branch 真/假边手柄)
- [x] Wails 本地 Go 运行时 + TS/Go 强绑定 + 本地文件 I/O(另存为 / 系统打开 / 系统通知)
- [x] 浏览器模式优雅降级(无 Wails 运行时也能跑)
- [x] ⌘K 命令面板
- [x] 运行·观测:节点级实时执行轨迹(SSE)
- [x] 顶栏依赖健康五盏灯
- [x] 知识库:入库可视化(解析→切块→向量化→抽取时间线)
- [x] 知识库:批量文件 / 文件夹入库 + 列表状态
- [x] 知识库:Obsidian 式文库(Markdown 阅读 + `[[双链]]` + 反链 + 笔记关系图)
- [x] 知识库:检索调试台 + 知识图谱(react-force-graph 力导向)
- [x] 报告:Markdown 实时预览 + 导出 Word / PDF / Markdown
- [ ] 🟡 PDF 导出走 webview 打印 —— **Wails 真机未验证**(浏览器预览 OK
## 第 2 层 · BUSINESS GATEWAYsundynix-gateway · Gin
- [x] Gin 统一接入层 + CORS + 限流中间件
- [x] MainDBPgSQL):user / task / model / kb / doc / doc_link / agent
- [x] CacheDBRedis):会话 / 限流
- [x] Task DSL Parser & Assembly
- [x] 模型配置控制面(按 kind 经 NATS 下发给 dispatcher / mcp-go
- [x] 独立运维控制台 sundynix-admin(模型 / 数据源页)
- [x] SSE 回流:Token 流 / 执行轨迹 / 入库进度
- [ ] 🟡 Harness 输入/输出护栏(Guardrail 中间件在,校验是 TODO 桩)
- [ ] 🟡 商业化与计费模块(占位,仅统计任务数)
## 第 3 层 · MESSAGE BUSNATS 零拷贝骨干网)
- [x] 任务队列(JetStream`sundynix.tasks.*`
- [x] Token 流(core NATS`sundynix.streams.<id>`
- [x] 执行轨迹流(`sundynix.exec.<id>`+ 入库进度流
- [x] 工具 request-reply`sundynix.tools.go/py.*`
- [x] 配置控制面(按 kind 请求模型配置 + 热更新广播)
## 第 4 层 · AI AGENT DISPATCHERsundynix-dispatcher · Eino
- [x] 按图执行引擎:拓扑 + 连线 + 分支剪枝(弃用线性拍平)
- [x] branch 真/假边标签精确选路(无标签退回边序,向后兼容)
- [x] map 真并行 fan-out(有界并发)+ aggregate 汇聚
- [x] render 节点(成稿 → docx
- [x] LLM PoolOpenAI 兼容流式(🟡 接 DeepSeek/百炼在线 API,非架构图的 vLLM/Ollama 集群)
- [x] 记忆召回(画像 + 历史注入)
- [x] 报告专用编排(规划 → 分章并行 → 汇聚 → 存源)
- [x] 会话历史写回
- [x] Harness 熔断降级中心(真三态状态机 Closed/Open/HalfOpen + 单测含 -race;熔断时回流提示并收尾流,不静默丢弃)
- [ ] Harness LLM 自动化评测(桩)
- [ ] 长期偏好记忆抽取(LLM 抽取 → 去重 → memory_upsertTODO
## 第 5 层 · MCP TOOLS
### sundynix-mcp-goI/O 型)
- [x] MCP 协议网关(队列组通配订阅)
- [x] 混合检索:Bleve + Milvus + Neo4jRRF 融合 + rerank
- [x] kb_ingest / kb_search / kb_graph
- [x] memory_get / memory_upsert · history_get / history_append
- [x] report_render / report_store / report_export
- [x] Word 渲染(🟡 自建零依赖 OOXML,非 UniOffice —— 偏差,UniOffice 商业授权)
- [ ] external_api(外部 API 工具)
### sundynix-mcp-py(算法型)
- [ ] 🟡 parse_documentdocx/pdf/xlsx 解析器在;MinerU / PaddleOCR 多模态为骨架)
- [ ] 代码解释器(docker 隔离执行,TODO
- [ ] 安全沙箱(gVisor / KataVM 强隔离 + AST 静态守卫,全为 TODO 桩)
## 跨层 / 工程
- [x] 存储扩展:文库列表/正文分离 + 双链 ID 索引 + 大文件正文存 MinIO
- [x] DB 规约全库统一:雪花字符串 id + created/updated + 软删(gateway 各表 + mcp-go Profile
- [x] 文件主表,文档间关联用雪花 ID(弃用按名关联)
- [x] 后端首批单测(19 纯逻辑用例:引擎/DSL/docx/报告)+ mcp-go 集成测试(Profile 迁移)
- [ ] 🟡 owner 隔离靠 `X-User-ID` 头 —— 可用但**可伪造,无真实鉴权**
- [ ] 集成/前端测试(`runGraph` / `handleReport` 需 mock pool/tools/sink;前端无测试)
---
## 未实现的大块(路线图)
- [ ] **真实登录 / 鉴权 / 会话**(替掉裸 `X-User-ID`,最影响"能否交付他人用")
- [ ] **代码解释器 + 安全沙箱**mcp-py 核心能力,目前全桩)
- [ ] **Harness 余下两件**:输入/输出护栏 · LLM 自动化评测(熔断降级已完成 ✅)
- [ ] **长期记忆抽取** + external_api 工具
- [ ] **计费 / 商业化**真实实现
- [ ] 微服务化拆分(Morph B)—— 现为 Monolith First**按设计如此,非缺陷**
## 收尾小债
- [ ] 6 个提交待 push`5d76652``79f9912`,需在普通终端 `git push origin main`
- [ ] PDF 导出 Wails 真机验证(不行则回退后端内嵌 CJK 字体出 PDF)
- [ ] 报告生成并发健壮性(writeSections 降并发 / 加单次超时,治偶发卡顿)
- [ ] MinIO 大文档改名/删除的孤儿对象 GC
- [ ] `make test` 目标(一键跑全后端测试)
---
> 本地起服务顺序坑见 memory `local-run-gotchas`**mcp-go 必须在 Milvus 之后起**,否则阻塞在 rag 初始化、不订阅工具,所有 mcp-go 工具 `no responders`。