@symerian/symi 3.0.16 → 3.0.18

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 (310) hide show
  1. package/dist/{audio-preflight-CBDFctZN.js → audio-preflight-BfmZbg4Y.js} +4 -4
  2. package/dist/{audio-preflight-gsZSpG-6.js → audio-preflight-DcuC-liM.js} +4 -4
  3. package/dist/build-info.json +3 -3
  4. package/dist/bundled/boot-md/handler.js +8 -8
  5. package/dist/bundled/session-memory/handler.js +7 -7
  6. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  7. package/dist/{chrome-nPMY1XTJ.js → chrome-Bo7cbvFK.js} +5 -5
  8. package/dist/{chrome-BjVab8gM.js → chrome-DYp18Q0t.js} +5 -5
  9. package/dist/{deliver-D-QFqm31.js → deliver-ChSIbiMM.js} +1 -1
  10. package/dist/{deliver-B4-bcot9.js → deliver-DEgRQM4J.js} +1 -1
  11. package/dist/extensionAPI.js +7 -7
  12. package/dist/{image-CDwtQjmt.js → image-Bx-hvoNJ.js} +1 -1
  13. package/dist/{image-CcS-vzTA.js → image-CQl_mjWk.js} +1 -1
  14. package/dist/llm-slug-generator.js +7 -7
  15. package/dist/{manager-BnEdHzmO.js → manager-D_pn0urG.js} +1 -1
  16. package/dist/{manager-09r0qPze.js → manager-YQxK2t0C.js} +1 -1
  17. package/dist/{pi-embedded-CWsY69-4.js → pi-embedded-CLw_ZzEZ.js} +16 -16
  18. package/dist/{pi-embedded-helpers-BBMy-lqr.js → pi-embedded-helpers-B5I53aw6.js} +4 -4
  19. package/dist/{pi-embedded-helpers-ChEYbgVj.js → pi-embedded-helpers-sUAEIC9X.js} +4 -4
  20. package/dist/plugin-sdk/{accounts-BfyWsC_i.js → accounts-CWFytwbR.js} +3 -3
  21. package/dist/plugin-sdk/{active-listener-DcJW7xAT.js → active-listener-BkZ4jHrL.js} +2 -2
  22. package/dist/plugin-sdk/{agent-scope-ChbGV6of.js → agent-scope-C9gfY_Gk.js} +2 -2
  23. package/dist/plugin-sdk/{audio-preflight-D3GtNLqW.js → audio-preflight-HKbdzXLZ.js} +21 -21
  24. package/dist/plugin-sdk/{bindings-CN2Qmefj.js → bindings-BaKIqPPy.js} +2 -2
  25. package/dist/plugin-sdk/{channel-web-DTyqujjA.js → channel-web-D5nWiTH1.js} +18 -18
  26. package/dist/plugin-sdk/{chrome-BKzAKr3K.js → chrome-klTSnz-9.js} +3 -3
  27. package/dist/plugin-sdk/{chunk-DhDkBujV.js → chunk-BbrYSny_.js} +1 -1
  28. package/dist/plugin-sdk/{command-format-CVrYFyZS.js → command-format-BN6tyZt6.js} +1 -1
  29. package/dist/plugin-sdk/{commands-registry-17yfZkHZ.js → commands-registry-CTzKKtY6.js} +4 -4
  30. package/dist/plugin-sdk/{config-7wk65zKC.js → config-Crv2qEdJ.js} +9 -9
  31. package/dist/plugin-sdk/{consolidate-exbAW0ml.js → consolidate-DT1QH65Q.js} +2 -2
  32. package/dist/plugin-sdk/{deliver-TxAcw7J5.js → deliver-7rOvAlrc.js} +12 -12
  33. package/dist/plugin-sdk/{diagnostic-Debx4frd.js → diagnostic-0nsxhWp7.js} +1 -1
  34. package/dist/plugin-sdk/{fs-safe-wBYbAkJF.js → fs-safe-DfWYBeWF.js} +1 -1
  35. package/dist/plugin-sdk/{gemini-auth-7U2pm2Ky.js → gemini-auth-C0N0_u49.js} +1 -1
  36. package/dist/plugin-sdk/{image-BtDVmYA5.js → image-WOSl2apK.js} +4 -4
  37. package/dist/plugin-sdk/index.js +43 -43
  38. package/dist/plugin-sdk/{ir-CKMvRrGW.js → ir-9J84MTls.js} +4 -4
  39. package/dist/plugin-sdk/{local-roots-c_gaPs01.js → local-roots-OLRDbvyY.js} +3 -3
  40. package/dist/plugin-sdk/{login-DUym1Jy0.js → login-C7x4q0i2.js} +7 -7
  41. package/dist/plugin-sdk/{login-qr-B-WBdvrX.js → login-qr-Dv5_MoAW.js} +9 -9
  42. package/dist/plugin-sdk/{manager-B71SCzos.js → manager-C83tK17x.js} +8 -8
  43. package/dist/plugin-sdk/{manifest-registry-Dnic6Chh.js → manifest-registry-CJMV-PI7.js} +1 -1
  44. package/dist/plugin-sdk/{markdown-tables-Dur7OTlM.js → markdown-tables-DXNKz5y_.js} +1 -1
  45. package/dist/plugin-sdk/{message-channel-BrAhJJV_.js → message-channel-aGy1HbQQ.js} +1 -1
  46. package/dist/plugin-sdk/{model-selection-B9qaVQSJ.js → model-selection-C-3-tpe7.js} +4 -4
  47. package/dist/plugin-sdk/{outbound-DB1wDM8b.js → outbound-DquCeSy5.js} +6 -6
  48. package/dist/plugin-sdk/{pi-auth-json-ZO118hoy.js → pi-auth-json-D9PDCXGn.js} +1 -1
  49. package/dist/plugin-sdk/{pi-embedded-helpers-s_U0Un7j.js → pi-embedded-helpers-D3ygfH7l.js} +16 -16
  50. package/dist/plugin-sdk/{plugins-DF81oSaI.js → plugins-DOwnSg9D.js} +4 -4
  51. package/dist/plugin-sdk/{pw-ai-CTwP02uv.js → pw-ai-rlengLjb.js} +8 -8
  52. package/dist/plugin-sdk/{qmd-manager-CBaSGant.js → qmd-manager-BzxFjRFa.js} +4 -4
  53. package/dist/plugin-sdk/{registry-CZVURNhF.js → registry-5iFfixlB.js} +2 -2
  54. package/dist/plugin-sdk/{replies-hwRbkU3z.js → replies-BXOzO_H5.js} +7 -7
  55. package/dist/plugin-sdk/{reply-prefix-CaXmzZlx.js → reply-prefix-INAKTqCU.js} +1 -1
  56. package/dist/plugin-sdk/{resolve-outbound-target-fxVSOBmk.js → resolve-outbound-target-DvbxHtqp.js} +2 -2
  57. package/dist/plugin-sdk/{resolve-route-ClCyiOeu.js → resolve-route-URXlY3AK.js} +3 -3
  58. package/dist/plugin-sdk/{runner-Cq5jvwQ7.js → runner-Bv0_DWoH.js} +9 -9
  59. package/dist/plugin-sdk/{session-B_TkB65Y.js → session-C3r8l7ou.js} +4 -4
  60. package/dist/plugin-sdk/{skill-commands-0LF9HTGr.js → skill-commands-KjLUGIdZ.js} +5 -5
  61. package/dist/plugin-sdk/{skills-BIT_O7J0.js → skills-BrsD4L5c.js} +7 -7
  62. package/dist/plugin-sdk/{sqlite-Bx5Y5U5X.js → sqlite-CjW7ME1H.js} +1 -1
  63. package/dist/plugin-sdk/{subsystem-CXqYeDy-.js → subsystem-DcOg1xJr.js} +1 -1
  64. package/dist/plugin-sdk/{synthesis-DtsYAj1E.js → synthesis-CY7YAasV.js} +38 -38
  65. package/dist/plugin-sdk/{target-errors-B8mokOeH.js → target-errors-BVWJGWFq.js} +2 -2
  66. package/dist/plugin-sdk/{thinking-Ca0DhqzO.js → thinking-CtsTDPOi.js} +3 -3
  67. package/dist/plugin-sdk/{tokens-CvlONEqh.js → tokens-8lqOTZCB.js} +1 -1
  68. package/dist/plugin-sdk/{tool-images-DpBaWEHT.js → tool-images-Cl_rGIUZ.js} +2 -2
  69. package/dist/plugin-sdk/{tool-loop-detection-BOvUFa0f.js → tool-loop-detection-Da4WUT_P.js} +2 -2
  70. package/dist/plugin-sdk/{unified-runner-CnM7lyNd.js → unified-runner-nwMnsZyj.js} +60 -60
  71. package/dist/plugin-sdk/web-BlweOZDp.js +54 -0
  72. package/dist/plugin-sdk/{whatsapp-actions-CvnfsFJm.js → whatsapp-actions-DpfaGYs7.js} +21 -21
  73. package/dist/{pw-ai-BW8_KeDf.js → pw-ai-BqxJG-Wh.js} +1 -1
  74. package/dist/{pw-ai-j9IE1K0-.js → pw-ai-C-NSGye0.js} +1 -1
  75. package/dist/{runner-8ALr2UII.js → runner-COGFTeDw.js} +1 -1
  76. package/dist/{runner-C4-9kFdR.js → runner-DhCi2lT1.js} +1 -1
  77. package/dist/{synthesis-Cph3LhA1.js → synthesis-CXZu24Vx.js} +7 -7
  78. package/dist/{synthesis-Cus0A2dL.js → synthesis-DrPxcMlQ.js} +7 -7
  79. package/dist/{unified-runner-CX80YMTk.js → unified-runner-iByUazvW.js} +16 -16
  80. package/dist/{web-ChozvJ7I.js → web-EsMQBIYf.js} +7 -7
  81. package/dist/{web-DFlsbXmQ.js → web-PPg5y6xI.js} +7 -7
  82. package/docs/.i18n/zh-CN.tm.jsonl +0 -20
  83. package/docs/automation/cron-jobs.md +0 -2
  84. package/docs/automation/hooks.md +0 -2
  85. package/docs/automation/poll.md +0 -8
  86. package/docs/automation/webhook.md +0 -2
  87. package/docs/capabilities.md +0 -2
  88. package/docs/channels/broadcast-groups.md +0 -1
  89. package/docs/channels/channel-routing.md +4 -10
  90. package/docs/channels/group-messages.md +0 -2
  91. package/docs/channels/groups.md +0 -10
  92. package/docs/channels/index.md +0 -1
  93. package/docs/channels/matrix.md +0 -2
  94. package/docs/channels/msteams.md +0 -2
  95. package/docs/channels/pairing.md +0 -3
  96. package/docs/channels/signal.md +0 -2
  97. package/docs/channels/troubleshooting.md +0 -7
  98. package/docs/cli/channels.md +0 -6
  99. package/docs/cli/configure.md +0 -1
  100. package/docs/cli/directory.md +0 -1
  101. package/docs/cli/index.md +0 -7
  102. package/docs/cli/message.md +1 -47
  103. package/docs/cli/status.md +0 -1
  104. package/docs/concepts/architecture.md +0 -1
  105. package/docs/concepts/features.md +0 -2
  106. package/docs/concepts/markdown-formatting.md +6 -8
  107. package/docs/concepts/memory.md +0 -4
  108. package/docs/concepts/messages.md +0 -1
  109. package/docs/concepts/models.md +0 -1
  110. package/docs/concepts/multi-agent.md +4 -19
  111. package/docs/concepts/queue.md +0 -3
  112. package/docs/concepts/retry.md +0 -5
  113. package/docs/concepts/session-tool.md +0 -2
  114. package/docs/concepts/session.md +2 -9
  115. package/docs/concepts/streaming.md +0 -2
  116. package/docs/concepts/system-prompt.md +0 -1
  117. package/docs/concepts/timezone.md +0 -1
  118. package/docs/date-time.md +0 -1
  119. package/docs/docs.json +2 -11
  120. package/docs/experiments/plans/cron-add-hardening.md +0 -1
  121. package/docs/experiments/plans/session-binding-channel-agnostic.md +2 -23
  122. package/docs/experiments/plans/thread-bound-subagents.md +7 -64
  123. package/docs/gateway/configuration-examples.md +0 -10
  124. package/docs/gateway/configuration-reference.md +22 -47
  125. package/docs/gateway/configuration.md +0 -3
  126. package/docs/gateway/heartbeat.md +0 -2
  127. package/docs/gateway/security/index.md +1 -6
  128. package/docs/gateway/troubleshooting.md +0 -1
  129. package/docs/help/faq.md +0 -13
  130. package/docs/help/troubleshooting.md +0 -1
  131. package/docs/index.md +0 -6
  132. package/docs/install/ansible.md +2 -3
  133. package/docs/install/docker.md +1 -7
  134. package/docs/install/fly.md +0 -14
  135. package/docs/install/northflank.mdx +7 -11
  136. package/docs/install/railway.mdx +6 -10
  137. package/docs/install/render.mdx +1 -2
  138. package/docs/ja-JP/index.md +0 -3
  139. package/docs/pi.md +3 -5
  140. package/docs/platforms/digitalocean.md +0 -1
  141. package/docs/platforms/mac/voicewake.md +0 -1
  142. package/docs/providers/index.md +0 -2
  143. package/docs/refactor/outbound-session-mirroring.md +0 -2
  144. package/docs/reference/AGENTS.default.md +0 -1
  145. package/docs/reference/RELEASING.md +0 -1
  146. package/docs/reference/session-management-compaction.md +0 -1
  147. package/docs/reference/templates/AGENTS.md +0 -7
  148. package/docs/reference/wizard.md +0 -4
  149. package/docs/security/CONTRIBUTING-THREAT-MODEL.md +0 -1
  150. package/docs/security/README.md +0 -1
  151. package/docs/security/THREAT-MODEL-ATLAS.md +7 -10
  152. package/docs/start/docs-directory.md +0 -1
  153. package/docs/start/hubs.md +0 -1
  154. package/docs/start/lore.md +0 -3
  155. package/docs/start/setup.md +0 -2
  156. package/docs/start/showcase.md +0 -2
  157. package/docs/start/symi.md +0 -4
  158. package/docs/start/wizard-cli-reference.md +0 -4
  159. package/docs/start/wizard.md +3 -4
  160. package/docs/tools/agent-send.md +0 -1
  161. package/docs/tools/elevated.md +0 -2
  162. package/docs/tools/exec-approvals.md +0 -1
  163. package/docs/tools/index.md +0 -7
  164. package/docs/tools/multi-agent-sandbox-tools.md +1 -2
  165. package/docs/tools/reactions.md +0 -1
  166. package/docs/tools/slash-commands.md +0 -14
  167. package/docs/tools/symihub.md +0 -1
  168. package/docs/tts.md +0 -1
  169. package/docs/web/control-ui.md +0 -1
  170. package/docs/zh-CN/automation/cron-jobs.md +0 -2
  171. package/docs/zh-CN/automation/poll.md +0 -8
  172. package/docs/zh-CN/automation/webhook.md +0 -2
  173. package/docs/zh-CN/channels/broadcast-groups.md +0 -1
  174. package/docs/zh-CN/channels/channel-routing.md +4 -9
  175. package/docs/zh-CN/channels/group-messages.md +0 -2
  176. package/docs/zh-CN/channels/groups.md +0 -10
  177. package/docs/zh-CN/channels/imessage.md +0 -2
  178. package/docs/zh-CN/channels/index.md +0 -1
  179. package/docs/zh-CN/channels/msteams.md +0 -2
  180. package/docs/zh-CN/channels/pairing.md +0 -3
  181. package/docs/zh-CN/channels/signal.md +0 -2
  182. package/docs/zh-CN/channels/slack.md +0 -2
  183. package/docs/zh-CN/channels/telegram.md +0 -3
  184. package/docs/zh-CN/channels/troubleshooting.md +0 -2
  185. package/docs/zh-CN/cli/channels.md +0 -6
  186. package/docs/zh-CN/cli/configure.md +0 -1
  187. package/docs/zh-CN/cli/directory.md +0 -1
  188. package/docs/zh-CN/cli/index.md +0 -7
  189. package/docs/zh-CN/cli/message.md +1 -42
  190. package/docs/zh-CN/cli/status.md +0 -1
  191. package/docs/zh-CN/concepts/architecture.md +0 -1
  192. package/docs/zh-CN/concepts/features.md +0 -2
  193. package/docs/zh-CN/concepts/markdown-formatting.md +6 -8
  194. package/docs/zh-CN/concepts/messages.md +0 -1
  195. package/docs/zh-CN/concepts/multi-agent.md +4 -5
  196. package/docs/zh-CN/concepts/queue.md +0 -3
  197. package/docs/zh-CN/concepts/retry.md +0 -5
  198. package/docs/zh-CN/concepts/session-tool.md +0 -2
  199. package/docs/zh-CN/concepts/session.md +3 -11
  200. package/docs/zh-CN/concepts/streaming.md +0 -2
  201. package/docs/zh-CN/concepts/system-prompt.md +0 -2
  202. package/docs/zh-CN/concepts/timezone.md +0 -2
  203. package/docs/zh-CN/date-time.md +0 -1
  204. package/docs/zh-CN/experiments/plans/cron-add-hardening.md +0 -1
  205. package/docs/zh-CN/gateway/configuration-examples.md +0 -7
  206. package/docs/zh-CN/gateway/configuration.md +2 -50
  207. package/docs/zh-CN/gateway/heartbeat.md +0 -2
  208. package/docs/zh-CN/gateway/security/index.md +1 -6
  209. package/docs/zh-CN/gateway/troubleshooting.md +1 -14
  210. package/docs/zh-CN/help/faq.md +0 -15
  211. package/docs/zh-CN/index.md +0 -3
  212. package/docs/zh-CN/install/ansible.md +2 -3
  213. package/docs/zh-CN/install/docker.md +1 -7
  214. package/docs/zh-CN/install/fly.md +0 -14
  215. package/docs/zh-CN/install/northflank.mdx +7 -11
  216. package/docs/zh-CN/install/railway.mdx +6 -10
  217. package/docs/zh-CN/install/render.mdx +1 -2
  218. package/docs/zh-CN/pi.md +3 -5
  219. package/docs/zh-CN/platforms/digitalocean.md +0 -1
  220. package/docs/zh-CN/platforms/mac/voicewake.md +0 -1
  221. package/docs/zh-CN/providers/index.md +0 -2
  222. package/docs/zh-CN/refactor/outbound-session-mirroring.md +0 -2
  223. package/docs/zh-CN/reference/AGENTS.default.md +0 -1
  224. package/docs/zh-CN/reference/RELEASING.md +0 -1
  225. package/docs/zh-CN/reference/session-management-compaction.md +0 -1
  226. package/docs/zh-CN/reference/templates/AGENTS.md +0 -5
  227. package/docs/zh-CN/start/docs-directory.md +0 -1
  228. package/docs/zh-CN/start/getting-started.md +0 -5
  229. package/docs/zh-CN/start/hubs.md +0 -1
  230. package/docs/zh-CN/start/lore.md +0 -3
  231. package/docs/zh-CN/start/setup.md +0 -2
  232. package/docs/zh-CN/start/showcase.md +0 -2
  233. package/docs/zh-CN/start/symi.md +0 -4
  234. package/docs/zh-CN/start/wizard.md +0 -5
  235. package/docs/zh-CN/tools/agent-send.md +0 -1
  236. package/docs/zh-CN/tools/elevated.md +0 -2
  237. package/docs/zh-CN/tools/exec-approvals.md +0 -1
  238. package/docs/zh-CN/tools/index.md +0 -7
  239. package/docs/zh-CN/tools/multi-agent-sandbox-tools.md +1 -2
  240. package/docs/zh-CN/tools/reactions.md +0 -1
  241. package/docs/zh-CN/tools/slash-commands.md +0 -9
  242. package/docs/zh-CN/tts.md +0 -2
  243. package/docs/zh-CN/web/control-ui.md +0 -1
  244. package/package.json +1 -1
  245. package/dist/plugin-sdk/web-CIPJBHAU.js +0 -54
  246. package/docs/channels/discord.md +0 -998
  247. package/docs/zh-CN/channels/discord.md +0 -468
  248. package/skills/1password/SKILL.md +0 -71
  249. package/skills/1password/references/cli-examples.md +0 -29
  250. package/skills/1password/references/get-started.md +0 -17
  251. package/skills/apple-notes/SKILL.md +0 -78
  252. package/skills/apple-reminders/SKILL.md +0 -119
  253. package/skills/bear-notes/SKILL.md +0 -108
  254. package/skills/blogwatcher/SKILL.md +0 -70
  255. package/skills/blucli/SKILL.md +0 -48
  256. package/skills/bluebubbles/SKILL.md +0 -132
  257. package/skills/camsnap/SKILL.md +0 -46
  258. package/skills/canvas/SKILL.md +0 -204
  259. package/skills/connect-email/SKILL.md +0 -142
  260. package/skills/document-generation/SKILL.md +0 -83
  261. package/skills/eightctl/SKILL.md +0 -51
  262. package/skills/food-order/SKILL.md +0 -49
  263. package/skills/gemini/SKILL.md +0 -44
  264. package/skills/gh-issues/SKILL.md +0 -865
  265. package/skills/gifgrep/SKILL.md +0 -80
  266. package/skills/github/SKILL.md +0 -164
  267. package/skills/gog/SKILL.md +0 -117
  268. package/skills/goplaces/SKILL.md +0 -53
  269. package/skills/healthcheck/SKILL.md +0 -246
  270. package/skills/himalaya/SKILL.md +0 -258
  271. package/skills/himalaya/references/configuration.md +0 -184
  272. package/skills/himalaya/references/message-composition.md +0 -199
  273. package/skills/imsg/SKILL.md +0 -122
  274. package/skills/long-task/SKILL.md +0 -58
  275. package/skills/long-task/scripts/detach-task.sh +0 -187
  276. package/skills/nano-banana-pro/SKILL.md +0 -59
  277. package/skills/nano-banana-pro/scripts/generate_image.py +0 -184
  278. package/skills/nano-pdf/SKILL.md +0 -39
  279. package/skills/notion/SKILL.md +0 -173
  280. package/skills/obsidian/SKILL.md +0 -82
  281. package/skills/openai-image-gen/SKILL.md +0 -90
  282. package/skills/openai-image-gen/scripts/gen.py +0 -240
  283. package/skills/openai-whisper/SKILL.md +0 -39
  284. package/skills/openai-whisper-api/SKILL.md +0 -53
  285. package/skills/openai-whisper-api/scripts/transcribe.sh +0 -85
  286. package/skills/openhue/SKILL.md +0 -113
  287. package/skills/oracle/SKILL.md +0 -126
  288. package/skills/ordercli/SKILL.md +0 -79
  289. package/skills/peekaboo/SKILL.md +0 -191
  290. package/skills/reactions-extensive/SKILL.md +0 -30
  291. package/skills/reactions-minimal/SKILL.md +0 -31
  292. package/skills/safe-edit/SKILL.md +0 -51
  293. package/skills/sag/SKILL.md +0 -88
  294. package/skills/sherpa-onnx-tts/SKILL.md +0 -104
  295. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +0 -178
  296. package/skills/songsee/SKILL.md +0 -50
  297. package/skills/sonoscli/SKILL.md +0 -66
  298. package/skills/spotify-player/SKILL.md +0 -65
  299. package/skills/symihub/SKILL.md +0 -78
  300. package/skills/things-mac/SKILL.md +0 -87
  301. package/skills/tmux/SKILL.md +0 -153
  302. package/skills/tmux/scripts/find-sessions.sh +0 -112
  303. package/skills/tmux/scripts/wait-for-text.sh +0 -83
  304. package/skills/trello/SKILL.md +0 -96
  305. package/skills/video-frames/SKILL.md +0 -47
  306. package/skills/video-frames/scripts/frame.sh +0 -81
  307. package/skills/voice-call/SKILL.md +0 -46
  308. package/skills/wacli/SKILL.md +0 -73
  309. package/skills/weather/SKILL.md +0 -113
  310. package/skills/xurl/SKILL.md +0 -462
