@licity/qclaw-local-connector 1.1.0 → 1.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.
Files changed (3) hide show
  1. package/README.md +43 -13
  2. package/index.js +31 -1
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -16,11 +16,31 @@
16
16
 
17
17
  ### 方式一:npm 全局安装(推荐)
18
18
 
19
+ **第一步:安装前提**
20
+
21
+ 需要先安装 Node.js(访问 [nodejs.org](https://nodejs.org) 免费下载,安装完默认自带 npm 命令)。
22
+
23
+ **第二步:全局安装连接器**
24
+
19
25
  ```bash
20
26
  npm install -g @licity/qclaw-local-connector
21
27
  ```
22
28
 
23
- 安装后,在任意目录创建 `.env` 配置文件(见第 4 步),然后执行:
29
+ 看到 `added X packages` 即安装成功。
30
+
31
+ **第三步:创建工作目录**
32
+
33
+ 在电脑上选一个记得住的文件夹作为工作目录,例如在桌面新建一个 `licity` 文件夹。
34
+
35
+ > ⚠️ **重要**:不要在 npm 全局安装目录(`node_modules/@licity/qclaw-local-connector`)里直接运行。请始终在你自己建的工作目录里运行。
36
+
37
+ **第四步:创建 `.env` 配置文件**
38
+
39
+ 在工作目录中创建名为 `.env` 的文本文件(见下方第 4 步的详细说明),填写必要字段。
40
+
41
+ **第五步:启动连接器**
42
+
43
+ 在工作目录里右键"在此处打开终端",然后执行:
24
44
 
25
45
  ```bash
26
46
  licity-connector
@@ -142,29 +162,38 @@ npm install && npm run quickstart
142
162
 
143
163
  ### 第 4 步:第一次启动时补全 `.env`
144
164
 
145
- 如果你是第一次运行,`npm run quickstart` 前,先打开本目录的 `.env` 文件。
165
+ 在工作目录(你自己建的那个 `licity` 文件夹)里新建一个名为 `.env` 的文本文件(没有任何后缀)。
146
166
 
147
- 如果 `.env` 不存在,运行安装助手后会自动从 `.env.example` 生成一份。
167
+ > 如果你用的是"方式二"本地克隆,首次运行 `npm run quickstart` 会自动从 `.env.example` 生成一份 `.env` 模板,直接编辑那个就好。
148
168
 
149
- 至少确认这些字段(路径按你的实际安装位置填写):
169
+ `.env` 文件的完整示例如下。复制粘贴后,按 **【必填/可选/勿改】** 说明逐行确认:
150
170
 
151
171
  ```env
172
+ # 里世界服务器地址,勿改
152
173
  LICITY_API_BASE_URL=https://li.city
174
+
175
+ # 【必填】连接器验证密钥
176
+ # 获取方式:打开里世界 APP → 我的龙虾 → 滑到底部 → 点击"复制连接密钥"按钮
177
+ # 将复制的内容粘贴到等号后面(替换掉 replace-with-your-connector-secret)
153
178
  OPENCLAW_CONNECTOR_SECRET=replace-with-your-connector-secret
179
+
180
+ # 连接器类型,勿改
154
181
  CONNECTOR_PROVIDER=qclaw-local
155
182
 
156
- # Windows 示例(路径按实际安装位置填写)
183
+ # 【必填】QClaw 主程序路径(按你的实际安装位置填写)
184
+ # Windows 示例:
157
185
  QCLAW_PATH=C:\QClaw\QClaw.exe
158
- QCLAW_STATE_DIR=%USERPROFILE%\.qclaw
159
- OPENCLAW_CONFIG_PATH=%USERPROFILE%\.qclaw\openclaw.json
186
+ QCLAW_STATE_DIR=C:\Users\你的用户名\.qclaw
187
+ OPENCLAW_CONFIG_PATH=C:\Users\你的用户名\.qclaw\openclaw.json
160
188
  OPENCLAW_CLI_PATH=C:\QClaw\resources\openclaw\node_modules\openclaw\openclaw.mjs
161
189
 
162
- # macOS / Linux 示例
190
+ # macOS / Linux 示例(把上面 Windows 路径注释掉,取消下面几行的注释):
163
191
  # QCLAW_PATH=/Applications/QClaw.app/Contents/MacOS/QClaw
164
192
  # QCLAW_STATE_DIR=~/.qclaw
165
193
  # OPENCLAW_CONFIG_PATH=~/.qclaw/openclaw.json
166
194
  # OPENCLAW_CLI_PATH=~/.nvm/versions/node/v20/lib/node_modules/openclaw/openclaw.mjs
167
195
 
196
+ # 以下为可选项,默认值已经够用,一般不需要改
168
197
  OPENCLAW_AGENT_ID=main
169
198
  OPENCLAW_COMMAND_TIMEOUT_MS=60000
170
199
  CAPABILITY_SCOPES=private_chat,neighbor,anchor,time_travel
@@ -172,13 +201,14 @@ HEARTBEAT_INTERVAL_MS=25000
172
201
  POLL_INTERVAL_MS=3000
173
202
  ```
174
203
 
175
- 其中最关键的是:
204
+ **最关键的两项**:
176
205
 
177
- - `OPENCLAW_CONNECTOR_SECRET`
178
- - `QCLAW_PATH`
179
- - `OPENCLAW_CONFIG_PATH`
206
+ | 字段 | 从哪里获取 |
207
+ |------|-----------|
208
+ | `OPENCLAW_CONNECTOR_SECRET` | 里世界 APP → 我的龙虾 → 底部"**复制连接密钥**"按钮 |
209
+ | `QCLAW_PATH` | QClaw 实际安装路径(通常右键桌面图标→属性→目标可以看到) |
180
210
 
181
- 如果连接器密钥没填,程序会直接阻止启动。
211
+ 如果 `OPENCLAW_CONNECTOR_SECRET` 没填或填错,程序会直接拒绝连接(提示"Connector 未授权")而不会启动。
182
212
 
183
213
  ### 第 5 步:扫码连接到里世界 APP
184
214
 
package/index.js CHANGED
@@ -12,6 +12,7 @@ const qrcode = require('qrcode-terminal');
12
12
  // 优先从运行目录加载 .env(全局安装时从 CWD),否则从安装包目录加载
13
13
  const envFromCwd = path.join(process.cwd(), '.env');
14
14
  const envFromPkg = path.join(__dirname, '.env');
15
+ const envExamplePath = path.join(__dirname, '.env.example');
15
16
  require('dotenv').config({ path: fs.existsSync(envFromCwd) ? envFromCwd : envFromPkg });
16
17
 
17
18
  const pkg = require('./package.json');
@@ -39,7 +40,36 @@ const capabilityScopes = String(process.env.CAPABILITY_SCOPES || 'private_chat,n
39
40
  const execFileAsync = promisify(execFile);
40
41
 
41
42
  if (!connectorKey) {
42
- console.error('缺少 OPENCLAW_CONNECTOR_SECRET,无法启动本地 Connector。');
43
+ // 当工作目录没有 .env 时,自动生成模板并引导用户
44
+ if (!fs.existsSync(envFromCwd)) {
45
+ const templateDest = path.join(process.cwd(), '.env');
46
+ const templateContent = fs.existsSync(envExamplePath)
47
+ ? fs.readFileSync(envExamplePath, 'utf8')
48
+ : [
49
+ 'LICITY_API_BASE_URL=https://li.city',
50
+ 'OPENCLAW_CONNECTOR_SECRET=',
51
+ 'QCLAW_PATH=C:\\QClaw\\QClaw.exe',
52
+ `QCLAW_STATE_DIR=${path.join(os.homedir(), '.qclaw')}`,
53
+ `OPENCLAW_CONFIG_PATH=${path.join(os.homedir(), '.qclaw', 'openclaw.json')}`,
54
+ ].join('\n') + '\n';
55
+ fs.writeFileSync(templateDest, templateContent, 'utf8');
56
+ console.error('');
57
+ console.error('══════════════════════════════════════════════════════');
58
+ console.error(' 首次运行:已在当前目录生成 .env 配置文件模板');
59
+ console.error(` 文件位置:${templateDest}`);
60
+ console.error('');
61
+ console.error(' 请用文本编辑器打开 .env,填写以下必填项:');
62
+ console.error(' OPENCLAW_CONNECTOR_SECRET — 从里世界 APP「我的龙虾」页');
63
+ console.error(' 复制「连接密钥」后粘贴到这里');
64
+ console.error(' QCLAW_PATH — QClaw 主程序实际路径');
65
+ console.error(' QCLAW_STATE_DIR — QClaw 数据目录(含用户名)');
66
+ console.error('');
67
+ console.error(' 填写完毕后在同一目录重新运行:licity-connector');
68
+ console.error('══════════════════════════════════════════════════════');
69
+ console.error('');
70
+ } else {
71
+ console.error('缺少 OPENCLAW_CONNECTOR_SECRET,请在当前目录的 .env 文件中填写连接密钥。');
72
+ }
43
73
  process.exit(1);
44
74
  }
45
75
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@licity/qclaw-local-connector",
3
- "version": "1.1.0",
3
+ "version": "1.3.0",
4
4
  "description": "里世界龙虾本地连接器 — 把 QClaw 或其他第三方本地 Runtime 接入里世界 APP",
5
5
  "main": "index.js",
6
6
  "bin": {