# `packages/agent/` — 穿搭 Agent **职责**(架构 §4.1):会话管理、意图识别、上下文组装、生成编排。 **不负责**:知识检索实现(调 `packages/retrieval`)。 ## 已实现 只有 `service.py` 里那条最小编排:配额预扣 → LLM 网关 → 成本落库 → 提交或退还。这是**垂直切片**,用来证明地基通了,不是 Agent 功能。 ## 架构 §7.2 的完整链路(九步,目前只做了第 5 步) | 步骤 | 状态 | | --- | --- | | ① 输入审核(TMS + 备案关键词库),fail-close | ❌ CR-06 | | ② 意图识别(含越界:医疗、身材评判) | ❌ FR-AGT-02 | | ③ 上下文组装(token 预算严格分配) | 部分:画像摘要 + 最近 N 轮历史(`AGENT_HISTORY_TURNS`,默认 10);检索知识与会话摘要未做 | | ④ 混合检索 | ❌ FR-AGT-04 | | ⑤ LLM 生成(流式 SSE) | 部分:非流式 | | ⑥ 生成后校验(禁忌违反 = 0、色值在板内) | ❌ FR-AGT-05 | | ⑦ 输出审核 | ❌ CR-06 | | ⑧ 落库 message + retrieval_trace + rule_hits + 成本 | 部分:ag_message 双行 + 成本已实现;retrieval_trace / rule_hits 列已建、待步骤④填充 | 表 `ag_conversation` / `ag_message` 已建(迁移 0007,T-P4-01);`ag_feedback` 尚未创建。 画像摘要经 `report.profile.latest_profile_summary` 由 apps 层闭包注入 (agent 与 report 同层,不允许直接互调)。 ## Token 预算(架构 §7.2,必须硬性限制) | 部分 | 预算 | | --- | --- | | 系统提示词(固定前缀,放最前以命中缓存) | ≤ 800 | | 画像摘要 | ≤ 500 | | 会话摘要 | ≤ 400 | | 检索知识 | ≤ 1500 | | 用户当前输入 | ≤ 500 | | **输入合计** | **≤ 3700** | | 输出 | ≤ 800 | 超预算时**按优先级裁剪而不是报错**(FR-AGT-03)。 ## Prompt 注入防护(NFR-SEC-04) 用户输入与系统提示词严格分区;输出侧校验;**禁止用户内容影响工具调用决策**。