@symerian/symi 3.0.16 → 3.0.17
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/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/docs/.i18n/zh-CN.tm.jsonl +0 -20
- package/docs/automation/cron-jobs.md +0 -2
- package/docs/automation/hooks.md +0 -2
- package/docs/automation/poll.md +0 -8
- package/docs/automation/webhook.md +0 -2
- package/docs/capabilities.md +0 -2
- package/docs/channels/broadcast-groups.md +0 -1
- package/docs/channels/channel-routing.md +4 -10
- package/docs/channels/group-messages.md +0 -2
- package/docs/channels/groups.md +0 -10
- package/docs/channels/index.md +0 -1
- package/docs/channels/matrix.md +0 -2
- package/docs/channels/msteams.md +0 -2
- package/docs/channels/pairing.md +0 -3
- package/docs/channels/signal.md +0 -2
- package/docs/channels/troubleshooting.md +0 -7
- package/docs/cli/channels.md +0 -6
- package/docs/cli/configure.md +0 -1
- package/docs/cli/directory.md +0 -1
- package/docs/cli/index.md +0 -7
- package/docs/cli/message.md +1 -47
- package/docs/cli/status.md +0 -1
- package/docs/concepts/architecture.md +0 -1
- package/docs/concepts/features.md +0 -2
- package/docs/concepts/markdown-formatting.md +6 -8
- package/docs/concepts/memory.md +0 -4
- package/docs/concepts/messages.md +0 -1
- package/docs/concepts/models.md +0 -1
- package/docs/concepts/multi-agent.md +4 -19
- package/docs/concepts/queue.md +0 -3
- package/docs/concepts/retry.md +0 -5
- package/docs/concepts/session-tool.md +0 -2
- package/docs/concepts/session.md +2 -9
- package/docs/concepts/streaming.md +0 -2
- package/docs/concepts/system-prompt.md +0 -1
- package/docs/concepts/timezone.md +0 -1
- package/docs/date-time.md +0 -1
- package/docs/docs.json +2 -11
- package/docs/experiments/plans/cron-add-hardening.md +0 -1
- package/docs/experiments/plans/session-binding-channel-agnostic.md +2 -23
- package/docs/experiments/plans/thread-bound-subagents.md +7 -64
- package/docs/gateway/configuration-examples.md +0 -10
- package/docs/gateway/configuration-reference.md +22 -47
- package/docs/gateway/configuration.md +0 -3
- package/docs/gateway/heartbeat.md +0 -2
- package/docs/gateway/security/index.md +1 -6
- package/docs/gateway/troubleshooting.md +0 -1
- package/docs/help/faq.md +0 -13
- package/docs/help/troubleshooting.md +0 -1
- package/docs/index.md +0 -6
- package/docs/install/ansible.md +2 -3
- package/docs/install/docker.md +1 -7
- package/docs/install/fly.md +0 -14
- package/docs/install/northflank.mdx +7 -11
- package/docs/install/railway.mdx +6 -10
- package/docs/install/render.mdx +1 -2
- package/docs/ja-JP/index.md +0 -3
- package/docs/pi.md +3 -5
- package/docs/platforms/digitalocean.md +0 -1
- package/docs/platforms/mac/voicewake.md +0 -1
- package/docs/providers/index.md +0 -2
- package/docs/refactor/outbound-session-mirroring.md +0 -2
- package/docs/reference/AGENTS.default.md +0 -1
- package/docs/reference/RELEASING.md +0 -1
- package/docs/reference/session-management-compaction.md +0 -1
- package/docs/reference/templates/AGENTS.md +0 -7
- package/docs/reference/wizard.md +0 -4
- package/docs/security/CONTRIBUTING-THREAT-MODEL.md +0 -1
- package/docs/security/README.md +0 -1
- package/docs/security/THREAT-MODEL-ATLAS.md +7 -10
- package/docs/start/docs-directory.md +0 -1
- package/docs/start/hubs.md +0 -1
- package/docs/start/lore.md +0 -3
- package/docs/start/setup.md +0 -2
- package/docs/start/showcase.md +0 -2
- package/docs/start/symi.md +0 -4
- package/docs/start/wizard-cli-reference.md +0 -4
- package/docs/start/wizard.md +3 -4
- package/docs/tools/agent-send.md +0 -1
- package/docs/tools/elevated.md +0 -2
- package/docs/tools/exec-approvals.md +0 -1
- package/docs/tools/index.md +0 -7
- package/docs/tools/multi-agent-sandbox-tools.md +1 -2
- package/docs/tools/reactions.md +0 -1
- package/docs/tools/slash-commands.md +0 -14
- package/docs/tools/symihub.md +0 -1
- package/docs/tts.md +0 -1
- package/docs/web/control-ui.md +0 -1
- package/docs/zh-CN/automation/cron-jobs.md +0 -2
- package/docs/zh-CN/automation/poll.md +0 -8
- package/docs/zh-CN/automation/webhook.md +0 -2
- package/docs/zh-CN/channels/broadcast-groups.md +0 -1
- package/docs/zh-CN/channels/channel-routing.md +4 -9
- package/docs/zh-CN/channels/group-messages.md +0 -2
- package/docs/zh-CN/channels/groups.md +0 -10
- package/docs/zh-CN/channels/imessage.md +0 -2
- package/docs/zh-CN/channels/index.md +0 -1
- package/docs/zh-CN/channels/msteams.md +0 -2
- package/docs/zh-CN/channels/pairing.md +0 -3
- package/docs/zh-CN/channels/signal.md +0 -2
- package/docs/zh-CN/channels/slack.md +0 -2
- package/docs/zh-CN/channels/telegram.md +0 -3
- package/docs/zh-CN/channels/troubleshooting.md +0 -2
- package/docs/zh-CN/cli/channels.md +0 -6
- package/docs/zh-CN/cli/configure.md +0 -1
- package/docs/zh-CN/cli/directory.md +0 -1
- package/docs/zh-CN/cli/index.md +0 -7
- package/docs/zh-CN/cli/message.md +1 -42
- package/docs/zh-CN/cli/status.md +0 -1
- package/docs/zh-CN/concepts/architecture.md +0 -1
- package/docs/zh-CN/concepts/features.md +0 -2
- package/docs/zh-CN/concepts/markdown-formatting.md +6 -8
- package/docs/zh-CN/concepts/messages.md +0 -1
- package/docs/zh-CN/concepts/multi-agent.md +4 -5
- package/docs/zh-CN/concepts/queue.md +0 -3
- package/docs/zh-CN/concepts/retry.md +0 -5
- package/docs/zh-CN/concepts/session-tool.md +0 -2
- package/docs/zh-CN/concepts/session.md +3 -11
- package/docs/zh-CN/concepts/streaming.md +0 -2
- package/docs/zh-CN/concepts/system-prompt.md +0 -2
- package/docs/zh-CN/concepts/timezone.md +0 -2
- package/docs/zh-CN/date-time.md +0 -1
- package/docs/zh-CN/experiments/plans/cron-add-hardening.md +0 -1
- package/docs/zh-CN/gateway/configuration-examples.md +0 -7
- package/docs/zh-CN/gateway/configuration.md +2 -50
- package/docs/zh-CN/gateway/heartbeat.md +0 -2
- package/docs/zh-CN/gateway/security/index.md +1 -6
- package/docs/zh-CN/gateway/troubleshooting.md +1 -14
- package/docs/zh-CN/help/faq.md +0 -15
- package/docs/zh-CN/index.md +0 -3
- package/docs/zh-CN/install/ansible.md +2 -3
- package/docs/zh-CN/install/docker.md +1 -7
- package/docs/zh-CN/install/fly.md +0 -14
- package/docs/zh-CN/install/northflank.mdx +7 -11
- package/docs/zh-CN/install/railway.mdx +6 -10
- package/docs/zh-CN/install/render.mdx +1 -2
- package/docs/zh-CN/pi.md +3 -5
- package/docs/zh-CN/platforms/digitalocean.md +0 -1
- package/docs/zh-CN/platforms/mac/voicewake.md +0 -1
- package/docs/zh-CN/providers/index.md +0 -2
- package/docs/zh-CN/refactor/outbound-session-mirroring.md +0 -2
- package/docs/zh-CN/reference/AGENTS.default.md +0 -1
- package/docs/zh-CN/reference/RELEASING.md +0 -1
- package/docs/zh-CN/reference/session-management-compaction.md +0 -1
- package/docs/zh-CN/reference/templates/AGENTS.md +0 -5
- package/docs/zh-CN/start/docs-directory.md +0 -1
- package/docs/zh-CN/start/getting-started.md +0 -5
- package/docs/zh-CN/start/hubs.md +0 -1
- package/docs/zh-CN/start/lore.md +0 -3
- package/docs/zh-CN/start/setup.md +0 -2
- package/docs/zh-CN/start/showcase.md +0 -2
- package/docs/zh-CN/start/symi.md +0 -4
- package/docs/zh-CN/start/wizard.md +0 -5
- package/docs/zh-CN/tools/agent-send.md +0 -1
- package/docs/zh-CN/tools/elevated.md +0 -2
- package/docs/zh-CN/tools/exec-approvals.md +0 -1
- package/docs/zh-CN/tools/index.md +0 -7
- package/docs/zh-CN/tools/multi-agent-sandbox-tools.md +1 -2
- package/docs/zh-CN/tools/reactions.md +0 -1
- package/docs/zh-CN/tools/slash-commands.md +0 -9
- package/docs/zh-CN/tts.md +0 -2
- package/docs/zh-CN/web/control-ui.md +0 -1
- package/package.json +1 -1
- package/docs/channels/discord.md +0 -998
- package/docs/zh-CN/channels/discord.md +0 -468
|
@@ -19,7 +19,6 @@ Symi 从 `~/.symi/symi.json` 读取可选的 **JSON5** 配置(支持注释和
|
|
|
19
19
|
如果文件不存在,Symi 使用安全的默认值(内置 Pi 智能体 + 按发送者分会话 + 工作区 `~/.symi/workspace`)。通常只在以下情况需要配置:
|
|
20
20
|
|
|
21
21
|
- 限制谁可以触发机器人(`channels.whatsapp.allowFrom`、`channels.telegram.allowFrom` 等)
|
|
22
|
-
- 控制群组白名单 + 提及行为(`channels.whatsapp.groups`、`channels.telegram.groups`、`channels.discord.guilds`、`agents.list[].groupChat`)
|
|
23
22
|
- 自定义消息前缀(`messages`)
|
|
24
23
|
- 设置智能体工作区(`agents.defaults.workspace` 或 `agents.list[].workspace`)
|
|
25
24
|
- 调整内置智能体默认值(`agents.defaults`)和会话行为(`session`)
|
|
@@ -411,7 +410,6 @@ Symi 在以下位置存储**每个智能体的**认证配置文件(OAuth + API
|
|
|
411
410
|
如果设置了,Symi 会推导默认值(仅在你未明确设置时):
|
|
412
411
|
|
|
413
412
|
- `messages.ackReaction` 来自**活跃智能体**的 `identity.emoji`(回退到 👀)
|
|
414
|
-
- `agents.list[].groupChat.mentionPatterns` 来自智能体的 `identity.name`/`identity.emoji`(因此 "@Samantha" 在 Telegram/Slack/Discord/Google Chat/iMessage/WhatsApp 的群组中均可使用)
|
|
415
413
|
- `identity.avatar` 接受工作区相对图片路径或远程 URL/data URL。本地文件必须位于智能体工作区内。
|
|
416
414
|
|
|
417
415
|
`identity.avatar` 接受:
|
|
@@ -560,8 +558,6 @@ Symi 在以下位置存储**每个智能体的**认证配置文件(OAuth + API
|
|
|
560
558
|
- 出站命令默认使用 `default` 账号(如果存在);否则使用第一个配置的账号 id(排序后)。
|
|
561
559
|
- 旧版单账号 Baileys 认证目录由 `symi doctor` 迁移到 `whatsapp/default`。
|
|
562
560
|
|
|
563
|
-
### `channels.telegram.accounts` / `channels.discord.accounts` / `channels.googlechat.accounts` / `channels.slack.accounts` / `channels.mattermost.accounts` / `channels.signal.accounts` / `channels.imessage.accounts`
|
|
564
|
-
|
|
565
561
|
每个渠道运行多个账号(每个账号有自己的 `accountId` 和可选的 `name`):
|
|
566
562
|
|
|
567
563
|
```json5
|
|
@@ -592,8 +588,6 @@ Symi 在以下位置存储**每个智能体的**认证配置文件(OAuth + API
|
|
|
592
588
|
|
|
593
589
|
### 群聊提及门控(`agents.list[].groupChat` + `messages.groupChat`)
|
|
594
590
|
|
|
595
|
-
群消息默认**需要提及**(元数据提及或正则模式)。适用于 WhatsApp、Telegram、Discord、Google Chat 和 iMessage 群聊。
|
|
596
|
-
|
|
597
591
|
**提及类型:**
|
|
598
592
|
|
|
599
593
|
- **元数据提及**:原生平台 @提及(例如 WhatsApp 点按提及)。在 WhatsApp 自聊天模式中被忽略(参见 `channels.whatsapp.allowFrom`)。
|
|
@@ -636,8 +630,6 @@ Symi 在以下位置存储**每个智能体的**认证配置文件(OAuth + API
|
|
|
636
630
|
2. 提供商默认值:`channels.<provider>.dmHistoryLimit`
|
|
637
631
|
3. 无限制(保留所有历史)
|
|
638
632
|
|
|
639
|
-
支持的提供商:`telegram`、`whatsapp`、`discord`、`slack`、`signal`、`imessage`、`msteams`。
|
|
640
|
-
|
|
641
633
|
每智能体覆盖(设置后优先,即使为 `[]`):
|
|
642
634
|
|
|
643
635
|
```json5
|
|
@@ -651,8 +643,6 @@ Symi 在以下位置存储**每个智能体的**认证配置文件(OAuth + API
|
|
|
651
643
|
}
|
|
652
644
|
```
|
|
653
645
|
|
|
654
|
-
提及门控默认值按渠道设置(`channels.whatsapp.groups`、`channels.telegram.groups`、`channels.imessage.groups`、`channels.discord.guilds`)。当设置了 `*.groups` 时,它也充当群组白名单;包含 `"*"` 以允许所有群组。
|
|
655
|
-
|
|
656
646
|
仅响应特定文本触发器(忽略原生 @提及):
|
|
657
647
|
|
|
658
648
|
```json5
|
|
@@ -705,7 +695,6 @@ Symi 在以下位置存储**每个智能体的**认证配置文件(OAuth + API
|
|
|
705
695
|
groupPolicy: "allowlist",
|
|
706
696
|
groupAllowFrom: ["user@org.com"],
|
|
707
697
|
},
|
|
708
|
-
discord: {
|
|
709
698
|
groupPolicy: "allowlist",
|
|
710
699
|
guilds: {
|
|
711
700
|
GUILD_ID: {
|
|
@@ -728,8 +717,6 @@ Symi 在以下位置存储**每个智能体的**认证配置文件(OAuth + API
|
|
|
728
717
|
- `"allowlist"`:仅允许匹配配置白名单的群组/房间。
|
|
729
718
|
- `channels.defaults.groupPolicy` 设置提供商的 `groupPolicy` 未设置时的默认值。
|
|
730
719
|
- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams 使用 `groupAllowFrom`(回退:显式 `allowFrom`)。
|
|
731
|
-
- Discord/Slack 使用渠道白名单(`channels.discord.guilds.*.channels`、`channels.slack.channels`)。
|
|
732
|
-
- 群组私聊(Discord/Slack)仍由 `dm.groupEnabled` + `dm.groupChannels` 控制。
|
|
733
720
|
- 默认为 `groupPolicy: "allowlist"`(除非被 `channels.defaults.groupPolicy` 覆盖);如果未配置白名单,群组消息将被阻止。
|
|
734
721
|
|
|
735
722
|
### 多智能体路由(`agents.list` + `bindings`)
|
|
@@ -862,7 +849,6 @@ Symi 在以下位置存储**每个智能体的**认证配置文件(OAuth + API
|
|
|
862
849
|
"whatsapp",
|
|
863
850
|
"telegram",
|
|
864
851
|
"slack",
|
|
865
|
-
"discord",
|
|
866
852
|
"gateway",
|
|
867
853
|
],
|
|
868
854
|
deny: [
|
|
@@ -941,7 +927,6 @@ Symi 在以下位置存储**每个智能体的**认证配置文件(OAuth + API
|
|
|
941
927
|
byChannel: {
|
|
942
928
|
whatsapp: "collect",
|
|
943
929
|
telegram: "collect",
|
|
944
|
-
discord: "collect",
|
|
945
930
|
imessage: "collect",
|
|
946
931
|
webchat: "collect",
|
|
947
932
|
},
|
|
@@ -962,7 +947,6 @@ Symi 在以下位置存储**每个智能体的**认证配置文件(OAuth + API
|
|
|
962
947
|
byChannel: {
|
|
963
948
|
whatsapp: 5000,
|
|
964
949
|
slack: 1500,
|
|
965
|
-
discord: 1500,
|
|
966
950
|
},
|
|
967
951
|
},
|
|
968
952
|
},
|
|
@@ -997,8 +981,6 @@ Symi 在以下位置存储**每个智能体的**认证配置文件(OAuth + API
|
|
|
997
981
|
|
|
998
982
|
- 文本命令必须作为**独立**消息发送,并使用前导 `/`(无纯文本别名)。
|
|
999
983
|
- `commands.text: false` 禁用解析聊天消息中的命令。
|
|
1000
|
-
- `commands.native: "auto"`(默认)为 Discord/Telegram 启用原生命令,Slack 保持关闭;不支持的渠道保持纯文本。
|
|
1001
|
-
- 设为 `commands.native: true|false` 强制全部开启或关闭,或按渠道覆盖 `channels.discord.commands.native`、`channels.telegram.commands.native`、`channels.slack.commands.native`(bool 或 `"auto"`)。`false` 在启动时清除 Discord/Telegram 上先前注册的命令;Slack 命令在 Slack 应用中管理。
|
|
1002
984
|
- `channels.telegram.customCommands` 添加额外的 Telegram 机器人菜单项。名称会被规范化;与原生命令冲突的会被忽略。
|
|
1003
985
|
- `commands.bash: true` 启用 `! <cmd>` 运行主机 shell 命令(`/bash <cmd>` 也可作为别名)。需要 `tools.elevated.enabled` 并在 `tools.elevated.allowFrom.<channel>` 中添加发送者白名单。
|
|
1004
986
|
- `commands.bashForegroundMs` 控制 bash 在后台运行前等待的时间。当 bash 任务正在运行时,新的 `! <cmd>` 请求会被拒绝(一次一个)。
|
|
@@ -1103,15 +1085,9 @@ Symi 仅在存在 `channels.telegram` 配置段时启动 Telegram。机器人 to
|
|
|
1103
1085
|
- `/reasoning stream` 将推理过程流式传输到草稿中,然后发送最终答案。
|
|
1104
1086
|
重试策略默认值和行为记录在[重试策略](/concepts/retry)中。
|
|
1105
1087
|
|
|
1106
|
-
### `channels.discord`(机器人传输)
|
|
1107
|
-
|
|
1108
|
-
通过设置机器人 token 和可选的门控配置 Discord 机器人:
|
|
1109
|
-
多账号支持在 `channels.discord.accounts` 下(参见上方多账号部分)。环境变量 token 仅适用于默认账号。
|
|
1110
|
-
|
|
1111
1088
|
```json5
|
|
1112
1089
|
{
|
|
1113
1090
|
channels: {
|
|
1114
|
-
discord: {
|
|
1115
1091
|
enabled: true,
|
|
1116
1092
|
token: "your-bot-token",
|
|
1117
1093
|
mediaMaxMb: 8, // 限制入站媒体大小
|
|
@@ -1164,7 +1140,6 @@ Symi 仅在存在 `channels.telegram` 配置段时启动 Telegram。机器人 to
|
|
|
1164
1140
|
historyLimit: 20, // 包含最近 N 条服务器消息作为上下文
|
|
1165
1141
|
textChunkLimit: 2000, // 可选出站文本分块大小(字符数)
|
|
1166
1142
|
chunkMode: "length", // 可选分块模式(length | newline)
|
|
1167
|
-
maxLinesPerMessage: 17, // 每条消息的软最大行数(Discord UI 裁剪)
|
|
1168
1143
|
retry: {
|
|
1169
1144
|
// 出站重试策略
|
|
1170
1145
|
attempts: 3,
|
|
@@ -1177,16 +1152,13 @@ Symi 仅在存在 `channels.telegram` 配置段时启动 Telegram。机器人 to
|
|
|
1177
1152
|
}
|
|
1178
1153
|
```
|
|
1179
1154
|
|
|
1180
|
-
Symi 仅在存在 `channels.discord` 配置段时启动 Discord。token 从 `channels.discord.token` 解析,`DISCORD_BOT_TOKEN` 作为默认账号的回退(除非 `channels.discord.enabled` 为 `false`)。在为 cron/CLI 命令指定投递目标时,使用 `user:<id>`(私聊)或 `channel:<id>`(服务器频道);裸数字 ID 有歧义会被拒绝。
|
|
1181
1155
|
服务器 slug 为小写,空格替换为 `-`;频道键使用 slug 化的频道名称(无前导 `#`)。建议使用服务器 id 作为键以避免重命名歧义。
|
|
1182
|
-
机器人发送的消息默认被忽略。通过 `channels.discord.allowBots` 启用(自身消息仍会被过滤以防止自回复循环)。
|
|
1183
1156
|
反应通知模式:
|
|
1184
1157
|
|
|
1185
1158
|
- `off`:无反应事件。
|
|
1186
1159
|
- `own`:机器人自身消息上的反应(默认)。
|
|
1187
1160
|
- `all`:所有消息上的所有反应。
|
|
1188
1161
|
- `allowlist`:`guilds.<id>.users` 中的用户在所有消息上的反应(空列表禁用)。
|
|
1189
|
-
出站文本按 `channels.discord.textChunkLimit`(默认 2000)分块。设置 `channels.discord.chunkMode="newline"` 在长度分块前按空行(段落边界)分割。Discord 客户端可能裁剪过高的消息,因此 `channels.discord.maxLinesPerMessage`(默认 17)即使在 2000 字符以内也会分割长多行回复。
|
|
1190
1162
|
重试策略默认值和行为记录在[重试策略](/concepts/retry)中。
|
|
1191
1163
|
|
|
1192
1164
|
### `channels.googlechat`(Chat API webhook)
|
|
@@ -1537,8 +1509,6 @@ exec ssh -T gateway-host imsg "$@"
|
|
|
1537
1509
|
|
|
1538
1510
|
WhatsApp 入站前缀通过 `channels.whatsapp.messagePrefix` 配置(已弃用:`messages.messagePrefix`)。默认保持**不变**:当 `channels.whatsapp.allowFrom` 为空时为 `"[symi]"`,否则为 `""`(无前缀)。使用 `"[symi]"` 时,如果路由的智能体设置了 `identity.name`,Symi 会改用 `[{identity.name}]`。
|
|
1539
1511
|
|
|
1540
|
-
`ackReaction` 在支持反应的渠道(Slack/Discord/Telegram/Google Chat)上发送尽力而为的表情反应来确认入站消息。设置时默认为活跃智能体的 `identity.emoji`,否则为 `"👀"`。设为 `""` 禁用。
|
|
1541
|
-
|
|
1542
1512
|
`ackReactionScope` 控制反应触发时机:
|
|
1543
1513
|
|
|
1544
1514
|
- `group-mentions`(默认):仅在群组/房间要求提及**且**机器人被提及时
|
|
@@ -1546,8 +1516,6 @@ WhatsApp 入站前缀通过 `channels.whatsapp.messagePrefix` 配置(已弃用
|
|
|
1546
1516
|
- `direct`:仅私聊消息
|
|
1547
1517
|
- `all`:所有消息
|
|
1548
1518
|
|
|
1549
|
-
`removeAckAfterReply` 在发送回复后移除机器人的确认反应(仅 Slack/Discord/Telegram/Google Chat)。默认:`false`。
|
|
1550
|
-
|
|
1551
1519
|
#### `messages.tts`
|
|
1552
1520
|
|
|
1553
1521
|
为出站回复启用文字转语音。开启后,Symi 使用 ElevenLabs 或 OpenAI 生成音频并附加到回复中。Telegram 使用 Opus 语音消息;其他渠道发送 MP3 音频。
|
|
@@ -1933,10 +1901,8 @@ MiniMax 认证:设置 `MINIMAX_API_KEY`(环境变量)或配置 `models.pro
|
|
|
1933
1901
|
```
|
|
1934
1902
|
- `agents.defaults.blockStreamingCoalesce`:发送前合并流式块。
|
|
1935
1903
|
默认为 `{ idleMs: 1000 }`,从 `blockStreamingChunk` 继承 `minChars`,
|
|
1936
|
-
`maxChars` 上限为渠道文本限制。Signal/Slack/Discord/Google Chat 默认
|
|
1937
1904
|
`minChars: 1500`,除非被覆盖。
|
|
1938
1905
|
渠道覆盖:`channels.whatsapp.blockStreamingCoalesce`、`channels.telegram.blockStreamingCoalesce`、
|
|
1939
|
-
`channels.discord.blockStreamingCoalesce`、`channels.slack.blockStreamingCoalesce`、`channels.mattermost.blockStreamingCoalesce`、
|
|
1940
1906
|
`channels.signal.blockStreamingCoalesce`、`channels.imessage.blockStreamingCoalesce`、`channels.msteams.blockStreamingCoalesce`、
|
|
1941
1907
|
`channels.googlechat.blockStreamingCoalesce`
|
|
1942
1908
|
(及每账号变体)。
|
|
@@ -1974,7 +1940,6 @@ Z.AI 模型可通过 `zai/<model>` 使用(例如 `zai/glm-4.7`),需要环
|
|
|
1974
1940
|
- `includeReasoning`:为 `true` 时,心跳也会传递单独的 `Reasoning:` 消息(与 `/reasoning on` 相同形式)。默认:`false`。
|
|
1975
1941
|
- `session`:可选的会话键,控制心跳在哪个会话中运行。默认:`main`。
|
|
1976
1942
|
- `to`:可选的收件人覆盖(渠道特定 id,例如 WhatsApp 的 E.164,Telegram 的聊天 id)。
|
|
1977
|
-
- `target`:可选的投递渠道(`last`、`whatsapp`、`telegram`、`discord`、`slack`、`msteams`、`signal`、`imessage`、`none`)。默认:`last`。
|
|
1978
1943
|
- `prompt`:可选的心跳内容覆盖(默认:`Read SYMIPULSE.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply SYMIPULSE_OK.`)。覆盖值按原样发送;如果仍需读取文件,请包含 `Read SYMIPULSE.md` 行。
|
|
1979
1944
|
- `ackMaxChars`:`SYMIPULSE_OK` 之后投递前允许的最大字符数(默认:300)。
|
|
1980
1945
|
|
|
@@ -2090,13 +2055,10 @@ Z.AI 模型可通过 `zai/<model>` 使用(例如 `zai/glm-4.7`),需要环
|
|
|
2090
2055
|
|
|
2091
2056
|
每智能体覆盖:`agents.list[].tools.profile`。
|
|
2092
2057
|
|
|
2093
|
-
示例(默认仅消息传递,另外允许 Slack + Discord 工具):
|
|
2094
|
-
|
|
2095
2058
|
```json5
|
|
2096
2059
|
{
|
|
2097
2060
|
tools: {
|
|
2098
2061
|
profile: "messaging",
|
|
2099
|
-
allow: ["slack", "discord"],
|
|
2100
2062
|
},
|
|
2101
2063
|
}
|
|
2102
2064
|
```
|
|
@@ -2176,7 +2138,6 @@ Z.AI 模型可通过 `zai/<model>` 使用(例如 `zai/glm-4.7`),需要环
|
|
|
2176
2138
|
- `allowFrom`:每渠道白名单(空 = 禁用)
|
|
2177
2139
|
- `whatsapp`:E.164 号码
|
|
2178
2140
|
- `telegram`:聊天 id 或用户名
|
|
2179
|
-
- `discord`:用户 id 或用户名(省略时回退到 `channels.discord.dm.allowFrom`)
|
|
2180
2141
|
- `signal`:E.164 号码
|
|
2181
2142
|
- `imessage`:句柄/聊天 id
|
|
2182
2143
|
- `webchat`:会话 id 或用户名
|
|
@@ -2190,7 +2151,6 @@ Z.AI 模型可通过 `zai/<model>` 使用(例如 `zai/glm-4.7`),需要环
|
|
|
2190
2151
|
enabled: true,
|
|
2191
2152
|
allowFrom: {
|
|
2192
2153
|
whatsapp: ["+15555550123"],
|
|
2193
|
-
discord: ["steipete", "1234567890123"],
|
|
2194
2154
|
},
|
|
2195
2155
|
},
|
|
2196
2156
|
},
|
|
@@ -2325,7 +2285,6 @@ Z.AI 模型可通过 `zai/<model>` 使用(例如 `zai/glm-4.7`),需要环
|
|
|
2325
2285
|
"sessions_spawn",
|
|
2326
2286
|
"session_status",
|
|
2327
2287
|
],
|
|
2328
|
-
deny: ["browser", "canvas", "nodes", "cron", "discord", "gateway"],
|
|
2329
2288
|
},
|
|
2330
2289
|
},
|
|
2331
2290
|
},
|
|
@@ -2679,9 +2638,7 @@ Z.AI 模型通过内置的 `zai` 提供商提供。在环境中设置 `ZAI_API_K
|
|
|
2679
2638
|
session: {
|
|
2680
2639
|
scope: "per-sender",
|
|
2681
2640
|
dmScope: "main",
|
|
2682
|
-
identityLinks: {
|
|
2683
|
-
alice: ["telegram:123456789", "discord:987654321012345678"],
|
|
2684
|
-
},
|
|
2641
|
+
identityLinks: {},
|
|
2685
2642
|
reset: {
|
|
2686
2643
|
mode: "daily",
|
|
2687
2644
|
atHour: 4,
|
|
@@ -2703,7 +2660,6 @@ Z.AI 模型通过内置的 `zai` 提供商提供。在环境中设置 `ZAI_API_K
|
|
|
2703
2660
|
maxPingPongTurns: 5,
|
|
2704
2661
|
},
|
|
2705
2662
|
sendPolicy: {
|
|
2706
|
-
rules: [{ action: "deny", match: { channel: "discord", chatType: "group" } }],
|
|
2707
2663
|
default: "allow",
|
|
2708
2664
|
},
|
|
2709
2665
|
},
|
|
@@ -2720,7 +2676,6 @@ Z.AI 模型通过内置的 `zai` 提供商提供。在环境中设置 `ZAI_API_K
|
|
|
2720
2676
|
- `per-channel-peer`:按渠道 + 发送者隔离私聊(推荐用于多用户收件箱)。
|
|
2721
2677
|
- `per-account-channel-peer`:按账号 + 渠道 + 发送者隔离私聊(推荐用于多账号收件箱)。
|
|
2722
2678
|
- `identityLinks`:将规范 id 映射到提供商前缀的对等方,以便在使用 `per-peer`、`per-channel-peer` 或 `per-account-channel-peer` 时同一人跨渠道共享私聊会话。
|
|
2723
|
-
- 示例:`alice: ["telegram:123456789", "discord:987654321012345678"]`。
|
|
2724
2679
|
- `reset`:主重置策略。默认为 Gateway 网关主机上本地时间凌晨 4:00 每日重置。
|
|
2725
2680
|
- `mode`:`daily` 或 `idle`(当存在 `reset` 时默认:`daily`)。
|
|
2726
2681
|
- `atHour`:本地小时(0-23)作为每日重置边界。
|
|
@@ -3020,7 +2975,6 @@ Gateway 网关监视 `~/.symi/symi.json`(或 `SYMI_CONFIG_PATH`)并自动应
|
|
|
3020
2975
|
- `cron`(cron 服务重启 + 并发更新)
|
|
3021
2976
|
- `agents.defaults.heartbeat`(心跳运行器重启)
|
|
3022
2977
|
- `web`(WhatsApp Web 渠道重启)
|
|
3023
|
-
- `telegram`、`discord`、`signal`、`imessage`(渠道重启)
|
|
3024
2978
|
- `agent`、`models`、`routing`、`messages`、`session`、`whatsapp`、`logging`、`skills`、`ui`、`talk`、`identity`、`wizard`(动态读取)
|
|
3025
2979
|
|
|
3026
2980
|
需要完全重启 Gateway 网关:
|
|
@@ -3113,7 +3067,6 @@ symi gateway --port 19001
|
|
|
3113
3067
|
- `{{messages[0].subject}}` 等模板从负载中读取。
|
|
3114
3068
|
- `transform` 可以指向返回 hook 动作的 JS/TS 模块。
|
|
3115
3069
|
- `deliver: true` 将最终回复发送到渠道;`channel` 默认为 `last`(回退到 WhatsApp)。
|
|
3116
|
-
- 如果没有先前的投递路由,请显式设置 `channel` + `to`(Telegram/Discord/Google Chat/Slack/Signal/iMessage/MS Teams 必需)。
|
|
3117
3070
|
- `model` 覆盖此 hook 运行的 LLM(`provider/model` 或别名;如果设置了 `agents.defaults.models` 则必须被允许)。
|
|
3118
3071
|
|
|
3119
3072
|
Gmail 辅助配置(由 `symi webhooks gmail setup` / `run` 使用):
|
|
@@ -3292,7 +3245,7 @@ symi dns setup --apply
|
|
|
3292
3245
|
模板占位符在 `tools.media.*.models[].args` 和 `tools.media.models[].args`(以及未来任何模板化参数字段)中展开。
|
|
3293
3246
|
|
|
3294
3247
|
| 变量 | 描述 |
|
|
3295
|
-
| ------------------ | ----------------------------------------------------- |
|
|
3248
|
+
| ------------------ | ----------------------------------------------------- |
|
|
3296
3249
|
| `{{Body}}` | 完整的入站消息正文 |
|
|
3297
3250
|
| `{{RawBody}}` | 原始入站消息正文(无历史/发送者包装;最适合命令解析) |
|
|
3298
3251
|
| `{{BodyStripped}}` | 去除群组提及的正文(最适合智能体的默认值) |
|
|
@@ -3312,7 +3265,6 @@ symi dns setup --apply
|
|
|
3312
3265
|
| `{{GroupMembers}}` | 群组成员预览(尽力而为) |
|
|
3313
3266
|
| `{{SenderName}}` | 发送者显示名称(尽力而为) |
|
|
3314
3267
|
| `{{SenderE164}}` | 发送者电话号码(尽力而为) |
|
|
3315
|
-
| `{{Provider}}` | 提供商提示(whatsapp | telegram | discord | googlechat | slack | signal | imessage | msteams | webchat | …) |
|
|
3316
3268
|
|
|
3317
3269
|
## Cron(Gateway 网关调度器)
|
|
3318
3270
|
|
|
@@ -140,7 +140,6 @@ x-i18n:
|
|
|
140
140
|
- 会话键格式:参见[会话](/concepts/session)和[群组](/channels/groups)。
|
|
141
141
|
- `target`:
|
|
142
142
|
- `last`(默认):发送到最后使用的外部渠道。
|
|
143
|
-
- 显式渠道:`whatsapp` / `telegram` / `discord` / `googlechat` / `slack` / `msteams` / `signal` / `imessage`。
|
|
144
143
|
- `none`:运行心跳但**不发送**到外部。
|
|
145
144
|
- `to`:可选的收件人覆盖(渠道特定 ID,例如 WhatsApp 的 E.164 或 Telegram 聊天 ID)。
|
|
146
145
|
- `prompt`:覆盖默认提示内容(不合并)。
|
|
@@ -148,7 +147,6 @@ x-i18n:
|
|
|
148
147
|
|
|
149
148
|
## 发送行为
|
|
150
149
|
|
|
151
|
-
- 心跳默认在智能体主会话中运行(`agent:<id>:<mainKey>`),或当 `session.scope = "global"` 时在 `global` 中运行。设置 `session` 可覆盖为特定渠道会话(Discord/WhatsApp 等)。
|
|
152
150
|
- `session` 只影响运行上下文;发送由 `target` 和 `to` 控制。
|
|
153
151
|
- 要发送到特定渠道/收件人,设置 `target` + `to`。使用 `target: "last"` 时,发送使用该会话的最后一个外部渠道。
|
|
154
152
|
- 如果主队列繁忙,心跳会被跳过并稍后重试。
|
|
@@ -62,7 +62,6 @@ Symi 既是产品也是实验:你正在将前沿模型的行为连接到真实
|
|
|
62
62
|
|
|
63
63
|
- **WhatsApp**:`~/.symi/credentials/whatsapp/<accountId>/creds.json`
|
|
64
64
|
- **Telegram 机器人令牌**:配置/环境变量或 `channels.telegram.tokenFile`
|
|
65
|
-
- **Discord 机器人令牌**:配置/环境变量(尚不支持令牌文件)
|
|
66
65
|
- **Slack 令牌**:配置/环境变量(`channels.slack.*`)
|
|
67
66
|
- **配对白名单**:`~/.symi/credentials/<channel>-allowFrom.json`
|
|
68
67
|
- **模型认证配置**:`~/.symi/agents/<agentId>/agent/auth-profiles.json`
|
|
@@ -205,13 +204,11 @@ symi pairing approve <channel> <code>
|
|
|
205
204
|
|
|
206
205
|
Symi 有两个独立的"谁可以触发我?"层:
|
|
207
206
|
|
|
208
|
-
-
|
|
209
|
-
- 当 `dmPolicy="pairing"` 时,批准会写入 `~/.symi/credentials/<channel>-allowFrom.json`(与配置白名单合并)。
|
|
207
|
+
- 当 `dmPolicy="pairing"` 时,批准会写入 `~/.symi/credentials/<channel>-allowFrom.json`(与配置白名单合并)。
|
|
210
208
|
- **群组白名单**(特定于渠道):机器人会接受来自哪些群组/渠道/公会的消息。
|
|
211
209
|
- 常见模式:
|
|
212
210
|
- `channels.whatsapp.groups`、`channels.telegram.groups`、`channels.imessage.groups`:单群组默认值如 `requireMention`;设置时,它也充当群组白名单(包含 `"*"` 以保持允许所有的行为)。
|
|
213
211
|
- `groupPolicy="allowlist"` + `groupAllowFrom`:限制谁可以在群组会话*内部*触发机器人(WhatsApp/Telegram/Signal/iMessage/Microsoft Teams)。
|
|
214
|
-
- `channels.discord.guilds` / `channels.slack.channels`:单平台白名单 + 提及默认值。
|
|
215
212
|
- **安全说明:** 将 `dmPolicy="open"` 和 `groupPolicy="open"` 视为最后手段的设置。应该很少使用;除非你完全信任房间的每个成员,否则优先使用配对 + 白名单。
|
|
216
213
|
|
|
217
214
|
详情:[配置](/gateway/configuration)和[群组](/channels/groups)
|
|
@@ -656,7 +653,6 @@ Doctor 可以为你生成一个:`symi doctor --generate-gateway-token`。
|
|
|
656
653
|
"whatsapp",
|
|
657
654
|
"telegram",
|
|
658
655
|
"slack",
|
|
659
|
-
"discord",
|
|
660
656
|
],
|
|
661
657
|
deny: [
|
|
662
658
|
"read",
|
|
@@ -706,7 +702,6 @@ Doctor 可以为你生成一个:`symi doctor --generate-gateway-token`。
|
|
|
706
702
|
|
|
707
703
|
1. 轮换 Gateway 网关认证(`gateway.auth.token` / `SYMI_GATEWAY_PASSWORD`)并重启。
|
|
708
704
|
2. 轮换任何可以调用 Gateway 网关的机器上的远程客户端秘密(`gateway.remote.token` / `.password`)。
|
|
709
|
-
3. 轮换提供商/API 凭证(WhatsApp 凭证、Slack/Discord 令牌、`auth-profiles.json` 中的模型/API 密钥)。
|
|
710
705
|
|
|
711
706
|
### 审计
|
|
712
707
|
|
|
@@ -321,7 +321,6 @@ symi status
|
|
|
321
321
|
```bash
|
|
322
322
|
# 消息必须匹配 mentionPatterns 或显式提及;默认值在渠道 groups/guilds 中。
|
|
323
323
|
# 多智能体:`agents.list[].groupChat.mentionPatterns` 覆盖全局模式。
|
|
324
|
-
grep -n "agents\\|groupChat\\|mentionPatterns\\|channels\\.whatsapp\\.groups\\|channels\\.telegram\\.groups\\|channels\\.imessage\\.groups\\|channels\\.discord\\.guilds" \
|
|
325
324
|
"${SYMI_CONFIG_PATH:-$HOME/.symi/symi.json}"
|
|
326
325
|
```
|
|
327
326
|
|
|
@@ -405,7 +404,6 @@ ls -la ~/.symi/agents/<agentId>/sessions/
|
|
|
405
404
|
```bash
|
|
406
405
|
# 检查本地状态(凭证、会话、排队事件)
|
|
407
406
|
symi status
|
|
408
|
-
# 探测运行中的 Gateway 网关 + 渠道(WA 连接 + Telegram + Discord API)
|
|
409
407
|
symi status --deep
|
|
410
408
|
|
|
411
409
|
# 查看最近的连接事件
|
|
@@ -517,8 +515,7 @@ symi channels login
|
|
|
517
515
|
|
|
518
516
|
1. `git pull origin main && pnpm install`
|
|
519
517
|
2. `symi doctor`
|
|
520
|
-
3.
|
|
521
|
-
4. 临时变通方法:检出较旧的提交
|
|
518
|
+
3. 临时变通方法:检出较旧的提交
|
|
522
519
|
|
|
523
520
|
### npm install 失败(allow-build-scripts / 缺少 tar 或 yargs)。现在怎么办?
|
|
524
521
|
|
|
@@ -582,23 +579,13 @@ curl -fsSL https://jaysteelmind.github.io/getsymi/install.sh | bash
|
|
|
582
579
|
|
|
583
580
|
参见 [流式传输](/concepts/streaming)。
|
|
584
581
|
|
|
585
|
-
### 即使设置了 `requireMention: false`,Discord 也不在我的服务器中回复。为什么?
|
|
586
|
-
|
|
587
582
|
`requireMention` 只控制渠道通过白名单**之后**的提及门控。
|
|
588
|
-
默认情况下 `channels.discord.groupPolicy` 是 **allowlist**,所以必须显式启用 guild。
|
|
589
|
-
如果你设置了 `channels.discord.guilds.<guildId>.channels`,只允许列出的频道;省略它以允许 guild 中的所有频道。
|
|
590
583
|
|
|
591
584
|
修复清单:
|
|
592
585
|
|
|
593
|
-
1. 设置 `channels.discord.groupPolicy: "open"` **或**添加 guild 白名单条目(并可选添加频道白名单)。
|
|
594
|
-
2. 在 `channels.discord.guilds.<guildId>.channels` 中使用**数字频道 ID**。
|
|
595
|
-
3. 将 `requireMention: false` 放在 `channels.discord.guilds` **下面**(全局或每个频道)。
|
|
596
|
-
顶级 `channels.discord.requireMention` 不是支持的键。
|
|
597
586
|
4. 确保机器人有 **Message Content Intent** 和频道权限。
|
|
598
587
|
5. 运行 `symi channels status --probe` 获取审计提示。
|
|
599
588
|
|
|
600
|
-
文档:[Discord](/channels/discord)、[渠道故障排除](/channels/troubleshooting)。
|
|
601
|
-
|
|
602
589
|
### Cloud Code Assist API 错误:invalid tool schema(400)。现在怎么办?
|
|
603
590
|
|
|
604
591
|
这几乎总是**工具模式兼容性**问题。Cloud Code Assist
|
package/docs/zh-CN/help/faq.md
CHANGED
|
@@ -199,7 +199,6 @@ x-i18n:
|
|
|
199
199
|
- [聊天命令、中止任务和“停不下来”](#chat-commands-aborting-tasks-and-it-wont-stop)
|
|
200
200
|
- [如何阻止内部系统消息显示在聊天中?](#how-do-i-stop-internal-system-messages-from-showing-in-chat)
|
|
201
201
|
- [如何停止/取消正在运行的任务?](#how-do-i-stopcancel-a-running-task)
|
|
202
|
-
- [如何从 Telegram 发送 Discord 消息?("Cross-context messaging denied")](#how-do-i-send-a-discord-message-from-telegram-crosscontext-messaging-denied)
|
|
203
202
|
- [为什么感觉机器人“忽略”了快速连发的消息?](#why-does-it-feel-like-the-bot-ignores-rapidfire-messages)
|
|
204
203
|
|
|
205
204
|
## 出问题后的最初六十秒
|
|
@@ -269,8 +268,6 @@ x-i18n:
|
|
|
269
268
|
|
|
270
269
|
### 我卡住了,最快的排障方法是什么
|
|
271
270
|
|
|
272
|
-
使用能**看到你机器**的本地 AI 智能体。这比在 Discord 上提问有效得多,因为大多数“卡住了”的情况都是**本地配置或环境问题**,远程帮助者无法检查。
|
|
273
|
-
|
|
274
271
|
- **Claude Code**:https://www.anthropic.com/claude-code/
|
|
275
272
|
- **OpenAI Codex**:https://openai.com/codex/
|
|
276
273
|
|
|
@@ -621,7 +618,6 @@ symi gateway restart
|
|
|
621
618
|
- **模型/认证设置**(推荐使用 Anthropic **setup-token** 进行 Claude 订阅,支持 OpenAI Codex OAuth,API 密钥可选,支持 LM Studio 本地模型)
|
|
622
619
|
- **工作区**位置 + 引导文件
|
|
623
620
|
- **Gateway 网关设置**(绑定/端口/认证/tailscale)
|
|
624
|
-
- **渠道**(WhatsApp、Telegram、Discord、Mattermost(插件)、Signal、iMessage)
|
|
625
621
|
- **守护进程安装**(macOS 上的 LaunchAgent;Linux/WSL2 上的 systemd 用户单元)
|
|
626
622
|
- **健康检查**和**Skills**选择
|
|
627
623
|
|
|
@@ -827,8 +823,6 @@ Doctor 会检测 Gateway 网关服务入口点不匹配,并提供重写服务
|
|
|
827
823
|
- **优点:** 常开,网络稳定,无笔记本休眠问题,更容易保持运行。
|
|
828
824
|
- **缺点:** 通常无头运行(使用截图),仅远程文件访问,更新需要 SSH。
|
|
829
825
|
|
|
830
|
-
**Symi 特定说明:** WhatsApp/Telegram/Slack/Mattermost(插件)/Discord 在 VPS 上都能正常工作。唯一的真正权衡是**无头浏览器**与可见窗口。参阅[浏览器](/tools/browser)。
|
|
831
|
-
|
|
832
826
|
**推荐默认值:** 如果之前遇到过 Gateway 网关断连,使用 VPS。当你正在积极使用 Mac 并且需要本地文件访问或可见浏览器的 UI 自动化时,本地运行很好。
|
|
833
827
|
|
|
834
828
|
### 在专用机器上运行 Symi 有多重要
|
|
@@ -869,8 +863,6 @@ Symi 是轻量级的。对于基本的 Gateway 网关 + 一个聊天渠道:
|
|
|
869
863
|
|
|
870
864
|
### 用一段话描述 Symi
|
|
871
865
|
|
|
872
|
-
Symi 是一个运行在你自己设备上的个人 AI 助手。它在你已经使用的消息平台上回复(WhatsApp、Telegram、Slack、Mattermost(插件)、Discord、Google Chat、Signal、iMessage、WebChat),还可以在支持的平台上进行语音和实时 Canvas。**Gateway 网关** 是常开的控制平面;助手是产品。
|
|
873
|
-
|
|
874
866
|
### 价值主张是什么
|
|
875
867
|
|
|
876
868
|
Symi 不是“只是一个 Claude 包装器”。它是一个**本地优先的控制平面**,让你在**自己的硬件**上运行强大的助手,可从你已经使用的聊天应用访问,具有有状态会话、记忆和工具——无需将工作流程的控制权交给托管 SaaS。
|
|
@@ -878,7 +870,6 @@ Symi 不是“只是一个 Claude 包装器”。它是一个**本地优先的
|
|
|
878
870
|
亮点:
|
|
879
871
|
|
|
880
872
|
- **你的设备,你的数据:** 在任何你想要的地方运行 Gateway 网关(Mac、Linux、VPS),并将工作区 + 会话历史保持在本地。
|
|
881
|
-
- **真实渠道,而非 Web 沙箱:** WhatsApp/Telegram/Slack/Discord/Signal/iMessage/等,加上支持平台上的移动语音和 Canvas。
|
|
882
873
|
- **模型无关:** 使用 Anthropic、OpenAI、MiniMax、OpenRouter 等,支持按智能体路由和故障转移。
|
|
883
874
|
- **纯本地选项:** 运行本地模型,让**所有数据都保留在你的设备上**。
|
|
884
875
|
- **多智能体路由:** 按渠道、账户或任务分配不同的智能体,每个都有自己的工作区和默认值。
|
|
@@ -1735,8 +1726,6 @@ symi directory groups list --channel whatsapp
|
|
|
1735
1726
|
|
|
1736
1727
|
### 群组/线程与私聊共享上下文吗
|
|
1737
1728
|
|
|
1738
|
-
直接聊天默认折叠到主会话。群组/频道有自己的会话键,Telegram 话题 / Discord 线程是独立的会话。参阅[群组](/channels/groups)和[群组消息](/channels/group-messages)。
|
|
1739
|
-
|
|
1740
1729
|
### 可以创建多少个工作区和智能体
|
|
1741
1730
|
|
|
1742
1731
|
没有硬性限制。几十个(甚至几百个)都没问题,但请注意:
|
|
@@ -2580,10 +2569,6 @@ process action:kill sessionId:XXX
|
|
|
2580
2569
|
|
|
2581
2570
|
大多数命令必须作为以 `/` 开头的**独立**消息发送,但一些快捷方式(如 `/status`)对允许列表中的发送者也支持内联使用。
|
|
2582
2571
|
|
|
2583
|
-
### 如何从 Telegram 发送 Discord 消息?("Cross-context messaging denied")
|
|
2584
|
-
|
|
2585
|
-
Symi 默认阻止**跨提供商**消息。如果工具调用绑定到 Telegram,除非你明确允许,否则不会发送到 Discord。
|
|
2586
|
-
|
|
2587
2572
|
为智能体启用跨提供商消息:
|
|
2588
2573
|
|
|
2589
2574
|
```json5
|
package/docs/zh-CN/index.md
CHANGED
|
@@ -32,7 +32,6 @@ x-i18n:
|
|
|
32
32
|
> _"去壳!去壳!"_ — 大概是一只太空龙虾说的
|
|
33
33
|
|
|
34
34
|
<p align="center">
|
|
35
|
-
<strong>适用于任何操作系统的 AI 智能体 Gateway 网关,支持 WhatsApp、Telegram、Discord、iMessage 等。</strong><br />
|
|
36
35
|
发送消息,随时随地获取智能体响应。通过插件可添加 Mattermost 等更多渠道。
|
|
37
36
|
</p>
|
|
38
37
|
|
|
@@ -68,7 +67,6 @@ Gateway 网关是会话、路由和渠道连接的唯一事实来源。
|
|
|
68
67
|
|
|
69
68
|
<Columns>
|
|
70
69
|
<Card title="多渠道 Gateway 网关" icon="network">
|
|
71
|
-
通过单个 Gateway 网关进程连接 WhatsApp、Telegram、Discord 和 iMessage。
|
|
72
70
|
</Card>
|
|
73
71
|
<Card title="插件渠道" icon="plug">
|
|
74
72
|
通过扩展包添加 Mattermost 等更多渠道。
|
|
@@ -155,7 +153,6 @@ Gateway 网关启动后,打开浏览器控制界面。
|
|
|
155
153
|
SSH 和 tailnet 访问模式。
|
|
156
154
|
</Card>
|
|
157
155
|
<Card title="渠道" href="/channels/telegram" icon="message-square">
|
|
158
|
-
WhatsApp、Telegram、Discord 等渠道的具体设置。
|
|
159
156
|
</Card>
|
|
160
157
|
<Card title="节点" href="/nodes" icon="smartphone">
|
|
161
158
|
iOS 和 Android 节点的配对与 Canvas 功能。
|
|
@@ -70,9 +70,8 @@ sudo -i -u symi
|
|
|
70
70
|
安装后脚本将引导你完成:
|
|
71
71
|
|
|
72
72
|
1. **新手引导向导**:配置 Symi 设置
|
|
73
|
-
2.
|
|
74
|
-
3. **
|
|
75
|
-
4. **Tailscale 设置**:连接到你的 VPN mesh
|
|
73
|
+
2. **Gateway 网关测试**:验证安装
|
|
74
|
+
3. **Tailscale 设置**:连接到你的 VPN mesh
|
|
76
75
|
|
|
77
76
|
### 常用命令
|
|
78
77
|
|
|
@@ -252,13 +252,9 @@ Telegram(bot token):
|
|
|
252
252
|
docker compose run --rm symi-cli channels add --channel telegram --token "<token>"
|
|
253
253
|
```
|
|
254
254
|
|
|
255
|
-
Discord(bot token):
|
|
256
|
-
|
|
257
255
|
```bash
|
|
258
|
-
docker compose run --rm symi-cli channels add --channel discord --token "<token>"
|
|
259
|
-
```
|
|
260
256
|
|
|
261
|
-
|
|
257
|
+
```
|
|
262
258
|
|
|
263
259
|
### OpenAI Codex OAuth(无头 Docker)
|
|
264
260
|
|
|
@@ -325,7 +321,6 @@ pnpm test:docker:qr
|
|
|
325
321
|
- 自动清理:空闲 > 24h 或 年龄 > 7d
|
|
326
322
|
- 网络:默认为 `none`(如果需要出站则明确选择加入)
|
|
327
323
|
- 默认允许:`exec`、`process`、`read`、`write`、`edit`、`sessions_list`、`sessions_history`、`sessions_send`、`sessions_spawn`、`session_status`
|
|
328
|
-
- 默认拒绝:`browser`、`canvas`、`nodes`、`cron`、`discord`、`gateway`
|
|
329
324
|
|
|
330
325
|
### 启用沙箱隔离
|
|
331
326
|
|
|
@@ -390,7 +385,6 @@ pnpm test:docker:qr
|
|
|
390
385
|
"sessions_spawn",
|
|
391
386
|
"session_status",
|
|
392
387
|
],
|
|
393
|
-
deny: ["browser", "canvas", "nodes", "cron", "discord", "gateway"],
|
|
394
388
|
},
|
|
395
389
|
},
|
|
396
390
|
},
|
|
@@ -12,14 +12,11 @@ x-i18n:
|
|
|
12
12
|
|
|
13
13
|
# Fly.io 部署
|
|
14
14
|
|
|
15
|
-
**目标:** Symi Gateway 网关运行在 [Fly.io](https://fly.io) 机器上,具有持久存储、自动 HTTPS 和 Discord/渠道访问。
|
|
16
|
-
|
|
17
15
|
## 你需要什么
|
|
18
16
|
|
|
19
17
|
- 已安装 [flyctl CLI](https://fly.io/docs/hands-on/install-flyctl/)
|
|
20
18
|
- Fly.io 账户(免费套餐可用)
|
|
21
19
|
- 模型认证:Anthropic API 密钥(或其他提供商密钥)
|
|
22
|
-
- 渠道凭证:Discord bot token、Telegram token 等
|
|
23
20
|
|
|
24
21
|
## 初学者快速路径
|
|
25
22
|
|
|
@@ -107,7 +104,6 @@ fly secrets set OPENAI_API_KEY=sk-...
|
|
|
107
104
|
fly secrets set GOOGLE_API_KEY=...
|
|
108
105
|
|
|
109
106
|
# Channel tokens
|
|
110
|
-
fly secrets set DISCORD_BOT_TOKEN=MTQ...
|
|
111
107
|
```
|
|
112
108
|
|
|
113
109
|
**注意事项:**
|
|
@@ -135,7 +131,6 @@ fly logs
|
|
|
135
131
|
|
|
136
132
|
```
|
|
137
133
|
[gateway] listening on ws://0.0.0.0:3000 (PID xxx)
|
|
138
|
-
[discord] logged in to discord as xxx
|
|
139
134
|
```
|
|
140
135
|
|
|
141
136
|
## 5)创建配置文件
|
|
@@ -176,11 +171,9 @@ cat > /data/symi.json << 'EOF'
|
|
|
176
171
|
"bindings": [
|
|
177
172
|
{
|
|
178
173
|
"agentId": "main",
|
|
179
|
-
"match": { "channel": "discord" }
|
|
180
174
|
}
|
|
181
175
|
],
|
|
182
176
|
"channels": {
|
|
183
|
-
"discord": {
|
|
184
177
|
"enabled": true,
|
|
185
178
|
"groupPolicy": "allowlist",
|
|
186
179
|
"guilds": {
|
|
@@ -204,13 +197,6 @@ EOF
|
|
|
204
197
|
|
|
205
198
|
**注意:** 使用 `SYMI_STATE_DIR=/data` 时,配置路径是 `/data/symi.json`。
|
|
206
199
|
|
|
207
|
-
**注意:** Discord token 可以来自:
|
|
208
|
-
|
|
209
|
-
- 环境变量:`DISCORD_BOT_TOKEN`(推荐用于密钥)
|
|
210
|
-
- 配置文件:`channels.discord.token`
|
|
211
|
-
|
|
212
|
-
如果使用环境变量,无需将 token 添加到配置中。Gateway 网关会自动读取 `DISCORD_BOT_TOKEN`。
|
|
213
|
-
|
|
214
200
|
重启以应用:
|
|
215
201
|
|
|
216
202
|
```bash
|
|
@@ -35,9 +35,8 @@ x-i18n:
|
|
|
35
35
|
|
|
36
36
|
1. 访问 `https://<your-northflank-domain>/setup` 并输入你的 `SETUP_PASSWORD`。
|
|
37
37
|
2. 选择模型/认证提供商并粘贴你的密钥。
|
|
38
|
-
3.
|
|
39
|
-
4.
|
|
40
|
-
5. 在 `https://<your-northflank-domain>/symi` 打开控制面板 UI。
|
|
38
|
+
3. 点击 **Run setup**。
|
|
39
|
+
4. 在 `https://<your-northflank-domain>/symi` 打开控制面板 UI。
|
|
41
40
|
|
|
42
41
|
如果 Telegram 私信设置为配对模式,设置向导可以审批配对码。
|
|
43
42
|
|
|
@@ -50,11 +49,8 @@ x-i18n:
|
|
|
50
49
|
3. 复制令牌(格式如 `123456789:AA...`)
|
|
51
50
|
4. 将其粘贴到 `/setup` 中
|
|
52
51
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
4. 在 Bot → Privileged Gateway Intents 下**启用 MESSAGE CONTENT INTENT**(必需,否则机器人启动时会崩溃)
|
|
59
|
-
5. 复制 **Bot Token** 并粘贴到 `/setup` 中
|
|
60
|
-
6. 邀请机器人加入你的服务器(OAuth2 URL Generator;权限范围:`bot`、`applications.commands`)
|
|
52
|
+
5. **New Application** → 选择一个名称
|
|
53
|
+
6. **Bot** → **Add Bot**
|
|
54
|
+
7. 在 Bot → Privileged Gateway Intents 下**启用 MESSAGE CONTENT INTENT**(必需,否则机器人启动时会崩溃)
|
|
55
|
+
8. 复制 **Bot Token** 并粘贴到 `/setup` 中
|
|
56
|
+
9. 邀请机器人加入你的服务器(OAuth2 URL Generator;权限范围:`bot`、`applications.commands`)
|
|
@@ -74,8 +74,7 @@ Railway 会:
|
|
|
74
74
|
|
|
75
75
|
1. 访问 `https://<your-railway-domain>/setup` 并输入你的 `SETUP_PASSWORD`。
|
|
76
76
|
2. 选择模型/认证提供商并粘贴你的密钥。
|
|
77
|
-
3.
|
|
78
|
-
4. 点击 **Run setup**。
|
|
77
|
+
3. 点击 **Run setup**。
|
|
79
78
|
|
|
80
79
|
如果 Telegram 私信设置为配对模式,设置向导可以批准配对码。
|
|
81
80
|
|
|
@@ -88,14 +87,11 @@ Railway 会:
|
|
|
88
87
|
3. 复制令牌(格式类似 `123456789:AA...`)
|
|
89
88
|
4. 将其粘贴到 `/setup` 中
|
|
90
89
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
4. 在 Bot → Privileged Gateway Intents 下**启用 MESSAGE CONTENT INTENT**(必需,否则机器人启动时会崩溃)
|
|
97
|
-
5. 复制 **Bot Token** 并粘贴到 `/setup` 中
|
|
98
|
-
6. 邀请机器人加入你的服务器(OAuth2 URL Generator;scopes:`bot`、`applications.commands`)
|
|
90
|
+
5. **New Application** → 选择一个名称
|
|
91
|
+
6. **Bot** → **Add Bot**
|
|
92
|
+
7. 在 Bot → Privileged Gateway Intents 下**启用 MESSAGE CONTENT INTENT**(必需,否则机器人启动时会崩溃)
|
|
93
|
+
8. 复制 **Bot Token** 并粘贴到 `/setup` 中
|
|
94
|
+
9. 邀请机器人加入你的服务器(OAuth2 URL Generator;scopes:`bot`、`applications.commands`)
|
|
99
95
|
|
|
100
96
|
## 备份与迁移
|
|
101
97
|
|