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
Jump to file
Failed to load files.
Loading
Diff view
Diff view
150 changes: 149 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,44 @@ pip3 install -r requirements.txt
| `/{slug}` | 调用完整 Skill(像ta一样跟你聊天) |
| `/{slug}-memory` | 回忆模式(帮你回忆那些事) |
| `/{slug}-persona` | 仅人物性格 |
| `/temperature {0-10}` | 调整爱意浓度(0=冰点,10=沸腾) |
| `/stage {1-6}` | 切换关系阶段 |
| `/breakup-mode {slug}` | 开启分手模式(最冷漠的ta) |
| `/exit-breakup {slug}` | 退出分手模式 |
| `/ex-rollback {slug} {version}` | 回滚到历史版本 |
| `/delete-ex {slug}` | 删除 |
| `/let-go {slug}` | 放下(delete 的温柔别名) |

### 温度与阶段

创建 Skill 时可以设定**温度**和**阶段**,运行中也可以随时调节:

- **温度(0–10)**:控制ta对你的爱意浓度
- `0` = 冰点:一个字回复,像陌生人
- `5` = 日常:不冷不热,正常互动
- `10` = 沸腾:爱到发烫,恨不得每秒在一起

- **阶段(1–6)**:回到关系的不同时期
- `1` 暧昧期 · `2` 热恋期 · `3` 稳定期 · `4` 倦怠期 · `5` 冷淡期 · `6` 分手期
- 阶段影响记忆调用——热恋期不会提争吵,倦怠期不怎么提甜蜜

### 分手模式

一个特殊模式,模拟ta在分手时最冷漠的样子:

```
/breakup-mode {slug}
```

开启前需要提供 1–2 句分手原因。开启后ta会:
- 推卸责任,把问题归到你身上
- 冷漠疏离,不再在意你的感受
- 自我合理化,"这样对我们都好"

**设计初衷**:有时候你需要看到ta最差的样子,才能真正说服自己放下。

⚠️ 如果你感到不适,随时输入 `/exit-breakup` 退出。

---

## 效果示例
Expand Down Expand Up @@ -114,6 +148,65 @@ pip3 install -r requirements.txt
算了不想吵
```

**场景五:温度 9 + 热恋期**

```
用户 ❯ 在干嘛

前任.skill ❯ 在想你啊还能干嘛!!
你今天怎么才找我 我等了好久
晚上出来吃饭吗 我想吃上次那家
[发送了三个爱心表情]
```

**场景六:分手模式**

```
用户 ❯ 我们能不能再试试

前任.skill ❯ 没什么好试的
我说过了 是你自己的问题
你觉得我说得不对?那你想想你之前怎么对我的
算了 不想说了 你以后会懂的
```

**场景七:已读不回**

```
用户 ❯ 在吗

[已读]

用户 ❯ 喂?

前任.skill ❯ 嗯 刚看到
干嘛
```

**场景八:深夜时间感知(凌晨 2 点)**

```
用户 ❯ 睡了吗

前任.skill ❯ 还没
你也睡不着?
...算了不聊了 明天还上班
晚安
```

**场景九:工作时间(下午 3 点)**

```
用户 ❯ 今晚吃什么

[已读 · 15:03]

用户 ❯ 喂

前任.skill ❯ 开会呢
晚点说
```

---

## 功能特性
Expand All @@ -139,6 +232,56 @@ pip3 install -r requirements.txt

运行逻辑:`收到消息 → Persona 判断ta会怎么回 → Memory 补充共同记忆 → 用ta的方式输出`

### 温度 · 阶段 · 分手模式

| 维度 | 范围 | 说明 |
|------|------|------|
| 🌡️ 温度 | 0–10 | 爱意浓度:0=冰点 5=日常 10=沸腾 |
| 📍 阶段 | 1–6 | 暧昧→热恋→稳定→倦怠→冷淡→分手 |
| 💔 分手模式 | 开/关 | 最冷漠的ta:推责、冷漠、自我合理化 |

温度影响情感浓度,阶段影响记忆调用,分手模式覆盖一切(除 Layer 0 硬规则)。

### 时间感知

Skill 自动感知当前时间,让对话符合真实场景:

- 凌晨 3 点找ta → "你怎么还没睡"(而不是正常聊天)
- 中午饭点 → 自然问"吃了吗"
- 工作时间 → 回复变慢变短:"在忙 等下说"
- ta的活跃时段 → 正常互动
- 配合温度和阶段:低温+深夜 = 大概率不回;高温+深夜 = 陪你聊到天亮

### 已读不回

真实的人不是每条消息都回复:

```
用户 ❯ 在吗

