sintbot 1.0.15 → 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 (136) hide show
  1. package/CHANGELOG.en.json +118 -0
  2. package/CHANGELOG.json +118 -0
  3. package/README.md +20 -156
  4. package/README.zh-CN.md +20 -164
  5. package/THIRD-PARTY-NOTICES.md +394 -0
  6. package/bin/sintbot-v2.js +363 -0
  7. package/docs/AI-ASSISTED-INSTALL.md +19 -0
  8. package/docs/install.md +93 -0
  9. package/docs/zh-CN/AI-ASSISTED-INSTALL.md +19 -0
  10. package/docs/zh-CN/install.md +93 -0
  11. package/install.sh +84 -0
  12. package/package.json +74 -34
  13. package/src/agent/claudecode.js +149 -108
  14. package/src/agent/codexapp.js +458 -0
  15. package/src/agent/codexcode.js +210 -107
  16. package/src/agent/errtag.js +34 -0
  17. package/src/agent/privatecore.js +790 -0
  18. package/src/agent/privatecore.wasm +0 -0
  19. package/src/agent/runner.js +10 -8
  20. package/src/agent/winexec.js +35 -5
  21. package/src/c2install.js +117 -0
  22. package/src/config.js +2 -1
  23. package/src/core/c2cardeffectbridge.js +51 -0
  24. package/src/core/c2cardterminalpath.js +216 -0
  25. package/src/core/c2durableingress.js +148 -0
  26. package/src/core/c2durablejournal.js +1560 -0
  27. package/src/core/c2durableruntime.js +2361 -0
  28. package/src/core/c2eventidentity.js +90 -0
  29. package/src/core/c2globalfault.js +401 -0
  30. package/src/core/c2localeffectexecutor.js +193 -0
  31. package/src/core/c2payloadhandles.js +333 -0
  32. package/src/core/c2persistrelation.js +179 -0
  33. package/src/core/c2persiststate.js +342 -0
  34. package/src/core/c2platformrecoverysender.js +76 -0
  35. package/src/core/c2recoverygate.js +385 -0
  36. package/src/core/c2runnerinput.js +63 -0
  37. package/src/core/c2servicestartgate.js +103 -0
  38. package/src/core/c2sessionbridge.js +72 -0
  39. package/src/core/c2sourcequarantine.js +30 -0
  40. package/src/core/c2startuprecovery.js +105 -0
  41. package/src/core/c2successorbridge.js +151 -0
  42. package/src/core/c2terminaleffectbridge.js +154 -0
  43. package/src/core/c2terminalprune.js +108 -0
  44. package/src/core/c2turnprojection.js +177 -0
  45. package/src/core/enginecheckpoint.js +211 -0
  46. package/src/core/engineeffectcursor.js +394 -0
  47. package/src/core/enginestepcoordinator.js +183 -0
  48. package/src/core/store.js +52 -8
  49. package/src/core/v2engine.js +1469 -0
  50. package/src/platform/feishu.js +324 -67
  51. package/src/plugins.js +1 -9
  52. package/assets/design-styles/acid-pop.md +0 -155
  53. package/assets/design-styles/archive-index.md +0 -161
  54. package/assets/design-styles/art-deco.md +0 -164
  55. package/assets/design-styles/cinematic-noir.md +0 -178
  56. package/assets/design-styles/editorial.md +0 -121
  57. package/assets/design-styles/extra/README.md +0 -23
  58. package/assets/design-styles/extra/constructivism.md +0 -146
  59. package/assets/design-styles/extra/neo-brutalism.md +0 -175
  60. package/assets/design-styles/extra/new-wave.md +0 -166
  61. package/assets/design-styles/extra/nordic-material.md +0 -162
  62. package/assets/design-styles/extra/paris-couture.md +0 -162
  63. package/assets/design-styles/extra/tropical-modern.md +0 -168
  64. package/assets/design-styles/extra/ulm-functional.md +0 -182
  65. package/assets/design-styles/extra/wa-shikimen.md +0 -160
  66. package/assets/design-styles/extra/y2k-chrome.md +0 -172
  67. package/assets/design-styles/geometric-pop.md +0 -122
  68. package/assets/design-styles/hand-drawn.md +0 -117
  69. package/assets/design-styles/islamic-geometry.md +0 -155
  70. package/assets/design-styles/liquid-glass.md +0 -183
  71. package/assets/design-styles/neo-chinese.md +0 -136
  72. package/assets/design-styles/precision-mono.md +0 -156
  73. package/assets/design-styles/quiet-luxury.md +0 -163
  74. package/assets/design-styles/riso-print.md +0 -116
  75. package/assets/design-styles/soft-friendly.md +0 -174
  76. package/assets/design-styles/swiss-grid.md +0 -156
  77. package/assets/design-styles/tech-dark.md +0 -182
  78. package/assets/favicon.svg +0 -6
  79. package/assets/logo.svg +0 -24
  80. package/bin/sbot.js +0 -4711
  81. package/docs/slack-app-manifest.yaml +0 -104
  82. package/sbot.config.example.json +0 -235
  83. package/src/agent/askonce.js +0 -76
  84. package/src/agent/claudemodels.js +0 -60
  85. package/src/agent/claudestatus.js +0 -74
  86. package/src/agent/claudeusage.js +0 -200
  87. package/src/agent/codexstatus.js +0 -181
  88. package/src/agent/imagen.js +0 -458
  89. package/src/agent/quotaerr.js +0 -44
  90. package/src/agent/transienterr.js +0 -32
  91. package/src/cdp.js +0 -254
  92. package/src/clilang.js +0 -31
  93. package/src/core/cron.js +0 -182
  94. package/src/core/cronfire.js +0 -120
  95. package/src/core/cronrun.js +0 -116
  96. package/src/core/engine.js +0 -2762
  97. package/src/core/interfaces.js +0 -114
  98. package/src/core/issues.js +0 -185
  99. package/src/core/ledger.js +0 -30
  100. package/src/core/opsalert.js +0 -214
  101. package/src/core/pending.js +0 -123
  102. package/src/core/proxy.js +0 -424
  103. package/src/core/quotaalert.js +0 -79
  104. package/src/core/quotaerr.js +0 -55
  105. package/src/core/scheduler.js +0 -59
  106. package/src/design.js +0 -5161
  107. package/src/gitrepo.js +0 -150
  108. package/src/health.js +0 -353
  109. package/src/installdeps.js +0 -72
  110. package/src/leftover.js +0 -174
  111. package/src/platform/boardnotice.js +0 -77
  112. package/src/platform/boardops.js +0 -36
  113. package/src/platform/boardwatch.js +0 -447
  114. package/src/platform/cli.js +0 -45
  115. package/src/platform/slack.js +0 -1289
  116. package/src/platform/takeovercard.js +0 -37
  117. package/src/platform/wecom.js +0 -938
  118. package/src/platform/wecomcli.js +0 -128
  119. package/src/platform/wecomgate.js +0 -108
  120. package/src/platform/wecomname.js +0 -43
  121. package/src/platform/wecompoll.js +0 -241
  122. package/src/preview.js +0 -581
  123. package/src/projectmemory.js +0 -175
  124. package/src/service.js +0 -317
  125. package/src/ui/auth.js +0 -31
  126. package/src/ui/browser.html +0 -392
  127. package/src/ui/browserroutes.js +0 -234
  128. package/src/ui/console.html +0 -5494
  129. package/src/ui/dashboard.js +0 -168
  130. package/src/ui/feishulogin.js +0 -136
  131. package/src/ui/server.js +0 -2314
  132. package/src/ui/sessions.js +0 -78
  133. package/src/ui/takeover.js +0 -108
  134. package/src/updater.js +0 -243
  135. package/src/upgrade.js +0 -35
  136. package/src/usage.js +0 -144
