fleet-bot-identity

fleet-bot-identity is a cursor rule for Cursor from zhourong12/cursor-bridge. It costs 26 tokens per session (968 once invoked), scanned A, original, MIT.

A troubleshooting guide for identity settings when multiple bots work together in a Feishu chat. Feishu is a Chinese workplace messaging platform, and an open_id is an identifier for a bot or user there.

In plain words
What is it for?
Use it to match bridge, chat-member, and fleet configuration identifiers and fix missing bot entries or incorrect profiles.
Why use it?
It helps explain failed mentions, delegation, and error 230002 when configuration points to different bot instances.

Cursor rule for Cursor

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add rules/zhourong12/cursor-bridge/fleet-bot-identity
Clone the repo
git clone --depth 1 https://github.com/zhourong12/cursor-bridge

Made for: Cursor.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for fleet-bot-identity

README.md
[![agentmods](https://agentmods.dev/badge/rules/zhourong12/cursor-bridge/fleet-bot-identity.svg)](https://agentmods.dev/rules/zhourong12/cursor-bridge/fleet-bot-identity)
Your own site
<a href="https://agentmods.dev/rules/zhourong12/cursor-bridge/fleet-bot-identity"><img src="https://agentmods.dev/badge/rules/zhourong12/cursor-bridge/fleet-bot-identity.svg" alt="Measured on agentmods" height="20"></a>
Per session 26 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 968 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00026 $0.00968
Opus 5 $0.00013 $0.00484
Sonnet 5 $0.00005 $0.00194
Haiku 4.5 $0.00003 $0.00097

Measured 4d ago against content hash 3d4c80d67f4b, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

fleet-bot-identity scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.cursor/rules/fleet-bot-identity.mdc · 60 lines

How it starts

The opening of the file, as written. The whole thing — 60 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Fleet 多 bot 协作:身份与 open_id 规则

当用户遇到「@ 其他 bot 一直失败」「delegate 不行」「openid 老是弄错」「230002 Bot/User can NOT be out of the chat」时,先按本规则排查。

三个 open_id,必须分清

名称 来源 含义
bridge 绑定 open_id ~/.lark-channel/registry/processes.jsonbotOpenId bridge 进程登录飞书后,自己这个 bot 实例的 open_id
群里实际 open_id 飞书群成员列表里那个 bot 的 open_id(lark-cli / 群成员接口可查) 群里真正存在、能被 @ 的那个 bot 实例
fleet.json bots.openId ~/.lark-channel/fleet.json 手填 用于 /delegate 和 handoff 查找目标的 open_id

铁律:三者必须指向同一个 bot 实例。 任一不一致 → 230002 或 @ 不到。

典型故障:同一个 appId 出现两个 open_id

现象:bridge 侧 botOpenId = ou_AAAA,群里的同名 bot = ou_BBBB。 原因:同一 appId 在飞书后台重建/重置过 bot 实例,或群里加的是旧实例、bridge 绑的是新实例。 结果:bridge 用 ou_AAAA 发消息,但群里只有 ou_BBBB230002 Bot/User can NOT be out of the chat

修法(二选一):

  1. 把 bridge 绑的那个 bot 实例(ou_AAAA)加进群;
  2. 或重新绑定 bridge 到群里已有的实例(ou_BBBB)——重置该 profile 的飞书凭据/重新登录。

fleet.json bots 段规则

  • 每个要参与协作的 profile 都必须在 bots 段有条目。
  • bots.<name>.openId 必须填「群里实际 open_id」,不是 registry 里的 botOpenId(除非两者已确认一致)。
  • bots.<name>.profile 指向本机 profile 名。
  • 缺条目 → 该 bot 对其他 bot 隐身,/delegate @名字 报「未在 fleet.json 找到 open_id」。

示例:

"bots": {
  "cejiang":      { "profile": "cejiang",      "openId": "ou_xxx", "role": "tester" },
  "cursor":       { "profile": "cursor",       "openId": "ou_yyy", "role": "dev" },
  "cursor-jishi": { "profile": "cursor-jishi", "openId": "ou_zzz", "role": "dispatcher" }
}

排查 SOP

  1. 查 bridge 侧身份:registry/processes.jsonbotOpenId
  2. 查群里实际 bot:在飞书群里看成员,或用 lark-cli 查群成员列表里该 bot 的 open_id。
  3. 两者不同 → 先解决身份错配(加群 or 重绑),再谈协作。
  4. 相同 → 检查 fleet.jsonbots 段是否配全、openId 是否等于上面一致的值。
  5. fleet restartfleetPeers 重新注入 prompt(改 fleet.json 后必须重启生效)。

注意

  • bot 只有被真实结构化 @ 才能收到群消息;纯文本「@名字」无效(飞书机制,非本仓库限制)。
  • autoStart 只影响 fleet start(不带 --all)启动哪些 profile;fleet-restart.bat 已改为 --all,发现的所有 profile 都启动。bots 段才是协作识别用的。
  • fleet.json 后需重启 Bot 进程,fleetPeersstartChannel 时读取一次。

Read the full file on GitHub · 60 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago First seen · 60 lines · 26 tokens per session scan A 3d4c80d67f4b

Subscribe to this mod's changes

fleet-bot-identity is a cursor rule published in the GitHub repository zhourong12/cursor-bridge (2 stars, last pushed 2mo ago), licensed MIT. It adds 26 tokens to every session and 968 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.