Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

fix(reliability): 投递语义是"取走即确认"——崩溃/队列溢出/重试耗尽都静默丢用户消息,且无去重

Aperta
#6 24 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
18/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
rust

Direzione di ricerca

Start at src/bridge/mod.rs:96-129 to see the fetch-then-dispatch path that has no persistence or ack, then read src/bridge/dispatcher/session.rs:217-220 and send.rs:225-238 for the silent drop and the abandoned final reply. The Hub side at ilink-hub/src/server/routes/bot.rs:330-340 shows why drain is destructive, and telegram.rs:421-444 shows the in-memory offset. Done means an outbound WAL with dedup plus a persisted Telegram offset, covered by tests that kill the process mid-flight.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

needs-human

场景 gap 单(okguitar 提报)· 优先级 P1 · 依赖:无

基线 HEAD = 53bc5cd。

Summary

  • Hub 侧 ilink-hub/src/server/routes/bot.rs:330-340 queue.drain(&vtoken) 是破坏性读取(游标 get_updates_buf 恒空串);取走后响应丢失=消息永久消失。
  • 本仓 src/bridge/mod.rs:96-129:取回后直接 dispatch,无持久化/无 ack;src/bridge/dispatcher/session.rs:217-220:队列满 try_send 失败只 warn 丢弃;src/bridge/dispatcher/send.rs:225-238:重试预算耗尽"final reply abandoned"后 return Ok(())(正文已丢但流程当成功)。
  • 无去重:全仓无 message id/指纹;Telegram offset 只存内存(telegram.rs:421-444),重启回 0 会重放未确认批次 → 重复回答。

影响

C 端语义"每条用户消息必有且仅有一次应答"不成立:iLink 最坏 at-most-once(丢消息,用户永远等不到回复);Telegram 最坏 at-least-once(重复跑昂贵 CLI)。中间崩溃点全部无补偿。

建议

本仓落轻量 WAL/出站队列(收到即写、回复成功才删、启动补投对账),或推动 Hub 改"回复成功再 ack"的显式确认协议;Telegram offset 持久化 + 去重。

Lingua principale
Rust
Stelle
0
Fork
0
Merge medio
11m
PR unite (30g)
7

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di jeffkit/im-agentproc

Tutte le issue di jeffkit/im-agentproc

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.