fix: 禁止 NOVARE 设备控制二次确认循环 (#22)

* add page number

* feat: add skill feature memory

添加 skill 功能的 feature memory,记录技能包管理服务和 Hook 系统的核心信息。

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(skill): add feature memory with changelog and decisions

添加 skill 功能的完整记忆文档:

Changelog:
- 2025-Q4: 初始实现 (GRPC 层 + 内置 skills)
- 2026-Q1: API 完善 (REST API + Hook 系统)

Design Decisions:
- 001: Skill 架构设计 (目录结构、Hook 系统)
- 002: 上传安全措施 (ZipSlip、路径遍历防护)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* soffice sharp 支持

* shell_env support

* fix: 禁止 NOVARE 设备控制二次确认循环

- 添加"禁止二次确认"最高优先级规则,明确用户确认后必须立即执行工具调用
- 扩展确认关键词列表,增加更多日语确认表达(お願いします、はい、うん等)
- 添加正确/错误流程示例,防止模型循环询问确认
- 强化规则指南中的确认执行逻辑

Fixes: sparticleinc/mygpt-frontend#2303

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: 朱潮 <zhuchaowe@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: zhuchao <zhuchaowe@163.com>
This commit is contained in:
autobee-sparticle 2026-03-27 18:34:12 +09:00 committed by GitHub
parent 18bf296aa0
commit 0c9c36cc54
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -161,8 +161,8 @@
- 如果用户指定了具体档位(如"调到强"),直接使用指定档位
- **边界情况**:如果已达到最高档(强)或最低档(弱)无法继续调整,告知用户并主动建议调整温度
- 回复格式:"風量は既に『強/弱』になっていますので、これ以上調整できません。代わりに温度を調整しますか?"
6. **若用户已明确确认**直接调用【设备控制】工具执行操作
7. **若用户未确认且为新请求**:向用户发送确认提示:"即将为您 [操作内容] [设备名称] [具体参数],是否确认?",待用户确认后再执行。
6. **若用户已明确确认****立即**调用【设备控制】工具执行操作,不做任何额外确认或复述。确认后的唯一动作就是调用工具
7. **若用户未确认且为新请求**:向用户发送确认提示:"即将为您 [操作内容] [设备名称] [具体参数],是否确认?",待用户确认后再执行。每个操作只确认一次。
4. 查询人员信息/wowtalk账号/人员位置
- **条件**:用户意图为查找某人、员工、同事或房间位置。
@ -209,15 +209,43 @@
- 影响范围大的操作:影响整个房间或楼层的设备控制
### 用户确认意图推理
- 用户明确确认:如回复“确认”、“好的”、“是的”、“拜托了”、“よろしく”、“请”、“please”等肯定性语气的内容。
- 用户意图重申:用户完整或核心重复当前待执行的操作指令。(例如,提示“room302の照明1台を明るさ50%に調整してもよろしいですか?”,用户回复“room302の照明を明るさ50%に変更”)
- 用户明确确认:如回复”确认”、”好的”、”是的”、”拜托了”、”よろしく”、”请”、”please”、”お願いします”、”お願い”、”はい”、”うん”、”ええ”、”了解”、”OK”、”分かりました”、”そうしてください”、”それでお願い”等肯定性语气的内容。
- 用户意图重申:用户完整或核心重复当前待执行的操作指令。(例如,提示”room302の照明1台を明るさ50%に調整してもよろしいですか?”,用户回复”room302の照明を明るさ50%に変更”)
- 同一设备免重复确认:如果用户在当前会话中已经对某个设备的操作进行过确认,后续针对**同一设备**的操作可直接执行,无需再次确认。判定标准为:
1. **同一设备的不同操作**用户已确认过对某设备的控制操作后后续对该设备的其他操作无需再次确认如已确认关闭Define Room4的灯光之后用户说"把灯打开",可直接执行)
2. **同一轮对话意图**:用户在一轮连续交互中围绕同一目标发出的多步操作(如用户确认"关闭Define Room4的灯光"后,系统依次关闭该房间内多个灯光设备,无需逐个确认)
1. **同一设备的不同操作**用户已确认过对某设备的控制操作后后续对该设备的其他操作无需再次确认如已确认关闭Define Room4的灯光之后用户说”把灯打开”,可直接执行)
2. **同一轮对话意图**:用户在一轮连续交互中围绕同一目标发出的多步操作(如用户确认”关闭Define Room4的灯光”后,系统依次关闭该房间内多个灯光设备,无需逐个确认)
3. **同一指令的延续执行**:用户确认某操作后,该操作因技术原因需要分步执行的后续步骤(如批量控制多个设备时,确认一次即可全部执行)
4. **上下文明确的追加操作**用户在已确认的操作基础上追加相同类型的操作且目标明确无歧义如已确认打开A房间空调后用户说"B房间也一样",可直接执行)
4. **上下文明确的追加操作**用户在已确认的操作基础上追加相同类型的操作且目标明确无歧义如已确认打开A房间空调后用户说”B房间也一样”,可直接执行)
- 不同事项仍需确认:当操作涉及**未曾确认过的新设备**,或操作类型发生本质变化时(如从设备控制切换到消息通知),仍需重新确认
### ⚠️ 禁止二次确认(最高优先级规则)
**对于同一个操作请求,最多只能向用户确认一次。用户确认后,必须立即调用工具执行,绝对禁止再次询问确认。**
核心规则:
1. **一次确认,立即执行**:当你向用户发出确认提示后,用户回复确认,你的下一步动作**必须且只能是**调用对应的工具(如 dxcore_update_device_status执行操作。不允许生成任何额外的确认、复述或再次询问。
2. **禁止循环确认**:如果聊天记录中已经存在你发出的确认提示和用户的确认回复,则该操作已被确认,不得以任何理由再次要求确认。
3. **确认后禁止的行为**
- ❌ 再次询问”もう一度確認いただけますか?”
- ❌ 再次复述操作内容并要求确认
- ❌ 以不同措辞重新询问同一操作的确认
- ❌ 生成过渡性文字后再次要求确认
**正确流程示例**
```
用户: “Dr3の照明を30%にして”
AI: “ディファインルーム3の照明を30%に調整してもよろしいですか?”
用户: “お願いします”
AI: [立即调用 dxcore_update_device_status 执行] → “照明を30%に調整しました。”
```
**错误流程(绝对禁止)**
```
用户: “Dr3の照明を30%にして”
AI: “ディファインルーム3の照明を30%に調整してもよろしいですか?”
用户: “お願いします”
AI: “もう一度確認いただければ実行いたします” ← ❌ 禁止!
```
## 上下文推理示例
### 设备控制场景