feat: AI 工具架构重构与微信增强 (0.2.17 → 0.2.22)
0.2.17 收束模型初始工具列表: - 仅暴露 query_capabilities/query_capability_detail/call_capability 三个入口 - API 能力统一通过 iAs HTTP API 封装,删除重复 YAML 工具 0.2.18 系统提示词拆分: - 固定系统提示词硬编码,动态附加部分 AI 可维护 - 新增 update_additional_system_prompt 能力和持久化 0.2.19 上下文增强与打断语义: - /new 拥有最高打断语义,取消运行中任务并清除当前 turn - raw_message JSONB 原文入库,群聊按 group_id 隔离作用域 - 工具调用说明替代动态附加系统提示词 0.2.20 微信输入中状态: - 改用官方 getconfig + sendtyping 流程,显式管理 typing 状态 0.2.21 API 文档功能分组: - /v1/api-docs 返回 groups,帮助 AI 按功能面发现接口 0.2.22 AI API 能力去重: - 移除与 HTTP endpoint 重复的专用能力,统一用 query_api_docs + call_http_api - 删除不再编译的 web/memory 工具文件
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
`wechat` 是微信 iLink Bot API 的 Rust 封装,提供两层能力:
|
||||
|
||||
- `WeChatClient`:单账号客户端,负责扫码登录、恢复登录态、注册监听器、长轮询收消息、发送文本消息。
|
||||
- `WeChatClient`:单账号客户端,负责扫码登录、恢复登录态、注册监听器、长轮询收消息、发送文本消息和输入中状态。
|
||||
- `WeChatMultiAccountManager`:多账号运行时管理器,按账号启动多个独立长轮询任务,并通过事件队列把消息交给业务层。
|
||||
|
||||
设计原则:**一个 `WeChatClient` 只代表一个微信 Bot 账号;多账号监听就是每个账号一个独立长轮询任务**。这样可以保证 `token`、`base_url`、`get_updates_buf` 和 `context_token` 不串账号。
|
||||
@@ -48,6 +48,7 @@ wechat = { path = "../wechat" }
|
||||
| 变量 | 必填 | 默认值 | 说明 |
|
||||
| --- | --- | --- | --- |
|
||||
| `WEIXIN_BASE_URL` | 否 | `https://ilinkai.weixin.qq.com` | iLink Bot API 地址。显式传入 `base_url` 时优先使用显式值。 |
|
||||
| `WEIXIN_APP_ID` | 否 | `bot` | iLink App ID,请求头会随所有 API 请求发送。 |
|
||||
|
||||
## 单账号使用
|
||||
|
||||
@@ -59,6 +60,7 @@ login 或 set_auth
|
||||
set_updates_buf
|
||||
notify_start
|
||||
receive_messages loop
|
||||
send_typing / cancel_typing
|
||||
send_text
|
||||
notify_stop
|
||||
```
|
||||
@@ -345,6 +347,8 @@ manager
|
||||
| `POST` | `/ilink/bot/msg/notifystop` | 注销监听器 |
|
||||
| `POST` | `/ilink/bot/getupdates` | 长轮询拉取消息 |
|
||||
| `POST` | `/ilink/bot/sendmessage` | 发送消息 |
|
||||
| `POST` | `/ilink/bot/getconfig` | 获取用户配置,包括输入中状态所需的 `typing_ticket` |
|
||||
| `POST` | `/ilink/bot/sendtyping` | 发送或取消输入中状态 |
|
||||
|
||||
登录后请求会带:
|
||||
|
||||
@@ -383,7 +387,7 @@ tracing_subscriber::fmt()
|
||||
|
||||
## 当前限制
|
||||
|
||||
- `send_text()` 只封装文本发送。
|
||||
- `send_text()` 只封装文本发送;输入中状态通过独立的 `send_typing()` / `cancel_typing()` 发送。
|
||||
- manager 不内置账号持久化,业务层负责数据库或文件存储。
|
||||
- manager 通过 `JoinHandle::abort()` 停止长轮询任务;如需立即优雅取消 HTTP 请求,可后续在 client 层增加 cancellation 支持。
|
||||
- `ILINK_APP_ID` 当前为空字符串;如果接入方要求 app id,需要在 `client.rs` 中配置或改为环境变量。
|
||||
|
||||
Reference in New Issue
Block a user