V3 · Dynamic Reader Data × Simulator · data + simulator + personalization

Novel Feedback v3:真实数据快照、动态读者 simulator、trajectory/token-level 个性化

这版开始落到实验基建:源数据只放 raw/ 且不修改;另复制/读取生成 processed/derived/。目标不是静态“用户喜欢什么”,而是模拟真实动态读者:文本会改变和创造期待,反馈更新 reader state,reader state 再驱动 agent memory / critic / planner / retriever / generator 的 transition,并影响后续内容生成。

Answer first

v3 的关键变化:从“规则 synthetic bench”变成“真实数据校准 + 动态 reader state transition”。

我已经在 workspace 内构建了 v3 数据快照:5 个公开 raw 文件、4 个 complete-novel processed copy、12 条动态 reader feedback trajectories、60 条 state-update examples。受 DTA/版权/平台许可限制的 Qidian-Webnovel comments、RoyalRoad、AO3 正文等没有硬抓;只记录获取路径与限制。AHEAD intentionally disabled,本页仍聚焦 user-feedback 下的 state update / transition 如何影响后续生成。

Raw

5 public snapshots

Oedon42/webnovelbench + NovelUpdates tags/genres。raw 文件保留 checksum,不在脚本里修改。

Processed

4 complete novels

每个 processed novel 保留多个 chapters 和 paragraphs,带 source_ref 与 license_class。

Derived

12 trajectories

每条 trajectory 含 explicit feedback 与 implicit actions:dwell、fast_swipe、reread、continue、scroll_depth。

Eval rows

60 state updates

每行含 gold_preference_update、gold_agent_state_update、future probes 与 component targets。

Real data build

真实小说数据下载与改造状态

可公开下载的小样本已经下载;受限源不违规抓取。真正论文版应补 Qidian-Webnovel Corpus DTA 或作者授权 RoyalRoad/ScribbleHub pilot。

SourceStatusDownloaded / Not可改造成什么
Oedon42/webnovelbenchdownloaded rawnovel_data_subset_d_100.json, subset_d.json, 平凡的世界.json完整小说/章节/段落结构;作为内容侧 novel source,配 simulator / pseudo-feedback 生成 chapter feedback trajectory。
Feydar NovelUpdates tags/genresdownloaded rawnovelupdates_tags.jsonl, novelupdates_genre.jsonltrope/genre ontology、用户 prototype、cold-start preference priors。
Goodreads Book Graph / rating samplesrecorded, not included in fast raw第一次下载 qmaruf CSV 太慢,已清理 incomplete cache后续用流式/分块下载来估计 rating bias、review-aspect、shelf trajectory。
Qidian-Webnovel Corpus 110restrictednot downloaded最佳真实 reader-response:段落/章节评论、用户 profile、双语 webnovel;需要 DTA,不能硬抓或公开重分发。
RoyalRoad / ScribbleHubpermission needednot downloaded最接近英文 serial fiction 的 view/follow/favorite/chapter comments;建议 author-consented pilot。
AO3 metadatametadata-only candidatenot downloadedtags/kudos/bookmarks/hits/comments count 可做 engagement priors;正文与用户内容敏感。
Project Gutenberg / Standard Ebooksfuture public-domain contentnot downloaded in this run可公开 rewrite/counterfactual 内容,但缺 native feedback,需要和 simulator/pilot 结合。

Raw policy

{
  "raw_policy": "raw files are immutable source snapshots; processed/derived files are copies or transformations only",
  "data_workspace": "/root/code/vepfs/hermes/novel-demo/personalized-user-feedback-agent-evolution/v3-data",
  "download_count": 5,
  "complete_novel_paths": 4,
  "trajectory_count": 12,
  "state_update_example_count": 60
}

Public sample files

data/public_manifest.json
data/sample_complete_novels.json
data/sample_feedback_trajectories.jsonl
data/sample_state_update_examples.jsonl
data_build_report.md

JSONL Schema

v3 统一数据格式:complete novel + chapter feedback trajectory

每个 event 同时记录文本特征、显式反馈、隐式动作、动态 reader state、gold agent state update 和 future probes。

Current JSONL sample

