论文复现之AgentCF:用户/物品双代理的落地经验与关键注意事项
这是一份面向可复制的 AgentCF 复现笔记记录了代码/配置/数据/评测的完整落地过程给出从论文到跑通的最短路径并逐条记录我踩过的坑与规避办法。目录一、论文背景与方法1.1 背景动机1.2 方法框架1.3 推断阶段的三种提示策略二、原文结果与贡献2.1 实验与评测设置2.2 主要排名结果2.3 设计选择与消融观察2.4 行为模拟结果2.5 作者自述贡献三、 获取作者代码数据集并配置环境3.1 获取代码与数据集3.2 配置新环境四、实验设置4.1 实验基本设置4.2 优化 CD 数据集上的用户代理和项目代理4.3 评估即交互推理4.4 直接在CD数据集上加载预训练的用户代理和项目代理五、结果复现5.1 指标5.2 简要解读5.3 注意事项6. 复盘与思考6.1 我遇到的问题精简版6.2 我学到的6.3 我的选择清单7、致谢原文地址官方论文地址代码地址官方代码地址一、论文背景与方法1.1 背景动机传统推荐MF/NCF/SASRec 等依赖数值交互点击/评分对复杂偏好与语境表达不足交互与解释能力弱。且现有 “LLM for Rec” 多把 LLM 当打分器/文本特征器但现实里语言相似 ≠ 行为相似如“尿布—啤酒”共现但语义无关。因此需要一种能学行为共现、又保留解释与自我修正的 LLM 推荐范式。原文说法1.2 方法框架从真实时间序列采样成对的正负样本负样本刻意选热门且排在前面制造强干扰。LLM 读取用户短期记忆与两个物品记忆完成二选一并输出简短理由。与真值对照选对就记一条证据选错就触发协作反思只编辑用户短期记忆和正样本物品记忆负样本不改以免影响它在其他用户上的可迁移性最后把旧的短期记忆归档进长期记忆方便后续检索。如此循环若干轮直到与真实一致或达到步数上限用户–物品–用户的链路上会自然形成“偏好传播”后续推断就更贴近真实个性。原文说法记忆设计很朴素但关键用户有一个短期记忆近期偏好易于快速改写和一个长期记忆库历史片段推断时面向候选做相关检索物品有一个统一记忆用标题、类目等身份信息初始化随后持续注入“谁喜欢我”的受众画像。把 embedding 换成“可读可改的语言记忆”训练过程就变成了“可解释、可定位、可修复”的记忆治理。1.3 推断阶段的三种提示策略AgentCF_B基础只用用户短期记忆和候选物品记忆直接排序通用且成本最低。AgentCF_BR检索专长在长期记忆里按候选做检索把“与候选相关的个性化专长片段”并入上下文长期信息很丰富时更有效。AgentCF_BH序列增强在稀疏场景把历史交互过的物品记忆也并入上下文让大模型临时承担轻量的序列建模角色。我复现这套方法看中的价值主要有四点双侧建模把“谁喜欢谁”的关系学得更扎实也更容易解释。不微调 LLM只编辑记忆成本友好且可控。稀疏、冷启动场景下能靠 BH、BR 补上下文鲁棒性不错。每一步都有理由文本与可追溯的记忆改写排错和 AB 调优非常直观。二、原文结果与贡献2.1 实验与评测设置数据Amazon Reviews 的CDs Vinyl与Office Products两个子域各自再划分“稠密/稀疏”两个 100 用户子集用于代理训练与评测。评测留一法最后一条交互为真值主指标NDCG1/5/10每个测试实例重复三次取均值。基线BPR、SASRec同时报告全量训练与采样训练版本、Pop、BM25、以及把 ChatGPT 当零样本排序器的LLMRank。AgentCF 推断配置AgentCF_B只用用户短期记忆Ms_u与候选物品记忆Mi、AgentCF_BR从用户长期记忆Ml_u检索与候选相关的片段M_u^r加入上下文、AgentCF_BH在稀疏场景把历史交互过的物品记忆{M_{i_k}}也纳入上下文用于轻量序列增强。2.2 主要排名结果整体上AgentCF 的三个变体在四个数据集的大多数指标上优于传统 CF/序列模型与零样本 LLM 排序其中基础版B已能稳定越过强基线。当用户长期记忆较为丰富时BR在NDCG5/10上进一步领先因为能把“与候选强相关的历史专长片段”检索进上下文证据更充分。在交互稀疏的场景尤其 OfficeBH优势更明显它让模型在推断时临时承担一小步序列建模用历史物品记忆补足上下文从而显著缓解冷场景下的排名退化。三种配置不是此消彼长而是面向不同数据形态的“即插即用”增强先跑B看长期/序列信息是否充足再决定是否打开R或H。2.3 设计选择与消融观察热门优先的负采样能稳定地区分“流行度驱动”与“个性化驱动”迫使代理依赖个性化记忆而不是走流行度捷径。只编辑用户短期记忆与正样本物品记忆不编辑负样本物品记忆更利于稳定泛化一旦把负样本物品“写黑”它在其他用户上的潜在吸引力会被不必要地削弱。在小样本与高 API 成本约束下采样训练的 BPR/SASRec相比其全量版本明显退化而AgentCF不依赖大批量梯度更新反而能凭“可编辑的语言记忆”保持竞争力。这些设计共同把“学习重心”从参数梯度迁移到“记忆治理”以文本方式记录、对齐与纠错更可审计也更利于排错。2.4 行为模拟结果阅读评论的态度转移用户代理在决策前若先读其他用户评论正评显著提高选择概率负评明显降低选择概率而且更信任“与自己画像更接近的评论者”与真实平台行为一致。新物品的增温新物品代理在进入排序前先与热门物品代理交互一次进行“增温”其后续排序名次会提升说明物品之间发生了“受众画像”的迁移为冷启动提供了无需额外预训练的自然路径。偏好传播可视案例沿“用户—物品—用户”的链路多轮交互后出现风格与情感的逐跳扩散形成可解释的协同信号。2.5 作者自述贡献双边代理建模首次同时把用户与物品建成自治语言代理在同一语言空间里协同刻画双边关系。无微调的学习闭环提出“对比选择 → 与真实对照 → 协作反思”的闭环不改 LLM 权重只对可读可改的语言记忆进行定点编辑从而在语言空间内复现协同过滤。实证与行为证据在真实数据上展示了个性化排名收益并呈现阅读评论的态度转移、物品间增温、偏好随交互传播等类人行为现象支撑智能体在推荐中的可用性与可解释性。贡献的关键词是“记忆、反思、双边”这是把协同过滤的统计本质翻译成一套可解释、可调、可复核的语言流程。三、 获取作者代码数据集并配置环境3.1 获取代码与数据集首先在GitHub上获取源代码并下载测试数据集之后将相应数据集dense 版本放于此目录或在 YAML 中指定绝对路径data_pathdataset/CDs-100-user-dense3.2 配置新环境我的做法是建立一个Conda 独立环境名字就叫agentcf。毕竟以后经常切换多个实验这样做一条命令激活就能复现创建环境并安装依赖conda create-n agentcf python3.11-y conda activate agentcf pip install--upgrade pip pip install-r requirements.txt pip installopenai0.28.1pyyaml pandas numpy tqdm faiss-cpu由于原文需要调用OpenAI的API,需要读者在代码中放入自己的api令牌密钥若怕泄露可以用环境变量读取Dispatches requests to OpenAI API asynchronously. Args: messages_list: List of messages to be sent to OpenAI ChatCompletion API. model: OpenAI model to use. temperature: Temperature to use for the model. max_tokens: Maximum number of tokens to generate. top_p: Top p to use for the model. Returns: List of responses from OpenAI API. 四、实验设置4.1 实验基本设置在 .agentcf/props/AgentCF.yaml 文件中有关于基础实验设置其中embedding_size:64# 推荐侧嵌入维度如与RecBole/模型侧对齐llm_model:gpt-3.5-turbo# 对话式模型用于各类Agent对话/推理llm_temperature:0.2# 训练/生成阶段温度略带随机性利于探索llm_temperature_test:0# 测试/评测阶段温度0保证可复现sample_num:200# 每轮采样的候选成对样本量用户-物品二选一对数api_batch:20# LLM请求的并发/批量大小后端会做节流/聚合chat_api_batch:10# Chat接口批量大小通常低于通用接口evaluation:basic# 评测模式basic / rag / sequential 三选一接下来是用户和物品的agent提示词以及前向反向和评测阶段的prompt这里就不展示了原作者已经给出重点是要将自己的api密钥写入api_key_list:[sk-***]4.2 优化 CD 数据集上的用户代理和项目代理cd agentcf/export api_baseYour openai.api_basepython run.py-m AgentCF-d CDs-100-user-dense--train_batch_size20--eval_batch_size200--max_his_len20--MAX_ITEM_LIST_LENGTH20--epochs1--shuffleFalse--api_batch20--test_onlyFalse关键含义–d CDs-100-user-dense选择数据配置/别名为 CDs-100-user-dense稠密版。通常会映射到 props/CDs-100-user-dense.yaml 和 dataset/CDs-100-user-dense/–test_onlyFalse先训练再评测。如果设为 True则跳过训练、直接用已存在的权重做评测本命令明确是 dense 版本。换成 sparse请同步改 -d/YAML 与 data_path并在文中写清用户数/物品数/交互数差异避免评测协议不一致导致“假偏差”4.3 评估即交互推理cd agentcf/export api_baseYour openai.api_basepython run.py-m AgentCF-d CDs-100-user-dense--train_batch_size20--eval_batch_size200--max_his_len20--MAX_ITEM_LIST_LENGTH20--epochs1--shuffleFalse--api_batch20--test_onlyTrue关键含义–max_his_len20用户历史序列截断到最近 20 条作为代理/模型的输入窗口–test_onlyTrue跳过训练直接做评测/交互推理4.4 直接在CD数据集上加载预训练的用户代理和项目代理cd agentcf/export api_baseYour openai.api_basepython run.py-m AgentCF-d CDs-100-user-dense--train_batch_size20--eval_batch_size200--max_his_len20--MAX_ITEM_LIST_LENGTH20--epochs1--shuffleFalse--api_batch20--test_onlyTrue--loadedTrue--savedFalse--saved_idx1000关键含义–test_onlyTrue只做评估/交互推理不进入训练环节–loadedTrue从磁盘加载预训练好的“用户代理/物品代理状态”–savedFalse本次不保存新的代理状态或权重纯评估–saved_idx1000指定要加载的快照编号/版本号例如第 1000 次保存的代理状态需要和磁盘上已有文件对得上五、结果复现我训练用户代理/物品代理的前期执行过程为接下来就是进行训练与评测5.1 指标Metric135710Recall0.100.360.490.690.98NDCG0.100.24960.3030.3720.45955.2 简要解读Recall10 ≈ 0.98前 10 名基本覆盖目标排序前列稳定。NDCG 随 K 上升从 0.101到 0.459510相关项更集中在 Top-10而非绝对第 1。时间成本约 1h38m 完成一次完整评估符合“用户代理 × 物品代理”的交互式推理特征。5.3 注意事项候选池协议全排序 vs 采样会显著影响 Recall/NDCG切分方式时间切 vs 随机切差异明显在“实验设置”中固定并公开。多 seed当前为单次评估建议 ≥5 个 seed 报均值±方差。预训练代理对齐若加载同域CDs-dense且同模板的预训练代理结果更稳跨域/改模板会引入漂移。6. 复盘与思考这次复现主要是把“工程—协议—评测”三件事对齐。下面只留核心结论便于读者复用。6.1 我遇到的问题精简版①CLI 告警与生效日志提示will not be used in RecBole是 RecBole 不解析-m/-d的常规行为实际由run.py用它们选择 YAML 与数据。通过“已加载的 YAML data_path”日志自证即可。②dense / sparse 的理解与取舍dense过滤后更稠密冷启动少、结果稳sparse更贴近长尾波动大但更接近实战。复现论文用 dense做鲁棒性再跑 sparse。训练在哪个版本评估就用哪个版本避免 ID 映射不一致。③评测协议对齐候选池全排序/采样、切分方式时间/随机、负采样与指标实现需写死在 YAML并在文中公开否则容易出现“假偏差”。④评估与训练的开关--test_onlyTrue只评估False训练后评估。epochs1仅用于冒烟不用于对照。⑤预训练代理加载--loadedTrue --saved_idx…需满足同数据域、同模板、同截断长度否则会维度不匹配或效果漂移。⑥API 端点与并发设置api_baseapi_batch受限流影响需要折中。交互式评估耗时在可接受的 1h 区间。⑦版本与随机性固定仓库 commit、Torch/RecBole/CUDA 版本并保存pip freeze多 seed 报均值±方差。6.2 我学到的协议先于数值候选池、切分、负采样、指标定义不一致任何数值对比都失真。先冒烟再放量用最小配置验证管线通再上完整训练与多 seed。YAML 是“单一事实源”把关键超参与评测项都写进 YAML并在日志中打印方便自证与复刻。同域加载更稳同数据、同模板、同长度的预训练代理能显著节省时间并减少波动。可复制性是第一性版本锁定、日志完整、结果可重跑比单次最好值更有研究价值。6.3 我的选择清单① 复现论文表格使用CDs-100-user-dense评测协议写死跑 ≥5 个 seed保存日志与环境。② 验证鲁棒性在CDs-100-user-sparse复跑同配置关注长尾场景的跌幅。③ 省时评估同域加载预训练代理--loaded --saved_idx评估前核对 ID 映射与模板。小结这次复现把工程脉络与评测协议理顺了对本科阶段的研究实践而言可复制性与自证能力比追求单点分数更重要7、致谢感谢原作者开源代码与配置文件感谢师兄在我复现工作中对我的耐心指点希望这篇复现博客能帮助到更多需要的人。

