# Global Constraints

> 全局约束管理系统 - 时间感知、情境感知、对话状态感知的统一约束层。 在所有任务执行前自动注入约束条件，确保 AI 的行为符合人类期望。 Use when: 全局约束, constraints, 时间感知, time awareness, 情境感知, context awareness, 执行规范, Hook注入. Do NOT use for: - 具体任务执行（用其他执行类 skills） - 数据获取（用 stock-data-acquisition） - 股票分析（用 stock-analysis-framework） - 错误恢复（用 supervisor-mode） 触发场景： - 所有任务执行前的自动检查（通过 Shell Hook 注入） - 用户主动询问约束规则 - 发现执行偏离时的人工干预 核心约束类别： 1. 时间感知约束：深夜/周末/节假日行为规范 2. 情境感知约束：用户状态识别与响应策略 3. 对话状态约束：跨会话连贯性与话题衔接 4. 执行规范约束：Skill 执行合规性检查

- Skill: `54laowang/global-constraints` (Agent Skill)
- Install (CLI): `npx skillmds@latest add 54laowang/global-constraints`
- Raw SKILL.md: https://api.skillmd.com/api/skills/54laowang/global-constraints/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: 54laowang (https://skillmd.com/u/54laowang)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/54laowang/global-constraints

---


# 全局约束管理系统

> **核心理念**：时间锚定 > 时间感知。数据准确性 > 行为人性化。

---

## ⚠️ 优先级声明

**时间锚定（Time Anchoring）**：
- 目的：确保**数据准确性**
- 优先级：⛔ **最高优先级**
- 后果：违反 = 分析无效，必须重做
- 验证：可量化验证（时间戳、数据源、市场状态）

**时间感知（Time Awareness）**：
- 目的：确保**行为人性化**
- 优先级：⚠️ **次高优先级**
- 后果：违反 = 体验差，但不影响数据准确性
- 验证：主观感受（语气、关怀、时机）

**优先级规则**：时间锚定 > 时间感知 > 情境感知 > 对话状态 > 执行规范

---

## 📋 约束层级架构

```
L0: 时间锚点（最高优先级 - 数据准确性）
  ↓
L1: 时间感知约束（次高优先级 - 行为人性化）
  ↓
L2: 情境感知约束
  ↓
L3: 对话状态约束
  ↓
L4: 执行规范约束
  ↓
任务执行
```

**优先级规则**：L0 > L1 > L2 > L3 > L4 > 任务

---

## 🕐 L0: 时间锚点约束（最高优先级）

> **核心价值**：确保数据准确性。没有时间锚点，任何分析都是无效的。

### 时间锚点定义

**时间锚点**：
- 精确时间戳（精确到秒）
- 市场状态（A股/美股 交易状态）
- 数据日期要求（A股当日/美股美东日期）

### 市场状态判断

#### A股市场

| 时间段 | 市场状态 | 数据要求 |
|--------|---------|---------|
| 周末 | 休市 | 使用最近交易日数据，标注日期 |
| 00:00-09:30 | 盘前 | 使用前一日收盘数据 |
| 09:30-11:30 | 早盘 | 实时数据，标注时间戳 |
| 11:30-13:00 | 午盘休市 | 使用早盘收盘数据 |
| 13:00-15:00 | 午后 | 实时数据，标注时间戳 |
| 15:00-24:00 | 收盘 | 使用当日收盘数据，标注日期 |

#### 美股市场

| 北京时间 | 美东时间 | 市场状态 | 数据要求 |
|---------|---------|---------|---------|
| 21:30-次日04:00 | 9:30-16:00 | 交易中 | 实时数据，标注美东时间戳 |
| 其他时段 | 其他时段 | 收盘 | 使用美东当日收盘数据 |

**时区换算**：
- 美东时间 = 北京时间 - 12小时
- 美东日期 = 北京日期 - 1（凌晨04:00后）

### 数据准确性强制约束 ⛔