package/CHANGELOG.en.json CHANGED
@@ -1,4 +1,122 @@
1
1
  [
2
+ {
3
+ "version": "1.3.0",
4
+ "date": "2026-11-08",
5
+ "name": "Built-in core",
6
+ "items": [
7
+ {
8
+ "t": "Adds a built-in core",
9
+ "d": "This release supports Codex messages in one Feishu group on macOS. Whiteboards, multiple groups and other platforms will follow. Keep existing multi-group installations and configure this release separately using the installation guide."
10
+ }
11
+ ]
12
+ },
13
+ {
14
+ "version": "1.2.1",
15
+ "date": "2026-11-05",
16
+ "name": "Follow-up notice fix",
17
+ "items": [
18
+ {
19
+ "t": "No false queue notice right after a task starts",
20
+ "d": "A follow-up sent in the first few seconds joins the running task once the channel is ready, without first saying it will wait until the task ends."
21
+ }
22
+ ]
23
+ },
24
+ {
25
+ "version": "1.2.0",
26
+ "date": "2026-11-05",
27
+ "name": "Steadier follow-ups, clearer errors",
28
+ "items": [
29
+ {
30
+ "t": "The reply card follows the latest follow-up",
31
+ "d": "Once a follow-up is accepted, the card moves under that message, so the answer ends up at the bottom of the group. A short notice is sent only when the card cannot move."
32
+ },
33
+ {
34
+ "t": "Recalls and redos no longer lose messages",
35
+ "d": "A recalled follow-up that had not been delivered no longer runs on its own. A redo in a new session or on another model keeps delivered follow-ups, except recalled ones."
36
+ },
37
+ {
38
+ "t": "Codex requests no longer stall a task",
39
+ "d": "Approval and question requests are declined according to the protocol, and the task continues."
40
+ },
41
+ {
42
+ "t": "Console messages can join the running task",
43
+ "d": "A console message with Reply checked is treated like a group member's. The group line is posted first, the dialog says where the message will go, and the result reports where it landed."
44
+ },
45
+ {
46
+ "t": "Feishu answer cards show the model and quota",
47
+ "d": "The small print on the card now includes the current model and account quota."
48
+ },
49
+ {
50
+ "t": "Plain explanations for network and billing errors",
51
+ "d": "Network failures, low balance and expired subscriptions are explained in the group. Repeated network failures alert the operator, and account problems can fail over."
52
+ },
53
+ {
54
+ "t": "Lost sessions are redone automatically",
55
+ "d": "Claude and Codex groups clear a session that no longer exists, redo the message in a new one, and say so in the group."
56
+ }
57
+ ]
58
+ },
59
+ {
60
+ "version": "1.1.0",
61
+ "date": "2026-11-05",
62
+ "name": "Codex busy follow-up",
63
+ "items": [
64
+ {
65
+ "t": "Codex can receive follow-ups during a task",
66
+ "d": "Busy follow-up is on by default for Codex groups. Ordinary human follow-up messages enter the active task through the App Server; related requests can adjust the work, independent requests are answered separately in order, and unconfirmed deliveries return to the queue. It can be disabled per group; Claude groups and scheduled, quiet, and polled messages keep their existing behavior."
67
+ },
68
+ {
69
+ "t": "Busy follow-up is limited to the effective Codex backend",
70
+ "d": "The console shows the control for the backend currently in use, and the server validates it too. Changes apply from the next turn."
71
+ }
72
+ ]
73
+ },
74
+ {
75
+ "version": "1.0.17",
76
+ "date": "2026-11-05",
77
+ "name": "More reliable installs and runs",
78
+ "items": [
79
+ {
80
+ "t": "Installs are verified by running the program",
81
+ "d": "After installing a model CLI, setup runs it once to confirm its version. A file on disk or a clean installer exit no longer counts as success, and a failed check explains what went wrong and what to do next."
82
+ },
83
+ {
84
+ "t": "Health checks ignore files that cannot run",
85
+ "d": "Files without execute permission are no longer reported as installed programs. Automatic installs also keep the platform components the CLI needs to run."
86
+ },
87
+ {
88
+ "t": "Finds a model CLI that has moved",
89
+ "d": "If the configured path stops working, SintBot looks for the same program in common install locations and keeps going. If it is nowhere to be found, the group gets a plain explanation and the operator gets an alert."
90
+ },
91
+ {
92
+ "t": "Clearer handling of lost logins and crashes",
93
+ "d": "A revoked login token now counts as an account problem, so the group can fail over and alert. A Codex run that exits with only an error gets the same treatment."
94
+ },
95
+ {
96
+ "t": "Fixed occasional garbled Chinese",
97
+ "d": "Characters split across output chunks no longer turn into garbage."
98
+ }
99
+ ]
100
+ },
101
+ {
102
+ "version": "1.0.16",
103
+ "date": "2026-10-30",
104
+ "name": "Safer AI-assisted setup, quieter design tools",
105
+ "items": [
106
+ {
107
+ "t": "Safer AI-assisted installation",
108
+ "d": "API keys are masked as they are entered in the local terminal, keeping them out of AI conversation logs. Without an interactive terminal, the installer stops if Node is missing or too old; otherwise it skips model setup and the background service and explains what remains."
109
+ },
110
+ {
111
+ "t": "Clearer install and first-use flow",
112
+ "d": "Add bilingual guides for AI-assisted installation and first use. The one-line preview lists planned operations and confirmations, and warns that a model trial may use quota or incur a charge."
113
+ },
114
+ {
115
+ "t": "Design and icon libraries on demand",
116
+ "d": "Both libraries are collapsed by default; style presets are recommended only for a new product with no visual direction yet."
117
+ }
118
+ ]
119
+ },
2
120
  {
3
121
  "version": "1.0.15",
4
122
  "date": "2026-10-30",
package/CHANGELOG.json CHANGED
@@ -1,4 +1,122 @@
1
1
  [
2
+ {
3
+ "version": "1.3.0",
4
+ "date": "2026-11-08",
5
+ "name": "补充内置核心",
6
+ "items": [
7
+ {
8
+ "t": "补充内置核心",
9
+ "d": "本版支持 macOS 上的飞书单群 Codex 消息;画布、多群和其他平台后续迭代。已有多群安装请保留原版本,按新版安装指南单独配置。"
10
+ }
11
+ ]
12
+ },
13
+ {
14
+ "version": "1.2.1",
15
+ "date": "2026-11-05",
16
+ "name": "修复补话时的误报",
17
+ "items": [
18
+ {
19
+ "t": "刚开始处理时补话不再误报已排队",
20
+ "d": "任务刚开始的几秒内补话,会在通道就绪后并入当前任务,不再先说一句「当前任务结束后处理」。"
21
+ }
22
+ ]
23
+ },
24
+ {
25
+ "version": "1.2.0",
26
+ "date": "2026-11-05",
27
+ "name": "忙时跟进更可靠,出错说得更清楚",
28
+ "items": [
29
+ {
30
+ "t": "回答卡片跟着最新的跟进走",
31
+ "d": "跟进被接受后,回复卡片移到这条消息下面,做完时答案在群底部;卡片搬不了时才发一句「已加入」。"
32
+ },
33
+ {
34
+ "t": "撤回和重做不再丢消息",
35
+ "d": "撤回还没送达的跟进后不会再单独执行;换会话或切模型重做时,已送达的跟进会一起带上,撤回过的除外。"
36
+ },
37
+ {
38
+ "t": "Codex 主动请求不再卡住任务",
39
+ "d": "无人值守时按协议拒绝审批和提问请求,任务继续往下走。"
40
+ },
41
+ {
42
+ "t": "控制台插话可以加入当前任务",
43
+ "d": "勾了「回复」的插话按群成员消息处理;先等群里那行发出去再执行,插话框说明去向,提交后回报落点。"
44
+ },
45
+ {
46
+ "t": "飞书回答卡显示模型和额度",
47
+ "d": "卡片右下角的小字增加当前模型和账号额度。"
48
+ },
49
+ {
50
+ "t": "连不上模型、余额不足都说人话",
51
+ "d": "网络不通、余额不足、订阅过期在群里都有清楚的说明;连续网络失败发运维告警,账号类问题可切备用模型。"
52
+ },
53
+ {
54
+ "t": "续接的会话不见了会自动重做",
55
+ "d": "Claude 和 Codex 群都会清掉失效的会话,在新会话里重做这条,并在群里说一句。"
56
+ }
57
+ ]
58
+ },
59
+ {
60
+ "version": "1.1.0",
61
+ "date": "2026-11-05",
62
+ "name": "Codex 忙时跟进",
63
+ "items": [
64
+ {
65
+ "t": "Codex 可接收任务进行中的后续消息",
66
+ "d": "Codex 群默认开启忙时跟进,通过 App Server 将普通真人后续消息送入当前任务;关联要求及时吸收,独立请求按序分别回应,未确认送达的消息回到队列。可按群关闭;Claude 群及定时、静默、轮询消息维持原行为。"
67
+ },
68
+ {
69
+ "t": "忙时跟进仅对实际 Codex 后端开放",
70
+ "d": "控制台按当前生效的后端显示开关,服务端也会校验;设置从下一轮开始生效。"
71
+ }
72
+ ]
73
+ },
74
+ {
75
+ "version": "1.0.17",
76
+ "date": "2026-11-05",
77
+ "name": "安装判定和运行稳定性",
78
+ "items": [
79
+ {
80
+ "t": "安装后实际运行一次才算成功",
81
+ "d": "向导装好模型程序后会实际运行一次确认版本,文件存在或安装命令正常退出都不再算成功;校验失败时会说明原因和处理办法。"
82
+ },
83
+ {
84
+ "t": "体检不再把不能运行的文件当成已安装",
85
+ "d": "没有执行权限的文件不再被识别为可用程序。自动安装时也会带上程序运行所需的平台组件。"
86
+ },
87
+ {
88
+ "t": "模型程序换位置后自动找回",
89
+ "d": "配置的路径失效时,会在常见安装位置找同一个程序继续运行;哪里都找不到时在群里说明,并发运维告警。"
90
+ },
91
+ {
92
+ "t": "登录失效和异常退出说得更清楚",
93
+ "d": "登录令牌被吊销算账号问题,可切备用模型并告警;Codex 只输出错误就退出时也走同样的处理。"
94
+ },
95
+ {
96
+ "t": "修复中文偶尔乱码",
97
+ "d": "输出中的汉字被分块拆开时不再变成乱码。"
98
+ }
99
+ ]
100
+ },
101
+ {
102
+ "version": "1.0.16",
103
+ "date": "2026-10-30",
104
+ "name": "AI 安装更安全,设计入口更克制",
105
+ "items": [
106
+ {
107
+ "t": "AI 协助安装更安全",
108
+ "d": "API key 在本机终端输入时会遮蔽回显,避免进入 AI 对话记录。没有交互终端时,缺少合格 Node 就停止;已有 Node 时则跳过模型配置和后台服务并说明后续步骤。"
109
+ },
110
+ {
111
+ "t": "安装流程与首次使用更清晰",
112
+ "d": "新增中英文 AI 安装与首次使用指南;一键预览会列出操作和确认项,并提示模型试跑可能消耗额度或产生费用。"
113
+ },
114
+ {
115
+ "t": "设计库和图标库按需展示",
116
+ "d": "两类资源默认折叠;仅在从零设计新产品且尚未确定视觉方向时推荐风格预设。"
117
+ }
118
+ ]
119
+ },
2
120
  {
3
121
  "version": "1.0.15",
4
122
  "date": "2026-10-30",
package/README.md CHANGED
@@ -1,177 +1,41 @@
1
- <p align="center">
2
- <a href="https://sintbot.com"><picture><source srcset="https://raw.githubusercontent.com/sintlab/sintbot/main/docs/assets/hero.svg" type="image/svg+xml"><img src="https://raw.githubusercontent.com/sintlab/sintbot/main/docs/assets/banner.png" alt="SintBot — the group-project AI daemon, running on your own machine" width="880"></picture></a>
3
- </p>
1
+ # SintBot
4
2
 
5
- <p align="center"><b>Say it in the group. Any model, one memory. On your own machine.</b></p>
3
+ [简体中文](./README.zh-CN.md) · [Install](./docs/install.md) · [Website](https://sintbot.com)
6
4
 
7
- <p align="center">
8
- <a href="https://www.npmjs.com/package/sintbot"><img src="https://img.shields.io/npm/v/sintbot?style=flat-square&color=d68f44" alt="npm version"></a>
9
- <a href="https://github.com/sintlab/sintbot/actions/workflows/test.yml"><img src="https://img.shields.io/github/actions/workflow/status/sintlab/sintbot/test.yml?branch=main&style=flat-square&label=tests" alt="tests"></a>
10
- <img src="https://img.shields.io/node/v/sintbot?style=flat-square" alt="node version">
11
- <a href="./LICENSE"><img src="https://img.shields.io/badge/license-PolyForm%20Shield-blue?style=flat-square" alt="PolyForm Shield license"></a>
12
- </p>
5
+ SintBot runs a coding agent on your Mac from a Feishu group. Bind **one group to one local project**, send a request, and receive progress and the final reply in that group.
13
6
 
14
- <p align="center">
15
- <a href="https://sintbot.com">Website</a> ·
16
- <a href="./README.zh-CN.md">简体中文</a> ·
17
- <a href="./docs/install.md">Install guide</a> ·
18
- <a href="https://github.com/sintlab/sintbot/releases">Releases</a>
19
- </p>
7
+ ## Version 1.3.0
20
8
 
21
- ---
9
+ This first built-in-core release supports **macOS, Node.js 22 or newer, one Feishu group and Codex message turns**. You need a working local Codex installation and login, plus a Feishu custom app. Model usage follows your Codex account's terms and limits.
22
10
 
23
- SintBot is a self-hosted daemon that puts a coding agent in your team's group chat. You bind a group to a project directory, and then anyone in that group can hand it work. It reads and changes code, designs, runs scripts and reports back, all on your own machine.
11
+ The application runs in the foreground. Keep its terminal open; stop it with Ctrl-C and wait for shutdown to finish. This release does not install an automatic background service.
24
12
 
25
- Each turn runs the official **Claude Code** or **Codex** CLI headless, so tools, MCP servers, skills and project memory behave just as they do in your terminal. Each group chooses its model: Claude, GPT, DeepSeek, GLM, MiniMax, Kimi, or one you host yourself.
13
+ Multiple groups, Claude and other model routes, Slack, WeCom, international Lark, the management console, scheduled tasks, terminal chat, busy-turn steering and whiteboards are outside this release's supported scope. Existing installations using those features should keep their current version. Support will expand in subsequent releases.
26
14
 
27
- Full source, docs and tests are public and downloadable under the [PolyForm Shield License 1.0.0](./LICENSE).
15
+ ## Install and connect
28
16
 
29
- ## How it works
30
-
31
- <p align="center"><img src="https://raw.githubusercontent.com/sintlab/sintbot/main/docs/assets/how-it-works.svg" alt="Group (Slack, Feishu or WeCom) → SintBot on your machine → Claude Code or Codex in the project directory → the model chosen for that group; progress and results flow back to the group" width="880"></p>
32
-
33
- - **One group, one project.** Each group gets its own project directory, session, queue, permissions and scheduled tasks.
34
- - **Same agent, any brain.** Switch models with `/model` in the chat. The project's `CLAUDE.md`, `AGENTS.md` and memory carry over to whichever agent runs next.
35
- - **Stays on your machine.** Projects, sessions, memory and logs live on your disk and never pass through a SintBot server. Prompts and the code the model reads still go to the provider you chose.
36
- - **No public IP.** Every platform uses an outbound long connection (Socket Mode on Slack). One daemon can serve Slack, Feishu and WeCom at the same time.
37
-
38
- ## Quick start
39
-
40
- **1. Install** on macOS or Linux:
41
-
42
- ```bash
43
- curl -fsSL https://sintbot.com/install.sh | bash
44
- ```
45
-
46
- The script checks for Node.js 22+, installs sintbot, sets up a model with a live trial turn and offers to install the background service, then opens the console at http://127.0.0.1:4600. It asks before every change and never uses `sudo`. Read [install.sh](./install.sh) first, or add `--dry-run` to see what it would do.
47
-
48
- To install by hand instead:
17
+ Follow the [installation guide](./docs/install.md) to install the exact version into a separate directory, configure one group, initialize a new receipt journal and start the bot. The installer leaves existing installations and services in place.
49
18
 
50
19
  ```bash
51
- npm i -g sintbot
52
- sintbot setup # set up a model, with a live trial turn
53
- sintbot service install # restarted on crash, started at login; the console stays at http://127.0.0.1:4600
20
+ curl -fsSL https://sintbot.com/install.sh -o /tmp/sintbot-install.sh
21
+ bash /tmp/sintbot-install.sh --dry-run
22
+ bash /tmp/sintbot-install.sh
54
23
  ```
55
24
 
56
- **2. Connect a chat platform in the console.** Create a bot, add it to a group and enter its credentials under Settings; each platform has a step-by-step guide there and here: [Slack](./docs/platforms/slack.md) · [Feishu](./docs/platforms/feishu.md) · [WeCom](./docs/platforms/wecom.md). Then bind the group to a project folder under Groups.
57
-
58
- **3. @ the bot in your group.** Switch models and watch live activity in the same console.
59
-
60
- ### Pick a model: no Claude subscription needed
61
-
62
- The wizard checks what this machine is logged in to and recommends in this order:
63
-
64
- | You have | Use | What to do |
65
- |---|---|---|
66
- | A Claude subscription (Pro / Max) | Claude | run `claude auth login` before the wizard |
67
- | A ChatGPT account | GPT, via Codex | `npm i -g @openai/codex`, then `codex login` |
68
- | Neither | **DeepSeek** (recommended) | sign up at [platform.deepseek.com](https://platform.deepseek.com), top up, create an API key and paste it into the wizard; it runs a trial turn on the spot |
69
-
70
- The other presets are Zhipu GLM, MiniMax and Volcano Ark. GLM and MiniMax also have international sites (Z.ai, minimax.io); the wizard finds out which site your key belongs to by trying it. Kimi and any other Anthropic-compatible endpoint can be added as custom endpoints in the console.
71
-
72
- Without a Claude subscription, Claude Code is only the agent framework and needs no login. The only features you lose are GPT groups and image generation, both of which borrow Codex. In mainland China, see the [Chinese README](./README.zh-CN.md#在中国大陆).
73
-
74
- ## What you get
75
-
76
- | Area | What it does |
77
- |---|---|
78
- | **In the group** | Streaming progress: Slack shows its native "Working…" status and a Stop button; Feishu cards update in place. Messages that arrive mid-turn are merged into the next turn. |
79
- | **Commands** | `/help` · `/status` · `/model <name>` · `/stop` · `/skip` · `/new` · `/hud` · `/issue`. On Slack, use a `!` prefix because Slack consumes messages that start with `/`. |
80
- | **Permissions** | Set per group, read-only by default. Thirteen secret and PII patterns are masked before a message reaches the group. |
81
- | **Scheduled tasks** | Cron, aliases such as `daily`, or plain "every day at 09:00". A task can wake the agent, post a reminder or run a script. |
82
- | **Design** | Distill a style from a site, a project folder or an image you like, or start from sixteen built-in styles. The result is a per-project `DESIGN.md` the agent must read, and every hand-off is checked against it. Iterate by annotating Feishu whiteboards. |
83
- | **Images** | Generated with the machine's Codex subscription, so no API key is needed. Edit an existing image, repaint a masked region, or produce a transparent background. |
84
- | **Previews & browser** | HTML prototypes are served on your LAN for the group to see. When the bot's browser hits a login or captcha, a group member takes over through a one-time link. |
85
- | **Console** | One local page for every group: a "Needs you" list (failed turns with their reason, takeover requests, open feedback), projects, models, permissions, design library, live activity and release history. Available in English or Chinese. |
86
- | **Operations** | Turns are capped at 30 minutes, and at most two run at once. Turns interrupted by a restart are redone automatically. Includes `sintbot doctor`, an ops alert group and quota warnings. |
87
-
88
- ## Everyday commands
89
-
90
- ```bash
91
- sintbot doctor # health check: config, CLIs, models, platforms, groups
92
- sintbot service status | logs # is the service up, and what is it doing
93
- sintbot agent run "…" # a read-only trial turn in the current directory
94
- sintbot ui # open the console
95
- sintbot chat -C <project-dir> # simulate group messages in the terminal, no chat platform needed
96
- sintbot help # all commands
97
- ```
98
-
99
- Configuration lives in `~/.sbot/config.json`. See [docs/config.md](./docs/config.md) for the fields, or the annotated [sbot.config.example.json](./sbot.config.example.json). The package installs two equivalent commands, `sintbot` and `sbot`.
100
-
101
- ## Status
102
-
103
- | Area | Status |
104
- |---|---|
105
- | **macOS** | Verified. Real-machine testing covered the main flows on Slack and Feishu: messaging, streaming progress, model switching and scheduled tasks. |
106
- | **Linux** | Experimental. The systemd unit is covered by unit tests but has not yet been installed on real hardware. |
107
- | **Windows** | Not verified. Install manually; `sintbot service install` prints the NSSM and pm2 commands to run. |
108
- | **WeCom** | The newest integration, with the least real-world use. |
109
- | **Slack** | The native Stop button, `!status` and the thread buttons are covered by tests but have had little real-world use. |
110
- | **Kimi** | Not a preset and not yet tested. Add it in the console as a custom endpoint (Models → Add model → Custom); if you try it, please [report how it went](https://github.com/sintlab/sintbot/issues). |
111
-
112
- "Feishu" here means the China edition (open.feishu.cn). The international Lark (larksuite.com) runs on a separate open platform and is not supported yet. The bot's built-in messages and `sintbot doctor` are in Chinese; the installer, the setup wizard and the console also speak English.
113
-
114
- ## Security
115
-
116
- - The bot **executes commands** in the bound project directory. Permissions are set per group: read-only by default, with "full access" for groups you trust. File tools are confined to the project directory; shell commands are not sandboxed. See [docs/security.md](./docs/security.md).
117
- - The console listens on this machine only. Before opening it to your LAN, run `sintbot ui --set-password`.
118
- - Personal Claude or ChatGPT subscriptions may not permit multi-user groups; check the provider's terms before team use.
119
-
120
- ## FAQ
121
-
122
- <details>
123
- <summary><b>Do I need a Claude subscription?</b></summary>
124
-
125
- No. If the wizard finds no Claude or Codex login, it recommends DeepSeek and runs a trial turn as soon as you paste the API key. Claude Code is still the agent framework; it just needs no login.
126
- </details>
127
-
128
- <details>
129
- <summary><b>Can I use it in mainland China?</b></summary>
130
-
131
- Yes. Use Feishu as the chat platform and DeepSeek (or the mainland sites of Zhipu GLM, MiniMax or Kimi) as the model: they connect directly, with no proxy. A proxy is needed only for Claude, ChatGPT or Slack.
132
- </details>
133
-
134
- <details>
135
- <summary><b>Do I need a server or a public IP?</b></summary>
136
-
137
- No. SintBot runs on a computer you keep on; a Mac is the tested setup. It only makes outbound connections: Socket Mode for Slack, a WebSocket long connection for Feishu and a long connection for WeCom. The console stays local unless you open it.
138
- </details>
139
-
140
- <details>
141
- <summary><b>Does switching models lose the project's memory?</b></summary>
142
-
143
- No. A switch starts a fresh conversation, but the project's `CLAUDE.md`, `AGENTS.md` and memory directory are handed to whichever agent runs next. Long sessions are compacted automatically.
144
- </details>
145
-
146
- <details>
147
- <summary><b>How is it different from cc-bot?</b></summary>
148
-
149
- Both are free. [cc-bot](https://github.com/WaterTian/cc-bot) is a Claude Code plugin: it runs inside your own interactive session, on that session's model. SintBot is a standalone daemon: no one has to keep a terminal open, each group has its own project, model and permissions, it drives both Claude Code and Codex, and it comes with a local console.
150
- </details>
151
-
152
- ## Documentation
25
+ The installer installs the package only. It does not authenticate Codex, collect credentials, connect the group or start a service. An [AI-assisted installation guide](./docs/AI-ASSISTED-INSTALL.md) covers the same steps.
153
26
 
154
- | Topic | Docs |
155
- |---|---|
156
- | Getting started | [Install](./docs/install.md) · [Models](./docs/models.md) · [Configuration](./docs/config.md) · [Security](./docs/security.md) · [Features](./docs/features.md) |
157
- | Chat platforms | [Slack](./docs/platforms/slack.md) · [Feishu](./docs/platforms/feishu.md) · [WeCom](./docs/platforms/wecom.md) |
158
- | Features | [Whiteboard](./docs/BOARD.md) · [Previews](./docs/PREVIEW.md) · [Browser](./docs/BROWSER.md) · [Icons](./docs/ICONS.md) · [Codex runner](./docs/CODEX-RUNNER.md) · [Public console access](./docs/PUBLIC-ACCESS.md) |
159
- | Project | [Architecture (DESIGN.md)](./DESIGN.md) · [Contributing](./CONTRIBUTING.md) · [Changelog](./CHANGELOG.en.json) |
27
+ ## First task
160
28
 
161
- ## Feedback
29
+ Start with a read-only request in your configured group, for example: “Read the first line of this project's README and reply with that line.” Check the answer against the local file, stop the foreground process cleanly, then start it again. A successful package install alone does not verify the group connection or a model turn.
162
30
 
163
- Please report bugs and request features in [GitHub Issues](https://github.com/sintlab/sintbot/issues). Include the following, with secrets redacted:
31
+ ## Data and recovery
164
32
 
165
- - `sintbot version`
166
- - your OS
167
- - your chat platform
168
- - the output of `sintbot doctor`
33
+ Project files, configuration and persistent receipts remain on your Mac. Feishu receives messages and replies, and Codex sends model input to its configured provider. Read-only is the recommended initial permission level; granting full access allows the agent to change files and execute commands.
169
34
 
170
- Report security issues privately through [GitHub Security Advisories](https://github.com/sintlab/sintbot/security/advisories/new); see [SECURITY.md](./SECURITY.md).
35
+ If startup reports unresolved receipts or uncertain external effects, preserve the state and investigate. Do not delete the journal, clear receipts or resend the task merely to get past startup: the prior request may already have executed. Existing multi-group state is not automatically migrated by 1.3.0.
171
36
 
172
37
  ## License
173
38
 
174
- Full source, docs and tests are public and downloadable under the [PolyForm Shield License 1.0.0](./LICENSE) © WaterTian. The license text governs.
39
+ SintBot is distributed under [PolyForm Shield 1.0.0](./LICENSE). The package includes a built-in core. Use of the software is covered by the included license. Dependency notices are in [THIRD-PARTY-NOTICES.md](./THIRD-PARTY-NOTICES.md).
175
40
 
176
- - You may use, modify and run it for yourself, your team or your company.
177
- - You may not use it to offer a product that competes with SintBot, paid or free.
41
+ Author: **WaterTian**.