weacpx 0.6.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/README.md +10 -564
  2. package/package.json +10 -72
  3. package/plugin-api.d.ts +2 -0
  4. package/plugin-api.js +5 -0
  5. package/LICENSE +0 -21
  6. package/config.example.json +0 -44
  7. package/dist/bridge/bridge-main.js +0 -2120
  8. package/dist/channels/channel-scope.d.ts +0 -17
  9. package/dist/channels/cli/provider.d.ts +0 -73
  10. package/dist/channels/cli/registry.d.ts +0 -7
  11. package/dist/channels/cli/weixin-provider.d.ts +0 -2
  12. package/dist/channels/create-channel.d.ts +0 -16
  13. package/dist/channels/media-store.d.ts +0 -29
  14. package/dist/channels/media-types.d.ts +0 -28
  15. package/dist/channels/outbound-media-safety.d.ts +0 -7
  16. package/dist/channels/plugin.d.ts +0 -9
  17. package/dist/channels/types.d.ts +0 -115
  18. package/dist/channels/weixin-channel.d.ts +0 -25
  19. package/dist/cli.js +0 -46971
  20. package/dist/commands/command-hints.d.ts +0 -11
  21. package/dist/commands/command-list.d.ts +0 -3
  22. package/dist/commands/config-clone.d.ts +0 -2
  23. package/dist/commands/handlers/agent-handler.d.ts +0 -6
  24. package/dist/commands/handlers/config-handler.d.ts +0 -5
  25. package/dist/commands/handlers/later-handler.d.ts +0 -21
  26. package/dist/commands/handlers/orchestration-handler.d.ts +0 -16
  27. package/dist/commands/handlers/permission-handler.d.ts +0 -9
  28. package/dist/commands/handlers/session-handler.d.ts +0 -37
  29. package/dist/commands/handlers/workspace-handler.d.ts +0 -8
  30. package/dist/commands/help/help-registry.d.ts +0 -4
  31. package/dist/commands/help/help-types.d.ts +0 -12
  32. package/dist/commands/parse-command.d.ts +0 -175
  33. package/dist/commands/router-types.d.ts +0 -144
  34. package/dist/commands/workspace-name.d.ts +0 -4
  35. package/dist/commands/workspace-path.d.ts +0 -4
  36. package/dist/config/agent-templates.d.ts +0 -4
  37. package/dist/config/config-store.d.ts +0 -13
  38. package/dist/config/load-config.d.ts +0 -10
  39. package/dist/config/resolve-agent-command.d.ts +0 -2
  40. package/dist/config/types.d.ts +0 -85
  41. package/dist/formatting/render-text.d.ts +0 -23
  42. package/dist/logging/app-logger.d.ts +0 -23
  43. package/dist/logging/rotating-file-writer.d.ts +0 -2
  44. package/dist/orchestration/async-mutex.d.ts +0 -4
  45. package/dist/orchestration/build-coordinator-prompt.d.ts +0 -66
  46. package/dist/orchestration/orchestration-service.d.ts +0 -471
  47. package/dist/orchestration/orchestration-types.d.ts +0 -181
  48. package/dist/orchestration/progress-line-parser.d.ts +0 -19
  49. package/dist/orchestration/render-delegate-group-result.d.ts +0 -6
  50. package/dist/orchestration/render-delegate-question-package.d.ts +0 -21
  51. package/dist/orchestration/render-delegate-result.d.ts +0 -2
  52. package/dist/orchestration/task-watch-timeouts.d.ts +0 -5
  53. package/dist/perf/perf-log-writer.d.ts +0 -25
  54. package/dist/perf/perf-tracer.d.ts +0 -54
  55. package/dist/plugin-api.d.ts +0 -9
  56. package/dist/plugin-api.js +0 -180
  57. package/dist/plugins/compatibility.d.ts +0 -16
  58. package/dist/plugins/known-plugins.d.ts +0 -9
  59. package/dist/plugins/types.d.ts +0 -18
  60. package/dist/scheduled/parse-later-time.d.ts +0 -11
  61. package/dist/scheduled/scheduled-render.d.ts +0 -7
  62. package/dist/scheduled/scheduled-service.d.ts +0 -41
  63. package/dist/scheduled/scheduled-types.d.ts +0 -29
  64. package/dist/sessions/session-service.d.ts +0 -83
  65. package/dist/state/state-store.d.ts +0 -8
  66. package/dist/state/types.d.ts +0 -44
  67. package/dist/transport/tool-event-mode.d.ts +0 -14
  68. package/dist/transport/types.d.ts +0 -129
  69. package/dist/util/path.d.ts +0 -4
  70. package/dist/util/private-file.d.ts +0 -26
  71. package/dist/util/sanitize.d.ts +0 -10
  72. package/dist/util/text.d.ts +0 -3
  73. package/dist/version.d.ts +0 -3
  74. package/dist/weixin/agent/interface.d.ts +0 -78
  75. package/dist/weixin/api/api.d.ts +0 -76
  76. package/dist/weixin/api/config-cache.d.ts +0 -18
  77. package/dist/weixin/api/session-guard.d.ts +0 -17
  78. package/dist/weixin/api/types.d.ts +0 -203
  79. package/dist/weixin/auth/accounts.d.ts +0 -69
  80. package/dist/weixin/auth/login-qr.d.ts +0 -37
  81. package/dist/weixin/bot.d.ts +0 -56
  82. package/dist/weixin/cdn/aes-ecb.d.ts +0 -6
  83. package/dist/weixin/cdn/cdn-upload.d.ts +0 -17
  84. package/dist/weixin/cdn/cdn-url.d.ts +0 -11
  85. package/dist/weixin/cdn/pic-decrypt.d.ts +0 -9
  86. package/dist/weixin/cdn/upload.d.ts +0 -42
  87. package/dist/weixin/index.d.ts +0 -6
  88. package/dist/weixin/media/media-download.d.ts +0 -18
  89. package/dist/weixin/media/mime.d.ts +0 -6
  90. package/dist/weixin/media/silk-transcode.d.ts +0 -8
  91. package/dist/weixin/messaging/conversation-executor.d.ts +0 -7
  92. package/dist/weixin/messaging/debug-mode.d.ts +0 -9
  93. package/dist/weixin/messaging/deliver-coordinator-message.d.ts +0 -22
  94. package/dist/weixin/messaging/deliver-orchestration-task-notice.d.ts +0 -18
  95. package/dist/weixin/messaging/deliver-orchestration-task-progress.d.ts +0 -16
  96. package/dist/weixin/messaging/error-notice.d.ts +0 -13
  97. package/dist/weixin/messaging/execute-chat-turn.d.ts +0 -12
  98. package/dist/weixin/messaging/final-heads-up.d.ts +0 -5
  99. package/dist/weixin/messaging/handle-weixin-message-turn.d.ts +0 -32
  100. package/dist/weixin/messaging/inbound.d.ts +0 -80
  101. package/dist/weixin/messaging/markdown-filter.d.ts +0 -45
  102. package/dist/weixin/messaging/orchestration-notice-accounts.d.ts +0 -2
  103. package/dist/weixin/messaging/quota-errors.d.ts +0 -8
  104. package/dist/weixin/messaging/quota-manager.d.ts +0 -44
  105. package/dist/weixin/messaging/scheduled-turn.d.ts +0 -22
  106. package/dist/weixin/messaging/send-errors.d.ts +0 -39
  107. package/dist/weixin/messaging/send-media.d.ts +0 -23
  108. package/dist/weixin/messaging/send-orchestration-notice.d.ts +0 -10
  109. package/dist/weixin/messaging/send.d.ts +0 -73
  110. package/dist/weixin/messaging/slash-commands.d.ts +0 -40
  111. package/dist/weixin/monitor/consumer-lock.d.ts +0 -24
  112. package/dist/weixin/monitor/monitor.d.ts +0 -30
  113. package/dist/weixin/storage/ensure-dir.d.ts +0 -1
  114. package/dist/weixin/storage/state-dir.d.ts +0 -2
  115. package/dist/weixin/storage/sync-buf.d.ts +0 -20
  116. package/dist/weixin/util/logger.d.ts +0 -14
  117. package/dist/weixin/util/random.d.ts +0 -10
  118. package/dist/weixin/util/redact.d.ts +0 -21
