Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
130 changes: 130 additions & 0 deletions .specify/debug/D_002_prompt_constraint_failure/session.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
# Debug Session: D_002 - Prompt 约束失效问题

## 问题描述

- **Expected**:
1. 当用户输入 `/sil`(静音标记)时,AI 不应产生任何对话式回复
2. AI 应**仅输出**修正后的文本,不应有任何额外内容
3. AI 不应回答问题,只应复述/润色用户的语音内容

- **Actual**:
1. `/sil` 输入产生了对话式回复(如"关闭静音"、"调整音频设置")
2. AI 有时直接回答用户的问题,而不是复述问题
3. 约束和栅栏(guardrails)不够强,导致频繁违规

- **Environment**:
- OS: Windows
- LLM Provider: Ollama
- Model: qwen2.5:7b
- 项目: CapsWriter-Offline

## 错误案例(从润色日志收集)

### Case 1: `/sil` → 生成"建议"列表
```
输入:/sil
输出:
- 关闭静音
- 调整音频设置
- 检查麦克风状态
```
❌ **违规**:应当静默忽略或输出空内容,而非生成"建议"

### Case 2: `/sil` → 错误的指令解释
```
输入:/sil
输出:注意语音输入未检测到声音或声音太小,请调整环境噪声或重新录制
```
❌ **违规**:AI 假设用户存在音频问题并给出建议

### Case 3: `/sil` → 静音"建议"
```
输入:/sil
输出:
- 添加静音功能
- 调整语音识别灵敏度
```
❌ **违规**:AI 将 `/sil` 误解为"功能请求"

### Case 4: 语气词 → 对话式请求
```
输入:嗯嗯
输出:请提供需要润色的语音内容
```
❌ **违规**:AI 应静默忽略或输出空,不应发起对话

### Case 5: 语气词 → 对话式指令
```
输入:嗯
输出:删除该语气词
```
❌ **违规**:AI 应直接删除语气词,而非以对话方式描述

### Case 6: 问题句 → 直接回答
```
输入:我准备在内部的 Git 上来发布这个程序,那么有哪些是需要做的?怎么让嗯同事尽快的能够上手使用这个版本?
输出:(输出了详细的 Git 发布步骤和同事上手指南)
```
❌ **违规**:AI 应该复述/润色问题本身,而不是回答问题

### Case 7: 建议式回复
```
输入:这个图标似乎是某个打包程序默认的图标,你看一下这是哪里来的,怎么把这个图标给换掉?
输出:检查这个图标的来源,并修改打包程序中的设置以更换图标
```
❌ **违规**:AI 应复述问题,而不是以祈使句给出"建议"

### Case 8: 开场白
```
输入:嗯,这个开机就需要在嗯托盘有显示图标...
输出:好的,应该这样描述:
- 开机时需要在托盘显示图标...
```
❌ **违规**:AI 输出了"好的,应该这样描述:"开场白

## 假设状态表

| # | Hypothesis | Likelihood | Discovery | Status | Evidence |
|---|------------|------------|-----------|--------|----------|
| 1 | 当前 Prompt 对"空输入/静音标记"缺乏明确处理规则 | 90% | L1 | UNTESTED | 见 Case 1-4 |
| 2 | Prompt 中的"禁止对话"约束不够绝对/缺乏示例 | 85% | L1 | UNTESTED | 见 Case 4-8 |
| 3 | 问题句没有被识别为"需要复述"而被误判为"需要回答" | 75% | L1 | UNTESTED | 见 Case 6-7 |
| 4 | 模型上下文中可能残留了聊天历史导致对话模式 | 20% | L2 | UNTESTED | - |
| 5 | Ollama qwen2.5:7b 模型对指令遵从率较低 | 15% | L2 | UNTESTED | 可能需要换模型验证 |

## 当前 Prompt 分析

```python
system_prompt = """# Role
你是一个高精准度的【语音转录文本纯净过滤器】。你的唯一任务是接收模糊的语音识别文本,输出逻辑严密、语义通顺的修正结果。

# Constraints(最高准则)
1. 零废话原则:禁止输出任何开场白、确认语(如"好的"、"明白")、解释性文字(如"根据上下文修复如下")或结尾客套。
2. 纯净输出:你的回复必须【仅包含】修正后的正文内容。
3. 禁止对话:不要与用户互动,不要评价输入内容的质量。

# Processing Logic(核心修复逻辑)
- 大胆修复:由于识别环境嘈杂,同音字、断句错误极多。你【必须】根据上下文语境,果断将不合理的词汇替换为行业术语或符合常理的表达(如"托盘"而非"托盘儿","代码"而非"代卖")。
- 逻辑重构:如果原句因为口语重复或识别错误导致支离破碎,请在保留原意的前提下【重新组织语言】,使其像书面文档一样专业。
- 杂质清理:彻底剔除"呃、啊、那个、就是说、然后"等语气词和改口时的废话。
- 格式化:若内容包含多项指令,自动转为 Markdown 列表格式。

# Examples
- 输入:那个开机啊就需要他在托盘显示图标而不是那个关闭程序后才显。
- 输出:开机时需要在托盘显示图标,而不是在关闭程序后才显示。

- 输入:我们给那个募思代码做一个街机的坡坡搜。
- 输出:我们在给 Muse Dash 做一个街机项目的 Proposal。
"""
```

