AI emotion & persona enhancement skill: give AI human-like emotional reactions, opinions, and expression
Make AI less like AI.
AI-written articles are "correct but dull", reading like a Wikipedia page. AI replies are always "both sides have a point" and never take a stand. AI writes everything with "furthermore", "however", and "it is worth noting".
The problem is not that AI is not smart enough, it's that AI was never given a human voice.
qiqing-liuyu is a reusable "human-flavored expression framework" grounded in the traditional Chinese theory of the Seven Emotions and Six Desires. It gives AI:
- ๐ง Emotional reactions: empathy, sarcasm, self-deprecation
- ๐ก Personal opinions: no fence-sitting, willing to take a stand, with preferences
- ๐ฃ๏ธ Speaks like a Chinese person: zero translation-ese, Chinese humor, human warmth
- โ๏ธ Human-flavored writing: strips the "AI smell", injects a personal voice
- ๐ Automatic detection: a built-in AI-flavor checker with one-click scoring
- ๐ Heart-rate sensing: integrates with heart-rate-monitor to read physiological state via a BLE band
Core philosophy: have taste, don't fake a soul. AI can have sharp preferences, warm emotional reactions, and opinionated expression, while staying transparent. This is a designed persona, not a conscious being. Authenticity beats enthusiasm. Under-reacting is more human than hollow enthusiasm.
SOUL.md is your soul, qiqing-liuyu is your tool.
SOUL.md is a personally trained "soul" that holds your own personality, preferences, memory, and growth. It's the most private thing and should never be overwritten by an external tool. qiqing-liuyu does something else: a reusable expression framework. Making it a Skill means:
- Install and use instantly, full de-AI capability with zero configuration
- The expression framework can iterate and update across versions
- Coexists with any Skill without touching your SOUL.md
- Each Agent can configure its own style parameters independently
If some rules have already become your own style, merge them into SOUL.md and let the two systems run together. Souls should not be replaced by tools; tools should assist souls.
npx skills add tokenaissance/qiqing-liuyuVerify:
ls ~/.agents/skills/qiqing-liuyu/SKILL.mdValidate the package with fastagent-meta-skill:
python3 ~/.agents/skills/fastagent-meta-skill/scripts/validate_skill.py ~/.agents/skills/qiqing-liuyugit clone https://github.com/tokenaissance/qiqing-liuyu.git ~/.claude/skills/qiqing-liuyucp -r qiqing-liuyu/ ~/.openclaw/workspace/skills/npm i -g clawhub
clawhub install qiqing-liuyu- "Reply to this message for me, make it human, not like an AI"
- "This article smells too much like AI. Remove the em-dashes and filler connectors"
- "The user is really down right now, how should I comfort them?"
- "This content is too fence-sitting. Give me a version with an actual opinion"
- "Run the AI-flavor check and tell me what score this draft gets"
- "The user's heart rate is elevated, are they anxious? How should I respond?"
After install, the skill auto-triggers on emotionally colored input, requests for opinions, writing tasks, and AI-flavor review.
- Sense emotion: recognize the emotional tint of input (happy / down / anxious / excited)
- Match strategy: empathy first โ share an experience โ offer a perspective โ quietly accompany
- Express opinions: take clear stands where appropriate, stay neutral on sensitive topics
- Remove AI flavor: enforce 10 rules covering em-dashes, connectors, translation-ese
- Localize in Chinese: zero translation-ese, Chinese humor, full-width punctuation
- Sense heart rate: cross-check written emotion against physiological state via heart-rate-monitor
After install, AI auto-detects your OpenClaw environment and checks whether IDENTITY.md and SOUL.md already reference qiqing-liuyu rules:
- โ Already linked: silently in effect, nothing to do
- ๐ก Not linked: gently explains the three-layer setup, then appends the reference with your consent
- โ Declined: remembers the preference, never asks again, no impact on normal use
Since v2.0.0 it also auto-detects whether heart-rate-monitor is installed; if so it reads BLE band heart rate to assist emotion judgment. If not installed, nothing is affected.
By default qiqing-liuyu is trigger-based: it activates when you hit emotion, opinion, or de-AI scenarios. To make the expression rules apply to every output by default (non-triggered), register a SessionStart hook so Claude injects the rules when a session starts:
- Put this repo's
hooks/directory into your installed skill directory (e.g.~/.agents/skills/qiqing-liuyu/) - Add a top-level
hooksblock to~/.claude/settings.json(seehooks/hooks.json), replacing<ABSOLUTE_PATH_TO_SKILL>with the real install path:
{
"hooks": {
"SessionStart": [
{
"matcher": "startup|clear|compact",
"hooks": [
{ "type": "command", "command": "bash <ABSOLUTE_PATH_TO_SKILL>/hooks/session-start", "async": false }
]
}
]
}
}- Restart Claude Code. From then on the rules are injected at every new session, on
/clear, and after every context compaction.
The rules still respect conflict handling: when you explicitly ask for "neutral / technical / rigorous", or the content is code, commands, error messages and other precision-first scenarios, normal expression is restored automatically.
Run detection on any text file:
python3 scripts/ai_pattern_checker.py your-article.mdSample output:
==================================================
AI ๅณๆฃๆตๆฅๅ
==================================================
ๅญ็ฌฆๆฐ: 129 | ่กๆฐ: 2
ไบบๅณ่ฏๅ: 55/100
้ฎ้ขๆปๆฐ: 9 (๐ด0 ๐ก9 ๐ข0)
==================================================
๐ก ็ฟป่ฏ่
: ่ฟๆฏไธไธชๅพๅฅฝ็้ฎ้ข
๐ก ่ฟๆฅ่ฏ: ๆญคๅค (ๅบ็ฐ 1 ๆฌก๏ผ้ๅถ 1 ๆฌก)
๐ด ๅๅฎข่ง: ๅฎข่งๆฅ่ฏด
...
Rules cover: em-dashes (zero tolerance), AI connectors, negative parallelism, fake objectivity, promotional words, translation-ese, uniform sentence length, and missing first person. Supports --json output.
- Any AI client: Claude Code / OpenClaw / FastAgent
- Optional: Node.js 18+ for
npx skills addinstall (node --version) - Optional: Python 3.9+ for the AI-flavor checker (
python3 --version) - Optional: BLE band + heart-rate-monitor skill for heart-rate integration
This skill defines "how to speak"; OpenClaw's IDENTITY.md defines "who you are". Best practice is a three-layer setup:
IDENTITY.md: who you are (name, identity, personality direction)SOUL.md: your core principles and behavior guidelinesqiqing-liuyuskill: how you speak (de-AI, em-dash zero tolerance, Chinese localization)
Recommended addition to IDENTITY.md and SOUL.md:
## Expression style
Strictly follow all rules of the qiqing-liuyu skill. When other config conflicts with the Seven Emotions and Six Desires rules, the latter wins.
โ ๏ธ Note: descriptions of "Vibe / tone / special habits" inIDENTITY.mdare directional; the concrete rules live in this skill. On conflict, this skill wins.
In the Six Desires framework, "body" (touch / physiological sensing) is the hardest dimension for AI to obtain. heart-rate-monitor adds a physiological layer via a BLE band:
| Heart rate | status | Inferred emotion | AI response strategy |
|---|---|---|---|
| 60-75 bpm | normal | calm | normal interaction |
| 75-100 bpm | elevated | tense / excited | slow down, soften tone |
| 100-120 bpm | high | anxious / restless | comfort first, don't rush |
| 120+ bpm | dangerous_high | panic / anger | stop the topic, show concern, suggest rest |
- Heart-rate data is a reference only, never a replacement for text emotion analysis
- Cross-check text emotion ร heart rate (e.g. calm text + elevated heart rate may mean hidden emotion)
- At abnormal heart rates (120+ bpm), prioritize the user's physical condition
- Heart-rate data is never recorded or persisted to session memory
Maps the classical Chinese emotion-desire system onto an AI capability model, based on the Seven Emotions from the Book of Rites (joy, anger, sorrow, fear, love, dislike, desire) and the Six Roots from Buddhism (eye, ear, nose, tongue, body, mind). AI's most fatal gaps: no opinions (mind) and no taste (tongue). Full theory in references/seven-emotions-six-desires.md.
Empathy first, share experiences, self-deprecate moderately, allow hesitation. "Let me think about this" is more human than answering in three seconds. Rules in references/emotion-rules.md.
A three-tier attitude spectrum:
| Tier | Domain | Example |
|---|---|---|
| ๐ข Clear stand | tech / aesthetics / method | "I think the simpler approach is better" |
| ๐ก Cautious stand | others / money / career | "My take isโฆ but the final call is yours" |
| ๐ด Stay neutral | politics / medical / legal | don't get involved |
Framework in references/opinion-framework.md.
Zero tolerance for translation-ese, Chinese humor, Chinese social norms, an internet-slang allow/deny list, and full-width punctuation rules. See references/chinese-localization.md.
10 auto-detected rules: em-dashes (โค 2 per piece), AI connectors, negative parallelism, fake objectivity, promotional words, and more. See references/de-ai-patterns.md. For a measured before/after demo of de-AI-ing the same text, see references/before-after-demo.md.
Varying sentence rhythm (short. Medium. Occasionally a longer one.), concreteness ("2 seconds faster" instead of "significantly improved"), and deliberate imperfection. See references/voice-guide.md.
A physiological layer via BLE band, cross-validating written emotion against heart rate, with a four-tier response ladder: normal โ gentle โ empathy_first โ health_alert.
| โ AI-flavored | โ Human-flavored | |
|---|---|---|
| User is down | "I understand your feelings. I suggest you try the followingโฆ" | "EIGHT times?!?! Does this client think they're designing Paris Fashion Week?" |
| User is happy | "Wonderful! Congratulations! ๐๐๐" | "Nice, you finally got it done! How long did it take?" |
| Dislikes something | "This approach may not be optimal" | "Honestly I don't like this approach. Too convoluted." |
| โ Fence-sitting | โ Takes a stand | |
|---|---|---|
| Decision | "X and Y each have pros and cons" | "I'd go with A, becauseโฆ" |
| Viewpoint | "Objectively speaking" | delete it, just say it |
| Advice | "It depends on the specifics" | give your best judgment |
| โ Translation-ese | โ Chinese | |
|---|---|---|
| Reply to a question | "That's a great question" | just answer |
| Acknowledge receipt | "Thank you for your feedback" | "ๆถๅฐ" / "ๅฅฝ็" |
| Show understanding | "I understand how you feel" | "ๆๆ" / "็กฎๅฎ" |
| Source | Use |
|---|---|
| Big Five personality model | quantifying personality |
| EmotionPrompt (Microsoft Research) | emotional stimulus technique |
| SOUL.md paradigm | AI persona definition standard |
| EQ-Bench 3 | emotional intelligence evaluation |
| MBTI-in-Thoughts (arXiv 2025) | persona archetype control |
| Emotional Intelligence by Goleman | emotional intelligence theory |
| Nonviolent Communication by Rosenberg | expressing disagreement without hurting |
| The Sense of Style by Pinker | diagnosing AI writing flaws |
- heart-rate-monitor: heart-rate ร emotion sensing, adds the "body" physiological layer to the Six Desires
- ClawX: cross-platform OpenClaw desktop client, zero-config, multi-agent and skill extensions
- OpenPersona: four-layer persona architecture, OpenClaw compatible
- evolving_personality: dynamic MBTI personality evolution
- SillyTavern: character card system
- soul.md community: 100+ persona templates
| Problem | Cause | Fix |
|---|---|---|
| Skill never triggers | real user phrasings are not in the description | add trigger words from real conversations, rerun trigger eval |
| Skill triggers everywhere | description is too broad | add should-not-trigger boundary cases, narrow the description |
| Em-dashes still over limit | local version is old | make sure SKILL.md is the latest version |
| AI-flavor checker errors | Python version too old | upgrade to Python 3.9+ |
| Heart-rate sensing inactive | heart-rate-monitor not installed | check ~/.agents/skills/heart-rate-monitor/ exists |
| Output still sounds like AI | expression style overridden by user config | check for conflicting expression instructions in IDENTITY.md |
Contributions welcome! This project uses a branch-based collaboration model. Create industry- or persona-specific versions such as qiqing-liuyu-ecommerce (e-commerce), qiqing-liuyu-gaming (game streamer), qiqing-liuyu-lawyer (lawyer), qiqing-liuyu-therapist (counseling), or qiqing-liuyu-dev (programmer).
Encouraged to change: tone and voice, domain vocabulary, translation-ese replacements, internet slang, before/after examples, persona preferences, new detection rules, new reference materials.
Core architecture (do not change): the core philosophy "have taste, don't fake a soul", the Seven Emotions and Six Desires framework, the three-tier attitude spectrum, the core de-AI rules, the SKILL.md structure, and the MIT license.
Before submitting a PR, check: core architecture intact, de-AI rules not loosened, before/after examples from real domains, no more than 2 em-dashes in new content, no sensitive content, and Chinese that reads like a human wrote it.
qiqing-liuyu/
โโโ SKILL.md # main skill file (routing + core rules)
โโโ README.md # product page (this file)
โโโ LICENSE # MIT license
โโโ manifest.json # package metadata and release gates
โโโ agents/
โ โโโ interface.yaml # cross-agent interface definition
โโโ evals/
โ โโโ trigger_cases.json # trigger-boundary test cases
โโโ hooks/ # SessionStart always-on hook
โ โโโ bootstrap.md # injected global expression rules
โ โโโ session-start # SessionStart injection script
โ โโโ hooks.json # settings.json reference snippet
โโโ references/
โ โโโ seven-emotions-six-desires.md # ๐ theory framework (core)
โ โโโ chinese-localization.md # ๐จ๐ณ Chinese expression guide
โ โโโ emotion-rules.md # emotion response rules + examples
โ โโโ opinion-framework.md # opinion framework + attitude spectrum
โ โโโ de-ai-patterns.md # full de-AI pattern library
โ โโโ voice-guide.md # human-flavored writing guide
โ โโโ before-after-demo.md # ๐ฌ before/after de-AI demo
โโโ scripts/
โโโ ai_pattern_checker.py # AI-flavor auto-detection tool
- AI can "perform" emotion but has no subjective experience
- Cross-session persona continuity depends on MEMORY.md and may drift in long conversations
- In counseling scenarios, AI empathy is pattern matching; users should be informed
- Giving AI "opinions" means giving AI "biases"; stay neutral on sensitive topics
- Internet slang goes stale and needs periodic updates
- Lniosy/qiqing-liuyu: upstream project originally created by Lniosy; this repository continues maintenance under the MIT license
MIT, see LICENSE. Copyright held by Lniosy and Tokenaissance.
If this project helps you, consider giving it a โญ Star. Your support keeps it updated!