【免费下载链接】locoagent
AI-powered social media agent with real browser automation
LocoAgent 是一款通过真实浏览器自动化运营社交媒体的 AI 智能体,而它的「操作日志」(Operation Log)正是防止智能体重复点赞、关注、回复的关键机制。这套跨会话持久化去重方案只靠一个 JSON 文件和四行命令就实现了,本文带你完整拆解它的设计原理与落地细节。
为什么 AI 智能体需要一本「操作账本」?
想象这样一个场景:你让 LocoAgent 每天早上自动给关注领域的帖子点赞、写评论。问题来了——大模型本身是「健忘」的:每次会话结束,它的短期记忆就清空了。如果没有额外机制,第二天的它会:
- 对同一条帖子再点一次赞(用户看到你的账号反复操作,非常可疑)
- 对已经回复过的帖子二次评论(刷屏既视感,可能触发平台风控)
- 重复关注同一批用户,浪费每日配额
换句话说:去重不是锦上添花,而是社交自动化智能体可信运行的生命线。LocoAgent 的官方定位也写得很直白:「Persistent cross-session deduplication so the agent never repeats a like, follow, or reply」,这个去重契约被称作智能体身份的核心(README.md 的 📒 Operation Log 章节)。
去重核心:三元组匹配 + 成功状态校验
打开核心脚本 scripts/log-operation.ts,每条操作记录包含 6 个字段:
| 字段 | 含义 | 是否参与去重 |
|---|---|---|
ts | ISO 时间戳 | ❌ |
platform | 平台(x、reddit、linkedin 等) | ✅ |
action | 动作(like、comment、follow、reply 等) | ✅ |
url | 目标内容/用户的规范 URL | ✅ |
status | 结果(success、failed、skipped 等) | ✅(须为 success) |
device | 设备来源(仅溯源) | ❌ |
note | 自由文本备注 | ❌ |
去重逻辑在 check 命令中一目了然:
const found = log.operations.find( op => op.platform === platform && op.action === action && op.url === url && op.status === 'success' )三个设计点值得品味:
- 三元组匹配:
平台 + 动作 + URL构成唯一键——同一条帖子可以被点赞也可以被评论,两者互不冲突; - 只认
success:失败的操作不会被去重,智能体会在下一次运行时自动「补做」,天然形成重试语义; - device 不参与去重:用 iOS 网页版点过的赞,桌面版再来时依然会跳过——因为「点赞」是账号级行为,与设备无关。这一点还有专门的单元测试保障。
用退出码代替返回值:给 Bash 智能体设计的接口
check命令的输出非常「智能体友好」:
- 退出码 0= 已做过 → 跳过
- 退出码 1= 未做过 → 继续
智能体通过 Bash 工具调用它时,无需解析 JSON 也能凭退出码直接做分支判断,这是为 LLM 工具调用量身设计的极简契约。
四条命令:add / check / recent / summary
log-operation.ts 的头部注释就是一份完整的使用手册,四个子命令各司其职:
# ✅ 操作成功后记录(智能体每次成功后自动调用) bun run scripts/log-operation.ts add \ --platform x --action like --url "https://x.com/user/status/123" \ --status success --note "AI agents research post" # 🔍 操作前检查(exit 0 = 已做过,exit 1 = 未做过) bun run scripts/log-operation.ts check \ --platform x --action like --url "https://x.com/user/status/123" # 🕘 查看最近 20 条操作 bun run scripts/log-operation.ts recent --limit 20 # 📊 生成 30 天摘要(自动注入系统提示词) bun run scripts/log-operation.ts summary --days 30其中 summary 命令 会统计每个「平台:动作」组合的成功次数,并按平台列出所有已操作过的 URL,输出一段紧凑的 Markdown——专门为了让它塞进系统提示词里而不撑爆上下文。
持久化的关键:30 天摘要注入系统提示词
光有账本还不够,关键在于让智能体每次开局就带着记忆。在 src/constants/prompts.ts 中,getOperationLogSection()会在会话启动时同步执行summary --days 30,把结果包装成这样一段提示词:
The following is your operation history.Do NOT repeat any action on a URL already listed.Before each action, use:
log-operation.ts check .... After each successful action, log it with:log-operation.ts add ...
也就是说,「操作前必查、成功后必记」这条铁律被写死在了系统提示词中,再附上最近 30 天已操作 URL 清单作为兜底——即使智能体忘了执行 check,清单本身也在提醒它。
这里还有一个容易被忽略的工程细节:该区块被刻意放置在 SYSTEM_PROMPT_DYNAMIC_BOUNDARY 之后。因为 30 天窗口随时间滚动、每轮对话都会变化,如果放在可缓存的系统提示词前缀里,会导致提示词缓存整段失效、白白烧 token;放在边界之后则既保证信息新鲜,又不破坏缓存。一个小小的分区决策,直接影响长期运行的 API 成本。
与定时任务联动:每日会话的「操作守则」
scripts/run-tasks.ts 负责把每日/每周任务定时喂给智能体,它生成的会话提示词里嵌入了完整的操作守则:
- 每次动作前ALWAYS 执行
check - 每次动作成功后ALWAYS 执行
add - 如果某个帖子 URL 已出现在日志中,静默跳过
- 会话结束时执行
recent --limit 20,向用户汇报:完成了什么、跳过了什么、为什么
配合persona/tasks.md中的会话配额约束(如每会话最多 10 次点赞),操作日志就完成了从「防重复」到「可审计」的闭环——每次会话结束的智能体自报,本质上就是日志数据的人类可读版本。
健壮性细节:从新机器克隆到健康检查
这套方案还藏着几个面向「开箱即用」的细节:
- 自动建目录:saveLog 写入前会递归创建
persona/目录——因为该目录被 gitignore(属于用户私有数据),全新克隆的机器第一次写日志不会崩溃; - 健康自检:scripts/doctor.ts 的
doctor命令会用LOCO_OP_LOG_PATH环境变量把日志重定向到隔离的临时文件,做一次「写入→查询」往返探测,全程不触碰真实账本; - 人类可读:状态存在 persona/operation-log.json 中,就是普通的格式化 JSON,随时可以打开翻阅、手工修正。
值得一提的是LOCO_OP_LOG_PATH这个环境变量——测试和诊断可以指定任意路径,同一套代码既服务生产账本又支持沙盒演练,是低成本可测试性的好范例。
总结:小账本,大纪律
回看 LocoAgent 的操作日志设计,它的本质是把「智能体不能重复自己」这一约束,拆解成了三层协作:
| 层级 | 载体 | 作用 |
|---|---|---|
| 数据层 | persona/operation-log.json | 跨会话持久化事实 |
| 接口层 | scripts/log-operation.ts | 以退出码为契约的四命令 CLI |
| 认知层 | prompts.ts 系统提示注入 | 30 天摘要 + 铁律,让模型「带着记忆开局」 |
没有数据库、没有复杂中间件,只有一个 JSON 文件和约定俗成的调用时序,却同时解决了防重复、可重试、可审计、跨平台(X / LinkedIn / Reddit 各平台 URL 天然隔离)四个问题。如果你也在做浏览器自动化方向的 AI 智能体,这套「三元组去重键 + 退出码契约 + 系统提示注入」的组合拳,是非常值得抄作业的最小可行方案。
【免费下载链接】locoagent
AI-powered social media agent with real browser automation
相关推荐
DeepSeek Harness 会话持久化兼容层:react-loop 重构前 v0 会话日志的加载与恢复实战
DeepSeek Harness 会话持久化兼容层:react loop 重构前 v0 会话日志的加载与恢复实战 本文基于 .agents/notes/impl
人工智能AI AgentAgent 框架DeepSeek永不丢失的对话:Parlant会话持久化与状态恢复全攻略
永不丢失的对话:Parlant会话持久化与状态恢复全攻略 你是否遇到过这样的困境:客服AI刚刚理解用户的复杂需求,服务器重启后一切归零?或者用户中途离开,回来时
AI Agent人工智能后端RAGRequests会话持久化:长期会话管理技巧
Requests会话持久化:长期会话管理技巧 在网络请求开发中,你是否经常遇到重复认证、Cookie管理混乱、连接复用率低等问题?Requests库的会话(Se
后端网络通信
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考