5.7 KiB
5.7 KiB
个人规则功能需求文档(方案 A:本地 .md 注入)
1. 文档目标
在不改动现有核心对话模式的前提下,实现“个人规则(Personal Rules)”能力:
用户可在插件内维护个人规则文本,插件保存到本地 .md 文件;每次发起对话时自动读取并随请求传递给后端,由后端注入模型上下文,影响回答风格与行为。
2. 范围定义
2.1 本期范围(MVP)
- 支持用户编辑、保存、启用/停用个人规则。
- 本地落盘为
.md文件。 - 发消息时自动加载规则并传给后端。
- 后端接收结构化字段并注入提示词。
- 基础异常处理和可观测提示。
2.2 非本期范围
- 云端同步、多设备同步。
- 规则版本历史/回滚。
- 多规则集合管理(仅单份个人规则文本)。
- 团队共享规则。
3. 术语与核心概念
Personal Rules:用户个人偏好与约束文本。Rules File:本地规则文件,Markdown 格式。Rules Enabled:规则开关;关闭时不注入。Rules Injection:请求时将规则传后端并参与模型上下文构建。
4. 用户故事
- 作为用户,我希望在插件里写下“回答风格、代码习惯、语言偏好”等个人规则。
- 作为用户,我希望规则保存在本地可见文件中。
- 作为用户,我希望发消息时自动生效,无需每次重复输入。
- 作为用户,我希望可以一键关闭规则,临时不生效。
5. 功能需求(前端/Webview + 扩展端)
5.1 规则管理界面
- 提供“个人规则”入口。
- 提供多行编辑框(显示当前规则内容)。
- 提供“保存”按钮。
- 提供“启用/停用”开关。
- 显示当前状态:
- 规则是否启用。
- 规则字数/长度。
- 最近保存时间(可选)。
5.2 本地文件存储
- 规则内容保存到本地
.md。 - 推荐文件名:
personal-rules.md。 - 推荐路径(优先):插件全局存储目录下固定子路径。
- 文件不存在时可自动创建。
- 用户可通过“打开规则文件”查看(可选)。
5.3 对话发送前处理
- 用户点击发送消息。
- 扩展端检查规则开关:
- 关闭:不读取规则,不传后端。
- 开启:读取
.md内容。 - 读取成功且非空时,将规则文本附加到对话请求结构化字段。
- 读取失败时:提示告警,但不阻断正常对话。
5.4 限制与防护
- 规则长度上限(例如 4000 字符,可配置)。
- 超限时保存被拒绝,提示用户缩短。
- 空白内容视为“无规则”。
- 不允许二进制或非文本写入。
6. 功能需求(后端)
6.1 请求协议扩展
在现有对话请求结构中增加字段:
personalRules:字符串,可选。rulesEnabled:布尔,可选(便于追踪)。rulesMeta:可选元信息(长度、来源)。
6.2 注入策略
- 后端收到
personalRules后,将其注入系统提示层(而非用户消息层)。 - 注入顺序建议:
- 系统安全与平台策略。
- 产品默认系统提示。
- 用户个人规则。
- 用户输入。
- 若
personalRules为空或开关关闭,则跳过注入。
6.3 风险控制
- 规则文本不允许覆盖平台安全策略。
- 记录本次是否注入规则(日志字段即可)。
- 异常不应导致整次对话失败(可降级为无规则对话)。
7. 前后端对接设计
7.1 消息链路
- Webview 触发
sendMessage。 - 扩展端
messageHandler统一处理发送。 messageHandler在调用dialogService.sendMessage前读取个人规则。dialogService组装DialogRequest,带上personalRules。sseHandler发起流式请求。- 后端注入规则后进入模型推理。
- 正常走现有 SSE 回传流程。
7.2 职责边界
- Webview:展示与编辑,不直接拼接最终请求。
- 扩展端:规则文件读写、开关状态管理、请求组装。
- 后端:规则注入、优先级控制、审计日志。
8. 数据与状态设计
8.1 本地文件
- 文件格式:Markdown 纯文本。
- 内容约定:无强制模板,允许自由文本。
- 编码:UTF-8。
8.2 本地配置状态
personalRulesEnabled:是否启用。personalRulesPath:规则文件路径(可固定也可配置)。lastSavedAt:最近保存时间(可选)。
9. 异常与降级
- 文件不存在:自动创建空文件,视为无规则。
- 文件读取失败:弹出提示,继续无规则发送。
- 文件写入失败:保存失败提示,不更新状态。
- 后端字段不识别:请求兼容,后端忽略新字段。
- 后端注入失败:降级为普通对话,记录日志。
10. 安全与合规要求
- 个人规则属于用户本地数据,不主动上传除非发起对话。
- 日志中避免完整打印规则正文(最多打印长度和哈希)。
- 后端注入时必须确保平台安全策略优先级更高。
11. 验收标准(UAT)
- 用户保存规则后,本地存在
personal-rules.md且内容一致。 - 开启规则发送消息时,请求中可观测到
personalRules字段。 - 关闭规则发送消息时,请求中不含该字段或为空。
- 规则文件损坏/读取失败时,不影响正常聊天。
- 超过长度上限时,前端保存被拒绝且提示明确。
- 后端日志可确认“本次是否注入个人规则”。
12. 迭代建议(下一阶段)
- 规则模板(代码风格、语言风格、测试偏好)。
- 项目规则与个人规则合并策略。
- 云端同步(按
userId),多端一致。