Files
sundynix-agentix/PROGRESS.md
T
Blizzard 149c35c21b feat(gateway): 真实鉴权片1 —— JWT 注册/登录 + 校验中间件(后端核心)
替掉"裸 X-User-ID 头当身份"的临时方案,落地无状态 JWT 鉴权后端:

- internal/auth:JWT 签发/校验(HS256,密钥 env JWT_SECRET,仅接受 HMAC 防 alg 混淆)
  + bcrypt 密码哈希/校验。纯包,含单测。
- User 模型加 Name + PasswordHash(json:"-" 不外泄);store 加 CreateUser/GetUserByEmail/
  GetUserByID(邮箱唯一冲突 → ErrUserExists)。
- handler/auth:POST /auth/register(建用户+签发)· POST /auth/login(校验+签发,
  用户不存在与密码错同一文案防枚举)· GET /auth/me。
- middleware/auth:解析 Bearer JWT,校验通过把已验证 userID 注入上下文(非阻断)。
- userID(c) 改为优先取 JWT 注入的 uid,兜底 X-User-ID 头(前端尚未接登录,保持可用)。

验证:
- 单测:JWT 签发/解析往返、过期拒绝、篡改/非法拒绝、bcrypt 哈希校验。
- 实跑(nats+pg+gateway):注册→token+user(无密码)、重复注册 409、错密码 401、
  /auth/me 带 token 200 / 无 token 401;owner 隔离改用已验证 uid —— 带 token 建的库
  匿名/伪造 header 都看不到(JWT 用户数据归于雪花 id,header 无法臆测)。

片 2 待做:前端登录页 + 存令牌带 Bearer + 处理 401 + 去掉 header 兜底 + 保护路由。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 16:14:21 +08:00

6.0 KiB
Raw Blame History

sundynix-agentix · 进度清单

对照 architecture.md(5 层 + NATS 总线)与功能规划的完成度。活文档:完成一项就把 [ ] 勾成 [x]

图例:[x] 已完成 · [ ] 未做 · 🟡 部分/桩(旁注说明)。最近更新:2026-06-17(至提交 79f9912)。