{
  "trajectory_id": "traj_xxx",
  "user_id": "u_fast_agency",
  "source": "Oedon42/webnovelbench::novel_data/novel_data_subset_d_100.json",
  "license_class": "hf_public_or_metadata_review_required",
  "hidden_initial_reader_profile": {"fast_pacing": 0.9, "agency": 0.85, "lore": -0.3, "consistency": 0.7},
  "dynamic_reader_model_note": "Preferences are not static: trust, fatigue, created expectations and attention targets transition after each chapter based on text and feedback.",
  "events": [{
    "turn": 1,
    "chapter_id": "..._ch01",
    "paragraph_refs": ["ch01_p001", "ch01_p002"],
    "content_features": {"pacing_speed": 0.31, "female_agency": 0.42, "lore_density": 0.77, "continuity_risk": 0.18},
    "observed_feedback": {
      "explicit": {"rating": 3, "like": false, "favorite": false, "tags": ["pacing_slow", "agency_low"], "comment": "铺垫有点久,希望主角自己做关键选择"},
      "implicit": {"dwell_time_sec": 418.2, "fast_swipe": false, "reread": true, "continue_next": true, "scroll_depth": 0.96}
    },
    "hidden_reader_state_after": {"trust": 0.62, "fatigue": 0.24, "expectations": ["next chapter should pay off current setup"]},
    "gold_agent_state_update": [{"target": "critic.checklist", "operation": "add_or_increase_weight", "scope": "current_arc_action_or_payoff_scenes", "anti_scope": "quiet_reflection_scenes", "ttl": "until_arc_resolution"}],
    "future_probes": {"positive": ["next_conflict_scene"], "anti_probe": ["quiet_grief_scene"], "neutral": ["market_description"]}
  }]
}

User simulator training

动态 user simulator 应该怎么训

训练目标不是复现一个静态偏好向量,而是学习 reading-induced state transition:文本本身会塑造用户期待、疲劳、信任和新偏好。

1. Content perception

章节/段落/plan/story-state → narrative axes:pacing、agency、lore、continuity、trope、style。

2. History encoder

用户 past feedback + implicit actions + prior state → z_user,t 与 uncertainty。

3. State transition

s_user,t+1 = T(s_user,t, text_t, feedback_t, agent_response_t)。文本会创造新的期待。

4. Feedback emitter

输出 rating/comment/tags/actions/dwell/skip/reread/continue/prior_feedback_fulfilled。

5. Agent updater

agent 根据 feedback 产生 memory / critic / planner / retriever / generator state diff。

6. Future rollout

用 updated state 生成下一章,再让 simulator 继续阅读,形成 closed-loop eval。

Formula boxes

s_user,t+1 = T_phi(s_user,t, E_text(x_t), feedback_t, agent_response_t)
feedback_t ~ P_theta(explicit, implicit | s_user,t, x_t, story_state_t)
ΔS_agent,t = U_psi(agent_state_t, feedback_t, s_hat_user,t)
y_{t+1} ~ G(· | prompt, story_state_t, ΔS_agent,t)
Training data

个性化数据

真实评论/评分/收藏/阅读列表校准分布;simulator 生成隐藏状态、曝光、dwell、counterfactual;human pilot 做 active-selected pair 和多轮互动校准。

Losses

训练目标

pairwise/ordinal preference loss、implicit action likelihood、comment/tag generation、state transition prediction、swap anti-collapse、calibration ECE、sim-to-real ranking correlation。

Outputs

给 agent 的反馈

不要给 hidden state;只给 explicit + implicit observations。hidden state / oracle update 只用于 eval,防止 agent 作弊。

Simulator evaluation

user simulator 准确度怎么评估

不能只看 simulator 预测 rating 准不准;要看它是否能产生可校准、可解释、能转移到真人 pilot 的动态行为。

Metric定义为什么必要
Feedback prediction AUC / NLL预测 like/favorite/continue/skip/rating/comment tags。基本行为拟合,但不是最终证明。
Dwell / action calibrationdwell log-likelihood、Brier、ECE;区分长 dwell=喜欢/困惑。隐式反馈不能简单等于偏好。
Preference-state recovery对 simulator hidden state 或 human elicited profile 的 axis recovery。验证 encoder 是否真学用户差异。
Transition accuracy预测 reading-induced expectation / fatigue / trust change。v3 关键:偏好会被文本改变和创造。
Counterfactual validity同用户不同文本、同文本不同用户、同反馈不同 history 的输出是否合理变化。防止 simulator 只是静态情感分类器。
Sim-to-real transfer在 simulator 上排名更好的 agent,在 human pilot 中也更好。最终证明 simulator 有评估价值。