@@ -117,7 +117,6 @@ System: [2026-01-12 12:19:17 PST] Model switched.
117
117
  原始提供商字段会被保留,不会丢失任何数据。
118
118
 
119
119
  - Slack:来自 API 的类纪元字符串
120
- - Discord:UTC ISO 时间戳
121
120
  - Telegram/WhatsApp:提供商特定的数字/ISO 时间戳
122
121
 
123
122
  如果需要本地时间,请使用已知时区在下游进行转换。
@@ -51,7 +51,6 @@ x-i18n:
51
51
 
52
52
  - **规范化:**包装的 `data`/`job` 负载被解包;`schedule.kind` 和 `payload.kind` 在安全时被推断。
53
53
  - **默认值:**当缺失时,为 `wakeMode` 和 `sessionTarget` 应用安全默认值。
54
- - **提供商:**Discord/Slack/Signal/iMessage 现在在 CLI/UI 中一致显示。
55
54
 
56
55
  参见 [Cron 任务](/automation/cron-jobs) 了解规范化的形式和示例。
57
56
 
@@ -124,7 +124,6 @@ x-i18n:
124
124
  byChannel: {
125
125
  whatsapp: "collect",
126
126
  telegram: "collect",
127
- discord: "collect",
128
127
  slack: "collect",
129
128
  signal: "collect",
130
129
  imessage: "collect",
@@ -163,14 +162,12 @@ x-i18n:
163
162
  idleMinutes: 60,
164
163
  },
