Files
sundynix-agentix/PROGRESS.md
T
Blizzard e63632adf5 feat(gateway): 输入护栏拦提示词注入/超大体(弃用空桩)+ 单测
Guardrail 中间件此前是空桩(直接 c.Next)。落地输入护栏:

- 新增纯逻辑包 internal/guardrail:Inspect(body) 检测提示词注入(忽略既定指令/
  角色越权/诱导泄露提示词,中英文模式)+ 超大体(>256KB),与 HTTP 解耦便于单测;
  敏感词黑名单留空可扩展。
- 中间件:仅对带 JSON 体的 POST/PUT 检查(文件上传 multipart 与 GET/SSE 跳过);
  限读 + 命中拦截返回 422;未命中则还原请求体(io.NopCloser)供 handler 读取。
- 输出护栏不在网关做:Token 流是 SSE 实时流,网关缓冲会破坏流式 —— 标到路线图,
  应在 dispatcher token 发射层做。

验证:
- 单测:正常输入不误拦、中英文注入均拦、超大体拦、边界恰好放行。
- 实跑(nats+gateway):注入(中/英) → 422 带原因;干净输入 → 202 且 body 正确还原、
  handler 正常发布到 NATS。

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

109 lines
5.8 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;熔断时回流提示并收尾流,不静默丢弃)
- [ ] 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 余下**:输出护栏(dispatcher token 发射层)· 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`。