weacpx 0.2.1 → 0.3.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.
package/README.md CHANGED
@@ -1,341 +1,298 @@
1
- # Weacpx
1
+ # weacpx
2
2
 
3
- 连接微信与 acpx 协议,让 Claude Code / Codex 成为你口袋里的 24/7 伙伴。
3
+ > 用微信远程驱动 Codex、Claude Code acpx 会话。
4
4
 
5
5
  [![npm](https://img.shields.io/npm/v/weacpx?style=flat-square)](https://www.npmjs.com/package/weacpx)
6
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%2BCjxwYXRoIGQ9Ik0xMy43NTg0IDEuNjAwMUgxMS4wMzg0QzEwLjY4NSAxLjYwMDEgMTAuMzk4NCAxLjg4NjY0IDEwLjM5ODQgMi4yNDAxVjQuOTYwMUMxMC4zOTg0IDUuMzEzNTYgMTAuNjg1IDUuNjAwMSAxMS4wMzg0IDUuNjAwMUgxMy43NTg0QzE0LjExMTkgNS42MDAxIDE0LjM5ODQgNS4zMTM1NiAxNC4zOTg0IDQuOTYwMVYyLjI0MDFDMTQuMzk4NCAxLjg4NjY0IDE0LjExMTkgMS42MDAxIDEzLjc1ODQgMS42MDAxWiIgZmlsbD0iI2ZmZiIvPgo8cGF0aCBkPSJNNCAxMkwxMiA0TDQgMTJaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik00IDEyTDEyIDQiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8L3N2Zz4K&logoColor=ffffff)](https://zread.ai/gadzan/weacpx)
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
8
  [![License](https://img.shields.io/npm/l/weacpx?style=flat-square)](./LICENSE)
9
9
 
10
10
  ![weacpx logo](assets/weacpx.jpg)
11
11
 
12
- ## Why Weacpx?
12
+ ## 这是什么
13
13
 
14
- Agent-First 的开发模式下,编码任务必须依托顶级 Agents,🙅‍♀️不要通过 openclaw 去开发,现在有一个更好的方案。Weacpx 通过微信提供一个轻量化的远程入口,随时随地通过手机驱动你的顶级 Agents。
14
+ `weacpx` 是一个可以通过微信直接控制 Codex / Claude Code / Gemini / OpenCode 的工具。它把微信消息通过 `acpx` 连接到 Agent CLI 会话上,让你直接在手机里:
15
15
 
16
- Weacpx 的核心价值主张很简单:
16
+ - 新建和切换会话
17
+ - 让 Agent 继续在指定项目目录里工作
18
+ - 查看流式回复、最终结果和工具调用摘要
19
+ - 调整权限策略
20
+ - 在需要时做多 Agent 编排
17
21
 
18
- **随时随地访问** — 只要你有微信,就能控制你的 Agent。无需 VPN、Web 界面或复杂的云服务配置。
22
+ 如果你需要临时远程编码或办公,`weacpx` 提供的是一个方便快捷的**远程入口**,让你在微信里就能随时随地干活。
19
23
 
20
- **统一的会话管理** — 通过 acpx 协议,weacpx 让你在微信里管理多个 Agent 会话(Codex、Claude Code 等),就像在本地终端一样。创建、切换、查询状态,全部通过简单的斜杠命令完成,这是其它简单基于 ACP 实现的远控 agent 所不具备的。
24
+ ## 适合谁
21
25
 
22
- **轻量守护进程** — weacpx 作为后台守护进程运行,资源占用极低。不用启动一个臃肿 openclaw,不用担心在工作机器上使用会占用资源。启动、停止、查看状态都通过简单的 CLI 命令完成。
26
+ `weacpx` 适合轻量临时使用多 Agent 办公的用户。你可以用微信盯任务、发指令、看结果,并在同一个聊天里管理多个会话。
23
27
 
24
- **权限可控** 可以即时通过微信修改 agent 的权限,无论是 YOLO 还是只读。
28
+ > `weacpx` 的会话是跟本地隔离的,它目前还不能使用 CLI 已有的会话,你在 weacpx 也无法看到本地的 CLI 会话记录。
25
29
 
26
- ## 安装前准备
30
+ ## 5 分钟快速开始
27
31
 
28
- 开始前,至少需要:
32
+ ### 前置条件
29
33
 
30
- - Node.js 22+ 或 Bun
31
- - Claude Code 或 Codex
32
- - 装了微信的手机
34
+ 开始前,你至少需要:
33
35
 
34
- > `weacpx` 基于 `weixin-agent-sdk` 与 `acpx` 实现。
35
- > 正常情况下,不需要再额外全局安装 `acpx`。
36
+ - Node.js 22+ Bun
37
+ - 已可用的 Codex / Claude Code / Gemini / OpenCode
38
+ - 一台装了微信的手机
36
39
 
37
- ## 安装
40
+ > `weacpx` 基于 `weixin-agent-sdk` 和 `acpx` 工作。正常情况下,你不需要额外全局安装 `acpx`。
38
41
 
39
- 全局安装:
42
+ ### 安装
40
43
 
41
44
  ```bash
42
- # 使用 NPM 全局安装
43
- npm install -g weacpx
44
- # 或使用 Bun 全局安装
45
+ npm install -g weacpx --registry=https://registry.npmjs.org
46
+ #
45
47
  bun add -g weacpx
46
48
  ```
47
49
 
48
- ## 快速开始
50
+ ### 登录微信
51
+
52
+ ```bash
53
+ weacpx login
54
+ ```
55
+
56
+ 终端会显示二维码,请继续用微信扫码登录。
49
57
 
50
- 第一次使用建议按这个顺序:
58
+ ### 启动服务
51
59
 
52
- 1. 登录微信 `weacpx login`
53
- 2. 启动服务 `weacpx start`
54
- 3. 在微信里创建会话并开始对话
60
+ ```bash
61
+ weacpx start
62
+ ```
55
63
 
56
- `weacpx login` 会在终端里显示二维码,使用微信扫描登录。`weacpx start` 启动后,在微信里发:
64
+ ### 在微信里创建第一个会话
65
+
66
+ 把下面两条消息发到微信:
57
67
 
58
68
  ```text
59
69
  /ss codex -d /absolute/path/to/your/repo
60
-
61
70
  /help
62
71
  ```
63
72
 
64
- `/ss codex -d /absolute/path/to/your/repo`:开启或挂在一个会话,并切换到该会话。使用 Codex,并指定工作目录为 `/absolute/path/to/your/repo`。
65
-
66
- `/help` 查看帮助信息。
67
-
68
- 然后就可以直接发普通消息,例如:
73
+ 然后直接发普通文本,例如:
69
74
 
70
75
  ```text
71
76
  hello
72
77
  ```
73
78
 
74
- 如果任务比较长,`weacpx` 在支持流式中间回复的 transport(当前主要是 `acpx-cli`)下,会优先把 Agent 的中间回复分段发回微信,而不是一直等到最后一条结果。
79
+ 如果一切正常,普通文本会进入当前会话,Agent 的回复会回到微信。
75
80
 
76
- 如果你更想要“一次性只回最终结果”,可以配置全局默认 `wechat.replyMode`,或在当前会话里用 `/replymode final` 临时覆盖。
77
-
78
- 如果你是从源码仓库直接使用:
79
-
80
- ```bash
81
- # 先安装依赖
82
- bun install
83
- # 登录微信
84
- bun run login
85
- # 启动服务
86
- bun run dev
87
- ```
81
+ ## 你的日常使用流程
88
82
 
89
- 普通文本会默认发送到当前选中的 session。
83
+ 最常见的使用顺序只有四步:
90
84
 
91
- ## CLI 命令
85
+ 1. **启动后台服务**:`weacpx start`
86
+ 2. **创建或切换会话**:`/ss ...`、`/use ...`
87
+ 3. **直接发普通文本**:让当前会话继续工作
88
+ 4. **必要时查看状态或取消当前任务**:`/status`、`/cancel`
92
89
 
93
- 常用命令:
90
+ ### 1) 创建会话
94
91
 
95
- - `weacpx login`
96
- - `weacpx logout`
97
- - `weacpx run`
98
- - `weacpx start`
99
- - `weacpx status`
100
- - `weacpx stop`
101
- - `weacpx doctor`
102
- - `weacpx version`
92
+ 最常用命令:
103
93
 
104
- 其他说明:
94
+ ```text
95
+ /ss codex -d /absolute/path/to/your/repo
96
+ ```
105
97
 
106
- - `run` 前台运行,适合调试
107
- - `start` 后台启动
108
- - `status` 查看后台状态、PID、配置路径和日志路径
109
- - `stop` 停止后台实例
110
- - `logout` 清除本机已保存的微信登录凭证;如果当前没有已登录账号,会直接提示
111
- - `doctor` 运行诊断,默认检查 config / runtime / daemon / wechat / acpx / bridge
112
- - `version` 输出当前安装的 `weacpx` 版本号,可用于排查环境或确认升级是否生效
98
+ 它会使用 `codex`,绑定这个工作目录,并自动切换到新会话。
113
99
 
114
- ### doctor 诊断
100
+ ### 2) 发普通消息
115
101
 
116
- `weacpx doctor` 用来快速检查本机环境是否能正常运行。
102
+ `/` 开头的文本,都会发送到当前会话。
117
103
 
118
- ```bash
119
- weacpx doctor
120
- weacpx doctor --verbose
121
- weacpx doctor --smoke
122
- weacpx doctor --smoke --agent codex --workspace backend
104
+ ```text
105
+ 修一下最近这个接口超时问题
123
106
  ```
124
107
 
125
- 说明:
108
+ ### 3) 看回复
126
109
 
127
- - `--verbose` 会展开每个检查的技术细节,方便定位问题
128
- - `--smoke` 会额外执行一次真实 transport 级别的最小 prompt 检查
129
- - `--agent` / `--workspace` 只影响 `--smoke`,不会改变默认诊断检查
130
- - `--smoke` 可能留下一个临时的底层 `acpx` session;这是为了换取真实链路验证能力
131
- - 如果不传 `--smoke`,相关 smoke 检查会被标记为 `SKIP`
110
+ `weacpx` 支持三种常用回复模式:
132
111
 
133
- ### version 查看版本
112
+ - `stream`:流式返回中间文本
113
+ - `final`:只返回最终结果
114
+ - `verbose`:默认,在流式文本之外,额外显示工具调用摘要
134
115
 
135
- `weacpx version` 用来输出当前安装的 CLI 版本号。
116
+ 例如 `verbose` 模式下,你会看到:
136
117
 
137
- ```bash
138
- weacpx version
139
- weacpx --version
140
- weacpx -v
118
+ ```text
119
+ 📖 sed -n '1,220p' README.md
120
+ 🔍 rg -n 'session new' src tests
121
+ 💻 bun test tests/unit/main.test.ts
122
+ ✏️ Edit parse-command.ts
141
123
  ```
142
124
 
143
- 说明:
144
-
145
- - 三种写法都会输出同一个版本号
146
- - 适合在升级后确认当前生效的是哪个版本
147
- - 排查用户环境问题时,建议先附上这里输出的版本信息
148
-
149
- ### logout 退出登录
150
-
151
- 说明:
125
+ ### 4) 切换会话
152
126
 
153
- - `weacpx logout` 只清理已保存的微信账号凭证
154
- - 它不会停止当前 daemon,也不会删除 `weacpx` 的 session/state 配置
127
+ ```text
128
+ /ss
129
+ /use backend:codex
130
+ ```
155
131
 
156
- ## 微信中使用说明
132
+ 这样你可以在同一个微信聊天里切换不同项目、不同 agent 的会话。
157
133
 
158
- ### 管理 Agent
134
+ ## 常用 CLI 命令
159
135
 
160
- 内置 `codex` 与 `claude` 两个常见 agent,也支持添加你自己的 agents。
136
+ 这些命令在电脑终端里运行。
161
137
 
162
138
  | 命令 | 说明 |
163
139
  |------|------|
164
- | `/agents` | 查看当前已添加的 agent |
165
- | `/agent add codex` | 添加 codex agent |
166
- | `/agent add claude` | 添加 claude agent |
167
- | `/agent rm <name>` | 删除 agent |
140
+ | `weacpx login` | 登录微信 |
141
+ | `weacpx logout` | 清除本机保存的微信登录凭证 |
142
+ | `weacpx run` | 前台运行,适合调试 |
143
+ | `weacpx start` | 后台启动服务 |
144
+ | `weacpx status` | 查看后台状态、PID、配置路径、日志路径 |
145
+ | `weacpx stop` | 停止后台实例 |
146
+ | `weacpx doctor` | 运行环境诊断 |
147
+ | `weacpx version` | 查看当前版本 |
168
148
 
169
- 说明:
149
+ ### `doctor` 怎么用
170
150
 
171
- - 内置 `codex` 和 `claude` 走 `acpx` 的 driver alias,通常不需要额外写 `agent.command`
172
- - 如果你接入的是自定义 agent,再考虑显式配置 `agent.command`
151
+ ```bash
152
+ weacpx doctor
153
+ weacpx doctor --verbose
154
+ weacpx doctor --smoke
155
+ weacpx doctor --smoke --agent codex --workspace backend
156
+ ```
157
+
158
+ 说明:
173
159
 
174
- `config.json` 中的 `agent.command` 用于显式指定 agent 的原始启动命令,完整字段如下:
160
+ - `--verbose` 会展开每项检查的细节
161
+ - `--smoke` 会额外执行一次真实 transport 级别的最小 prompt 检查
162
+ - `--agent` / `--workspace` 只影响 `--smoke`
163
+ - 如果不传 `--smoke`,相关检查会显示为 `SKIP`
175
164
 
176
- | 字段 | 类型 | 必填 | 说明 |
177
- |------|------|------|------|
178
- | `driver` | `string` | 是 | agent 驱动类型,传递给 acpx 的第一位置参数 |
179
- | `command` | `string` | 否 | 显式指定自定义 agent 的原始命令。不填则使用 acpx 默认行为 |
165
+ ## 常用微信命令
180
166
 
181
- 示例 — 配置一个自定义 agent:
167
+ 完整微信命令参考见:[docs/commands.md](./docs/commands.md)。
182
168
 
183
- ```json
184
- {
185
- "agents": {
186
- "my-agent": {
187
- "driver": "codex",
188
- "command": "/path/to/acpx codex --arg1 value1"
189
- }
190
- }
191
- }
192
- ```
169
+ ### Agent 管理
193
170
 
194
- - 内置 `codex` `claude` 建议只写 `driver`,让 `acpx` 自己解析对应 alias
195
- - `command` 主要用于自定义 agent,不建议给内置 driver 手写原始命令
196
- - 旧版 `codex` raw command 配置会被自动忽略,回退为 `acpx codex ...`
171
+ 已内置常用的 Codex Claude Code;
197
172
 
198
- ### Workspace 工作目录
173
+ 可以使用 `/agent add opencode` 添加你所需要的 agents。
199
174
 
200
175
  | 命令 | 说明 |
201
176
  |------|------|
202
- | `/workspaces` / `/workspace` / `/ws` | 查看当前已添加的工作目录 |
203
- | `/ws new <name> -d <path>` | 添加工作目录,`-d` 后面接的是目录在电脑的绝对路径 |
204
- | `/workspace rm <name>` | 删除工作目录 |
177
+ | `/agents` | 查看 agent 列表 |
178
+ | `/agent add gemini` | 添加 `Gemini` Agent |
179
+ | `/agent add opencode` | 添加 `OpenCode` Agent |
180
+ | `/agent rm <name>` | 删除 agent |
205
181
 
206
- 说明:
182
+ ### Workspace 管理
207
183
 
208
- - `/ws new` 会先校验路径是否存在
209
- - Windows 路径里如果有空格,请给 `-d` 或 `--cwd` 的值加引号,例如:`/ws new backend -d "E:\my projects\backend"`
184
+ | 命令 | 说明 |
185
+ |------|------|
186
+ | `/workspaces` / `/workspace` / `/ws` | 查看 workspace 列表 |
187
+ | `/ws new <name> -d <path>` | 添加 workspace,`path` 是电脑上的绝对路径,Windows 不用区分正反斜杠 |
188
+ | `/workspace rm <name>` | 删除 workspace |
210
189
 
211
190
  ### Session 会话
212
191
 
213
192
  | 命令 | 说明 |
214
193
  |------|------|
215
- | `/sessions` / `/session` / `/ss` | 查看当前已添加的会话 |
216
- | `/ss <agent> (-d <path> | --ws <name>)` | 新建会话;传 `-d` 时按目录自动创建或复用 workspace,传 `--ws` 时复用已注册 workspace |
217
- | `/ss new <agent> (-d <path> | --ws <name>)` | 强制新建会话;`--ws` 只复用已注册 workspace |
218
- | `/ss new <alias> -a <name> --ws <name>` | 强制新建会话,并指定 agent 和 workspace |
219
- | `/ss attach <alias> -a <name> --ws <name> --name <transport-session>` | 恢复已存在的会话 |
194
+ | `/sessions` / `/session` / `/ss` | 查看会话列表 |
195
+ | `/ss <agent> (-d <path> \| --ws <name>)` | 创建或复用当前最常用的会话 |
196
+ | `/ss new <agent> (-d <path> \| --ws <name>)` | 强制新建会话 |
220
197
  | `/use <alias>` | 切换当前会话 |
221
198
  | `/status` | 查看当前会话状态 |
222
- | `/mode` | 查看当前会话已保存的 mode |
223
- | `/mode <id>` | 设置当前会话 mode,例如 `/mode plan` |
224
- | `/replymode` | 查看当前会话的回复输出模式(全局默认 / 当前覆盖 / 实际生效) |
225
- | `/replymode stream` | 当前逻辑会话使用流式回复 |
226
- | `/replymode final` | 当前逻辑会话只发送最终文本结果 |
227
- | `/replymode reset` | 清除当前逻辑会话覆盖,回退到全局默认 |
228
- | `/session reset` | 重置当前会话上下文,保留 alias/agent/workspace,但重新绑定到一个新的后端 session |
199
+ | `/mode` / `/mode <id>` | 查看或设置底层 `acpx` mode |
200
+ | `/replymode` | 查看当前回复模式 |
201
+ | `/replymode stream` | 流式回复 |
202
+ | `/replymode verbose` | 流式 + 工具调用摘要 |
203
+ | `/replymode final` | 只返回最终结果 |
204
+ | `/replymode reset` | 回退到全局默认 reply mode |
205
+ | `/session reset` | 重置当前会话上下文 |
229
206
  | `/clear` | `/session reset` 的快捷别名 |
230
- | `/cancel` | 取消当前会话 |
231
- | `/stop` | `/cancel` 的别名,用于取消当前会话 |
232
-
233
- 说明:
207
+ | `/cancel` / `/stop` | 停止当前任务 |
234
208
 
235
- - `/ss <agent> -d <path>` 是最常用入口,会自动按目录名推导并创建或复用 workspace,再创建或复用 session
236
- - `/ss <agent> --ws <name>` 会直接复用已注册 workspace,再创建或复用 session
237
- - `/ss new <agent> (-d <path> | --ws <name>)` 表示强制新建 session
238
- - `/use <alias>` 用来切换当前会话
239
- - `/mode` 会显示当前逻辑会话里保存的 mode;如果还没设置过,会显示“未设置”
240
- - `/mode <id>` 会把 mode 透传给底层 `acpx set-mode`,成功后再写回当前逻辑会话
241
- - `/replymode` 修改的是**当前逻辑会话**的 reply mode override,不是底层 transport session 的全局属性
242
- - `wechat.replyMode` 是全局默认值;`/replymode reset` 会回退到这个默认值
243
- - `final` 只影响微信侧是否实时发送文本流式片段,不改变 acpx transport 本身的生成方式
244
- - `/session reset` 和 `/clear` 会保留当前逻辑会话名,但重新创建一个新的后端 session,从空上下文重新开始
245
- - 非 `/` 开头的文本会发送到当前 session
209
+ 建议你优先记住这三个:
246
210
 
247
- ### 配置命令
211
+ ```text
212
+ /ss codex -d /absolute/path/to/repo
213
+ /use <alias>
214
+ /cancel
215
+ ```
248
216
 
249
- `/config` 用来查看和修改一小部分**受支持的配置字段**,不是任意 JSON 编辑器。
217
+ ### 配置与权限
250
218
 
251
219
  | 命令 | 说明 |
252
220
  |------|------|
253
- | `/config` | 查看当前支持通过微信修改的配置路径 |
254
- | `/config set <path> <value>` | 修改一个受支持的配置值 |
221
+ | `/config` | 查看支持通过微信修改的配置路径 |
222
+ | `/config set <path> <value>` | 修改一个白名单配置项 |
223
+ | `/pm` / `/permission` | 查看当前权限模式 |
224
+ | `/pm set allow` | 切到 `approve-all` |
225
+ | `/pm set read` | 切到 `approve-reads` |
226
+ | `/pm set deny` | 切到 `deny-all` |
227
+ | `/pm auto` | 查看当前非交互权限策略 |
228
+ | `/pm auto deny` | 切到 `deny` |
229
+ | `/pm auto fail` | 切到 `fail` |
255
230
 
256
- 常见示例:
231
+ 最常见例子:
257
232
 
258
233
  ```text
259
- /config
260
234
  /config set wechat.replyMode final
261
- /config set logging.level debug
262
- /config set transport.permissionMode approve-reads
263
- /config set workspaces.backend.description backend repo
235
+ /pm set read
236
+ /pm auto deny
264
237
  ```
265
238
 
266
- 说明:
267
-
268
- - `/config` 只允许修改白名单字段,不支持任意路径写入
269
- - `agents.<name>.*` / `workspaces.<name>.*` 这类动态路径要求目标已经存在,不会自动创建
270
- - `/config set wechat.replyMode final` 修改的是**全局默认回复模式**
271
- - `/replymode final` 修改的是**当前逻辑会话覆盖**
272
- - 成功修改后会立即写回 `~/.weacpx/config.json`
273
- - 更完整的边界和支持字段,请参考 [docs/config-command.md](./docs/config-command.md)
274
-
275
- ### 权限策略
239
+ ### 多 Agent 编排
276
240
 
277
- `weacpx` 支持直接在微信里查看和切换 `acpx` 的权限策略。
241
+ README 里只保留用户视角的最常用命令。
278
242
 
279
243
  | 命令 | 说明 |
280
244
  |------|------|
281
- | `/pm` / `/permission` | 查看当前权限模式 |
282
- | `/pm set allow` | 切到 `approve-all` |
283
- | `/pm set read` | 切到 `approve-reads` |
284
- | `/pm set deny` | 切到 `deny-all` |
285
- | `/pm auto` | 查看当前非交互策略 |
286
- | `/pm auto deny` | 切到 `deny` |
287
- | `/pm auto fail` | 切到 `fail` |
245
+ | `/dg <agent> <task>` | 快速委派一个子任务 |
246
+ | `/group new <title>` | 创建任务组 |
247
+ | `/group add <groupId> <agent> <task>` | 往任务组里加子任务 |
248
+ | `/groups` | 查看任务组列表 |
249
+ | `/group <id>` | 查看单个任务组 |
250
+ | `/group cancel <groupId>` | 取消组内未结束任务 |
251
+ | `/tasks` | 查看当前主线下的任务 |
252
+ | `/task <id>` | 查看单个任务详情 |
253
+ | `/task approve <id>` | 批准 `needs_confirmation` 任务 |
254
+ | `/task cancel <id>` | 取消任务 |
255
+
256
+ 最常见例子:
257
+
258
+ ```text
259
+ /dg claude 审查当前方案的 3 个高风险点
260
+ /group new review
261
+ /group add review claude 审查接口设计
262
+ /tasks
263
+ /task approve task_123
264
+ ```
288
265
 
289
266
  说明:
290
267
 
291
- - `allow` 对应 `approve-all`
292
- - `read` 对应 `approve-reads`
293
- - `deny` 对应 `deny-all`
294
- - `/pm auto ...` 修改的是 `transport.nonInteractivePermissions`
295
- - 这些命令会把结果写回 `config.json`
268
+ - 当前会话就是主控会话
269
+ - 被委派出去的是独立子任务会话
270
+ - agent 发起的委派请求默认需要人工确认
271
+ - group 适合把 2~3 个独立子任务并行派出去,再把结果汇总回主线
272
+
273
+ 如果你想先理解什么时候该用 delegate、什么时候该开 group,请看:
274
+
275
+ - [docs/weacpx-group-usage-guide.md](./docs/weacpx-group-usage-guide.md)
296
276
 
297
- ### 推荐工作流
277
+ ## 常见场景
298
278
 
299
- 新建一个可聊天的会话:
279
+ ### 在手机上继续盯一个本地项目
300
280
 
301
281
  ```text
302
282
  /ss codex -d /absolute/path/to/backend
303
- 修一下最近这个接口超时问题
283
+ 看一下今天这个接口超时问题
304
284
  ```
305
285
 
306
- 在同一个聊天里切换多个会话:
286
+ ### 同一个聊天里切换两个项目
307
287
 
308
288
  ```text
309
- /ss new codex -d /absolute/path/to/backend
289
+ /ss codex -d /absolute/path/to/backend
290
+ /ss new codex -d /absolute/path/to/frontend
310
291
  /ss
311
292
  /use backend:codex
312
- 看一下接口日志
313
- /use backend:codex-2
314
- 看一下前端报错
293
+ /use frontend:codex
315
294
  ```
316
295
 
317
- 删除不再需要的资源:
318
-
319
- ```text
320
- /agent rm claude
321
- /workspace rm old-repo
322
- ```
323
-
324
- ### 微信内置登录相关指令
325
-
326
- 除了 `weacpx login` / `weacpx logout` 这类 CLI 命令外,微信通道里还支持少量内置 slash 指令:
327
-
328
- | 命令 | 说明 |
329
- |------|------|
330
- | `/clear` | 重置当前聊天绑定的会话上下文,效果等同于 `/session reset` |
331
- | `/logout` | 清除当前机器上已保存的所有微信账号凭证 |
332
-
333
- 说明:
334
-
335
- - `/logout` 的语义和 CLI 的 `weacpx logout` 一致,都是清凭证
336
- - 如果当前没有已登录账号,会提示“当前没有已登录的账号”
337
- - `/logout` 不会停止后台服务,也不会删除 `weacpx` 的工作区、agent、session 状态
338
-
339
296
  ## 配置与运行文件
340
297
 
341
298
  默认文件位置:
@@ -344,97 +301,70 @@ weacpx -v
344
301
  - 状态文件:`~/.weacpx/state.json`
345
302
  - 运行日志:`~/.weacpx/runtime/app.log`
346
303
 
347
- 后台运行时还会使用:
304
+ 更多运行时文件会放在 `~/.weacpx/runtime/` 下。
348
305
 
349
- - `~/.weacpx/runtime/daemon.pid`
350
- - `~/.weacpx/runtime/status.json`
351
- - `~/.weacpx/runtime/stdout.log`
352
- - `~/.weacpx/runtime/stderr.log`
306
+ ## 常见问题
353
307
 
354
- ### Transport 权限配置
308
+ ### `/ss new` 失败怎么办?
355
309
 
356
- `config.json` 中的 `transport` 支持以下权限字段:
310
+ 如果你在微信里创建会话失败,最常见的情况不是 `weacpx` 命令格式错了,而是底层会话没有成功创建。
357
311
 
358
- ```json
359
- {
360
- "transport": {
361
- "type": "acpx-bridge",
362
- "sessionInitTimeoutMs": 120000,
363
- "permissionMode": "approve-all",
364
- "nonInteractivePermissions": "deny"
365
- }
366
- }
367
- ```
312
+ 你可以先试这两步:
368
313
 
369
- 说明:
314
+ 1. 在终端里确认当前项目目录和 agent 本身可用
315
+ 2. 如果你熟悉 `acpx`,先手动创建一个会话,再在微信里挂回去
370
316
 
371
- - `permissionMode`: `approve-all`、`approve-reads`、`deny-all`
372
- - `nonInteractivePermissions`: `deny`、`fail`
373
- - 默认值分别是 `approve-all` 和 `deny`
374
- - 也可以直接在微信里通过 `/pm` 和 `/pm auto` 修改
317
+ 例如,你可以先在本地创建一个会话:
375
318
 
376
- ### 日志配置
319
+ ```bash
320
+ ./node_modules/.bin/acpx --verbose --cwd /absolute/workspace/path codex sessions new --name existing-demo
321
+ ```
377
322
 
378
- `config.json` 支持可选的 `logging` 配置:
323
+ 然后在微信里把它挂回来:
379
324
 
380
- ```json
381
- {
382
- "logging": {
383
- "level": "info",
384
- "maxSizeBytes": 2097152,
385
- "maxFiles": 5,
386
- "retentionDays": 7
387
- }
388
- }
325
+ ```text
326
+ /ss attach demo -a codex --ws backend --name existing-demo
389
327
  ```
390
328
 
391
- 说明:
329
+ ### `/mode <id>` 里的 `<id>` 是什么?
392
330
 
393
- - `level`: `error`、`info`、`debug`
394
- - `maxSizeBytes`: 单个 `app.log` 文件达到上限后会轮转
395
- - `maxFiles`: 最多保留多少个轮转文件
396
- - `retentionDays`: 每次启动时会清理超过保留天数的旧轮转日志
331
+ `/mode` 的可用值取决于你当前使用的 agent,`weacpx` 不会替你统一转换这些值。
397
332
 
398
- ## 注意事项
333
+ 当前比较明确的已知值:
399
334
 
400
- ### Adapter mode 参考
335
+ - `codex`: `plan`
336
+ - `cursor`: `agent`、`plan`、`ask`
401
337
 
402
- `acpx set-mode` / 计划中的 `/mode <id>` 本质上都是给底层 ACP session 发送 `session/set_mode`。
403
- 这里的 `<id>` 不是 `weacpx` 或 `acpx` 统一规定的枚举,而是**各 adapter 自己定义**的值;填错时通常会收到 adapter 返回的 `Invalid params` 一类错误。
338
+ 如果你不确定某个值能不能用,优先查对应 agent 的文档;如果填错,通常会直接收到无效参数之类的报错。
404
339
 
405
- 基于 `acpx` 内置 adapter 文档和各上游公开文档,当前能确认的信息如下:
340
+ ## 从源码运行
406
341
 
407
- | adapter | 已确认可用的 mode id | 说明 |
408
- |------|------|------|
409
- | `codex` | `plan` | `acpx` 自身示例明确使用过 `acpx codex set-mode plan`。`codex-acp` 还暴露了 `mode` 运行时配置项,但上游目前没有公开一份完整、稳定的 mode id 列表。 |
410
- | `cursor` | `agent`、`plan`、`ask` | Cursor 官方文档/更新日志公开提到 `Plan mode`、`Ask mode`;Cursor 官方论坛在 ACP `session/configure` 示例中展示过 `availableModes` 为 `agent` / `plan` / `ask`。 |
411
- | 其他内置 adapter | 暂无公开、稳定的 mode id 列表 | 包括 `claude`、`copilot`、`gemini`、`qoder`、`qwen`、`kimi`、`kiro`、`iflow`、`opencode`、`trae`、`droid`、`kilocode` 等。即使某些产品本身有“Ask / Agent / Plan”之类概念,其 ACP `set-mode` 可接受的精确字符串也往往没有在官方文档中写死。 |
342
+ 如果你是从仓库源码直接使用:
412
343
 
413
- 建议:
344
+ ```bash
345
+ bun install
346
+ bun run login
347
+ bun run dev
348
+ ```
414
349
 
415
- - 对 `codex`,优先把 `plan` 当作已知可用值。
416
- - 对 `cursor`,优先使用 `agent`、`plan`、`ask`。
417
- - 对其他 adapter,不要在 `weacpx` 里写死候选值;最好把 `/mode <id>` 设计成透传,由 adapter 自己决定是否接受。
418
- - 如果某个 adapter 后续补充了官方 mode 文档,再把它们补进这里。
350
+ ## 更多文档
419
351
 
420
- ### 如果 `/ss new` 失败
352
+ 如果你现在要做的是下面这些事,可以直接从这里继续:
421
353
 
422
- 当前最常见的问题仍然是底层 `acpx` named session 的运行时恢复,不一定是 `weacpx` 本身的逻辑问题。
354
+ ### 安装与配置
423
355
 
424
- 可以先在本地创建一个 named session,再在微信里 attach:
356
+ - 想看完整配置字段:[docs/config-reference.md](./docs/config-reference.md)
357
+ - 想在微信里改配置:[docs/config-command.md](./docs/config-command.md)
425
358
 
426
- ```bash
427
- ./node_modules/.bin/acpx --verbose --cwd /absolute/workspace/path codex sessions new --name existing-demo
428
- ```
359
+ ### 日常使用
429
360
 
430
- 然后在微信里:
361
+ - 想查看完整微信命令参考:[docs/commands.md](./docs/commands.md)
362
+ - 想理解什么时候该用 delegate、什么时候该开 group:[docs/weacpx-group-usage-guide.md](./docs/weacpx-group-usage-guide.md)
431
363
 
432
- ```text
433
- /ss attach demo -a codex --ws backend --name existing-demo
434
- ```
364
+ ### 排错与验证
435
365
 
436
- ## 更多文档
366
+ - 想跑测试或了解测试分层:[docs/testing.md](./docs/testing.md)
367
+
368
+ ### 开发与贡献
437
369
 
438
- - 配置参考:[docs/config-reference.md](./docs/config-reference.md)
439
- - 测试说明:[docs/testing.md](./docs/testing.md)
440
- - 开发与贡献:[docs/development.md](./docs/development.md)
370
+ - 想从源码开发、调试或参与贡献:[docs/developments.md](./docs/developments.md)