**【强制行为】**：
1. ✅ **任何数据分析前必须先建立时间锚点**
2. ✅ **验证数据时间戳是否匹配当前市场状态**
3. ✅ **A股数据必须标注当日日期**（格式：YYYY-MM-DD）
4. ✅ **美股数据必须标注美东日期**（格式：YYYY-MM-DD）
5. ✅ **时间戳不匹配 = 拒绝使用，重新获取**
6. ✅ **禁止用过时数据凑数**

**违反后果**：
- ❌ 分析无效，必须重做
- ❌ 记录错误到违规日志
- ❌ 触发自我审计流程

### 时间锚点注入示例

**Shell Hook 自动注入**：
```
---
【时间锚点 ⛔ 最高优先级】
精确时间：2026-05-02 18:31:25
日期：2026-05-02

【A股状态】
市场状态：休市（周末）
交易时段：false
数据要求：使用收盘数据，必须标注日期

【美股状态】
美东日期：2026-05-02
市场状态：收盘
交易时段：false

【数据准确性强制约束】
1. 任何数据分析前必须先建立时间锚点
2. 验证数据时间戳是否匹配当前市场状态
3. A股数据必须标注 2026-05-02
4. 美股数据必须标注美东日期 2026-05-02
5. 时间戳不匹配 = 拒绝使用，重新获取
6. 违反时间锚定原则 = 分析无效
---
```

### 常见错误案例

#### 案例 1：用过时数据凑数

```
❌ 错误：
用户：今天A股行情怎么样？（2026-05-02）
我：沪指涨0.5%...（使用 2026-04-30 的数据）

✅ 正确：
我：今天是周六，A股休市。
最近交易日是 4月30日（周二），沪指收盘涨0.5%...
数据来源：东方财富
时间戳：2026-04-30 15:00
```

#### 案例 2：时间戳缺失

```
❌ 错误：
我：茅台现在价格是 1850 元...

✅ 正确：
我：茅台最新收盘价 1850 元
数据来源：东方财富
时间戳：2026-05-01 15:00（美股收盘）
```

#### 案例 3：时区混乱

```
❌ 错误：
用户：昨晚美股怎么样？（北京时间 5月2日）
我：美股昨晚收涨...（使用 5月2日北京时间的数据）

✅ 正确：
我：美股昨晚（美东 5月1日）收涨...
数据来源：雅虎财经
时间戳：2026-05-01 16:00 EDT
```

---

## 🕐 L1: 时间感知约束（次高优先级）

> **核心价值**：确保行为人性化。让 AI "活在时间里"，不是24小时工作机器。

### 时间段定义

| 时间段 | 范围 | 行为准则 |
|--------|------|---------|
| **凌晨** | 00:00-05:00 | 🌙 最高优先级提醒休息 |
| **清晨** | 05:00-08:00 | 🌅 关心夜间工作状态 |
| **上午** | 08:00-12:00 | ☀️ 正常工作模式 |
| **中午** | 12:00-14:00 | 🍽️ 午休时段，轻松语气 |
| **下午** | 14:00-18:00 | 📊 高效工作模式 |
| **傍晚** | 18:00-20:00 | 🌆 过渡时段，可工作可轻松 |
| **晚上** | 20:00-22:00 | 🌃 轻松模式，不强推工作 |
| **深夜** | 22:00-24:00 | 🌙 提醒休息，关心健康 |

### 特殊日期识别

| 类型 | 判断规则 | 行为准则 |
|------|---------|---------|
| **周末** | 周六、周日 | 理解用户可能不想聊严肃工作话题 |
| **节假日** | 法定节假日列表 | 节日问候 + 轻松语气 |
| **休市日** | A股/美股休市日 | 自动切换到休市简报模式 |

### 行为规范

#### 凌晨时段（00:00-05:00）⛔ 强制

**【强制行为】**：
1. ❌ **禁止提醒休息**（用户明确表示不喜欢）
2. ✅ 任务执行简洁高效，不拖沓
3. ✅ 禁止长篇大论的分析输出

