makecindy / makecindy/cindy

个人微信主动发送在长时间无入站消息后被 iLink 拒绝

Open
#3,515 1 comment 0 reactions 0 assignees View on GitHub
bug
Dominant language
TypeScript
Stars
2.7k
Forks
395
Avg merge
21h 48m
Merged PRs (30d)
776

Description

**提交人**: Lee
**客户端版本**: 0.1.64

---

## 现象

个人微信连接可以正常接收消息,Cindy 回复微信消息也能正常送达。但在较长时间没有新的微信入站消息后,从 Cindy 桌面端主动向已绑定的个人微信发送一条短文本,偶发返回 `SEND_FAILED`;本地日志记录为 iLink 拒绝消息。

## 复现步骤

1. 绑定个人微信并保持连接。
2. 在较长时间没有新的微信入站消息后,从 Cindy 桌面端的其他会话调用个人微信主动发送能力。
3. 发送一条短文本。
4. 观察发送结果。

## 期望行为

主动发送应可靠送达。若 iLink 使用的上下文已过期或失效,Cindy 应自动刷新上下文并重试一次,或返回明确、可操作的错误原因。

## 实际行为

iLink 拒绝主动发送,Cindy 只返回通用的 `SEND_FAILED`,没有自动刷新上下文或重试。随后从微信端发送一条新消息后,Cindy 的正常回复可以送达,主动发送重试也能成功。

## 复现频率

偶发,已在多个日期观察到;目前看与较长时间没有新的微信入站消息有关,具体过期时长未知。

## 已尝试

- 确认个人微信连接仍处于活动状态,且可以继续接收微信消息。
- 确认微信入站消息及对应的 Cindy 正常回复均能完成投递。
- 从微信端发送新消息以刷新上下文,再次发送后成功。
- 未通过解绑或删除凭证的方式处理。

## 脱敏诊断摘要

本次失败发生在个人微信主动发送路径,日志明确记录为 “iLink rejected the message”。同一时间段的轮询、微信入站处理和正常回复投递没有显示连接中断;刷新上下文后重试成功。未包含凭据、令牌、邮箱、个人路径、会话 ID 或无关文件内容。

初步判断:主动发送可能复用了已过期或不匹配的 iLink `context_token`。请考虑在 iLink 业务拒绝时识别具体返回码,刷新上下文并自动重试,同时将具体原因传递给上层。
---
**版本区域**: CN
**OS**: win32 x64 (10.0.19045)
**界面语言**: zh-CN

Contributor guide

Open the contributing guide

Research direction

No files or tests are named. Start at the personal WeChat proactive-send entry point and inspect the logs and iLink response handling for the rejected context_token; compare behavior before and after an inbound message. Done means an expired-context rejection is identified, refreshed and retried once when appropriate, or surfaced as a specific actionable error, with regression coverage if the relevant test location is found.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
api, backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.