Files
sundynix-agentix/PROGRESS.md
T
Blizzard 5ec558bf81 build: 加 make test/test-go/test-web/test-py 一键测试目标
- test-go: 各 Go 模块 go test(DB 集成测试无 MEMORY_TEST_DSN 自动跳过)
- test-web: 前端 tsc 类型检查
- test-py: mcp-py 沙箱守卫测试(pytest 缺则用内置 harness 兜底)
- test = test-go + test-web

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 11:44:31 +08:00

109 lines
6.3 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 流 / 执行轨迹 / 入库进度
- [x] Harness **输入**护栏(拦提示词注入 + 超大体,纯逻辑 `internal/guardrail` + 单测 + 实跑验证)
- [ ] 🟡 Harness **输出**护栏(应在 dispatcher token 发射层做,网关侧会破坏 SSE 流式 —— 见路线图)
- [ ] 🟡 商业化与计费模块(占位,仅统计任务数)
## 第 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;熔断时回流提示并收尾流,不静默丢弃)
- [x] Harness LLM 自动化评测(规则检查 + LLM-as-judge,异步 off 热路径评分记录 + 单测)
- [ ] 长期偏好记忆抽取(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 多模态为骨架)
- [x] 代码解释器(Docker 隔离真执行:禁网/非root(65534)/丢能力/只读根+tmpfs/限内存CPU进程/超时kill/一次性;无 Docker 优雅降级)
- [x] 安全沙箱 AST 静态守卫(拦危险导入/调用/逃逸属性,6 单测)+ 4 项隔离实跑验证(正常/非root/禁网/超时);gVisor/Kata 作生产加固标注
## 跨层 / 工程
- [x] 存储扩展:文库列表/正文分离 + 双链 ID 索引 + 大文件正文存 MinIO
- [x] DB 规约全库统一:雪花字符串 id + created/updated + 软删(gateway 各表 + mcp-go Profile
- [x] 文件主表,文档间关联用雪花 ID(弃用按名关联)
- [x] 后端首批单测(19 纯逻辑用例:引擎/DSL/docx/报告)+ mcp-go 集成测试(Profile 迁移)
- [x] **真实鉴权(JWT)闭环**:后端注册/登录/校验 + RequireAuth 保护路由 + owner=已验证 uid(去掉 header 兜底);前端登录/注册门 + 存 token + Bearer + 401 自动登出 + 顶栏用户/登出。实跑验证(含 CORS Authorization 修复)
- [ ] 集成/前端测试(`runGraph` / `handleReport` 需 mock pool/tools/sink;前端无测试)
---
## 未实现的大块(路线图)
- [x] **真实登录 / 鉴权(JWT** —— 后端 + 前端闭环已完成 ✅
- [x] **代码解释器 + 安全沙箱**AST 守卫 + Docker 隔离已落地 ✅;生产可换 gVisor/Kata
- [ ] **Harness 余下**:输出护栏(dispatcher token 发射层)(熔断降级 ✅、输入护栏 ✅、LLM 自动化评测 ✅ 已完成)
- [ ] **长期记忆抽取** + external_api 工具
- [ ] **计费 / 商业化**真实实现
- [ ] 微服务化拆分(Morph B)—— 现为 Monolith First**按设计如此,非缺陷**
## 收尾小债
- [ ] 6 个提交待 push`5d76652``79f9912`,需在普通终端 `git push origin main`
- [ ] PDF 导出 Wails 真机验证(不行则回退后端内嵌 CJK 字体出 PDF)
- [ ] 报告生成并发健壮性(writeSections 降并发 / 加单次超时,治偶发卡顿)
- [ ] MinIO 大文档改名/删除的孤儿对象 GC
- [x] `make test` 目标(test-go / test-web / test-py 一键跑)
---
> 本地起服务顺序坑见 memory `local-run-gotchas`**mcp-go 必须在 Milvus 之后起**,否则阻塞在 rag 初始化、不订阅工具,所有 mcp-go 工具 `no responders`。