원클릭으로
tavern2agent
用户提供 SillyTavern 角色卡(PNG/JSON)并要求转换、迁移、移植到 pi coding agent 时使用;覆盖纯 prompt、世界书、MVU、骰子、战斗、好感度、经济、隐藏信息、多 agent 场景。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
用户提供 SillyTavern 角色卡(PNG/JSON)并要求转换、迁移、移植到 pi coding agent 时使用;覆盖纯 prompt、世界书、MVU、骰子、战斗、好感度、经济、隐藏信息、多 agent 场景。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | tavern2agent |
| description | 用户提供 SillyTavern 角色卡(PNG/JSON)并要求转换、迁移、移植到 pi coding agent 时使用;覆盖纯 prompt、世界书、MVU、骰子、战斗、好感度、经济、隐藏信息、多 agent 场景。 |
| allowed-tools | Bash, Read, Write, Edit, Glob, Grep |
把 SillyTavern 卡编译成 pi-native 互动叙事 runtime。还原作者想做的游戏:prompt 描述世界,领域事件改变世界,engine/reducer 维护正确性,session 保存存档。不复刻 ST 宏、COT、JSON Patch、HTML 状态栏,不把状态栏字段搬进 patch_state。
references/evented-runtime.md、references/card-ir.md、references/event-packs.md、references/design-principles.md。data 字段、世界书、TH scripts、regex scripts、开场白。world-data/card-ir.json;不要直接从原卡文本生成代码。增量更新:先看 git log -20 + git diff。只改本次需求相关文件;不碰 sessions/、runtime/、.pi/agent/。
python3 scripts/extract_card.py <card.png|webp|jpg|json> card.json
python3 scripts/list_entries.py card.json
python3 scripts/list_entries.py card.json --filter mvu
python3 scripts/list_entries.py card.json --filter initvar
python3 scripts/get_entry.py card.json <index>
脚本支持 v1/v2/v3。v1 会归一化为 v2;v3 的 group_only_greetings 按 alternate_greetings 处理。
| 看什么 | 路径/信号 | IR 产出 |
|---|---|---|
| 基础设定 | description/personality/scenario/system_prompt | persona / settingFacts / style |
| 开场 | first_mes/alternate_greetings/group_only_greetings | openings / playerSetup / route signals |
| 世界书 | character_book.entries[] | worldbookEntries + disposition |
| 初始状态 | [initvar]、YAML、变量表 | mutableConcepts initial values |
| 规则更新 | [mvu_update]、变量变化 | mechanics + event candidates |
| 不可逆拐点/隐藏真相 | 一次性开场分支、世界书一次性条目、creator_notes 秘密、阵营视角;可无 MVU | one-way / secret / hidden event candidates |
| TH scripts | Zod、外链、游戏脚本 | schema / mechanics / reducer hints |
| regex scripts | 非 UI 注入、状态栏 | fields + triggers;丢 UI 外壳 |
| 作者说明 | creator_notes | hidden rules / play constraints / visibility facts |
世界书要全量审计,含 disabled。每条给去向:data、mechanic、event-pack、setup、progressive reveal、prompt-style、discarded。
先过退出闸门:纯设定、无可变世界、无秘密边界的卡不转换——收益不抵成本,向用户说明并建议直接玩原卡。过闸的卡分两档:evented light(少量可变概念,无复杂公式)、evented standard(骰子/战斗/经济/多字段联动/时间压缩)。秘密视角叠加 secret / faction / offscreen pack 与 project subagent;现实题材叠加 web/fetch/code-search 只读事实源。主表与临界场景见 references/decision-tree.md。
分档信号不是「卡里有没有 MVU/公式」,而是「有没有承重且必须被后续可靠查询的转换或隐藏真相」——无任何 MVU 的不可逆拐点或隐藏真相照样进 evented,满屏 MVU 先祛魅只编译承重项。展开论证与信号清单的唯一权威是 references/decision-tree.md。
typed tools 与 CodeAct 只是执行载体之争,取舍见 decision-tree 第二问;无论载体如何,状态变化都落成 domain event 并经 reducer。
多 agent 只解决认知隔离。卡复杂本身不构成拆分理由。
| 信号 | 做法 |
|---|---|
| NPC 少、无秘密 | 单 GM |
| NPC 有秘密/阵营/不同视角 | 拆 subagent |
| 悬疑答案不该进 GM context | 真相/凶手视角隔离 |
| 后台导演要读隐藏真相才有戏 | engine spawn 密闭子进程(薄接缝,非框架) |
| 只为「更聪明」 | 不拆 |
subagent 只给建议、候选事件或文本;状态写入仍由 GM 走主 engine。载体按「子代理要不要知道秘密」选:
tool_call hook 里注入 task(不自读 debug 快照)。pi -p --no-tools --no-approve --no-context-files 密闭子进程 + engine 收割 + pending-harvest 台账;不用 subagent 框架。详见 references/multi-agent-architecture.md。
| 任务 | 读 |
|---|---|
| v2 宪法 | references/evented-runtime.md |
| Card Semantic IR | references/card-ir.md |
| event pack 选择 | references/event-packs.md |
| 总原则 | references/design-principles.md |
| 方案分档与临界判定 | references/decision-tree.md |
| TH/regex 脚本 | references/script-analysis.md |
| 世界书/MVU/initvar | references/mvu-mapping.md(概括 MVU 前必读「MVU 实情」节;拿不准就 fetch 官方原文,不凭记忆编) |
| 开局 setup | references/setup.md |
| 工具抽象 / typed tools vs CodeAct / 入口收敛 | references/tool-abstraction.md |
CodeAct 沙箱契约 / .d.ts | references/codeact.md |
| 数据查询层 / external research | references/data-layer.md |
| session state / 轻量引擎 / 记忆分层 | references/ts-engine.md |
| schema/migration | references/state-schema-migrations.md |
| pi extension/tools/prompt | references/pi-integration.md |
| prompt orchestrator / ST prompt_order 迁移 | references/prompt-composition.md |
| GM 叙事节拍素材(生成 gm prompt 时引用,GM 卡壳时读) | references/storytelling.md |
| 多 agent / 密闭导演 spawn 接缝 | references/multi-agent-architecture.md |
| 两段式结算/渲染、双模型、compaction 接管 | references/two-pass-rendering.md |
| 下场测试 / 三层测试轴 | references/validation.md |
| 工程纪律 / 目录命名 | references/engineering-discipline.md |
evented light 基础:
prompts/preset.json
prompts/gm-*.md
world-data/card-ir.json
world-data/runtime-plan.json
world-data/world.json
skills/start-game/SKILL.md
start.sh
extension.ts
tools/registry.ts
engine/events.ts
engine/reducers.ts
engine/state.ts
.pi/settings.json
package.json
tsconfig.json
standard 按需追加:
engine/codeact.ts
engine/codeact-sandbox.d.ts
engine/migrations.ts
按需追加:world-data/*_index.json、extensions/subagents/*.ts、.pi/agents/*.md、migration/debug 工具、event-pack 测试。
小项目扁平布局即可;项目长大后按领域拆 engine 子目录、prompt 素材按 pass 分目录,且目录名拒绝歧义泛名(data/ vs 运行时 state、agents/ vs .pi/agents/ 撞名等返工教训见 references/engineering-discipline.md 结构纪律)。
start.sh 从本仓库 scripts/start.sh 复制,保留项目级 PI_CODING_AGENT_DIR 隔离。
各条的唯一权威在对应 reference;此处只列红线。
State 与 engine
(draft, event) 领域函数 → 校验 → commit;领域函数不碰 store,失败即不提交。Static<> 派生,不养手写平行类型。references/evented-runtime.md:常规玩法不暴露万能 setter,裸 patch 不碰受保护路径。references/ts-engine.md)。工具面
tools/registry.ts 只是注册清单。references/tool-abstraction.md 入口收敛节)。references/engineering-discipline.md 体量纪律节)。结构化数据不能只放 details;大块工具输出配共享 renderResult,折叠态摘要,展开态完整 content。unknown → typed input,归一化用共享 schema 模块而非手写 assert 克隆,错误用领域语言;engine/state 继续严格。Prompt 面
references/engineering-discipline.md 体量纪律节)。事实源与 subagent
references/multi-agent-architecture.md。架构与工程
references/two-pass-rendering.md。完工闸门唯一权威见 references/validation.md:残留扫描、人工清单、作为测试玩家 Agent 下场 20-30 轮实测,全过才算完成。报告只说已完成项和文件路径;未完成就继续做。
完工后的可选加深环节:回访原卡,判据与流程见 references/validation.md「回访原卡」节。