第 1 层 · CLIENTsundynix-desktop

  • React 19 + TypeScript + Tailwind 工业级 UI🟡 自建 UI primitives,未用 shadcn —— 与架构图有偏差)
  • React Flow 编排画布 + JSON DSL 导出(含 branch 真/假边手柄)
  • Wails 本地 Go 运行时 + TS/Go 强绑定 + 本地文件 I/O(另存为 / 系统打开 / 系统通知)
  • 浏览器模式优雅降级(无 Wails 运行时也能跑)
  • ⌘K 命令面板
  • 运行·观测:节点级实时执行轨迹(SSE)
  • 顶栏依赖健康五盏灯
  • 知识库:入库可视化(解析→切块→向量化→抽取时间线)
  • 知识库:批量文件 / 文件夹入库 + 列表状态
  • 知识库:Obsidian 式文库(Markdown 阅读 + [[双链]] + 反链 + 笔记关系图)
  • 知识库:检索调试台 + 知识图谱(react-force-graph 力导向)
  • 报告:Markdown 实时预览 + 导出 Word / PDF / Markdown
  • 🟡 PDF 导出走 webview 打印 —— Wails 真机未验证(浏览器预览 OK

第 2 层 · BUSINESS GATEWAYsundynix-gateway · Gin

  • Gin 统一接入层 + CORS + 限流中间件
  • MainDBPgSQL):user / task / model / kb / doc / doc_link / agent
  • CacheDBRedis):会话 / 限流
  • Task DSL Parser & Assembly
  • 模型配置控制面(按 kind 经 NATS 下发给 dispatcher / mcp-go
  • 独立运维控制台 sundynix-admin(模型 / 数据源页)
  • SSE 回流:Token 流 / 执行轨迹 / 入库进度
  • Harness 输入护栏(拦提示词注入 + 超大体,纯逻辑 internal/guardrail + 单测 + 实跑验证)
  • 🟡 Harness 输出护栏(应在 dispatcher token 发射层做,网关侧会破坏 SSE 流式 —— 见路线图)
  • 🟡 商业化与计费模块(占位,仅统计任务数)

第 3 层 · MESSAGE BUSNATS 零拷贝骨干网)

  • 任务队列(JetStreamsundynix.tasks.*
  • Token 流(core NATSsundynix.streams.<id>
  • 执行轨迹流(sundynix.exec.<id>+ 入库进度流
  • 工具 request-replysundynix.tools.go/py.*
  • 配置控制面(按 kind 请求模型配置 + 热更新广播)

第 4 层 · AI AGENT DISPATCHERsundynix-dispatcher · Eino

  • 按图执行引擎:拓扑 + 连线 + 分支剪枝(弃用线性拍平)
  • branch 真/假边标签精确选路(无标签退回边序,向后兼容)
  • map 真并行 fan-out(有界并发)+ aggregate 汇聚
  • render 节点(成稿 → docx
  • LLM PoolOpenAI 兼容流式(🟡 接 DeepSeek/百炼在线 API,非架构图的 vLLM/Ollama 集群)
  • 记忆召回(画像 + 历史注入)
  • 报告专用编排(规划 → 分章并行 → 汇聚 → 存源)
  • 会话历史写回
  • Harness 熔断降级中心(真三态状态机 Closed/Open/HalfOpen + 单测含 -race;熔断时回流提示并收尾流,不静默丢弃)
  • Harness LLM 自动化评测(规则检查 + LLM-as-judge,异步 off 热路径评分记录 + 单测)
  • 长期偏好记忆抽取(LLM 抽取 → 去重 → memory_upsertTODO

第 5 层 · MCP TOOLS

sundynix-mcp-goI/O 型)

  • MCP 协议网关(队列组通配订阅)
  • 混合检索:Bleve + Milvus + Neo4jRRF 融合 + rerank
  • kb_ingest / kb_search / kb_graph
  • memory_get / memory_upsert · history_get / history_append
  • report_render / report_store / report_export
  • Word 渲染(🟡 自建零依赖 OOXML,非 UniOffice —— 偏差,UniOffice 商业授权)
  • external_api(外部 API 工具)

sundynix-mcp-py(算法型)

  • 🟡 parse_documentdocx/pdf/xlsx 解析器在;MinerU / PaddleOCR 多模态为骨架)
  • 代码解释器(docker 隔离执行,TODO)
  • 安全沙箱(gVisor / KataVM 强隔离 + AST 静态守卫,全为 TODO 桩)

跨层 / 工程

  • 存储扩展:文库列表/正文分离 + 双链 ID 索引 + 大文件正文存 MinIO
  • DB 规约全库统一:雪花字符串 id + created/updated + 软删(gateway 各表 + mcp-go Profile
  • 文件主表,文档间关联用雪花 ID(弃用按名关联)
  • 后端首批单测(19 纯逻辑用例:引擎/DSL/docx/报告)+ mcp-go 集成测试(Profile 迁移)
  • 🟡 真实鉴权(JWT):后端核心已完成 (注册/登录签发 JWT + 校验中间件 + owner 取已验证 uid + 单测/实跑);前端登录页 + 去掉 header 兜底 + 保护路由待做(片 2
  • 集成/前端测试(runGraph / handleReport 需 mock pool/tools/sink;前端无测试)

未实现的大块(路线图)

  • 🟡 真实登录 / 鉴权JWT 后端核心 ;前端登录 + 强制鉴权 = 片 2 待做)
  • 代码解释器 + 安全沙箱mcp-py 核心能力,目前全桩)
  • Harness 余下:输出护栏(dispatcher token 发射层)(熔断降级 、输入护栏 、LLM 自动化评测 已完成)
  • 长期记忆抽取 + external_api 工具
  • 计费 / 商业化真实实现
  • 微服务化拆分(Morph B)—— 现为 Monolith First按设计如此,非缺陷

收尾小债

  • 6 个提交待 push5d7665279f9912,需在普通终端 git push origin main
  • PDF 导出 Wails 真机验证(不行则回退后端内嵌 CJK 字体出 PDF)
  • 报告生成并发健壮性(writeSections 降并发 / 加单次超时,治偶发卡顿)
  • MinIO 大文档改名/删除的孤儿对象 GC
  • make test 目标(一键跑全后端测试)

本地起服务顺序坑见 memory local-run-gotchasmcp-go 必须在 Milvus 之后起,否则阻塞在 rag 初始化、不订阅工具,所有 mcp-go 工具 no responders