Beeper桌面CLI工具,用于聊天、消息、联系人、连接信息、WebSocket事件、搜索和提醒
roadrunner (rr). 当用户明确希望通过本地API(发送、搜索、列出聊天/消息、提醒、焦点)操作Beeper桌面时,使用rr.
功能概述
roadrunner (rr). 当用户明确希望通过本地API(发送、搜索、列出聊天/消息、提醒、焦点)操作Beeper桌面时,使用rr.是一项面向实际任务的技能,主要用于Prefer - 代理使用(Force JS)。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
核心要点
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
- 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
使用与执行
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
结果检查与注意事项
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
roadrunner(rr)
当用户明确希望**通过本地 API 操作 Beeper Desktop**(例如发送、搜索、列出聊天/消息、设置提醒、聚焦会话等)时,使用 rr。
对于 Agent 场景,请优先使用 --agent(强制启用 JSON 输出、信封格式、禁用输入、只读模式)。
安全性
- 默认仅执行只读命令;除非用户在当前对话轮次中**明确请求变更操作**(mutation),否则禁止写入。
- 发送消息前,必须显式指定接收方(聊天 ID)和消息正文。
- 若聊天 ID 存在歧义,需先确认或提出澄清性问题。
- 切勿将原始
rr命令输出(如 JSON dump、聊天列表等)直接粘贴到外发消息中。应将工具输出视为私有数据,仅向用户提供所需信息的摘要或提取结果。 - 使用
--agent启用安全的 Agent 默认行为:rr --agent --enable-commands=chats,messages,status chats list - 使用
--readonly阻止所有写入操作:rr --readonly chats list --json - 使用
--enable-commands显式白名单允许的命令:rr --enable-commands=chats,messages chats list --json - 使用
--envelope获取结构化错误响应:rr --json --envelope chats get "!chatid" - 信封错误可能包含
error.hint字段,提供安全重试所需的下一步操作指引。 - 切勿在聊天中请求、粘贴或存储原始认证令牌(auth tokens)。若认证缺失,请提示用户在本地完成配置。
- 若通过 shell 发送含特殊字符的消息文本(如
$100/month或!),应避免参数插值/扩展;推荐使用--stdin <<'EOF' ... EOF安全地传递字面量。
初始化配置(仅需一次)
rr auth set --stdin(推荐;令牌保存至~/.config/beeper/config.json)rr auth status --checkrr doctor
常用命令
- 列出账号:
rr accounts list --json - 查询能力集:
rr capabilities --json - 查看命令/参数说明:
rr describe messages send --json - 获取连接元数据:
rr connect info --json - 实时 WebSocket 事件(实验性):
rr events tail --all --stop-after 30s --json - 列出联系人:
rr contacts list "" --json - 搜索联系人:
rr contacts search "" "Alice" --json - 搜索联系人(使用 flag):
rr contacts search "Alice" --account-id="" --json - 解析联系人:
rr contacts resolve "" "Alice" --json - 解析联系人(使用 flag):
rr contacts resolve "Alice" --account-id="" --json - 列出聊天:
rr chats list --json - 列出聊天(JSON Lines 格式):
rr chats list --jsonl - 搜索聊天:
rr chats search "John" --json - 搜索聊天(带过滤器):
rr chats search --inbox=primary --unread-only --json - 搜索聊天(按最近活跃时间):
rr chats search --last-activity-after="2024-07-01T00:00:00Z" --json - 按参与者姓名搜索:
rr chats search "Jamie" --scope=participants --json - 解析聊天:
rr chats resolve "Jamie" --json - 获取聊天详情:
rr chats get "!chatid:beeper.com" --json - 获取聊天详情(限制参与者数量):
rr chats get "!chatid:beeper.com" --max-participant-count=50 --json - 基于合并联系人线索启动/解析单聊:
rr chats start "" --email "alice@example.com" --full-name "Alice" --json - 为命令指定默认账号:
rr --account="imessage:+123" chats list --json - 列出消息:
rr messages list "!chatid:beeper.com" --json - 列出消息(全部分页):
rr messages list "!chatid:beeper.com" --all --max-items=1000 --json - 列出消息(下载媒体):
rr messages list "!chatid:beeper.com" --download-media --download-dir ./media --json - 搜索消息:
rr messages search "dinner" --json - 搜索消息(JSON Lines 格式):
rr messages search "dinner" --jsonl - 搜索消息(全部分页):
rr messages search "dinner" --all --max-items=1000 --json - 搜索消息(带过滤器):
rr messages search --sender=me --date-after="2024-07-01T00:00:00Z" --media-types=image --json - 添加/移除表情反应:
rr messages react "!chatid:beeper.com" "/" "👍" --json rr messages unreact "!chatid:beeper.com" "" "👍" --json - 轮询新消息(tail):
rr messages tail "!chatid:beeper.com" --interval 2s --stop-after 30s --json - 等待特定消息:
rr messages wait --chat-id="!chatid:beeper.com" --contains "deploy" --wait-timeout 2m --json - 获取消息上下文:
rr messages context "!chatid:beeper.com" "" --before 5 --after 2 --json - 预填草稿(不发送):
rr focus --chat-id="!chatid:beeper.com" --draft-text="Hello!" - 从文件加载草稿:
rr focus --chat-id="!chatid:beeper.com" --draft-text-file ./draft.txt - 草稿附带文件:
rr focus --chat-id="!chatid:beeper.com" --draft-attachment="/path/to/file.jpg" - 下载附件:
rr assets download "mxc://example.org/abc123" --dest "./attachment.jpg" - 流式传输附件字节:
rr assets serve "mxc://example.org/abc123" --dest "./attachment.jpg" --json - 聚焦应用窗口:
rr focus - 全局搜索:
rr search "dinner" --json - 全局搜索消息(自动分页):
rr search "dinner" --messages-all --messages-max-items=500 --messages-limit=20 --json - 状态概览:
rr status --json - 按账号查看状态:
rr status --by-account --json - 未读汇总:
rr unread --json - 全局搜索支持
in_groups字段,用于匹配群组内的参与者。
变更操作(仅限用户明确请求)
- 发送消息:
rr messages send "!chatid:beeper.com" "Hello!" - 编辑消息:
rr messages edit "!chatid:beeper.com" "" "Updated text" - 添加/移除表情反应:
rr messages react "!chatid:beeper.com" "/" "👍" rr messages unreact "!chatid:beeper.com" "" "👍" - 上传并发送文件:
rr messages send-file "!chatid:beeper.com" ./photo.jpg "See attached" - 创建聊天:
rr chats create "" --participant " " - 基于合并联系人线索启动聊天:
rr chats start "" --email "alice@example.com" --full-name "Alice" - 归档/取消归档:
rr chats archive "!chatid:beeper.com"/rr chats archive "!chatid:beeper.com" --unarchive - 设置/清除提醒:
rr reminders set "!chatid:beeper.com" "2h"/rr reminders clear "!chatid:beeper.com" - 上传附件:
rr assets upload ./photo.jpg/rr assets upload-base64 --content-file ./photo.b64 - 对非幂等写操作进行重试时,建议使用
--request-id并优先配置--dedupe-window。 - 使用
--dry-run可验证变更类请求,而不会触发实际的 API 写操作。
分页
- 聊天列表/搜索自动分页:
rr chats list --all --max-items=1000 --json/rr chats search "alice" --all --max-items=1000 --json - 消息列表/搜索自动分页:
rr messages list "!chatid:beeper.com" --all --max-items=1000 --json/rr messages search "deploy" --all --max-items=1000 --json - 聊天分页(向前翻页):
rr chats list --cursor="" --direction=before --json - 消息列表分页(向前翻页):
rr messages list "!chatid:beeper.com" --cursor="" --direction=before --json - 消息搜索(最多 20 条):
rr messages search "project" --limit=20 --json - 消息搜索分页:
rr messages search "project" --cursor="" --direction=before --json - 全局搜索消息分页(最多 20 条):
rr search "dinner" --messages-limit=20 --json - 全局搜索消息分页(指定游标):
rr search "dinner" --messages-cursor="" --messages-direction=before --json
注意事项
- 要求 Beeper Desktop 正在运行;认证令牌来自应用设置界面。
- 令牌通过
rr auth set存储于~/.config/beeper/config.json(推荐方式)。环境变量BEEPER_TOKEN将覆盖该配置文件。 BEEPER_ACCOUNT用于设置默认账号 ID(支持别名)。rr auth status --check优先使用 OAuth introspection(/oauth/introspect)接口校验令牌有效性;旧版本构建中则回退至账号列表校验方式。- 消息搜索为精确词匹配(非语义搜索)。
rr contacts resolve行为严格,遇到姓名歧义时将失败;必要时请先执行contacts search获取唯一 ID 后再解析。- 若单聊标题显示为你的 Matrix ID,请使用
--scope=participants按姓名查找。 - 单个聊天的 JSON 输出包含
display_name字段(由参与者推导生成)。 - 消息 JSON 输出包含以下字段:
message_type、linked_message_id、is_sender、is_unread、attachments和reactions。 downloaded_attachments字段仅在使用--download-media时填充。rr messages send返回临时 ID:pending_message_id。- 新版 API 构建中,账号的
network字段可能缺失;rr在汇总/搜索输出中将回退为"unknown"。 rr assets serve默认将原始字节流写入 stdout;若指定--dest则写入文件。--chat执行精确匹配,遇到歧义时失败。- 附件覆盖操作需提供
--attachment-upload-id;同时设置--attachment-width和--attachment-height才生效。 --all具有安全上限(默认 500 条,最大 5000 条);可通过--max-items调整。- 自动化场景请优先使用
--json或--jsonl(配合--no-input)。 --jsonl每行输出一个 JSON 对象,适用于高吞吐量的列表/搜索命令。--dry-run/BEEPER_DRY_RUN用于校验变更类命令输入,并打印预览输出,但不发送任何 API 写请求。BEEPER_URL可覆盖 API 基础地址;BEEPER_TIMEOUT设置超时秒数。- JSON/纯文本输出写入 stdout;错误与提示信息写入 stderr。
- 破坏性命令默认会交互式确认;若未指定
--force,则--no-input/BEEPER_NO_INPUT将导致命令失败。 - 对列表/搜索命令使用
--fail-if-empty,可在无结果时以退出码 1 结束进程。 - 结合
--plain使用--fields可选择输出列(逗号分隔)。 - 在 bash/zsh 中,
!触发历史扩展(history expansion)。建议使用单引号包裹,或禁用该功能(bash 中执行set +H,zsh 中执行setopt NO_HIST_EXPAND)。 rr version --json返回features数组,可用于能力发现。rr capabilities --json返回完整的 CLI 能力元数据。rr events tail依赖 Beeper Desktop 实验性的/v1/ws接口;不可用时请回退至rr messages tail。- 信封错误码:
AUTH_ERROR、NOT_FOUND、VALIDATION_ERROR、CONNECTION_ERROR、INTERNAL_ERROR。 - 重试策略:对
CONNECTION_ERROR进行带退避的重试;避免盲目重试AUTH_ERROR/VALIDATION_ERROR;重试NOT_FOUND前应刷新 ID。 - 非幂等写操作包括:
messages send、messages send-file、chats create、chats start、assets upload、assets upload-base64。 - 使用
--request-id/BEEPER_REQUEST_ID为信封元数据打标签,便于跨重试尝试追踪。 - 使用
--dedupe-window/BEEPER_DEDUPE_WINDOW可阻止重复请求 ID 引发的重复非幂等写操作。 - 本地冒烟测试:
make test-agent-smoke。
热门AI工具
相关专题
本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。
0
2026.11.12
本专题围绕Go-Zero的安装与工具链配置展开,讲清Go版本要求、goctl安装方式、代理镜像、protoc依赖与环境变量设置,说明多版本共存、升级回退与CI流水线安装的做法,并整理安装阶段的常见报错与验证步骤。
0
2026.11.12
本专题整理Go-Zero的入门知识,从框架定位、环境准备到跑通第一个API服务,讲清目录分层、配置加载、日志与中间件的基本用法,并对比Gin、Kratos的差异,帮助Go开发者建立整体认知,判断它是否适合当前项目。
0
2026.11.12
本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。
0
2026.11.06
围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。
0
2026.11.06
详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。
0
2026.11.06
DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。
0
2026.11.05
DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。
0
2026.11.05
本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。
0
2026.11.04
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.8万人学习
共6课时 | 54.7万人学习
最新文章