Dynamic simulator eval · closed-loop dynamic evaluation

把动态 simulator 接入 evaluation

静态指标只回答“这条反馈理解了吗”;动态 eval 要回答“这次 state update 是否改变了后续多章阅读体验”。

Closed-loop reader return

Return = Σ_t γ^t · J_sim(user_state_t, chapter_t, feedback_t)
Compare: no-update vs memory-only vs full-state-update vs oracle-update

Dynamic state transition gain

DSTG = E[Return(G(S ⊕ ΔS_model), Sim)] - E[Return(G(S), Sim)]
Normalized by oracle-update return to avoid easy scale effects.

Expectation alignment

ExpectationAlign_t = score(chapter_t satisfies expectations created by chapters < t)
Penalty if agent satisfies old preference but ignores newly created expectation.

Personalization divergence

PersonalizationDiversity = D_KL(P_tokens(.|u_i,S_i) || P_tokens(.|u_j,S_j))
subject to coherence and story-state constraints.

Metric chart

Dynamic rollout metrics

label F1easy
DSTGhard
expectation alignhard
sim-to-realhard

Metric chart

State transition stress

trust repair0.44
fatigue control0.51
new expectation0.49

Metric chart

Personalization without collapse

token diversity0.62
coherence0.78
preference fit0.56

NTP personalization

LLM 是 NTP,如何避免每个人得到差不多的小说

不要只在 prompt 里写“用户喜欢快节奏”。个性化需要在 trajectory-level planning 和 token-level decoding/reranking 两层进入生成过程。

层级机制和 state update 的关系起步实验
Trajectory-levelstate-conditioned plannerfeedback 更新 planner.policy / critic.checklist / open-thread priority,改变后续章节事件序列。同一 story seed + 不同 user state,生成 5 章 plan;测 plan divergence、expectation alignment、anti-probe harm。
Candidate-levelpersonalized reranker / reward model生成多候选章节,用 user simulator 或 learned reward 选最符合当前 reader state 的候选。每章 sample k=4,比较 generic likelihood top-1 vs personalized reward top-1。
Token-levellogit bias / control vector / contrastive decoding把 user state 转成 soft constraints:提升 agency/action tokens,压低 exposition-heavy continuations,但受 story consistency gate 约束。在局部段落重写中测 token KL、preference token attribution、coherence。
Adapter-leveluser/prototype LoRA 或 prefix tuning稳定偏好进入小 adapter;短期反馈进入 state/prefix,避免每个用户都训练完整模型。先做 prototype adapters:fast-agency、lore-slowburn、consistency-first。
Online feedbackDPO / IPO / KTO / bandit update用户 A/B/skip/comment 形成 online preference pairs,但需要 replay buffer、off-policy eval 和 rollback。用 simulator closed-loop 先验证,再 human pilot 小规模测试。

Recommended starting point

先做 state-conditioned planning + personalized reranking,不要一开始训 token-level adapter。

最 solid 的开端是:固定基础 LLM,给每个用户维护结构化 state;每章生成多个 plan/chapter candidate;用 ESUS / learned user reward rerank;再把用户反馈转成 state diff。这样能清楚证明“user-feedback → state transition → future content changes”。token-level 个性化作为第二阶段,用 control vector/logit shaping 去解释为什么两个用户在相同 story seed 下产生不同文本分布。

Next experiments

v3 后续实验路线

下一步不是再写页面,而是把 closed-loop simulator eval 跑起来,比较 memory-only、full-state-update、oracle-update。

Step实验产物成功标准
1扩展真实数据 ingest:Qidian DTA / Goodreads streaming / public-domain full novelsraw manifest + processed complete novel + feedback events至少 100 novels、1000 trajectories、可复现 checksum。
2训练 ESUS v0user encoder + transition + feedback emitterrating/action calibration、transition accuracy、counterfactual user separation。
3closed-loop evaldynamic rollout leaderboardfull-state-update 在 DSTG/selectivity/rollback 上显著超过 memory-only。
4trajectory-level personalizationstate-conditioned plans and chapters不同用户 trajectory divergence 增加,同时 coherence 不下降。
5human pilot24–40 位读者 active-selected pairs + 3–5 turn interactionsim-to-real agent ranking correlation 显著正相关。