相关新闻

Ante语言:在系统编程中实现函数式安全性的革命性方案

Ante语言:在系统编程中实现函数式安全性的革命性方案

Ante语言:在系统编程中实现函数式安全性的革命性方案 【免费下载链接】ante A safe, easy systems language 项目地址: https://gitcode.com/gh_mirrors/an/ante 想象一下,你正在开发一个高性能的系统级应用,需要在内存安全、并发控制…

2026/7/6 17:08:44 阅读更多 →
EhViewer漫画阅读器完整指南:从入门到精通

EhViewer漫画阅读器完整指南:从入门到精通

EhViewer漫画阅读器完整指南:从入门到精通 EhViewer是一款基于Material Design 2设计风格的开源Android漫画阅读器应用,专为漫画爱好者提供流畅的阅读和管理体验。无论你是初次接触漫画阅读器的新手,还是寻找更优秀替代方案的用户&#xff0…

2026/7/6 17:08:44 阅读更多 →
AI Agent 实战:30分钟部署 Hermes Agent,打造闭环学习智能助手

AI Agent 实战:30分钟部署 Hermes Agent,打造闭环学习智能助手

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 如果你最近在关注 AI Agent 领域,大概率已经听过 Hermes Agent 这个名字。它不仅在 GitHub 上收获了超过 21 万颗星&#…