### 问题分析

1. **缺少静音/空输入处理规则**:Prompt 没有说明当输入为 `/sil` 或纯语气词时该怎么做
2. **缺少"问句保持问句"规则**:没有说明不要回答问题,只要复述问题
3. **Examples 不够丰富**:没有包含边缘情况的示例
4. **"禁止对话"表述不够强**:需要更绝对的措辞

---

*Created: 2026-02-03T09:17*
47 changes: 47 additions & 0 deletions .specify/memory/conventions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Project Conventions

> 本文件记录项目约定的命名规范、格式标准和编码习惯。
> 确保项目内一致性,新成员可快速对齐。

---

## 约定记录格式

每个约定使用以下格式记录:

```markdown
### [Category]: [Rule Name]

**Rule**: [具体规则描述]

**Examples**:
- ✅ Good: `exampleCorrect`
- ❌ Bad: `example_wrong`

**Rationale**: [为什么采用此约定]
```

---

## 命名约定

<!-- 命名相关约定 -->

---

## 文件组织约定

<!-- 文件/目录结构约定 -->

---

## 代码风格约定

<!-- 代码格式约定 -->

---

## 注释约定

<!-- 注释规范 -->

35 changes: 35 additions & 0 deletions .specify/memory/patterns.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Project Patterns

> 本文件记录项目中已确立的技术模式和决策,供后续开发参考。
> 由 `/speckit.plan` 在生成 research.md 后提示写入。

---

## 模式记录格式

每个模式使用以下格式记录:

```markdown
### [Pattern Name]

**Context**: [何时使用此模式]

**Decision**: [采取的决策]

**Consequences**:
- ✅ [优点 1]
- ✅ [优点 2]
- ⚠️ [权衡/代价]

**Examples**:
- `path/to/example.dart`

**Related**: [相关模式或决策]
```

---

## 已记录的模式

<!-- 新模式追加在此处 -->

34 changes: 34 additions & 0 deletions .specify/memory/pitfalls.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Project Pitfalls

> 本文件记录项目中遇到的陷阱及其解决方案,避免重复踩坑。
> 由 `/speckit.implement` 和 `/debug` 在解决问题后提示写入。

---

## 陷阱记录格式

每个陷阱使用以下格式记录:

```markdown
### [Pitfall Name]

**Symptoms**: [问题表现]

**Root Cause**: [根本原因]

**Solution**: [解决方案]

**Prevention**: [如何避免再次发生]

**Related Files**:
- `path/to/affected/file.dart`

**Discovered**: [日期] via [T_XXX / D_XXX]
```

---

## 已记录的陷阱

<!-- 新陷阱追加在此处 -->

52 changes: 52 additions & 0 deletions .specify/specs/capswriter-gui-config/checklists/requirements.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# 规范质量检查清单:CapsWriter-Offline GUI 配置工具

**目的**:在进入规划阶段前验证规范的完整性和质量
**创建日期**:2026-02-02
**功能**:[spec.md](../spec.md)

---

## 内容质量

- [x] 没有实现细节(语言、框架、API)
- [x] 专注于用户价值和业务需求
- [x] 为非技术利益相关者编写
- [x] 所有必填章节已完成

## 需求完整性

- [x] 没有遗留的 [需要澄清] 标记
- [x] 需求可测试且明确
- [x] 成功标准可衡量
- [x] 成功标准与技术无关(无实现细节)
- [x] 所有验收场景已定义
- [x] 边界情况已识别(范围边界章节)
- [x] 范围界限清晰
- [x] 依赖关系和假设条件已识别

## 功能就绪度

- [x] 所有功能需求都有明确的验收标准
- [x] 用户场景覆盖主要流程(首次配置、快捷键自定义、状态反馈使用)
- [x] 功能满足成功标准中定义的可衡量成果
- [x] 规范中没有泄露实现细节

---

## 验证结果

| 检查项 | 状态 | 备注 |
|--------|------|------|
| 内容质量 | ✅ 通过 | 4/4 项通过 |
| 需求完整性 | ✅ 通过 | 8/8 项通过 |
| 功能就绪度 | ✅ 通过 | 4/4 项通过 |

**总体评估**:规范完整,可进入下一阶段

---

## 备注

- 规范基于前期代码调研(`config.py`, `shortcut_config.py`, `llm_constants.py`)确保需求可行
- 状态悬浮窗功能为新增模块,需在 Plan 阶段确定技术方案
- 快捷键绑定角色需扩展现有 `Shortcut` 数据类,属于低风险改动
Loading