package/README.md CHANGED
@@ -1,570 +1,16 @@
1
- # weacpx
1
+ # weacpx (deprecated)
2
2
 
3
- > 用微信、飞书或元宝远程驱动 Codex、Claude Code acpx 会话。
3
+ **`weacpx` has been renamed to `xacpx`** — published on npm as
4
+ [`@ganglion/xacpx`](https://www.npmjs.com/package/@ganglion/xacpx). The CLI
5
+ command is still `xacpx`.
4
6
 
5
- [![npm](https://img.shields.io/npm/v/weacpx?style=flat-square)](https://www.npmjs.com/package/weacpx)
6
- [![Node.js Version](https://img.shields.io/node/v/weacpx?style=flat-square)](https://nodejs.org)
7
- [![zread](https://img.shields.io/badge/Ask_Zread-_.svg?style=flat-square&color=00b0aa&labelColor=000000&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuOTYxNTYgMS42MDAxSDIuMjQxNTZDMS44ODgxIDEuNjAwMSAxLjYwMTU2IDEuODg2NjQgMS42MDE1NiAyLjI0MDFWNC45NjAxQzEuNjAxNTYgNS4zMTM1NiAxLjg4ODEgNS42MDAxIDIuMjQxNTYgNS42MDAxSDQuOTYxNTZDNS4zMTUwMiA1LjYwMDEgNS42MDE1NiA1LjMxMzU2IDUuNjAxNTYgNC45NjAxVjIuMjQwMUM1LjYwMTU2IDEuODg2NjQgNS4zMTUwMiAxLjYwMDEgNC45NjE1NiAxLjYwMDFaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik00Ljk2MTU2IDEwLjM5OTlIMi4yNDE1NkMxLjg4ODEgMTAuMzk5OSAxLjYwMTU2IDEwLjY4NjQgMS42MDE1NiAxMS4wMzk5VjEzLjc1OTlDMS42MDE1NiAxNC4xMTM0IDEuODg4MSAxNC4zOTk5IDIuMjQxNTYgMTQuMzk5OUg0Ljk2MTU2QzUuMzE1MDIgMTQuMzk5OSA1LjYwMTU2IDE0LjExMzQgNS42MDE1NiAxMy43NTk5VjExLjAzOTlDNS42MDE1NiAxMC42ODY0IDUuMzE1MDIgMTAuMzk5OSA0Ljk2MTU2IDEwLjM5OTlaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik0xMy43NTg0IDEuNjAwMUgxMS4wMzg0QzEwLjY4NSAxLjYwMDEgMTAuMzk4NCAxLjg4NjY0IDEwLjM5ODQgMi4yNDAxVjQuOTYwMUMxMC4zOTg0IDUuMzEzNTYgMTAuNjg1IDUuNjAwMSAxMS4wMzg0IDUuNjAwMUgxMy43NTg0QzE0LjExMTkgNS42MDAxIDE0LjM5ODQgNS42MDE1NiAxNC4zOTg0IDQuOTYwMVYyLjI0MDFDMTQuMzk4NCAxLjg4NjY0IDE0LjExMTkgMS42MDAxIDEzLjc1ODQgMS42MDAxWiIgZmlsbD0iI2ZmZiIvPgo8cGF0aCBkPSJNNCAxMkwxMiA0TDQgMTJaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik00IDEyTDEyIDQiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8L3N2Zz4K&logoColor=ffffff)](https://zread.ai/gadzan/weacpx)
8
- [![License](https://img.shields.io/npm/l/weacpx?style=flat-square)](./LICENSE)
9
-
10
- ![weacpx logo](assets/weacpx.jpg)
11
-
12
- ## 这是什么
13
-
14
- `weacpx` 是一个可以通过微信、飞书或元宝直接控制 Codex / Claude Code / Gemini / OpenCode 等 ACP Agent 的工具。它把聊天消息通过 `acpx` 连接到 Agent CLI 会话上,让你直接在手机里:
15
-
16
- - 新建和切换会话
17
- - 让 Agent 继续在指定项目目录里工作
18
- - 查看流式回复、最终结果和工具调用摘要
19
- - 调整权限策略
20
- - 在需要时做多 Agent 编排
21
-
22
- 如果你需要临时远程编码或办公,`weacpx` 提供的是一个方便快捷的**远程入口**,让你在微信或飞书里就能随时随地干活。
23
-
24
- ## 适合谁
25
-
26
- `weacpx` 适合轻量临时使用多 Agent 办公的用户。你可以用微信、飞书或元宝盯任务、发指令、看结果,并在同一个聊天里管理多个会话。
27
-
28
- > 日常使用优先记 `/ss`:它负责创建或复用 weacpx 逻辑会话。如果你想接入本地 Codex 等 Agent 已有的原生会话,再用 `/ssn`;进阶说明见 [docs/native-sessions.md](./docs/native-sessions.md)。
29
-
30
- ## 5 分钟快速开始
31
-
32
- ### 前置条件
33
-
34
- 开始前,你至少需要:
35
-
36
- - Node.js 22+ 或 Bun
37
- - 已可用的 Codex / Claude Code / Gemini / OpenCode 等你要使用的 Agent CLI
38
- - 一台装了微信、飞书或元宝的手机
39
-
40
- > 微信频道基于 `weixin-agent-sdk` 工作,飞书频道使用飞书自建应用凭据,元宝频道使用 `appKey` / `appSecret`;底层 Agent 会话由 `acpx` 驱动。正常情况下,你不需要额外全局安装 `acpx`。
41
-
42
- ### 安装
43
-
44
- ```bash
45
- npm install -g weacpx --registry=https://registry.npmjs.org
46
- # 或
47
- bun add -g weacpx
48
- ```
49
-
50
- ### 登录微信
51
-
52
- ```bash
53
- weacpx login
54
- ```
55
-
56
- 终端会显示二维码,请继续用微信扫码登录。
57
-
58
- 如果你想使用飞书或元宝而不是微信,请先看下面的“切换/添加其它频道”。
59
-
60
- ### 启动服务
61
-
62
- ```bash
63
- weacpx start
64
- ```
65
-
66
- ### 在微信里创建第一个会话
67
-
68
- 把下面两条消息发到微信:
69
-
70
- ```text
71
- /ss codex -d /absolute/path/to/your/repo
72
- /help
73
- ```
74
-
75
- 然后直接发普通文本,例如:
76
-
77
- ```text
78
- hello
79
- ```
80
-
81
- 如果一切正常,普通文本会进入当前会话,Agent 的回复会回到微信。
82
-
83
- ### 切换/添加其它频道
84
-
85
- 微信是内置默认频道。飞书和元宝以官方插件包分发,第三方频道也走同样的插件流程。如果记不住包名,先看一眼官方插件清单:
86
-
87
- ```bash
88
- weacpx plugin known
89
- # 安装:weacpx plugin add <package>
90
- ```
91
-
92
- ```bash
93
- # 飞书
94
- weacpx plugin add @ganglion/weacpx-channel-feishu
95
- weacpx channel add feishu # 按提示输入 appId/appSecret
96
- weacpx restart
97
-
98
- # 元宝
99
- weacpx plugin add @ganglion/weacpx-channel-yuanbao
100
- weacpx channel add yuanbao # 按提示输入 appKey/appSecret
101
- weacpx restart
102
- ```
103
-
104
- 完整的密钥配置、参数、`enable/disable/rm` 等管理命令见 [docs/channel-management.md](./docs/channel-management.md)。如果你想自己写一个频道插件,见 [docs/plugin-development.md](./docs/plugin-development.md)。
105
-
106
- ## 你的日常使用流程
107
-
108
- 最常见的使用顺序只有四步:
109
-
110
- 1. **启动后台服务**:`weacpx start`
111
- 2. **创建或切换会话**:`/ss ...`、`/use ...`
112
- 3. **直接发普通文本**:让当前会话继续工作
113
- 4. **必要时查看状态或取消当前任务**:`/status`、`/cancel`
114
-
115
- ### 1) 创建会话
116
-
117
- 最常用命令:
118
-
119
- ```text
120
- /ss codex -d /absolute/path/to/your/repo
121
- ```
122
-
123
- 它会使用 `codex`,绑定这个工作目录,并自动切换到新会话。
124
-
125
- ### 2) 发普通消息
126
-
127
- 非 `/` 开头的文本,都会发送到当前会话。
128
-
129
- ```text
130
- 修一下最近这个接口超时问题
131
- ```
132
-
133
- ### 3) 看回复
134
-
135
- `weacpx` 支持三种常用回复模式:
136
-
137
- - `stream`:流式返回中间文本
138
- - `final`:只返回最终结果
139
- - `verbose`:默认,在流式文本之外,额外显示工具调用摘要
140
-
141
- 例如 `verbose` 模式下,你会看到:
142
-
143
- ```text
144
- 📖 sed -n '1,220p' README.md
145
- 🔍 rg -n 'session new' src tests
146
- 💻 bun test tests/unit/main.test.ts
147
- ✏️ Edit parse-command.ts
148
- ```
149
-
150
- ### 4) 切换会话
151
-
152
- ```text
153
- /ss
154
- /use backend:codex
155
- ```
156
-
157
- 这样你可以在同一个微信聊天里切换不同项目、不同 agent 的会话。
158
-
159
- ## 常用 CLI 命令
160
-
161
- 这些命令在电脑终端里运行。
162
-
163
- | 命令 | 说明 |
164
- |------|------|
165
- | `weacpx login` | 登录微信 |
166
- | `weacpx logout` | 清除本机保存的微信登录凭证 |
167
- | `weacpx run` | 前台运行,适合调试 |
168
- | `weacpx start` | 后台启动服务 |
169
- | `weacpx status` | 查看后台状态、PID、配置路径、日志路径 |
170
- | `weacpx stop` | 停止后台实例 |
171
- | `weacpx restart` | 重启后台实例,让频道配置变更生效 |
172
- | `weacpx update [--all\|<name>]` | 检查并更新 weacpx 与已安装插件;安装了插件时会交互式选择更新项 |
173
- | `weacpx channel list` | 查看已配置的消息频道 |
174
- | `weacpx plugin known` | 查看官方插件清单(飞书/元宝包名) |
175
- | `weacpx plugin add @ganglion/weacpx-channel-feishu && weacpx channel add feishu` | 安装并添加飞书频道,会提示输入飞书应用凭据 |
176
- | `weacpx plugin add @ganglion/weacpx-channel-yuanbao && weacpx channel add yuanbao` | 安装并添加元宝频道,会提示输入元宝 appKey/appSecret |
177
- | `weacpx doctor` | 运行环境诊断 |
178
- | `weacpx version` | 查看当前版本 |
179
- | `weacpx agent list` | 查看本机已注册的 agent |
180
- | `weacpx agent add <name>` | 从内置模板添加 agent;已存在且配置不同的同名 agent 不会被覆盖 |
181
- | `weacpx agent rm <name>` | 删除 agent |
182
- | `weacpx workspace list` | 查看本机已注册的 workspace |
183
- | `weacpx workspace add [name] [--raw]` | 把当前目录注册成 workspace;不传 `name` 时使用当前目录名,含特殊字符的名称会被自动规范化 |
184
- | `weacpx workspace rm <name>` | 删除 workspace |
185
- | `weacpx later list` / `weacpx lt list` | 在终端查看本机待执行定时任务 |
186
- | `weacpx later cancel <id>` / `weacpx lt cancel <id>` | 在终端取消本机待执行定时任务 |
187
-
188
- 首次运行 `weacpx start` 或 `weacpx run` 时,如果没有会话、workspace 和插件,CLI 会询问是否把当前目录创建为 workspace,并选择一个内置 agent 模板;服务启动后会通过正常会话创建流程创建初始 acpx 会话。
189
-
190
- `workspace` 也可以简写为 `ws`:
7
+ Install the new package instead:
191
8
 
192
9
  ```bash
193
- weacpx ws add
194
- weacpx ws list
195
- weacpx ws rm backend
10
+ npm install -g @ganglion/xacpx
196
11
  ```
197
12
 
198
- ### `workspace` CLI 怎么用
199
-
200
- `weacpx workspace` 用来在电脑本机维护 `~/.weacpx/config.json` 里的 `workspaces` 配置。它适合先在终端里注册常用项目目录,然后在微信里用 `--ws <name>` 直接引用。
201
-
202
- | 命令 | 说明 |
203
- |------|------|
204
- | `weacpx workspace list` | 列出已注册的 workspace 及其路径 |
205
- | `weacpx workspace add` | 把当前目录注册为 workspace,名称默认取当前目录名(自动规范化) |
206
- | `weacpx workspace add <name>` | 把当前目录注册为指定名称(含特殊字符时自动规范化) |
207
- | `weacpx workspace add [name] --raw` | 保留原始名称(含空格等),后续命令需要用引号引用 |
208
- | `weacpx workspace rm <name>` | 删除指定 workspace |
209
-
210
- 常见用法:
211
-
212
- ```bash
213
- cd /absolute/path/to/backend
214
- weacpx workspace add backend
215
-
216
- cd /absolute/path/to/frontend
217
- weacpx ws add frontend
218
-
219
- weacpx ws list
220
- weacpx ws rm frontend
221
- ```
222
-
223
- 注册后,你可以在微信里直接使用:
224
-
225
- ```text
226
- /ss codex --ws backend
227
- /ss new claude --ws frontend
228
- ```
229
-
230
- 注意:`workspace add` 总是注册**当前终端所在目录**。如果不传名称,会用当前目录名作为 workspace 名称。含空格、中文等字符的名称会被自动规范化为 `[a-zA-Z0-9._-]+`(例如目录 `My Project` 会保存为 `My-Project`),重名时追加 `-2`、`-3`。如需保留原始名称,加 `--raw`;之后 `weacpx workspace rm`、`/ws rm`、`--ws <name>` 都需要用引号引用,例如 `weacpx workspace rm "My Project"`。
231
-
232
- ### `agent` CLI 怎么用
233
-
234
- `weacpx agent` 用来在电脑本机维护 `~/.weacpx/config.json` 里的 `agents` 配置;`agents` 是同等别名。
235
-
236
- | 命令 | 说明 |
237
- |------|------|
238
- | `weacpx agent list` | 列出已注册的 agent |
239
- | `weacpx agent templates` | 列出可添加的内置模板 |
240
- | `weacpx agent add <name>` | 从内置模板添加 agent,例如 `kimi`、`opencode` |
241
- | `weacpx agent rm <name>` | 删除指定 agent |
242
-
243
- 常见用法:
244
-
245
- ```bash
246
- weacpx agent templates
247
- weacpx agent add kimi
248
- weacpx agents list
249
- weacpx agent rm kimi
250
- ```
251
-
252
- ### `doctor` 怎么用
253
-
254
- ```bash
255
- weacpx doctor
256
- weacpx doctor --verbose
257
- weacpx doctor --smoke
258
- weacpx doctor --smoke --agent codex --workspace backend
259
- ```
260
-
261
- 说明:
262
-
263
- - `--verbose` 会展开每项检查的细节
264
- - `--smoke` 会额外执行一次真实 transport 级别的最小 prompt 检查
265
- - `--agent` / `--workspace` 只影响 `--smoke`
266
- - 如果不传 `--smoke`,相关检查会显示为 `SKIP`
267
-
268
- ## 常用聊天命令
269
-
270
- 这些命令在微信或飞书聊天里发送。完整命令参考见:[docs/commands.md](./docs/commands.md)。
271
-
272
- ### Agent 管理
273
-
274
- 默认配置通常已包含 `codex` 与 `claude`。如果你要使用其它 acpx 支持的 agent,可以先用 `/agent add <name>` 从内置模板添加。
275
-
276
- | 命令 | 说明 |
277
- |------|------|
278
- | `/agents` | 查看 agent 列表 |
279
- | `/agent add gemini` | 添加 `Gemini` Agent |
280
- | `/agent add opencode` | 添加 `OpenCode` Agent |
281
- | `/agent rm <name>` | 删除 agent |
282
-
283
- 当前内置模板与 acpx 的 built-in agents 对齐:
284
-
285
- ```text
286
- codex, claude, pi, openclaw, gemini, cursor, copilot, droid,
287
- factory-droid, factorydroid, iflow, kilocode, kimi, kiro,
288
- opencode, qoder, qwen, trae
289
- ```
290
-
291
- 这些模板只写入 `driver`,实际启动命令交给 acpx 解析;例如 `/agent add kimi` 会保存 `{ "driver": "kimi" }`。完整命令说明见 [docs/commands.md](./docs/commands.md),配置字段见 [docs/config-reference.md](./docs/config-reference.md)。
292
-
293
- ### Workspace 管理
294
-
295
- | 命令 | 说明 |
296
- |------|------|
297
- | `/workspaces` / `/workspace` / `/ws` | 查看 workspace 列表 |
298
- | `/ws new <name> -d <path> [--raw]` | 添加 workspace,`path` 是电脑上的绝对路径,Windows 不用区分正反斜杠;含空格/中文等特殊字符的名称会被自动规范化,--raw 保留原名 |
299
- | `/workspace rm <name>` | 删除 workspace |
300
-
301
- ### Session 会话
302
-
303
- | 命令 | 说明 |
304
- |------|------|
305
- | `/sessions` / `/session` / `/ss` | 查看会话列表 |
306
- | `/ss <agent> (-d <path> \| --ws <name>)` | 创建或复用当前最常用的会话 |
307
- | `/ss new <agent> (-d <path> \| --ws <name>)` | 强制新建会话 |
308
- | `/ssn <agent> (-d <path> \| --ws <name>)` | 接入本地已有的 Agent 原生会话,详见 [native sessions](./docs/native-sessions.md) |
309
- | `/use <alias>` | 切换当前会话 |
310
- | `/status` | 查看当前会话状态 |
311
- | `/mode` / `/mode <id>` | 查看或设置底层 `acpx` mode |
312
- | `/replymode` | 查看当前回复模式 |
313
- | `/replymode stream` | 流式回复 |
314
- | `/replymode verbose` | 流式 + 工具调用摘要 |
315
- | `/replymode final` | 只返回最终结果 |
316
- | `/replymode reset` | 回退到全局默认 reply mode |
317
- | `/session reset` | 重置当前会话上下文 |
318
- | `/clear` | `/session reset` 的快捷别名 |
319
- | `/cancel` / `/stop` | 停止当前任务 |
320
-
321
- 建议你优先记住这三个:
322
-
323
- ```text
324
- /ss codex -d /absolute/path/to/repo
325
- /use <alias>
326
- /cancel
327
- ```
328
-
329
- 如果要接入本地 Codex 等 Agent 已有的原生会话,用 `/ssn codex -d /absolute/path/to/repo`;完整语义见 [docs/native-sessions.md](./docs/native-sessions.md)。
330
-
331
- ### 定时任务(/later)
332
-
333
- 让 agent 在未来某个时间自动收到一条消息。**默认在一个为该任务新建的临时会话里执行**(沿用创建时当前会话的 agent 与工作区,对话历史全新,跑完即销毁);加 `--bind` 则发送到创建时绑定的当前会话。到点后把消息作为普通 prompt 投递,结果推回原聊天。
334
-
335
- | 命令 | 说明 |
336
- |------|------|
337
- | `/lt <时间> <消息>` | 创建定时任务(默认临时会话执行;`/later` 同义) |
338
- | `/lt --bind <时间> <消息>` | 改为发送到当前会话 |
339
- | `/lt list` | 查看全局待执行任务 |
340
- | `/lt cancel <id>` | 取消待执行任务 |
341
-
342
- 最常见例子:
343
-
344
- ```text
345
- /lt in 2h 检查 CI 是否通过 # 临时会话(默认)
346
- /lt --bind 明天 09:00 看 PR # 绑定当前会话
347
- /lt list
348
- ```
349
-
350
- 说明:
351
-
352
- - 默认临时会话执行,`--bind` 绑定当前会话;默认模式可用配置 `later.defaultMode`(`temp` / `bind`,默认 `temp`)修改
353
- - 只支持一次性任务,时间必须在 10 秒之后、7 天之内
354
- - 时间格式是固定白名单(相对时间 / 今天·明天·后天 / 星期几 + 时刻),不支持自然语言
355
- - 普通对话中 agent 也可以通过当前会话内部工具创建、查看与取消定时任务(`scheduled_create` / `scheduled_list` / `scheduled_cancel`);路由和权限由 daemon 从当前聊天会话解析,外部 `mcp-stdio` 不暴露这些工具
356
- - 终端里也可以用 `weacpx later list` / `weacpx later cancel <id>` 管理待执行任务;CLI 只做查看和取消,不创建定时任务
357
- - 完整时间格式、临时/绑定模式、任务状态与限制见 [docs/later-command.md](./docs/later-command.md)
358
-
359
- ### 配置与权限
360
-
361
- | 命令 | 说明 |
362
- |------|------|
363
- | `/config` | 查看支持通过聊天命令修改的配置路径 |
364
- | `/config set <path> <value>` | 修改一个白名单配置项 |
365
- | `/pm` / `/permission` | 查看当前权限模式 |
366
- | `/pm set allow` | 切到 `approve-all` |
367
- | `/pm set read` | 切到 `approve-reads` |
368
- | `/pm set deny` | 切到 `deny-all` |
369
- | `/pm auto` | 查看当前非交互权限策略 |
370
- | `/pm auto deny` | 切到 `deny` |
371
- | `/pm auto fail` | 切到 `fail` |
372
-
373
- 最常见例子:
374
-
375
- ```text
376
- /config set wechat.replyMode final
377
- /pm set read
378
- /pm auto deny
379
- ```
380
-
381
- ### 多 Agent 编排
382
-
383
- README 里只保留用户视角的最常用命令。
384
-
385
- | 命令 | 说明 |
386
- |------|------|
387
- | `/dg <agent> <task>` | 快速委派一个子任务 |
388
- | `/tasks` | 查看当前主线下的任务 |
389
- | `/task <id>` | 查看单个任务详情 |
390
- | `/task approve <id>` | 批准 `needs_confirmation` 任务 |
391
- | `/task cancel <id>` | 取消任务;取消一个尚未批准的任务等同于拒绝 |
392
-
393
- 最常见例子:
394
-
395
- ```text
396
- /dg claude 审查当前方案的 3 个高风险点
397
- /tasks
398
- /task approve task_123
399
- ```
400
-
401
- 说明:
402
-
403
- - 当前会话就是主控会话
404
- - 被委派出去的是独立子任务会话
405
- - agent 发起的委派请求默认需要人工确认
406
- - 如果你在用外部 MCP host(Codex / Claude Code),用 `delegate_batch` 一次派发多个并行子任务:传一个 `tasks` 数组,底层自动建组,全部结果一次性回注,无需手动维护 groupId
407
-
408
- 如果你想先理解什么时候该用 delegate、什么时候应该并行派出多个子任务,请看:
409
-
410
- - [docs/weacpx-group-usage-guide.md](./docs/weacpx-group-usage-guide.md)
411
-
412
-
413
- ### MCP 集成:外部 coordinator
414
-
415
- 如果你想让 Codex、Claude Code 等外部 MCP host 直接使用 weacpx 的多 Agent 编排能力,可以把 `weacpx mcp-stdio` 配成一个 stdio MCP server。
416
-
417
- `delegate_request` 支持 MCP Tasks:支持该能力的 host 可以让委派请求立即返回原生 task handle,之后通过 `tasks/get` / `tasks/result` / `tasks/cancel` 获取状态、结果或取消任务;worker 输出的 `[PROGRESS] ...` 会显示在 `tasks/get` / `tasks/list` 的 `statusMessage` 里;`input_required` 状态下的 `tasks/result` 会返回下一步操作提示并结束本次 result stream,而不是长时间阻塞;client 按提示调用 `task_get` / `task_approve` / `coordinator_answer_question` 等工具后,再继续 `tasks/get` / `tasks/result` 轮询。不支持 MCP Tasks 的 host 仍可使用兼容工具 `task_get` / `task_list` / `task_watch` / `task_cancel`。
418
-
419
- 定时任务的自然语言创建工具是 weacpx 当前会话内部能力,不会出现在外部 `weacpx mcp-stdio` 的工具列表里。
420
-
421
- 先启动 daemon:
422
-
423
- ```bash
424
- weacpx start
425
- ```
426
-
427
- MCP 配置推荐保持简单,不要在启动参数里绑定 workspace:
428
-
429
- ```json
430
- {
431
- "mcpServers": {
432
- "weacpx": {
433
- "command": "weacpx",
434
- "args": ["mcp-stdio"]
435
- }
436
- }
437
- }
438
- ```
439
-
440
- 外部 host 调用 `delegate_request` 时传 `workingDirectory`,weacpx 会让被委派的 worker 在这个目录工作:
441
-
442
- ```json
443
- {
444
- "targetAgent": "claude",
445
- "task": "审查这个改动的风险点",
446
- "workingDirectory": "/absolute/path/to/your/repo"
447
- }
448
- ```
449
-
450
- Windows 上如果 MCP host 不会帮你解析带参数的 `command`,把 `node.exe` 放在 `command`,把 weacpx 脚本和参数放在 `args`:
451
-
452
- ```json
453
- {
454
- "type": "stdio",
455
- "command": "C:\\Program Files\\nodejs\\node.exe",
456
- "args": [
457
- "C:\\path\\to\\weacpx\\dist\\cli.js",
458
- "mcp-stdio"
459
- ]
460
- }
461
- ```
462
-
463
- 更多身份规则、`workingDirectory` 语义、工具列表、流程图和故障排查见:[docs/external-mcp.md](./docs/external-mcp.md)。
464
-
465
- ## 常见场景
466
-
467
- ### 在手机上继续盯一个本地项目
468
-
469
- ```text
470
- /ss codex -d /absolute/path/to/backend
471
- 看一下今天这个接口超时问题
472
- ```
473
-
474
- ### 同一个聊天里切换两个项目
475
-
476
- ```text
477
- /ss codex -d /absolute/path/to/backend
478
- /ss new codex -d /absolute/path/to/frontend
479
- /ss
480
- /use backend:codex
481
- /use frontend:codex
482
- ```
483
-
484
- ### 接入本地已有 Codex 原生会话
485
-
486
- ```text
487
- /ssn codex -d /absolute/path/to/backend
488
- /ssn 1
489
- ```
490
-
491
- 更多筛选、别名和故障排查见 [docs/native-sessions.md](./docs/native-sessions.md)。
492
-
493
- ## 配置与运行文件
494
-
495
- 默认文件位置:
496
-
497
- - 配置文件:`~/.weacpx/config.json`
498
- - 状态文件:`~/.weacpx/state.json`
499
- - 运行日志:`~/.weacpx/runtime/app.log`
500
-
501
- 更多运行时文件会放在 `~/.weacpx/runtime/` 下。
502
-
503
- ## 常见问题
504
-
505
- ### `/ss new` 失败怎么办?
506
-
507
- 如果你在微信里创建会话失败,最常见的情况不是 `weacpx` 命令格式错了,而是底层会话没有成功创建。
508
-
509
- 你可以先试这两步:
510
-
511
- 1. 在终端里确认当前项目目录和 agent 本身可用
512
- 2. 如果你熟悉 `acpx`,先手动创建一个会话,再在微信里挂回去
513
-
514
- 例如,你可以先在本地创建一个会话:
515
-
516
- ```bash
517
- ./node_modules/.bin/acpx --verbose --cwd /absolute/workspace/path codex sessions new --name existing-demo
518
- ```
519
-
520
- 然后在微信里把它挂回来:
521
-
522
- ```text
523
- /ss attach demo -a codex --ws backend --name existing-demo
524
- ```
525
-
526
- ### `/mode <id>` 里的 `<id>` 是什么?
527
-
528
- `/mode` 的可用值取决于你当前使用的 agent,`weacpx` 不会替你统一转换这些值。
529
-
530
- 当前比较明确的已知值:
531
-
532
- - `codex`: `plan`
533
- - `cursor`: `agent`、`plan`、`ask`
534
-
535
- 如果你不确定某个值能不能用,优先查对应 agent 的文档;如果填错,通常会直接收到无效参数之类的报错。
536
-
537
- ## 从源码运行
538
-
539
- 如果你是从仓库源码直接使用:
540
-
541
- ```bash
542
- bun install
543
- bun run login
544
- bun run dev
545
- ```
546
-
547
- ## 更多文档
548
-
549
- 如果你现在要做的是下面这些事,可以直接从这里继续:
550
-
551
- ### 安装与配置
552
-
553
- - 想配置微信、飞书、元宝、或第三方插件频道:[docs/channel-management.md](./docs/channel-management.md)
554
- - 想自己写一个频道插件:[docs/plugin-development.md](./docs/plugin-development.md)
555
- - 想看完整配置字段:[docs/config-reference.md](./docs/config-reference.md)
556
- - 想在微信里改配置:[docs/config-command.md](./docs/config-command.md)
557
-
558
- ### 日常使用
559
-
560
- - 想查看完整聊天命令参考:[docs/commands.md](./docs/commands.md)
561
- - 想用定时任务(`/later`)安排一次性的未来消息:[docs/later-command.md](./docs/later-command.md)
562
- - 想理解什么时候该用 delegate、什么时候该开 group:[docs/weacpx-group-usage-guide.md](./docs/weacpx-group-usage-guide.md)
563
-
564
- ### 排错与验证
565
-
566
- - 想跑测试或了解测试分层:[docs/testing.md](./docs/testing.md)
567
-
568
- ### 开发与贡献
569
-
570
- - 想从源码开发、调试或参与贡献:[docs/developments.md](./docs/developments.md)
13
+ This package is a compatibility shim only. It ships **no CLI** — it merely
14
+ forwards `weacpx/plugin-api` to `@ganglion/xacpx/plugin-api` so already-installed
15
+ channel plugins keep resolving. New plugins should depend on `@ganglion/xacpx`
16
+ and import `xacpx/plugin-api`.
package/package.json CHANGED
@@ -1,91 +1,29 @@
1
1
  {
2
2
  "name": "weacpx",
3
- "version": "0.6.1",
4
- "description": "使用微信 ClawBot 随时随地通过 `acpx` 控制 Claude Code、Codex Agents。",
5
- "keywords": [
6
- "acpx",
7
- "weixin-agent-sdk",
8
- "openclaw",
9
- "weixin",
10
- "yuanbao",
11
- "feishu"
12
- ],
13
- "author": "gadzan",
3
+ "version": "0.8.0",
4
+ "description": "Deprecated: weacpx has been renamed to `xacpx` (npm package `@ganglion/xacpx`, command `xacpx`). Install `@ganglion/xacpx` instead. This package forwards `weacpx/plugin-api` to `@ganglion/xacpx/plugin-api` for backward compatibility and has no CLI.",
5
+ "keywords": ["xacpx", "weacpx", "deprecated"],
14
6
  "license": "MIT",
15
- "bugs": {
16
- "url": "https://github.com/gadzan/weacpx/issues"
17
- },
18
7
  "repository": {
19
8
  "type": "git",
20
- "url": "git+https://github.com/gadzan/weacpx.git"
9
+ "url": "git+https://github.com/gadzan/weacpx.git",
10
+ "directory": "packages/weacpx-compat"
21
11
  },
22
12
  "type": "module",
23
- "bin": {
24
- "weacpx": "./dist/cli.js"
25
- },
26
13
  "exports": {
27
14
  "./plugin-api": {
28
- "types": "./dist/plugin-api.d.ts",
29
- "default": "./dist/plugin-api.js"
15
+ "types": "./plugin-api.d.ts",
16
+ "default": "./plugin-api.js"
30
17
  }
31
18
  },
32
- "files": [
33
- "dist",
34
- "README.md",
35
- "config.example.json"
36
- ],
37
- "workspaces": [
38
- "packages/*"
39
- ],
40
- "scripts": {
41
- "clean:dist": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
42
- "clean:channel-yuanbao": "node -e \"require('node:fs').rmSync('packages/channel-yuanbao/dist',{recursive:true,force:true})\"",
43
- "clean:channel-feishu": "node -e \"require('node:fs').rmSync('packages/channel-feishu/dist',{recursive:true,force:true})\"",
44
- "build": "bun run clean:dist && bun build ./src/cli.ts ./src/bridge/bridge-main.ts ./src/plugin-api.ts --outdir ./dist --target node --external node-pty && bun run build:plugin-api",
45
- "build:plugin-api": "tsc -p tsconfig.plugin-api.json",
46
- "build:channel-yuanbao": "bun run build:plugin-api && bun run clean:channel-yuanbao && bun build ./packages/channel-yuanbao/src/index.ts --outdir ./packages/channel-yuanbao/dist --target node --external weacpx && tsc -p packages/channel-yuanbao/tsconfig.json",
47
- "build:channel-feishu": "bun run build:plugin-api && bun run clean:channel-feishu && bun build ./packages/channel-feishu/src/index.ts --outdir ./packages/channel-feishu/dist --target node --external weacpx && tsc -p packages/channel-feishu/tsconfig.json",
48
- "build:packages": "bun run build && bun run build:channel-yuanbao && bun run build:channel-feishu",
49
- "verify:publish": "bun run build:packages && node ./scripts/verify-publish.mjs",
50
- "publish:weacpx": "bun publish --cwd .",
51
- "publish:channel-feishu": "bun publish --cwd packages/channel-feishu --access public",
52
- "publish:channel-yuanbao": "bun publish --cwd packages/channel-yuanbao --access public",
53
- "publish:plugins": "bun run publish:channel-yuanbao && bun run publish:channel-feishu",
54
- "dev": "bun run ./src/cli.ts run",
55
- "dry-run": "bun run ./src/dry-run.ts",
56
- "login": "bun run ./src/cli.ts login",
57
- "start": "node ./dist/cli.js run",
58
- "daemon:start": "bun run ./src/cli.ts start",
59
- "daemon:status": "bun run ./src/cli.ts status",
60
- "daemon:stop": "bun run ./src/cli.ts stop",
61
- "test": "node ./scripts/run-tests.mjs",
62
- "test:unit": "node ./scripts/run-tests.mjs tests/unit",
63
- "test:smoke": "node ./scripts/run-tests.mjs tests/smoke",
64
- "smoke:local-install": "node ./scripts/smoke-local-install.mjs"
65
- },
19
+ "files": ["plugin-api.js", "plugin-api.d.ts", "README.md"],
66
20
  "dependencies": {
67
- "@modelcontextprotocol/sdk": "^1.29.0",
68
- "acpx": "^0.9.0",
69
- "node-pty": "^1.1.0",
70
- "proper-lockfile": "^4.1.2",
71
- "protobufjs": "^7.5.6",
72
- "qrcode-terminal": "^0.12.0",
73
- "write-file-atomic": "^8.0.0",
74
- "ws": "^8.20.0",
75
- "zod": "^3",
76
- "zod-to-json-schema": "^3"
21
+ "@ganglion/xacpx": "^0.8.0"
77
22
  },
78
23
  "publishConfig": {
79
- "registry": "https://registry.npmjs.org/"
24
+ "access": "public"
80
25
  },
81
26
  "engines": {
82
27
  "node": ">=22"
83
- },
84
- "devDependencies": {
85
- "@types/proper-lockfile": "^4.1.4",
86
- "@types/write-file-atomic": "^4.0.3",
87
- "@types/ws": "^8.18.1",
88
- "bun-types": "^1.3.11",
89
- "typescript": "^6.0.2"
90
28
  }
91
29
  }
@@ -0,0 +1,2 @@
1
+ // Deprecated forwarding shim (types). weacpx → xacpx (npm `@ganglion/xacpx`).
2
+ export * from "@ganglion/xacpx/plugin-api";