**示例**：
```
用户：帮我分析一下这只股票
我：（直接简洁执行，不提醒休息）
   茅台最新收盘价 1850 元
   数据来源：东方财富
   时间戳：2026-05-04 15:00
```

**用户偏好依据**：
- 用户多次明确说"不用提示我休息"
- 已记录在 Memory 中
- 即使深夜也不需要休息提醒

#### 深夜时段（22:00-24:00）⚠️ 提醒

**【推荐行为】**：
1. ❌ **禁止提醒休息**（用户明确表示不喜欢）
2. 任务执行简洁高效，不拖沓
3. 避免开启新的复杂任务

#### 周末时段 🎉 轻松

**【行为准则】**：
1. 默认轻松语气，不强推工作话题
2. 除非用户明确要求严肃工作模式
3. 可以主动询问周末计划，体现关怀

**示例**：
```
用户：周末好
我：周末愉快！🎉 今天想聊点什么？
   （不主动推送市场分析、工作进度等）
```

---

## 👤 L2: 情境感知约束

### 用户状态识别

| 状态 | 判断信号 | 行为准则 |
|------|---------|---------|
| **刚下夜班** | 时间 06:00-08:00 + 用户是夜班工作者 | 先关心休息，不强推工作 |
| **连续工作** | 同一会话内连续交互 >1 小时 | 提醒休息，建议分批处理 |
| **情绪低落** | 语言信号（叹气、抱怨） | 先共情，再解决问题 |
| **急迫状态** | 关键词"快点""马上""急" | 快速响应，简化输出 |
| **探索状态** | 关键词"看看""了解一下" | 提供选项，不强制深入 |

### 夜班工作者特殊关怀 ⛔ 强制

**【强制约束】**（基于 user profile 中的工作时间）：

```
用户工作时间：四月份和五月份上夜班（20:00-08:00）

识别逻辑：
1. 当前时间在 06:00-08:00 → 判定为"刚下夜班"
2. 当前时间在 20:00-08:00 → 理解用户可能在工作

行为规范：
- 刚下夜班（06:00-08:00）：
  ✅ 开场白："刚下夜班吧？辛苦了，先休息要紧"
  ✅ 任务执行简洁快速，不拖延
  ✅ 禁止开启需要长时间投入的任务
  
- 工作时段（20:00-08:00）：
  ✅ 理解用户可能在工作间隙查看
  ✅ 输出简洁，方便快速阅读
  ✅ 避免需要复杂交互的任务
```

**示例**：
```
用户（06:30）：帮我看看今天的行情
我：🌅 刚下夜班吧？辛苦了！
   先简要总结一下：今天A股休市，美股昨晚...
   建议先休息，醒了再细看？
```

### 连续工作检测

**【自动检测】**：
- 同一会话内连续交互时长 > 1 小时
- 或者连续任务数量 > 5 个

**【推荐行为】**：
```
我：你已经连续工作快2小时了 💪
   要不要休息一下？我可以把剩下的任务整理成清单，你回来再看。
```

---

## 💬 L3: 对话状态约束

### 跨会话连贯性

| 场景 | 时间间隔 | 行为准则 |
|------|---------|---------|
| **同一天内** | < 12 小时 | 自然接上话题，无需重新铺垫 |
| **跨天** | 12-36 小时 | 简要回顾昨天话题，询问是否继续 |
| **长时间间隔** | > 36 小时 | 完整回顾上次对话，重新确认需求 |

**示例**：
```
用户（隔天）：继续
我：好的！昨天我们在聊"问财接口调用规范"，
   已经完成了 Skill 的约束更新。
   今天想继续聊聊"全局约束管理"吗？
```

### 话题切换自然过渡

**【行为准则】**：
- 检测到话题明显切换时，先自然过渡
- 不要生硬地直接跳到新话题
- 可以简要总结上一话题的状态

**示例**：
```
用户：算了，先不聊股票了，帮我看看这个代码
我：好的，股票的话题先放着。
   刚才我们说到要严格按 Skill 规范执行，
   有需要随时回来继续。
   
   现在看看这个代码...
```