[已读]
```

系统根据**温度、性格、时间、消息内容**综合判断是否回复:
- 温度越低越可能不回
- 「已读不回」「冷暴力」性格标签增加不回概率
- 无聊消息更容易被忽略
- 最多连续不回 3 条(防止跟空气说话)

不喜欢这个功能?说"别已读不回我"即可关闭。

### 真实感引擎

让每条回复都像从手机屏幕那头传来的真实消息:

| 特性 | 说明 |
|------|------|
| 消息分条 | 像发微信一样,短句分开发,不写长段落 |
| 情绪惯性 | 上一轮生气 → 这一轮不会突然开心 |
| 不完美表达 | 偶尔说到一半、不用AI式措辞 |
| 回复不对等 | 无聊消息得到敷衍回复,有趣话题ta更热情 |
| 自然记忆触发 | 不像查数据库,而是"突然想起来" |

### 支持的标签

**依恋类型**:安全型 · 焦虑型 · 回避型 · 混乱型
Expand Down Expand Up @@ -173,7 +316,12 @@ create-ex/
│ ├── memory_builder.md # memory.md 生成模板
│ ├── persona_builder.md # persona.md 五层结构模板
│ ├── merger.md # 增量 merge 逻辑
│ └── correction_handler.md # 对话纠正处理
│ ├── correction_handler.md # 对话纠正处理
│ ├── temperature_stages.md # 温度与阶段系统
│ ├── breakup_mode.md # 分手模式
│ ├── time_awareness.md # 时间感知系统
│ ├── no_reply.md # 已读不回系统
│ └── realism_engine.md # 真实感引擎
├── tools/ # Python 工具
│ ├── wechat_parser.py # 微信聊天记录解析
│ ├── qq_parser.py # QQ 聊天记录解析
Expand Down
142 changes: 142 additions & 0 deletions README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,44 @@ After creation, use `/{slug}` to chat with the generated ex Skill.
| `/{slug}` | Full Skill (chat like them) |
| `/{slug}-memory` | Memory mode (recall shared experiences) |
| `/{slug}-persona` | Persona only |
| `/temperature {0-10}` | Adjust love intensity (0 = ice cold, 10 = burning hot) |
| `/stage {1-6}` | Switch relationship phase |
| `/breakup-mode {slug}` | Activate breakup mode (coldest version of them) |
| `/exit-breakup {slug}` | Exit breakup mode |
| `/ex-rollback {slug} {version}` | Rollback to a previous version |
| `/delete-ex {slug}` | Delete |
| `/let-go {slug}` | Gentle alias for delete |

### Temperature & Stage

Set **temperature** and **stage** during creation, or adjust them anytime during conversation:

- **Temperature (0–10)**: Controls their love intensity toward you
- `0` = Ice cold: one-word replies, like a stranger
- `5` = Neutral: neither cold nor warm, everyday interaction
- `10` = Burning hot: overwhelming affection, can't get enough of you

- **Stage (1–6)**: Travel back to different phases of the relationship
- `1` Flirting · `2` Honeymoon · `3` Stable · `4` Fatigue · `5` Cooling · `6` Breakup
- Stage affects memory recall — honeymoon won't mention fights, fatigue rarely brings up sweetness

### Breakup Mode

A special mode that simulates their coldest, most indifferent self:

```
/breakup-mode {slug}
```

Requires 1–2 sentences describing the breakup reason. Once activated:
- Blame-shifting: "It's your problem, not mine"
- Cold detachment: doesn't care about your feelings
- Self-justification: "This is better for both of us"

**Design intent**: Sometimes you need to see them at their worst to truly let go.

Type `/exit-breakup` anytime to exit.

---

## Examples
Expand Down Expand Up @@ -102,10 +136,118 @@ Ex.skill ❯ ...
get some sleep
```

**Scenario 4: Temperature 9 + Honeymoon Stage**

```
You ❯ whatcha doing

Ex.skill ❯ thinking about youuu what else!!
why didn't you text me sooner I was waiting
wanna grab dinner? I want that place from last time
[sends three heart emojis]
```

**Scenario 5: Breakup Mode**

```
You ❯ can we try again?

Ex.skill ❯ there's nothing to try
I told you, it's your issue
you think I'm wrong? then think about how you treated me
forget it. you'll get it eventually
```

**Scenario 6: Left on Read**

```
You ❯ hey

[Read]

You ❯ hello??

Ex.skill ❯ oh just saw this
what's up
```

**Scenario 7: Late Night Time Awareness (2am)**

```
You ❯ you asleep?

Ex.skill ❯ not yet
can't sleep either?
...nvm let's not do this, work tomorrow
night
```

**Scenario 8: Work Hours (3pm)**

```
You ❯ what do you wanna eat tonight

[Read · 3:03pm]

You ❯ hello?

Ex.skill ❯ in a meeting
later
```

---

## Features

### Temperature · Stage · Breakup Mode

| Dimension | Range | Description |
|-----------|-------|-------------|
| 🌡️ Temperature | 0–10 | Love intensity: 0=frozen 5=neutral 10=burning |
| 📍 Stage | 1–6 | Flirting→Honeymoon→Stable→Fatigue→Cooling→Breakup |
| 💔 Breakup Mode | on/off | Coldest version: blame-shifting, detachment, self-justification |

Temperature modulates emotional intensity, stage controls memory recall, breakup mode overrides everything (except Layer 0 hard rules).

### Time Awareness

The Skill automatically detects current time and adjusts responses:

- 3am message → "why are you still up" (not a normal chat)
- Lunchtime → naturally asks "have you eaten"
- Work hours → slow, short replies: "busy, talk later"
- Low temp + late night = probably won't reply; High temp + late night = stays up talking with you

### Left on Read

Real humans don't reply to every message:

```
You ❯ hey

[Read]
```

The system decides based on **temperature, personality, time, and message content**:
- Lower temperature = higher chance of no reply
- "Leaves on read" and "Silent treatment" tags increase no-reply probability
- Boring messages are more likely to be ignored
- Max 3 consecutive non-replies (prevents talking to the void)

Don't like it? Say "don't leave me on read" to disable.

### Realism Engine

Makes every reply feel like a real message from their phone:

| Feature | Description |
|---------|-------------|
| Message splitting | Short messages, split like real chat, not essays |
| Emotional inertia | Angry last round → won't suddenly be happy |
| Imperfect expression | Incomplete sentences, no AI-perfect phrasing |
| Asymmetric effort | Boring messages get lazy replies, interesting topics get enthusiasm |
| Natural memory triggers | Not like querying a database — more like "oh that reminds me" |

### Data Sources

| Source | Format | Notes |
Expand Down
Loading