qq-codex-bridge 0.1.2 → 0.1.4
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/.env.example +62 -0
- package/README.md +232 -287
- package/bin/chatgpt-desktop.js +2 -0
- package/bin/qq-codex-weixin-gateway.js +14 -0
- package/dist/apps/bridge-daemon/src/bootstrap.js +161 -31
- package/dist/apps/bridge-daemon/src/cli.js +5 -1
- package/dist/apps/bridge-daemon/src/config.js +168 -37
- package/dist/apps/bridge-daemon/src/http-server.js +23 -11
- package/dist/apps/bridge-daemon/src/main.js +163 -29
- package/dist/apps/bridge-daemon/src/thread-command-handler.js +320 -23
- package/dist/apps/chatgpt-desktop-cli/src/cli.js +191 -0
- package/dist/apps/weixin-gateway/src/cli.js +446 -0
- package/dist/apps/weixin-gateway/src/config.js +135 -0
- package/dist/apps/weixin-gateway/src/dev.js +2 -0
- package/dist/apps/weixin-gateway/src/message-store.js +50 -0
- package/dist/apps/weixin-gateway/src/server.js +216 -0
- package/dist/apps/weixin-gateway/src/state.js +163 -0
- package/dist/apps/weixin-gateway/src/weixin-client.js +520 -0
- package/dist/packages/adapters/chatgpt-desktop/src/ax-client.js +472 -0
- package/dist/packages/adapters/chatgpt-desktop/src/bridge-provider.js +82 -0
- package/dist/packages/adapters/chatgpt-desktop/src/driver.js +161 -0
- package/dist/packages/adapters/chatgpt-desktop/src/image-cache.js +155 -0
- package/dist/packages/adapters/chatgpt-desktop/src/session-registry.js +48 -0
- package/dist/packages/adapters/chatgpt-desktop/src/types.js +1 -0
- package/dist/packages/adapters/codex-desktop/src/codex-app-server-driver.js +810 -0
- package/dist/packages/adapters/codex-desktop/src/codex-app-ui-notification-forwarder.js +33 -0
- package/dist/packages/adapters/codex-desktop/src/codex-desktop-driver.js +727 -123
- package/dist/packages/adapters/codex-desktop/src/codex-local-rollout-reader.js +227 -0
- package/dist/packages/adapters/codex-desktop/src/codex-local-submission-reader.js +142 -0
- package/dist/packages/adapters/weixin/src/weixin-channel-adapter.js +15 -0
- package/dist/packages/adapters/weixin/src/weixin-http-client.js +42 -0
- package/dist/packages/adapters/weixin/src/weixin-sender.js +200 -0
- package/dist/packages/adapters/weixin/src/weixin-webhook.js +35 -0
- package/dist/packages/orchestrator/src/bridge-orchestrator.js +72 -25
- package/dist/packages/orchestrator/src/weixin-outbound-format.js +55 -0
- package/dist/packages/ports/src/chat.js +1 -0
- package/dist/packages/store/src/session-repo.js +16 -3
- package/dist/packages/store/src/sqlite.js +3 -0
- package/package.json +8 -2
package/.env.example
CHANGED
|
@@ -4,6 +4,16 @@
|
|
|
4
4
|
QQBOT_APP_ID=你的AppID
|
|
5
5
|
QQBOT_CLIENT_SECRET=你的ClientSecret
|
|
6
6
|
|
|
7
|
+
# 多 QQ Bot 可选配置。启用后会覆盖上面的单 bot 入口。
|
|
8
|
+
# QQBOTS_JSON=[{"accountId":"main","appId":"你的AppID","clientSecret":"你的ClientSecret","markdownSupport":false},{"accountId":"shop","appId":"另一个AppID","clientSecret":"另一个ClientSecret","markdownSupport":false}]
|
|
9
|
+
#
|
|
10
|
+
# 也可以用 ID 列表 + 分账号变量:
|
|
11
|
+
# QQBOT_ACCOUNT_IDS=main,shop
|
|
12
|
+
# QQBOT_MAIN_APP_ID=你的AppID
|
|
13
|
+
# QQBOT_MAIN_CLIENT_SECRET=你的ClientSecret
|
|
14
|
+
# QQBOT_SHOP_APP_ID=另一个AppID
|
|
15
|
+
# QQBOT_SHOP_CLIENT_SECRET=另一个ClientSecret
|
|
16
|
+
|
|
7
17
|
# =========================
|
|
8
18
|
# Codex Desktop
|
|
9
19
|
# =========================
|
|
@@ -21,6 +31,58 @@ QQ_CODEX_LISTEN_HOST=127.0.0.1
|
|
|
21
31
|
QQ_CODEX_LISTEN_PORT=3100
|
|
22
32
|
QQ_CODEX_WEBHOOK_PATH=/webhooks/qq
|
|
23
33
|
|
|
34
|
+
# =========================
|
|
35
|
+
# 微信文本通道(可选)
|
|
36
|
+
# =========================
|
|
37
|
+
# 当前支持一个真实微信 long-poll 网关:
|
|
38
|
+
# - 网关主动从微信侧拉取消息,再转发到 bridge
|
|
39
|
+
# - bridge 的微信出站仍通过本地网关 HTTP 接口回发
|
|
40
|
+
WEIXIN_ENABLED=false
|
|
41
|
+
WEIXIN_ACCOUNT_ID=default
|
|
42
|
+
WEIXIN_WEBHOOK_PATH=/webhooks/weixin
|
|
43
|
+
# WEIXIN_EGRESS_BASE_URL=http://127.0.0.1:3200
|
|
44
|
+
# WEIXIN_EGRESS_TOKEN=your-token
|
|
45
|
+
#
|
|
46
|
+
# 多微信账号可选配置。每个账号需要独立 webhookPath 和独立网关/egress。
|
|
47
|
+
# WEIXIN_ACCOUNTS_JSON=[{"accountId":"main","webhookPath":"/webhooks/weixin/main","egressBaseUrl":"http://127.0.0.1:3201","egressToken":"token-main"},{"accountId":"shop","webhookPath":"/webhooks/weixin/shop","egressBaseUrl":"http://127.0.0.1:3202","egressToken":"token-shop"}]
|
|
48
|
+
#
|
|
49
|
+
# 或使用 ID 列表 + 分账号变量:
|
|
50
|
+
# WEIXIN_ACCOUNT_IDS=main,shop
|
|
51
|
+
# WEIXIN_MAIN_WEBHOOK_PATH=/webhooks/weixin/main
|
|
52
|
+
# WEIXIN_MAIN_EGRESS_BASE_URL=http://127.0.0.1:3201
|
|
53
|
+
# WEIXIN_MAIN_EGRESS_TOKEN=token-main
|
|
54
|
+
# WEIXIN_SHOP_WEBHOOK_PATH=/webhooks/weixin/shop
|
|
55
|
+
# WEIXIN_SHOP_EGRESS_BASE_URL=http://127.0.0.1:3202
|
|
56
|
+
# WEIXIN_SHOP_EGRESS_TOKEN=token-shop
|
|
57
|
+
|
|
58
|
+
# 真实微信网关(可选)
|
|
59
|
+
# 启动方式:
|
|
60
|
+
# pnpm dev:weixin-gateway
|
|
61
|
+
# qq-codex-weixin-gateway
|
|
62
|
+
# 首次登录:
|
|
63
|
+
# qq-codex-weixin-gateway --weixin-login
|
|
64
|
+
WEIXIN_GATEWAY_LISTEN_HOST=127.0.0.1
|
|
65
|
+
WEIXIN_GATEWAY_LISTEN_PORT=3200
|
|
66
|
+
WEIXIN_GATEWAY_BRIDGE_BASE_URL=http://127.0.0.1:3100
|
|
67
|
+
WEIXIN_GATEWAY_BRIDGE_WEBHOOK_PATH=/webhooks/weixin
|
|
68
|
+
# WEIXIN_GATEWAY_EXPECTED_TOKEN=your-token
|
|
69
|
+
WEIXIN_GATEWAY_MESSAGE_STORE_PATH=runtime/weixin-gateway-messages.ndjson
|
|
70
|
+
WEIXIN_GATEWAY_RECENT_MESSAGE_LIMIT=100
|
|
71
|
+
# 单进程多微信账号网关可选配置。每个账号会启动一个 long-poll client。
|
|
72
|
+
# WEIXIN_GATEWAY_ACCOUNTS_JSON=[{"accountId":"main","bridgeWebhookPath":"/webhooks/weixin/main","baseUrl":"https://ilinkai.weixin.qq.com","token":"weixin-token-main","messageStorePath":"runtime/weixin-gateway-main.ndjson"},{"accountId":"shop","bridgeWebhookPath":"/webhooks/weixin/shop","baseUrl":"https://ilinkai.weixin.qq.com","token":"weixin-token-shop","messageStorePath":"runtime/weixin-gateway-shop.ndjson"}]
|
|
73
|
+
# 或使用 WEIXIN_GATEWAY_ACCOUNT_IDS=main,shop,并配置 WEIXIN_MAIN_TOKEN / WEIXIN_SHOP_TOKEN。
|
|
74
|
+
WEIXIN_BASE_URL=https://ilinkai.weixin.qq.com
|
|
75
|
+
# WEIXIN_TOKEN=
|
|
76
|
+
WEIXIN_LONG_POLL_TIMEOUT_MS=35000
|
|
77
|
+
WEIXIN_API_TIMEOUT_MS=15000
|
|
78
|
+
WEIXIN_GATEWAY_STATE_FILE_PATH=runtime/weixin-gateway-state.json
|
|
79
|
+
WEIXIN_LOGIN_BASE_URL=https://ilinkai.weixin.qq.com
|
|
80
|
+
WEIXIN_BOT_TYPE=3
|
|
81
|
+
WEIXIN_QR_FETCH_TIMEOUT_MS=10000
|
|
82
|
+
WEIXIN_QR_POLL_TIMEOUT_MS=35000
|
|
83
|
+
WEIXIN_QR_TOTAL_TIMEOUT_MS=480000
|
|
84
|
+
WEIXIN_GATEWAY_STATE_WATCH_INTERVAL_MS=1000
|
|
85
|
+
|
|
24
86
|
# 是否启用 QQ markdown 文本发送。
|
|
25
87
|
# 默认推荐保持关闭,让普通文本尽量按原生聊天气泡渲染。
|
|
26
88
|
QQBOT_MARKDOWN_SUPPORT=false
|