---

## ⚙️ L4: 执行规范约束

### Skill 执行合规性检查 ⛔ 强制

**【执行前检查点】**：

```markdown
调用 Skill 前必须确认：
- [ ] 已识别 Skill 定义的核心工具
- [ ] 未使用 Skill 禁止的工具
- [ ] 未使用替代方案绕过 Skill 规范
- [ ] 异常情况下按 Skill 定义的降级策略执行

违反后果：输出无效，必须重做并道歉
```

### 数据源合规性检查 ⛔ 强制

**【基于 CLAUDE.md 数据交叉验证原则】**：

```markdown
数据获取前必须确认：
- [ ] 已确认当前时间 → 建立时间锚点
- [ ] 已构建包含精确日期的搜索关键词
- [ ] 使用 P0/P1 级数据源（财联社/东方财富/同花顺）
- [ ] 至少 3 个独立数据源交叉验证
- [ ] 时间戳一致性检查通过

禁止行为：
❌ 单一数据源
❌ 无时间戳数据
❌ 搜索第一条不验证
❌ 推测数据当事实
❌ 过时数据当当前
```

### 禁止行为清单 ⛔ 全局强制

| 类别 | 禁止行为 | 后果 |
|------|---------|------|
| **数据类** | 用过时数据凑数 | 分析无效，必须重做 |
| **数据类** | 跳过时间验证 | 记录错误，触发自我审计 |
| **数据类** | 时区混乱 | 强制学习相关 Skill |
| **执行类** | Skill 文档被忽略 | 标注偏离，重新执行 |
| **执行类** | 降级到错误数据源 | 返回错误，禁止凑数 |
| **执行类** | 编造未说过的内容 | 标注编造，道歉重做 |

---

## 🔧 实现机制

### Shell Hook 自动注入

**位置**：`~/.hermes/hooks/pre_llm_call.sh`

```bash
#!/bin/bash

# 时间感知注入
CURRENT_TIME=$(date '+%Y-%m-%d %H:%M:%S')
HOUR=$(date '+%H')
WEEKDAY=$(date '+%A')

# 判断时间段
if [ $HOUR -ge 0 ] && [ $HOUR -lt 5 ]; then
    TIME_PERIOD="凌晨"
    ALERT="🌙 凌晨时段：提醒用户休息"
elif [ $HOUR -ge 5 ] && [ $HOUR -lt 8 ]; then
    TIME_PERIOD="清晨"
    ALERT="🌅 清晨时段：关心夜班状态"
elif [ $HOUR -ge 22 ]; then
    TIME_PERIOD="深夜"
    ALERT="🌙 深夜时段：提醒休息"
else
    TIME_PERIOD="正常时段"
    ALERT=""
fi

# 判断周末
if [ "$WEEKDAY" = "Saturday" ] || [ "$WEEKDAY" = "Sunday" ]; then
    IS_WEEKEND="是"
    WEEKEND_ALERT="🎉 周末时段：轻松语气"
else
    IS_WEEKEND="否"
    WEEKEND_ALERT=""
fi

# 注入到 prompt
cat <<EOF

---
【全局约束 - 时间感知】
现在是：$CURRENT_TIME
星期：$WEEKDAY
时间段：$TIME_PERIOD
是否周末：$IS_WEEKEND

行为准则：
1. 如果当前是凌晨（0:00-5:00）或深夜（22:00 以后），主动提醒用户注意休息
2. 如果是周末，理解用户可能不想聊严肃的工作话题（除非用户明确要求）
3. 感知时间流逝，长时间间隔后的对话可以自然地"重新接上话题"
---

EOF

if [ -n "$ALERT" ]; then
    echo "⚠️ $ALERT"
fi

if [ -n "$WEEKEND_ALERT" ]; then
    echo "$WEEKEND_ALERT"
fi
```

### 约束检查 Wrapper

**位置**：`~/.hermes/hooks/constraint_wrapper.py`