165
164
  resetByChannel: {
166
- discord: { mode: "idle", idleMinutes: 10080 },
167
165
  },
168
166
  resetTriggers: ["/new", "/reset"],
169
167
  store: "~/.symi/agents/default/sessions/sessions.json",
170
168
  typingIntervalSeconds: 5,
171
169
  sendPolicy: {
172
170
  default: "allow",
173
- rules: [{ action: "deny", match: { channel: "discord", chatType: "group" } }],
174
171
  },
175
172
  },
176
173
 
@@ -193,9 +190,7 @@ x-i18n:
193
190
  groups: { "*": { requireMention: true } },
194
191
  },
195
192
 
196
- discord: {
197
193
  enabled: true,
198
- token: "YOUR_DISCORD_BOT_TOKEN",
199
194
  dm: { enabled: true, allowFrom: ["steipete"] },
200
195
  guilds: {
201
196
  "123456789012345678": {
@@ -311,7 +306,6 @@ x-i18n:
311
306
  allowFrom: {
312
307
  whatsapp: ["+15555550123"],
313
308
  telegram: ["123456789"],
314
- discord: ["steipete"],
315
309
  slack: ["U123"],
316
310
  signal: ["+15555550123"],
317
311
  imessage: ["user@example.com"],
@@ -444,7 +438,6 @@ x-i18n:
444
438
  botToken: "YOUR_TOKEN",
445
439
  allowFrom: ["123456789"],
446
440
  },
447
- discord: {
448
441
  enabled: true,
449
442
  token: "YOUR_TOKEN",
450
443
  dm: { allowFrom: ["yourname"] },
@@ -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
- - **私信白名单**(`allowFrom` / `channels.discord.dm.allowFrom` / `channels.slack.dm.allowFrom`):谁被允许在私信中与机器人交谈。
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. 检查 GitHub issues 或 Discord
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
@@ -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
@@ -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. **提供商登录**:连接 WhatsApp/Telegram/Discord/Signal
74
- 3. **Gateway 网关测试**:验证安装
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
- 文档:[WhatsApp](/channels/whatsapp),[Telegram](/channels/telegram),[Discord](/channels/discord)
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