You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Introduced WxClawChannel class for handling WeChat messages using the openilink SDK.
- Added WxClawTools for sending text and media through WeChat, with support for long messages and file uploads.
- Updated app lifecycle management to start and stop WxClaw channel alongside existing channels.
- Enhanced README files to include WxClaw configuration details and usage instructions, improving user guidance for integration.
- Updated JSON configuration schema to include WxClaw settings, allowing for flexible channel activation.
**OpenFox** runs on your own machine: it brings **LLM chat, scheduled jobs, Feishu bot, browser tools, MCP, and local skills** together in one HTTP service. It ships with an **embedded Web UI** at `/web`, and you can also talk to the assistant from Feishu.
24
+
**OpenFox** runs on your own machine: it brings **LLM chat, scheduled jobs, Feishu bot, WeChat iLink (WxClaw) bot, browser tools, MCP, and local skills** together in one HTTP service. It ships with an **embedded Web UI** at `/web`, and you can chat from **Feishu** or **WeChat** when **WxClaw** is enabled.
25
25
26
26
| Path | Description |
27
27
|------|-------------|
@@ -45,7 +45,7 @@ OpenFox reads a single JSON file at **`~/.openfox/config.json`**. Fields map to
45
45
|`search_knowledge`| When `true`, enables **RAG** (Chroma under `~/.openfox/chromadb`; path is not configured here). |
|`knowledge`| RAG details when `search_knowledge` is true: `vector_db` (collection, `search_type`, `embedder`, `reranker`, …), `max_results`, `isolate_vector_search`. |
48
-
|`channels`| Integrations, e.g. `channels.feishu` (`app_id`, `app_secret`, `encrypt_key`, `verification_token`). |
48
+
|`channels`| Integrations: `channels.feishu` (`activate`, `app_id`, `app_secret`, …) and `channels.wxclaw` (`activate`, optional `include_tools` / `exclude_tools` for **WxClawTools**). WxClaw uses QR login; tokens persist under `~/.openfox/channels/wxclaw/` (see `WxClawTools` / `OPENFOX_HOME_PATH`). |
49
49
|`mcps`| List of MCP server entries (`command`/`args`/`env` or `url`/`headers`). |
50
50
|`tools`| Per-toolkit switches and options (`mcp`, `scheduler`, `shell`, `websearch`, `arxiv`, …); each may include `activate`, `include_tools`, `exclude_tools`, and toolkit-specific fields. |
51
51
@@ -75,11 +75,15 @@ The **key order, nesting, and non-secret values** match a full on-disk layout; s
// MCP servers: each entry is stdio (command+args) or HTTP (url+headers)
@@ -273,6 +277,7 @@ You can edit the live file in the Web **Config** page or via the **expand/config
273
277
|**Evaluations**| Built-in **evaluation** workflow in the Web UI: measure **performance**, **reliability**, and **accuracy** of your agent or team against datasets and criteria. |
274
278
|**Run tracing**|**Trace** each **agent run** end-to-end: inspect spans, sessions, and execution flow stored for observability (Web UI `/traces`). |
275
279
|**Feishu**| Event and message intake; DM and group chat (mention the bot) |
280
+
|**WxClaw (WeChat iLink)**| Long-poll **WeChat** messages; first-time **QR login** in the terminal; bot token and sync buffer under `~/.openfox/channels/wxclaw/`. Enable with `channels.wxclaw.activate`: `true`. |
276
281
|**Scheduled jobs**| Built-in scheduler; enable with `tools.scheduler` (**SchedulerConfig**). Agent toolkit **SchedulerTools** creates recurring tasks (cron → POST Agent run endpoint) |
277
282
|**Tools**| See “Built-in Agent tools” below; you can also attach **MCP** via `config.mcps`. JSON config editing in the Web console uses **ConfigTools** (not an Agent chat tool). |
278
283
|**Skills**|`SKILL.md` under `SKILLS_PATH` (`~/.openfox/skills`, LocalSkills); upload skill packs from the Web UI |
@@ -287,6 +292,7 @@ You can edit the live file in the Web **Config** page or via the **expand/config
287
292
|**ShellTools**| Run shell commands on the host where OpenFox runs (Agno) |
288
293
|**SchedulerTools**| Registered when `tools.scheduler.activate` is true. Create / list / get / delete / disable jobs; cron expressions invoke this Agent's run endpoint |
|**WxClawTools**| WeChat iLink toolkit: `send_text`, `upload_file` (local file → CDN upload → send image/video/file). Use **only** for `@im.wechat` / `channel.type=wxclaw`; do not pass WeChat ids to Feishu tools. |
290
296
|**MCPConfigTools**| Add / remove / update MCP-related config in chat to extend tools dynamically |
291
297
|**WebSearchTools**| Search the web |
292
298
|**ArxivTools**| Search [arXiv](https://arxiv.org/) papers and metadata |
@@ -309,7 +315,7 @@ You can edit the live file in the Web **Config** page or via the **expand/config
309
315
pip install openfox
310
316
```
311
317
312
-
**First run**: If `~/.openfox/config.json` is missing, an interactive setup runs (API docs toggle, auth, `os_security_key`, timezone, LLM, Feishu, etc.), then the server starts.
318
+
**First run**: If `~/.openfox/config.json` is missing, an interactive setup runs (API docs toggle, auth, `os_security_key`, timezone, LLM, Feishu, etc.), then the server starts. Set `channels.wxclaw.activate` to `true` (and optionally `channels.feishu.activate` to `false` if you only use WeChat) to enable **WxClaw**; restart after editing config.
**WxClaw** is OpenFox’s **WeChat** channel: long-poll inbound messages and reply with text or uploaded image/video/file.
361
+
362
+
### Prerequisites (WeChat on your phone)
363
+
364
+
1. Open **WeChat** on the phone → **Me** → **Settings** → **Plugins**.
365
+
2. Install **WeChat ClawBot** (微信 ClawBot).
366
+
3. On the machine running OpenFox, set **`channels.wxclaw.activate`** to **`true`** in `~/.openfox/config.json`, then start **`python -m openfox`** (restart after config edits).
367
+
4. When no bot token is saved yet, a **QR code** is printed in the **terminal** — scan it with **WeChat** to complete login. Tokens and the sync cursor are stored under **`~/.openfox/channels/wxclaw/`** (see `TOKEN_FILE` / `BUF_FILE` in `openfox/tools/wxclaw.py`).
368
+
369
+
---
370
+
352
371
## Models (LiteLLM)
353
372
354
373
OpenFox uses **LiteLLM**. For any provider in [LiteLLM’s supported list](https://docs.litellm.ai/docs/providers) that exposes an OpenAI-style Chat Completions API, you usually only need `llm.model_name`, `llm.api_base`, and `llm.api_key`.
0 commit comments