关于 writer-memory
writer-memory 是面向使用 Claude 的小说作者的持久故事记忆技能,可跨会话整理角色、世界观、关系、场景和主题,并检查对话、生成情绪导向的梗概。
主要功能
- 01跨会话保存故事记忆
- 02跟踪角色声音与情感弧线
- 03记录世界观、关系、场景和主题
- 04检查对话一致性
- 05以自然语言查询记忆
- 06生成情绪梗概并导出 Markdown
适用场景
- 01写作时保持角色设定一致
- 02跟踪场景中的关系变化
- 03检查对话是否符合角色声音
- 04通过梗概回顾故事情绪主题
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ yeachan-heo/ oh-my-claudecode --skill writer-memory安装后在 Claude Code 中输入/writer-memory确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
lib/character-tracker.tsmemory-manager.tsrelationship-graph.tsscene-organizer.tssynopsis-builder.tstemplates/synopsis-template.md详细介绍
Writer Memory - 面向作家的 Agentic Memory System
专为创意作家设计的持久记忆系统,原生支持韩语叙事工作流。
概览
Writer Memory 会在 Claude 会话之间为小说作家保留上下文。它会追踪:
- Characters(캐릭터):情感弧线(감정궤도)、态度(태도)、对话语气(대사톤)、说话语体
- World(세계관):设定、规则、氛围、限制
- Relationships(관계):角色之间的动态关系及其随时间的演变
- Scenes(장면):分镜构成(컷구성)、叙述语气、情感标签
- Themes(테마):情感主题(정서테마)、作者意图
所有数据都会持久保存在 .writer-memory/memory.json 中,便于使用 Git 协作。
命令
| 命令 | 操作 |
|---|---|
/oh-my-claudecode:writer-memory init <project-name> | 初始化新项目记忆 |
/oh-my-claudecode:writer-memory status | 显示记忆概览(角色数量、场景数量等) |
/oh-my-claudecode:writer-memory char add <name> | 添加新角色 |
/oh-my-claudecode:writer-memory char <name> | 查看角色详情 |
/oh-my-claudecode:writer-memory char update <name> <field> <value> | 更新角色字段 |
/oh-my-claudecode:writer-memory char list | 列出所有角色 |
/oh-my-claudecode:writer-memory rel add <char1> <char2> <type> | 添加关系 |
/oh-my-claudecode:writer-memory rel <char1> <char2> | 查看关系 |
/oh-my-claudecode:writer-memory rel update <char1> <char2> <event> | 添加关系事件 |
/oh-my-claudecode:writer-memory scene add <title> | 添加新场景 |
/oh-my-claudecode:writer-memory scene <id> | 查看场景详情 |
/oh-my-claudecode:writer-memory scene list | 列出所有场景 |
/oh-my-claudecode:writer-memory theme add <name> | 添加主题 |
/oh-my-claudecode:writer-memory world set <field> <value> | 设置世界属性 |
/oh-my-claudecode:writer-memory query <question> | 以自然语言查询记忆(支持韩语) |
/oh-my-claudecode:writer-memory validate <character> <dialogue> | 检查对话是否符合角色语气 |
/oh-my-claudecode:writer-memory synopsis | 生成聚焦情感的梗概 |
/oh-my-claudecode:writer-memory export | 将完整记忆导出为易读的 Markdown |
/oh-my-claudecode:writer-memory backup | 创建手动备份 |
记忆类型
角色记忆(Character Memory)
追踪对角色形象保持一致至关重要的各项属性:
| 字段 | 韩语 | 描述 |
|---|---|---|
arc | 감정궤도 | 情感历程(例如,“체념 -> 욕망자각 -> 선택”) |
attitude | 태도 | 对生活或他人的当前态度 |
tone | 대사톤 | 对话风格(例如,“담백”、“직설적”、“회피적”) |
speechLevel | 말투 레벨 | 正式程度:반말、존댓말、해체、혼합 |
keywords | 핵심 단어 | 角色常用的特征词语或短语 |
taboo | 금기어 | 角色绝不会说的词语或短语 |
emotional_baseline | 감정 기준선 | 默认情绪状态 |
triggers | 트리거 | 会引发情绪反应的事物 |
示例:
/writer-memory char add 새랑
/writer-memory char update 새랑 arc "체념 -> 욕망자각 -> 선택"
/writer-memory char update 새랑 tone "담백, 현재충실, 감정억제"
/writer-memory char update 새랑 speechLevel "해체"
/writer-memory char update 새랑 keywords "그냥, 뭐, 괜찮아"
/writer-memory char update 새랑 taboo "사랑해, 보고싶어"
世界观记忆(World Memory)
确立故事所处的宇宙:
| 字段 | 韩语 | 描述 |
|---|---|---|
setting | 배경 | 时间、地点、社会背景 |
rules | 규칙 | 世界的运行方式(魔法体系、社会规范) |
atmosphere | 분위기 | 整体氛围和基调 |
constraints | 제약 | 这个世界中不可能发生的事情 |
history | 역사 | 相关背景故事 |
关系记忆(Relationship Memory)
记录角色之间的关系动态如何随时间变化:
| 字段 | 描述 |
|---|---|
type | 基本关系:恋爱、亲属、友谊、竞争、职业关系 |
status | 当前状态:萌芽、稳定、紧张、破裂、修复中 |
power_dynamic | 是否存在强弱之分,以及谁占上风 |
events | 改变关系的重要时刻的时间线 |
tension | 当前尚未解决的冲突 |
intimacy_level | 情感亲密度(1-10) |
示例:
/writer-memory rel add 새랑 해랑 romantic
/writer-memory rel update 새랑 해랑 "첫 키스 - 새랑 회피"
/writer-memory rel update 새랑 해랑 "해랑 고백 거절당함"
/writer-memory rel update 새랑 해랑 "새랑 먼저 손 잡음"
场景记忆(Scene Memory)
追踪单个场景及其情感架构:
| 字段 | 韩语 | 描述 |
|---|---|---|
title | 제목 | 场景标识符 |
characters | 등장인물 | 出场人物 |
location | 장소 | 发生地点 |
cuts | 컷 구성 | 逐镜头拆解 |
narration_tone | 내레이션 톤 | 叙述声音风格 |
emotional_tag | 감정 태그 | 主要情绪(例如,“설렘+불안”) |
purpose | 목적 | 该场景在故事中存在的原因 |
before_after | 전후 변화 | 人物发生的变化 |
主题记忆(Theme Memory)
记录贯穿故事的深层含义:
| 字段 | 韩语 | 描述 |
|---|---|---|
name | 이름 | 主题标识符 |
expression | 표현 방식 | 主题的呈现方式 |
scenes | 관련 장면 | 体现该主题的场景 |
character_links | 캐릭터 연결 | 承载该主题的人物 |
author_intent | 작가 의도 | 希望读者感受到什么 |
梗概生成(시놉시스)
/synopsis 命令使用 5 个关键要素生成聚焦情感的摘要:
5 个关键要素(시놉시스 5요소)
-
주인공 태도 요약(主人公态度总结)
- 主人公如何面对生活/爱情/冲突
- 他们核心的情感立场
- 示例:“새랑은 상실을 예방하기 위해 먼저 포기하는 사람”
-
관계 핵심 구도(核心关系结构)
- 推动故事发展的核心关系动态
- 权力失衡与张力
- 示例:“사랑받는 자와 사랑하는 자의 불균형”
-
정서적 테마(情感主题)
- 故事唤起的感受
- 不是情节,而是情感真实
- 示例:“손에 쥔 행복을 믿지 못하는 불안”
-
장르 vs 실제감정 대비(类型与真实情感的对照)
- 表层类型预期与实际情感内容的对比
- 示例:“로맨스지만 본질은 자기수용 서사”
-
엔딩 정서 잔상(结尾的情感余韵)
- 故事结束后留下的感觉
- 示例:“씁쓸한 안도, 불완전한 해피엔딩의 여운”
人物验证(캐릭터 검증)
/validate 命令会检查对话是否符合人物既定的声音风格。
检查内容
| 检查项 | 描述 |
|---|---|
| Speech Level | 正式程度是否相符?(반말/존댓말/해체) |
| Tone Match | 情感语气是否合适? |
| Keyword Usage | 是否使用了有代表性的词语? |
| Taboo Violation | 是否使用了禁用词语? |
| Emotional Range | 是否处于人物的基准情绪范围内? |
| Context Fit | 是否符合人物关系和场景? |
验证结果
- PASS:对话与人物设定一致
- WARN:存在轻微不一致,可能是有意为之
- FAIL:与既定声音风格有明显偏差
示例:
/writer-memory validate 새랑 "사랑해, 해랑아. 너무 보고싶었어."
输出:
[FAIL] 새랑 validation failed:
- TABOO: "사랑해" - character avoids direct declarations
- TABOO: "보고싶었어" - character suppresses longing expressions
- TONE: Too emotionally direct for 새랑's 담백 style
Suggested alternatives:
- "...왔네." (minimal acknowledgment)
- "늦었다." (deflection to external fact)
- "밥 먹었어?" (care expressed through practical concern)
上下文查询(맥락 질의)
使用自然语言查询记忆,全面支持韩语。
查询示例
/writer-memory query "새랑은 이 상황에서 뭐라고 할까?"
/writer-memory query "규리의 현재 감정 상태는?"
/writer-memory query "해랑과 새랑의 관계는 어디까지 왔나?"
/writer-memory query "이 장면의 정서적 분위기는?"
/writer-memory query "새랑이 먼저 연락하는 게 맞아?"
/writer-memory query "해랑이 화났을 때 말투는?"
系统会综合所有相关记忆类型生成答案。
行为
- 初始化时:创建
.writer-memory/memory.json,其中包含项目元数据和空集合 - 自动备份:修改前会将变更备份到
.writer-memory/backups/ - 韩语优先:情绪词汇始终使用韩语词语
- 会话加载:会话开始时加载记忆,以便立即获取上下文
- Git 友好:JSON 格式便于清晰查看差异和协作
集成
与 OMC Notepad 系统集成
Writer Memory 与 .omc/notepad.md 集成:
- 可将场景构想记录为笔记
- 保留分析会话中得出的人物洞见
- 在记事本与记忆之间交叉引用
与 Architect Agent 集成
用于复杂的人物分析:
Task(subagent_type="oh-my-claudecode:architect",
model="opus",
prompt="Analyze 새랑's arc across all scenes...")
人物验证流水线
验证会提取以下上下文:
- 人物记忆(语气、关键词、禁忌)
- 关系记忆(与对话对象的关系动态)
- 场景记忆(当前情感背景)
- 主题记忆(作者意图)
梗概构建器
梗概生成会汇总:
- 所有人物弧线
- 关键关系事件
- 场景情感标签
- 主题表达方式
示例
完整工作流
# Initialize project
/writer-memory init 봄의 끝자락
# Add characters
/writer-memory char add 새랑
/writer-memory char update 새랑 arc "체념 -> 욕망자각 -> 선택"
/writer-memory char update 새랑 tone "담백, 현재충실"
/writer-memory char update 새랑 speechLevel "해체"
/writer-memory char add 해랑
/writer-memory char update 해랑 arc "확신 -> 동요 -> 기다림"
/writer-memory char update 해랑 tone "직진, 솔직"
/writer-memory char update 해랑 speechLevel "반말"
# Establish relationship
/writer-memory rel add 새랑 해랑 romantic
/writer-memory rel update 새랑 해랑 "첫 만남 - 해랑 일방적 호감"
/writer-memory rel update 새랑 해랑 "새랑 거절"
/writer-memory rel update 새랑 해랑 "재회 - 새랑 내적 동요"
# Set world
/writer-memory world set setting "서울, 현대, 20대 후반 직장인"
/writer-memory world set atmosphere "도시의 건조함 속 미묘한 온기"
# Add themes
/writer-memory theme add "포기하지 않는 사랑"
/writer-memory theme add "자기 보호의 벽"
# Add scene
/writer-memory scene add "옥상 재회"
# Query for writing
/writer-memory query "새랑은 이별 장면에서 어떤 톤으로 말할까?"
# Validate dialogue
/writer-memory validate 새랑 "해랑아, 그만하자."
# Generate synopsis
/writer-memory synopsis
# Export for reference
/writer-memory export
快速检查角色
/writer-memory char 새랑
输出:
## 새랑
**Arc (감정궤도):** 체념 -> 욕망자각 -> 선택
**Attitude (태도):** 방어적, 현실주의
**Tone (대사톤):** 담백, 현재충실
**Speech Level (말투):** 해체
**Keywords (핵심어):** 그냥, 뭐, 괜찮아
**Taboo (금기어):** 사랑해, 보고싶어
**Relationships:**
- 해랑: romantic (intimacy: 6/10, status: healing)
**Scenes Appeared:** 옥상 재회, 카페 대화, 마지막 선택
存储架构
{
"version": "1.0",
"project": {
"name": "봄의 끝자락",
"genre": "로맨스",
"created": "2024-01-15T09:00:00Z",
"lastModified": "2024-01-20T14:30:00Z"
},
"characters": {
"새랑": {
"arc": "체념 -> 욕망자각 -> 선택",
"attitude": "방어적, 현실주의",
"tone": "담백, 현재충실",
"speechLevel": "해체",
"keywords": ["그냥", "뭐", "괜찮아"],
"taboo": ["사랑해", "보고싶어"],
"emotional_baseline": "평온한 무관심",
"triggers": ["과거 언급", "미래 약속"]
}
},
"world": {
"setting": "서울, 현대, 20대 후반 직장인",
"rules": [],
"atmosphere": "도시의 건조함 속 미묘한 온기",
"constraints": [],
"history": ""
},
"relationships": [
{
"id": "rel_001",
"from": "새랑",
"to": "해랑",
"type": "romantic",
"dynamic": "해랑 주도 → 균형",
"speechLevel": "반말",
"evolution": [
{ "timestamp": "...", "change": "첫 만남 - 해랑 일방적 호감", "catalyst": "우연한 만남" },
{ "timestamp": "...", "change": "새랑 거절", "catalyst": "과거 트라우마" },
{ "timestamp": "...", "change": "재회 - 새랑 내적 동요", "catalyst": "옥상에서 재회" }
],
"notes": "새랑의 불신 vs 해랑의 기다림",
"created": "..."
}
],
"scenes": [
{
"id": "scene-001",
"title": "옥상 재회",
"characters": ["새랑", "해랑"],
"location": "회사 옥상",
"cuts": ["해랑 먼저 발견", "새랑 굳은 표정", "침묵", "해랑 먼저 말 걸기"],
"narration_tone": "건조체",
"emotional_tag": "긴장+그리움",
"purpose": "재회의 어색함과 남은 감정 암시",
"before_after": "새랑: 무관심 -> 동요"
}
],
"themes": [
{
"name": "포기하지 않는 사랑",
"expression": "해랑의 일관된 태도",
"scenes": ["옥상 재회", "마지막 고백"],
"character_links": ["해랑"],
"author_intent": "집착이 아닌 믿음의 사랑"
}
],
"synopsis": {
"protagonist_attitude": "새랑은 상실을 예방하기 위해 먼저 포기하는 사람",
"relationship_structure": "기다리는 자와 도망치는 자의 줄다리기",
"emotional_theme": "사랑받을 자격에 대한 의심",
"genre_contrast": "로맨스지만 본질은 자기수용 서사",
"ending_aftertaste": "불완전하지만 따뜻한 선택의 여운"
}
}
文件结构
.writer-memory/
├── memory.json # Main memory file
├── backups/ # Auto-backups before changes
│ ├── memory-2024-01-15-090000.json
│ └── memory-2024-01-20-143000.json
└── exports/ # Markdown exports
└── export-2024-01-20.md
写作者提示
- 从角色入手:先构建角色记忆,再创作场景
- 关键场景后更新关系:积极追踪关系的发展
- 写作时使用验证:及早发现角色语气不一致的问题
- 创作困难场景前先查询:让系统提醒你相关背景
- 定期生成概要:定期生成,以检查主题是否连贯
- 重大更改前备份:在故事发生重大转折前使用
/backup
故障排除
记忆未加载?
- 检查
.writer-memory/memory.json是否存在 - 确认 JSON 语法有效
- 运行
/writer-memory status进行诊断
验证过于严格?
- 检查禁忌列表中是否有意外条目
- 考虑角色是否正在成长(角色弧光推进)
- 为戏剧性时刻有意打破模式是合理的
查询未找到相关背景?
- 确保记忆中包含相关数据
- 尝试更具体的查询
- 检查角色姓名是否完全一致
评论
支持 Markdown