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>
This commit is contained in:
+3
-2
@@ -31,7 +31,8 @@
|
||||
- [x] 模型配置控制面(按 kind 经 NATS 下发给 dispatcher / mcp-go)
|
||||
- [x] 独立运维控制台 sundynix-admin(模型 / 数据源页)
|
||||
- [x] SSE 回流:Token 流 / 执行轨迹 / 入库进度
|
||||
- [ ] 🟡 Harness 输入/输出护栏(Guardrail 中间件在,校验是 TODO 桩)
|
||||
- [x] Harness **输入**护栏(拦提示词注入 + 超大体,纯逻辑 `internal/guardrail` + 单测 + 实跑验证)
|
||||
- [ ] 🟡 Harness **输出**护栏(应在 dispatcher token 发射层做,网关侧会破坏 SSE 流式 —— 见路线图)
|
||||
- [ ] 🟡 商业化与计费模块(占位,仅统计任务数)
|
||||
|
||||
## 第 3 层 · MESSAGE BUS(NATS 零拷贝骨干网)
|
||||
@@ -89,7 +90,7 @@
|
||||
|
||||
- [ ] **真实登录 / 鉴权 / 会话**(替掉裸 `X-User-ID`,最影响"能否交付他人用")
|
||||
- [ ] **代码解释器 + 安全沙箱**(mcp-py 核心能力,目前全桩)
|
||||
- [ ] **Harness 余下两件**:输入/输出护栏 · LLM 自动化评测(熔断降级已完成 ✅)
|
||||
- [ ] **Harness 余下**:输出护栏(dispatcher token 发射层)· LLM 自动化评测(熔断降级 ✅、输入护栏 ✅ 已完成)
|
||||
- [ ] **长期记忆抽取** + external_api 工具
|
||||
- [ ] **计费 / 商业化**真实实现
|
||||
- [ ] 微服务化拆分(Morph B)—— 现为 Monolith First,**按设计如此,非缺陷**
|
||||
|
||||
Reference in New Issue
Block a user