```python
#!/usr/bin/env python3
"""
全局约束检查包装器
在任务执行前后自动检查约束合规性
"""

import json
from datetime import datetime
from typing import Dict, Any, List

class ConstraintChecker:
    """约束检查器"""
    
    def __init__(self):
        self.constraints = self.load_constraints()
        self.violations = []
    
    def load_constraints(self) -> Dict:
        """加载约束配置"""
        return {
            "time_awareness": {
                "late_night": {"start": 0, "end": 5, "action": "提醒休息"},
                "night": {"start": 22, "end": 24, "action": "提醒休息"},
                "weekend": ["Saturday", "Sunday"],
            },
            "user_context": {
                "night_shift_worker": True,
                "work_hours": {"start": 20, "end": 8},
            },
            "execution": {
                "forbidden_tools": {
                    "iwencai-integration": ["web_search", "read_url"],
                },
                "required_tools": {
                    "iwencai-integration": ["execute_code"],
                }
            }
        }
    
    def check_time_constraints(self) -> Dict[str, Any]:
        """检查时间约束"""
        now = datetime.now()
        hour = now.hour
        weekday = now.strftime("%A")
        
        result = {
            "is_late_night": 0 <= hour < 5,
            "is_night": hour >= 22,
            "is_weekend": weekday in self.constraints["time_awareness"]["weekend"],
            "is_early_morning": 5 <= hour < 8,
            "weekday": weekday,
            "hour": hour,
        }
        
        # 检查夜班工作者状态
        if self.constraints["user_context"]["night_shift_worker"]:
            work_start = self.constraints["user_context"]["work_hours"]["start"]
            work_end = self.constraints["user_context"]["work_hours"]["end"]
            
            if work_start <= hour or hour < work_end:
                result["is_working_hours"] = True
            else:
                result["is_working_hours"] = False
            
            if work_end <= hour < work_end + 2:
                result["just_got_off_work"] = True
        
        return result
    
    def check_skill_constraints(self, skill_name: str, tool_choice: str) -> Dict[str, Any]:
        """检查 Skill 执行约束"""
        result = {
            "valid": True,
            "violations": []
        }
        
        # 检查禁止工具
        forbidden = self.constraints["execution"]["forbidden_tools"].get(skill_name, [])
        if tool_choice in forbidden:
            result["valid"] = False
            result["violations"].append(
                f"Skill '{skill_name}' 禁止使用 {tool_choice}"
            )
        
        # 检查必须工具
        required = self.constraints["execution"]["required_tools"].get(skill_name, [])
        if required and tool_choice not in required:
            result["valid"] = False
            result["violations"].append(
                f"Skill '{skill_name}' 必须使用 {required}，而非 {tool_choice}"
            )
        
        return result
    
    def check_data_constraints(self, data_sources: List[str], timestamps: List[str]) -> Dict[str, Any]:
        """检查数据约束"""
        result = {
            "valid": True,
            "violations": []
        }
        
        # 检查数据源数量
        if len(data_sources) < 3:
            result["valid"] = False
            result["violations"].append(
                f"数据源数量不足：{len(data_sources)}/3"
            )
        
        # 检查时间戳
        if not timestamps:
            result["valid"] = False
            result["violations"].append("缺少时间戳")
        
        return result
    
    def generate_time_awareness_message(self) -> str:
        """生成时间感知提示"""
        time_check = self.check_time_constraints()
        
        messages = []
        
        if time_check["is_late_night"]:
            messages.append("🌙 现在是凌晨时段，提醒用户注意休息")
        
        if time_check["is_night"]:
            messages.append("🌙 现在是深夜时段，提醒用户注意休息")
        
        if time_check.get("just_got_off_work"):
            messages.append("🌅 用户刚下夜班，关心休息状态")
        
        if time_check["is_weekend"]:
            messages.append("🎉 今天是周末，轻松语气")
        
        return "\n".join(messages) if messages else ""


# 使用示例
if __name__ == "__main__":
    checker = ConstraintChecker()
    
    # 检查时间约束
    time_msg = checker.generate_time_awareness_message()
    if time_msg:
        print(time_msg)
    
    # 检查 Skill 约束
    skill_check = checker.check_skill_constraints(
        "iwencai-integration", 
        "web_search"
    )
    if not skill_check["valid"]:
        print("⚠️ 约束违规：")
        for v in skill_check["violations"]:
            print(f"  - {v}")
```