2026/7/6 17:08:44 阅读更多 →

最新新闻

零绿幕直播革命:OBS AI背景移除插件完全指南

零绿幕直播革命:OBS AI背景移除插件完全指南

零绿幕直播革命:OBS AI背景移除插件完全指南 【免费下载链接】obs-backgroundremoval An OBS plugin for removing background in portrait images (video), making it easy to replace the background when recording or streaming. 项目地址: https://gitcode.c…

2026/7/6 17:53:35 阅读更多 →
关闭右键菜单中的“搜狗压缩”丨​​​​​​​如何将右键菜单的搜狗压缩去除?

关闭右键菜单中的“搜狗压缩”丨​​​​​​​如何将右键菜单的搜狗压缩去除?

搜狗压缩太流氓,天天弹窗要升级,提醒充会员云云,难以忍受。 如何将右键菜单的搜狗压缩去除? 简直是流氓软件,在我的右键菜单里太碍眼了 一点击就是充值入口,恶心 解决方法: 打开搜狗输入法设置…

2026/7/6 17:51:33 阅读更多 →
CodeQuery GUI深度使用:界面定制与主题配置指南

CodeQuery GUI深度使用:界面定制与主题配置指南

CodeQuery GUI深度使用:界面定制与主题配置指南 【免费下载链接】codequery A code-understanding, code-browsing or code-search tool. This is a tool to index, then query or search C, C, Java, Python, Ruby, Go and Javascript source code. It builds upon…

