persona-dataset 是 OpenPersona(acnlabs/openpersona)体系中的角色数据层,位于原始数据源与角色训练之间。它的目标是把散落在各种来源里的个人资料,整理成一个持久、可增量更新、可语义搜索的角色知识库。
【用途与定位】 该技能用于为某个角色(persona)建立数据集:导入、存储、检索并整理其语料,然后导出训练材料。依赖链为:数据源 → persona-dataset → anyone-skill / persona-model-trainer。触发场景包括「为该角色建立数据集」「向数据集添加数据」「导入我的 Obsidian 库」「导入我的 Twitter 归档」「为 X 建立知识库」「导出训练数据」「搜索角色数据集」。不适合的场景:用户只想要一次性快速蒸馏、不需要持久存储(应单独使用 anyone-skill);或数据量少于约 50 条消息,不足以建立数据集。
【架构】 由三部分组成:MemPalace(存储与检索)、Knowledge Graph(关系与时间线)、Karpathy LLM Wiki(知识沉淀)。MemPalace 的 palace 结构中,每个角色对应一个 Wing(以 slug 命名),Hall 映射到 5 个人格维度:hall_facts(身份:背景、职业、教育)、hall_events(记忆:关键事件与转折点)、hall_preferences(性格:价值观、偏好、边界)、hall_discoveries(程序:思维模型、决策启发式)、hall_voice(互动:词汇、节奏、幽默、情绪温度)。
【使用方式(分阶段)】 阶段 1 初始化:运行 python scripts/init_dataset.py --slug {slug} --name "Display Name",生成 ~/.openpersona/datasets/{slug}/ 目录,包含 dataset.json(元数据)、.mempalace/(palace 内部存储,ChromaDB + KG)、sources/(不可变源文件备份及 .source-index.json)、wiki/(含 _schema.md、identity.md、voice.md、values.md、thinking.md、relationships.md、timeline.md、_contradictions.md、_changelog.md、_evidence.md)。此前需与用户确认 slug 与显示名。
阶段 2 摄取:python scripts/ingest.py --slug {slug} --source <path> [--adapter <name>] [--since <date>],可多次调用以增量导入。适配器可自动检测:Obsidian 库(含 .obsidian/ 或 *.md)→ obsidian;WhatsApp .txt / Telegram result.json / Signal 导出 / iMessage .db → chat_export;X(Twitter) 归档(含 data/tweets.js)、Instagram 归档(含 content/posts_1.json)→ social;Slack/Discord JSON 委派给 mempalace mine --mode convos;.txt/.csv/.pdf → plaintext;.jsonl/.json({role, content} 格式)→ jsonl;GBrain MCP → 需指定 --adapter gbrain --entity "Name"。摄取流水线为:解析为统一 [{role, content, timestamp, source_file, source_type}]、PII 扫描(标记 SSN、信用卡、邮箱、密码模式)、SHA-256 哈希去重、写入 sources/ 作为 JSONL 备份、原文存入 MemPalace、抽取 KG 三元组并记录时间有效性、最后输出报告(来源名、消息数、助手轮次、PII 标记、新增 KG 实体)。
阶段 3 Wiki 构建:这是代理任务而非脚本。代理读取 MemPalace 内容与 KG 关系,按 Karpathy LLM Wiki 模式更新 5-15 个 wiki 页面,证据分四级标注:[L1:source] 可直接溯源的引用、[L2] 转述可验证、[L3:inferred] 多信号合理推断、[L4:inspired] 印象式;用 [[page]] 语法加反链,在 _contradictions.md 记录矛盾并引用双方,追加 _changelog.md,更新 _evidence.md 计数。查询操作会先语义检索 MemPalace、再浏览 wiki 页面、综合回答,若产生新洞察则回写相应页面。relationships.md 与 timeline.md 由知识图谱生成(使用 mempalace.knowledge_graph 的 KnowledgeGraph.timeline / query_entity),代理可再行注释。
阶段 4 导出:python scripts/export_training.py --slug {slug} --output training/,产出 training/raw/(sources/ 原样拷贝)、training/conversations.jsonl(代理读 wiki 生成的结构化 Q-A 对)、training/profile.md(300-500 字人物卡)、training/metadata.json(汇总统计)。该输出可直接被 persona-model-trainer 的 prepare_data.py 消费。
阶段 5 搜索:mempalace search "..." --wing {slug} 做语义检索;KnowledgeGraph.query_entity 做实体查询;mempalace wake-up --wing {slug} 生成约 170 token 的唤醒摘要;也可在代码中调用 mempalace.searcher.search_memories。
阶段 6 维护:新增来源则重跑阶段 2 并触发 wiki 更新;删除来源需从 sources/ 删除并重建索引,再跑 lint 标记孤立内容;python scripts/lint_wiki.py --slug {slug} 做健康检查(检查断裂 [[链接]]、空页面、未解决的矛盾、证据覆盖、来源覆盖、页面结构);--stats 查看统计;ls ~/.openpersona/datasets/ 列出全部数据集。
【工具与脚本】 工具:Bash(运行 init/ingest/export/lint 脚本及 MemPalace CLI)、Read(加载源文件、wiki、dataset.json)、Write(更新 wiki、写导出)、WebSearch(抓取公众人物数据)。脚本:init_dataset.py(初始化目录 + MemPalace wing + KG)、ingest.py(统一摄取:适配器分发 + PII 扫描 + 去重 + MemPalace + KG)、export_training.py、lint_wiki.py。参考文档:references/wiki-schema.md(wiki 结构与维护规则)、references/source-formats.md(数据源格式与适配器细节)。
【限制】 该技能需要 Python 脚本、MemPalace CLI 环境与本地 ~/.openpersona/datasets/ 存储;PII 扫描仅针对 SSN、信用卡、邮箱、密码等模式做标记;Wiki 构建依赖代理判断,非脚本自动化。资料未提供收费、价格、平台支持范围及性能指标等信息。