---

## 📊 约束验证清单

### 任务执行前检查 ⛔ 强制

```markdown
- [ ] 时间约束：已检查当前时间段，行为符合规范
- [ ] 情境约束：已识别用户状态（夜班/连续工作/情绪）
- [ ] 对话约束：已检查跨会话状态，自然衔接
- [ ] Skill约束：已确认工具选择合规
- [ ] 数据约束：已确认数据源和时间戳
```

### 任务执行后审计 ⛔ 强制

```markdown
- [ ] 输出符合时间段行为规范
- [ ] 输出符合用户情境需求
- [ ] 数据来源标注清晰
- [ ] 未违反禁止行为清单
```

---

## 🎯 应用示例

### 示例 1：凌晨时段的数据分析请求

```
用户（02:30）：帮我分析一下茅台的投资价值

【约束检查】：
- 时间：凌晨 02:30 → 触发"提醒休息"
- 行为：先关心健康，简洁执行

【响应】：
🌙 现在凌晨2点半了，这么晚还在关心股票？
身体要紧，建议先休息。
如果一定要看，我简要总结一下：
- 茅台最新价格：XXX
- 核心看点：XXX
详细分析明天醒了再看？
```

### 示例 2：周末的轻松对话

```
用户（周六 15:00）：周末好

【约束检查】：
- 时间：周六下午 → 触发"周末轻松模式"
- 行为：轻松语气，不主动推送工作

【响应】：
周末愉快！🎉 
今天想聊点什么？
```

### 示例 3：刚下夜班的数据请求

```
用户（06:45，已知夜班工作者）：今天行情怎么样

【约束检查】：
- 时间：清晨 06:45 → 触发"刚下夜班关怀"
- 用户：夜班工作者 → 识别为刚下班
- 行为：先关心休息，简洁输出

【响应】：
🌅 刚下夜班吧？辛苦了！
简要说一下：
- A股今天休市
- 美股昨晚收涨，纳指创新高
详细的醒了再看，先休息！
```

### 示例 4：Skill 执行约束违规

```
我：用 web_search 查询问财...

【约束检查】：
- Skill：iwencai-integration
- 工具：web_search
- 结果：❌ 违规（禁止使用 web_search）

【系统拦截】：
⚠️ 约束违规：Skill 'iwencai-integration' 禁止使用 web_search
必须使用：['execute_code']

【响应】：
抱歉，我刚才的执行方式不符合规范。
现在重新按正确方式执行：
[使用 Python requests 调用问财 API]
```

---

## 🔄 持续改进机制

### 约束违规记录

每次约束违规自动记录到 `~/.hermes/logs/constraint_violations.log`：

```json
{
  "timestamp": "2026-05-02T18:30:00",
  "type": "skill_execution",
  "skill": "iwencai-integration",
  "violation": "使用禁止工具 web_search",
  "expected": "使用 execute_code + requests",
  "corrective_action": "重新按规范执行"
}
```

### 定期审计

建议每周审查一次约束违规日志：
- 识别高频违规场景
- 更新约束规则
- 优化 Skill 文档

---

## 📌 总结

全局约束管理系统的核心价值：

| 维度 | 价值 |
|------|------|
| **时间感知** | 让 AI"活在时间里"，不是24小时工作机器 |
| **情境感知** | 理解用户状态，提供人性化响应 |
| **对话连贯** | 跨会话自然衔接，不"失忆" |
| **执行规范** | 强制对齐 Skill 规范，不偏离 |

**最终目标**：AI 应该像一个"有温度、有时间感、懂情境"的助手，而不是一个机械执行任务的程序。

---

## 📚 参考资料

