Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,8 @@ does not install a launchd watcher by default for the same reason.
Agent-ready message rows include:

`id(local_id/server_id_str/talker)`, `time`, `create_time`, `time_iso`, `sender`,
`sender_wxid`, `is_from_me`, `kind`, `text`, display-ready `images` / `videos` /
`sender_wxid`, optional `sender_group_nickname` / `sender_contact_display`,
`is_from_me`, `kind`, `text`, display-ready `images` / `videos` /
`files` / `link` / `music` / `miniprogram` / `forward_chat` / `quote` /
`transfer` / `red_packet` / `location` / `voice.transcript` / `solitaire`, and
concise `warnings`.
Expand Down
8 changes: 7 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,14 +150,20 @@ jq -n --arg chat "聊天名" '{chat:$chat,limit:20}' | wechat-cli call-json time
{
"id": {"local_id": 123, "server_id_str": "9876543210", "talker": "xxx@chatroom"},
"time_iso": "2026-05-26T13:00:00+08:00",
"sender": "Alice",
"sender": "Room Nickname",
"sender_wxid": "wxid_alice",
"sender_group_nickname": "Room Nickname",
"sender_contact_display": "Alice",
"is_from_me": false,
"kind": "image",
"text": "[图片]",
"images": [{"path": "/Users/me/.wechat-cli/media-cache/xxx.jpg"}]
}
```

群消息优先使用可可靠解析的群内昵称作为 `sender`。`sender_wxid` 保留稳定身份,
`sender_contact_display` 与 `sender_group_nickname` 仅在对应信息可可靠解析时返回。

默认只返回人能在微信里看到、且 agent 可直接使用的信息。raw XML、CDN key、协议码、不可读 `.dat` 与候选路径只在 debug/full 输出中出现。

## 严格只读
Expand Down
12 changes: 7 additions & 5 deletions cmd/wechat-cli/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -821,11 +821,13 @@ func cliSearchMessageRow(row map[string]any, args map[string]any) map[string]any
"local_id": row["local_id"],
"talker": row["talker"],
}),
"time": formatUnixLocal(createTime),
"time_iso": cliFormatUnixISO(createTime),
"create_time": row["create_time"],
"sender": firstNonEmpty(stringMapValue(row, "sender_display_name"), stringMapValue(row, "sender_wxid")),
"sender_wxid": row["sender_wxid"],
"time": formatUnixLocal(createTime),
"time_iso": cliFormatUnixISO(createTime),
"create_time": row["create_time"],
"sender": firstNonEmpty(stringMapValue(row, "sender_display_name"), stringMapValue(row, "sender_wxid")),
"sender_wxid": row["sender_wxid"],
"sender_group_nickname": row["sender_group_nickname"],
"sender_contact_display": row["sender_contact_display"],
"chat": compactMap(map[string]any{
"talker": row["talker"],
"display_name": row["talker_display_name"],
Expand Down
4 changes: 1 addition & 3 deletions cmd/wechat-cli/context_tool.go
Original file line number Diff line number Diff line change
Expand Up @@ -309,9 +309,7 @@ func (s *server) finishContextRows(talker string, rows []wcdb.Row) {
return
}
setContextTalker(talker, rows)
s.attachDisplayNames(rows,
[2]string{"talker", "talker_display_name"},
[2]string{"sender_wxid", "sender_display_name"})
s.attachMessageDisplayNames(rows)
if selfWxid := s.selfWxid(); selfWxid != "" {
for _, r := range rows {
sw := rowString(r, "sender_wxid")
Expand Down
Loading
Loading