2026/7/6 17:47:29 阅读更多 →
为什么选择Linkora?揭秘这款本地优先链接管理器的7大核心优势

为什么选择Linkora?揭秘这款本地优先链接管理器的7大核心优势

为什么选择Linkora?揭秘这款本地优先链接管理器的7大核心优势 【免费下载链接】Linkora Local-first multiplatform link organizer with optional self-hosted sync. 项目地址: https://gitcode.com/gh_mirrors/li/Linkora 在信息爆炸的时代,我们…

2026/7/6 17:45:25 阅读更多 →
CZSC缠论插件:3分钟快速掌握通达信智能缠论分析终极指南

CZSC缠论插件:3分钟快速掌握通达信智能缠论分析终极指南

CZSC缠论插件:3分钟快速掌握通达信智能缠论分析终极指南 【免费下载链接】Indicator 通达信缠论可视化分析插件 项目地址: https://gitcode.com/gh_mirrors/ind/Indicator 你是否曾为缠论复杂的图表分析而头疼?CZSC缠论可视化分析插件正是为你解决…

2026/7/6 17:43:24 阅读更多 →
Go语言运行时动态结构体:突破静态类型限制的架构创新

Go语言运行时动态结构体:突破静态类型限制的架构创新

Go语言运行时动态结构体:突破静态类型限制的架构创新 【免费下载链接】dynamic-struct Golang package for editing structs fields during runtime and mapping structs to other structs. 项目地址: https://gitcode.com/gh_mirrors/dy/dynamic-struct 在G…

2026/7/6 17:43:24 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