# SPEC: 馨总智能体双态上下文架构 (Dual-Context Architecture) > **版本**: v1.0 > **前置依赖**: Hermes Agent 原生架构、`DESIGN_PHILOSOPHY_AI_NATIVE.md` > **状态**: 草案 (Proposal) --- ## 1. 架构哲学与核心洞察 在“焦点品牌”高频互动的咨询协助场景中,传统的 RAG(知识库增强检索)模型会遭遇严重的“上下文污染”(投毒)。为了解决这个问题,本系统实现了**“判官与考生”**的双态上下文分离架构。 | 维度 | 馨总 Context (XinZong Context) | 项目 Context (Project Context) | |---|---|---| | **角色比喻** | ⚖️ 判官 / 评价标尺 / 阅卷老师 | 📝 考生 / 答卷 / 草稿箱 | | **内容属性** | 方法论、咨询框架、九要素、战术纪律 | 竞品调研报告、客户原始诉求、顾问写的半成品 PPT | | **可变性** | 极度稳定(Immutable),由核心架构师/馨总维护 | 极度混乱(Highly Mutable),任何成员皆可上传、推翻 | | **RAG 角色** | 提供**“判断力”**与**“指导原则”** | 提供**“被处理的原始素材”**与**“靶子”** | 这一洞察使得**项目池彻底免除了 RAG 污染的担忧**。无论成员传了多么糟糕的竞品文档,大模型都会运用“馨总 Context”里的金科玉律去无情地批评和重构它,而不会把它当成不可侵犯的真理。 > [!IMPORTANT] > **🚀 独一无二的商业核心价值点** > 在市面普通的 LLM / 知识库产品中,由于系统将“方法论”与“被点评的文档”平权融合,**你犯下的错(尤其是未被当场指出的错误),就会变成 AI 认为正确的依据,从而形成复利式的推理和决策污染**。 > 本架构通过将两者的身份降维并绝对隔离,彻底终结了知识库的“反向污染死循环”,这就是馨总智能体傲视群雄的壁垒。 --- ## 2. 基于 Hermes 原生能力的工程映射 为了避免重复造轮子,我们将上述业务哲学精准映射到底层 Hermes 操作系统的原生能力上。 ### 2.1 馨总 Context 映射为 `Hermes Skills` Hermes 拥有完备的 Skills 子系统(`agent/skill_commands.py`)。 - **实现方案**:将馨总的方法论(如《界定原点市场》、《品牌九要素》)转化为 Markdown 格式的 Skill 文件,存放在 `~/.hermes/skills/` 中。 - **性能优势 (Prompt Caching)**:Hermes 会将启用的 Skill 作为 User Message 注入对话上下文。由于高频调用且极少变更,这部分将完美命中大模型(如 Gemini/Claude)的 **Prompt Caching**,实现极低延迟和近乎零成本的智能赋能。 ### 2.2 项目 Context 映射为 `工作区存储 + 提示词注入` - **物理存储**:项目等同于一个文件夹 `storage/projects/{projectId}/`。 - **实现方案**:每次进入对话时,服务端(Gateway)读取该项目下处于“启用”状态的文档集合,整合投递。 - **Prompt 组装隔离**:通过 XML 标签强力隔离“标尺”与“材料”,避免大模型混淆。 ```xml 【你的身份与标尺】 你已经加载了馨总品牌战略技能(Skills已注入)。 【待处理的烂摊子(项目 Context)】 ...内容... ...内容... 【用户指令】 请基于你的战略标尺,锐评上述项目材料中界定人群的漏洞。 ``` --- ## 3. 项目生命周期与权限流水线 (CRUD) 基于“去中心化联邦”的咨询工坊理念,权限流被设计得极度轻薄: ### 3.1 开放新建与全局可见 (Global Visibility) - **规则**:任何人都可以新建项目。一旦新建,该项目(如`projectId: probiotics_001`)对公司所有已认证的顾问全局可见。 - **UI 降噪设计**:为了防止左侧栏无限扩张,`GET /xinzong/projects` 接口支持按“最近活跃”和“我创建的”进行过滤。侧边栏仅展示 Top 5 活跃项目,其余通过搜索访问。 ### 3.2 无摩擦共建 (Frictionless Upload) - **规则**:所有成员都可以调用 `POST /xinzong/materials/upload` 往任何活跃项目中上传文档。 - **防投毒开关**:右侧的【文件夹】面板中,项目创建者(owner)可以点击按钮将某个瞎传的文件设为 `is_active: false`。被禁用的文件仍然存在,但不会被打包进 `` 中喂给大模型。 ### 3.3 状态归档 (Archiving mechanism) - **规则**:**禁止物理删除**。项目只有“活跃 (Active)”和“归档 (Archived)”两种状态。 - **权限**:**只有项目创建者 (Creator) 有权点击归档**。 - **生命周期**:归档后,该项目从所有人的“活跃项目侧边栏”中消失。但历史记录及项目文件在底层统一归总于 `storage/archives/`,可供未来的系统级搜索工具作为已完成项目的经验参考使用。 --- ## 4. 在 Hermes Gateway 中的接口定义 前后端的对接接口无需复杂重构,基于现有的 SSE 接口扩展即可: | 接口路线 | 方法 | 动作说明 | 校验防线 | |---|---|---|---| | `/xinzong/projects/create` | `POST` | 创建项目上下文 | 生成 `projectId`,关联至创建者 `userId` | | `/xinzong/projects/list` | `GET` | 拉取左侧边栏列表 | 默认返回 `status=active` 且按活跃度排序 | | `/xinzong/materials/upload` | `POST` | 无阻力上传素材 | 所有人可调,校验文件类型,落盘至 `storage/projects/{id}/` | | `/xinzong/materials/toggle` | `POST` | 状态切换(启用/禁用)| **关键权限校验**:操作者必须为项目 owner | | `/xinzong/projects/archive` | `POST` | 项目归档杀青 | **关键权限校验**:操作者必须为项目 owner | --- ## 5. 现网工程核实结论 (Engineering Verification) 本架构设计承诺**完全复用且不破坏**当前的工程基础。经过对现网 `xinzong_sse.py` 及底层 `SessionDB` 的代码审计,得出以下落实验证: 1. **零破坏复用馨总 Context**:现有的 `_runChat` 函数中已完成了 `skills/xinzong_bot/SKILL.md` 的读取与 Hermes 智能体 System Prompt 的挂载。此部分完美契合,且底层已实现 Prompt Caching。 2. **零破坏复用项目 Context**:目前的 `_initMaterialsDb` 方法已建好具有 `context_id` 属性的 `xinzong_materials` 表。项目上下文实际上已被按 `context_id` 在物理层和逻辑层归档,无需再造多级文件夹结构表。 3. **极简增量开发**: - 仅需在 `xinzong_materials` 中以增量迁移 (`ALTER TABLE`) 的方式加入 `is_active BOOLEAN DEFAULT 1` 字段,即可实现防投毒开关,不影响任何存量数据。 - 在 `_runChat` 的 `user_message` 提交前,拉取当前 `context_id` 的所有 `is_active = 1` 的材料内容,拼接 `` XML 标签,即可实现沙盘隔离级别的无损大模型推演。 --- > **总结**: > 通过这套依赖 Hermes Skills + XML Prompt Tagging + Creator-Only Archiving 的双态架构,我们以几乎零代价复用了底层的缓存与代理能力,同时在业务上彻底切分了**“方法论真理”**与**“草稿沙盘”**的边界。