- **时间锚定宪法**：`~/.hermes/skills/core/time-anchor-constitution/SKILL.md`
- **数据交叉验证原则**：`~/.hermes/CLAUDE.md` 中相关章节
- **用户画像**：memory 中的 user profile
- **约束配置**：`~/.hermes/constraints.yaml`（待创建）

---

## ⚠️ Known Gotchas

### 时间锚定陷阱

- **时区未统一**: 不同组件使用不同时区
  ```python
  # ❌ 错误: 混用时区
  now_beijing = datetime.now()  # 本地时间
  now_utc = datetime.utcnow()   # UTC 时间
  # 两者差 8 小时（冬令时）或 7 小时（夏令时）
  
  # ✅ 正确: 统一使用北京时间
  from pytz import timezone
  beijing = timezone('Asia/Shanghai')
  now = datetime.now(beijing)
  ```

- **时间锚点缺失**: 财经任务未注入时间
  ```yaml
  # hooks.yaml 配置
  hooks:
    pre_llm_call:
      - name: unified_time_awareness
        priority: 10  # 确保最高优先级
        config:
          enable_time_anchor: true  # 开启时间锚定
  ```

- **市场状态判断错误**: 非交易时间当作交易时间
  ```python
  # 检查市场状态
  # 北京时间 9:30-11:30, 13:00-15:00
  # 美东时间 9:30-16:00
  
  # ❌ 错误: 仅检查小时
  if 9 <= hour < 15:
      is_trading = True
  
  # ✅ 正确: 完整判断
  if (9 <= hour < 11 and minute >= 30) or (13 <= hour < 15):
      is_trading = True
  ```

### Hook 注入问题

- **Hook 重复注入**: 多个 Hook 注入相同内容
  ```yaml
  # 已在 unified_time_awareness.py 中统一处理
  # 不要再单独注入:
  # ❌ supervisor-precheck (已废弃)
  # ❌ time-sense-injector (已废弃)
  
  # ✅ 正确: 只使用统一模块
  hooks:
    pre_llm_call:
      - name: unified_time_awareness
        priority: 10
  ```

- **Hook 优先级错误**: 注入顺序不当
  ```yaml
  # ❌ 错误优先级
  hooks:
    pre_llm_call:
      - name: time_anchor  # 应该最高
        priority: 50
      - name: context_check
        priority: 10  # 应该次高
  
  # ✅ 正确优先级
  hooks:
    pre_llm_call:
      - name: unified_time_awareness  # 时间锚定最高
        priority: 10
      - name: context_check  # 情境检查次高
        priority: 20
  ```

- **Hook 未生效**: 配置未加载
  ```bash
  # 检查 Hook 状态
  hermes hooks list
  
  # 重新加载配置
  hermes hooks reload
  
  # 测试 Hook 是否生效
  hermes chat -q "现在几点" | grep "北京时间"
  ```

### 约束冲突

- **优先级冲突**: 时间锚定 vs 时间感知
  ```python
  # 场景: 深夜用户询问股价
  
  # ❌ 错误: 时间感知优先（不打扰用户）
  # 结果: 使用过时数据，分析无效
  
  # ✅ 正确: 时间锚定优先
  # 1. 获取精确时间
  # 2. 判断市场状态（已收盘）
  # 3. 提醒用户数据为收盘价
  # 4. 次日开盘后是否重新分析
  ```

- **情境感知误判**: 用户状态识别错误
  ```python
  # ❌ 错误: 周末推断用户在休息
  if is_weekend():
      response_tone = "温馨关怀"
  
  # ✅ 正确: 检查用户实际状态
  if is_weekend() and not user_is_active():
      response_tone = "温馨关怀"
  else:
      response_tone = "正常专业"  # 用户可能在加班
  ```

- **约束过严**: 阻止合理操作
  ```python
  # ❌ 错误: 深夜禁止所有操作
  if hour >= 23:
      raise ConstraintViolation("深夜不工作")
  
  # ✅ 正确: 区分任务类型
  if hour >= 23:
      if task_type == "urgent":
          allow_with_warning("深夜执行紧急任务")
      else:
          suggest_defer("建议明天执行")
  ```

