Commit Graph

8 Commits (1a943b418c9509d4aac414e4ed3fcda23ea19b95)

Author SHA1 Message Date
docacola 1a943b418c feat(sns): add sns-notifications / sns-feed / sns-search
加 3 个独立命令读朋友圈本地缓存(sns/sns.db):

- sns-notifications:点赞 / 评论通知,对应微信 app 朋友圈右上角的红
  点入口,含"别人赞/评你的帖子"和"你评过的帖子下的跟帖"两类。默认
  仅未读,--include-read 返回全部。
- sns-feed:Timeline 列表,按时间 / 作者筛选本地缓存的朋友圈。
- sns-search:正文(contentDesc)全文搜索,支持叠加时间 / 作者过滤。

daemon 预热阶段增加 sns.db 解密。三个新命令复用既有 helper:
extract_xml_text / fmt_time / resolve_username / names.display /
parse_time / parse_time_end。

XML parse 全部放在 spawn_blocking 里跑,避免在 tokio executor 线程
上做 regex 扫描;SQL + params 构造统一为 clauses / params Vec 模
式,与 q_sns_notifications / q_stats 一致。sns-feed 先收齐全部匹配
再按 create_time 排序 truncate,避免 tid DESC 不严格单调时丢帖。
2026-04-18 16:44:11 +08:00
郭立lee f0dcd4ea05
docs(readme): explain how to fetch more than 500 messages (#13)
Clarify that the 500-message behavior is only a default limit, not a hard cap.
Document `-n/--limit` examples for history, search, and export in both README and SKILL.
2026-04-18 15:01:15 +08:00
JL e977007306
feat(unread): 按 chat_type 分类会话,新增 --filter (#9)
Before: wx unread / sessions / history 把公众号、订阅号折叠入口
(brandsessionholder)、折叠群聊(@placeholder_foldgroup)、认证服务号
全归为 is_group=false,与真私聊混在一起。甚至 username 形如 wxid_* 但
实为公众号的条目也完全分不出来。

改动:
- 新增 chat_type_of(username, names) helper,输出固定为
  group / official_account / folded / private。
- 判据依次:@chatroom → group;brandsessionholder / @placeholder_foldgroup
  → folded;contact.verify_flag != 0 → official_account(覆盖 wxid_*
  伪装为公众号的情况,以及银行/品牌服务号、qqsafe / mphelper 等认证账号);
  gh_* / biz_* / @* 前缀兜底;其余为 private。
- load_names 顺带读 contact.verify_flag,Names::is_verified 封装查询。
- q_sessions / q_unread / q_history / q_new_messages / q_stats 输出
  新增 chat_type 字段,is_group 保留向后兼容并统一由 chat_type 派生。
- wx unread 新增 --filter,clap value_parser 限制可选值为
  all / private / group / official / folded,逗号分隔多选,默认 all。
  例:wx unread --filter private,group 可过滤公众号与折叠入口。
- SKILL.md / README.md 补充新字段与用法说明。
- .gitignore 补 target/(Rust 项目标配)。

性能:默认 wx unread 的 SQL 与改动前相同(保留 LIMIT)。仅当传入
--filter 时改为全表扫再 Rust 侧过滤,否则 SQL LIMIT 会先把匹配
filter 的条目截断导致漏召。
2026-04-18 01:59:35 +08:00
leeguooooo 34698faa65 fix(skill): add YAML frontmatter to SKILL.md so `skills` CLI can detect it
The `skills` CLI (https://github.com/openclaw/skills) requires a YAML
frontmatter block with `name` and `description` to recognize a SKILL.md
as a valid skill. The current file declares description as a Markdown
blockquote, which causes:

  $ npx skills add jackwener/wx-cli -g
  No valid skills found. Skills require a SKILL.md with name and description.

Switching to standard frontmatter makes installation work end-to-end.

Verified with `npx skills add . -l`:
  Found 1 skill
    wx-cli
2026-04-17 13:27:07 +09:00
jackwener 2c9df70d44 docs: emphasize YAML is more token-efficient, JSON for jq 2026-04-17 11:19:35 +08:00
jackwener 3473f47d1d docs: use --query instead of -q for clarity 2026-04-17 11:18:32 +08:00
jackwener e4bfc39c8f fix: improve task_for_pid error message and document codesign steps 2026-04-17 10:46:55 +08:00
jackwener 42e5ac38c3 docs: add SKILL.md for AI agent integration 2026-04-16 22:46:13 +08:00