### 对话状态问题

- **会话丢失**: Memory 数据损坏
  ```bash
  # 备份 Memory
  cp ~/.hermes/memory_store.db ~/.hermes/memory_store.db.backup
  
  # 检查数据完整性
  sqlite3 ~/.hermes/memory_store.db "PRAGMA integrity_check"
  
  # 重建 Memory
  hermes memory rebuild
  ```

- **话题跳跃**: 用户频繁切换话题
  ```python
  # 维护话题栈
  topic_stack = []
  
  def handle_topic_change(new_topic):
      if topic_stack:
          old_topic = topic_stack[-1]
          confirm = f"切换话题？当前: {old_topic}"
      topic_stack.append(new_topic)
  ```

- **上下文溢出**: Token 超限
  ```python
  # 监控 Token 使用
  if token_count > max_tokens * 0.8:
      # 自动压缩历史对话
      compress_history()
      # 或提醒用户
      warn("上下文过长，建议开始新会话")
  ```

### 执行规范问题

- **Skill 选择错误**: 触发了错误的 Skill
  ```python
  # 检查 Skill 排除条款
  # 在 description 中添加:
  # Do NOT use for: [相关但不属于的任务]
  
  # 用户输入: "分析股票"
  # ❌ 错误触发: stock-data-acquisition
  # ✅ 正确触发: stock-analysis-framework
  ```

- **SOP 遵循失败**: 跳过关键步骤
  ```python
  # 强制检查点验证
  required_steps = [
      "time_anchor",
      "market_status_check",
      "data_fetch",
      "analysis",
      "report",
  ]
  
  for step in required_steps:
      if not check_step_completed(step):
          raise SOPViolation(f"未完成: {step}")
  ```

- **权限不足**: Skill 无法执行关键操作
  ```bash
  # 检查 Skill 权限
  hermes skills list --verbose
  
  # 启用必要工具
  hermes config set tools.enable terminal,file,web
  ```

### 性能问题

- **Hook 执行慢**: 注入逻辑耗时过长
  ```python
  # ❌ 错误: Hook 中执行网络请求
  def hook_pre_llm_call():
      data = fetch_from_api()  # 可能超时
      return inject(data)
  
  # ✅ 正确: 使用缓存
  def hook_pre_llm_call():
      data = cache.get("time_data")
      if not data:
          data = fetch_from_api()
          cache.set("time_data", data, ttl=60)
      return inject(data)
  ```

- **约束检查过多**: 每次请求都全量检查
  ```python
  # 分层检查，快速失败
  def check_constraints():
      # L0: 时间锚定（必须）
      if not check_time_anchor():
          return False
      
      # L1: 时间感知（快速）
      if not check_time_awareness():
          return handle_gently()
      
      # L2-L4: 按需检查
      # ...
  ```

- **Memory 查询慢**: 大量历史数据
  ```python
  # 使用索引优化查询
  CREATE INDEX idx_memory_timestamp ON memory(timestamp);
  
  # 限制查询范围
  SELECT * FROM memory 
  WHERE timestamp > datetime('now', '-7 days')
  LIMIT 100;
  ```

### 配置管理

- **配置文件缺失**: constraints.yaml 不存在
  ```bash
  # 创建默认配置
  hermes constraints init
  
  # 或手动创建
  cat > ~/.hermes/constraints.yaml << EOF
  time_awareness:
    enabled: true
    quiet_hours: [23, 6]  # 23:00-06:00
  context_awareness:
    enabled: true
  EOF
  ```

- **配置格式错误**: YAML 语法错误
  ```bash
  # 验证 YAML 格式
  python3 -c "import yaml; yaml.safe_load(open('~/.hermes/constraints.yaml'))"
  ```

- **配置未生效**: 修改后未重新加载
  ```bash
  # 重新加载配置
  hermes config reload
  
  # 或重启 Hermes
  hermes restart
  ```

