create-openclaw-bot 5.7.9 → 5.7.10
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/README.md +2 -2
- package/README.vi.md +2 -2
- package/dist/setup/shared/workspace-gen.js +44 -19
- package/dist/setup.js +44 -19
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# 🦞 OpenClaw Setup
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
|
-
<a href="https://github.com/tuanminhhole/openclaw-setup/releases"><img src="https://img.shields.io/badge/RELEASE-v5.7.
|
|
6
|
+
<a href="https://github.com/tuanminhhole/openclaw-setup/releases"><img src="https://img.shields.io/badge/RELEASE-v5.7.10-0EA5E9?style=for-the-badge" alt="Version 5.7.10" /></a>
|
|
7
7
|
<a href="https://github.com/tuanminhhole/openclaw-setup?tab=MIT-1-ov-file"><img src="https://img.shields.io/badge/LICENSE-MIT-success?style=for-the-badge" alt="MIT License" /></a>
|
|
8
8
|
<a href="https://www.npmjs.com/package/create-openclaw-bot"><img src="https://img.shields.io/npm/v/create-openclaw-bot?style=for-the-badge&label=CLI&color=2563EB&logo=npm&logoColor=white" alt="NPM Version" /></a>
|
|
9
9
|
<a href="https://github.com/tuanminhhole/openclaw-setup/stargazers"><img src="https://img.shields.io/github/stars/tuanminhhole/openclaw-setup?style=for-the-badge&color=eab308&logo=github&logoColor=white" alt="GitHub Stars" /></a>
|
|
@@ -24,7 +24,7 @@ An interactive **CLI tool** and **Setup Wizard** to deploy your own free AI Bot
|
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
27
|
-
## 🆕 What's new in v5.7.
|
|
27
|
+
## 🆕 What's new in v5.7.10
|
|
28
28
|
|
|
29
29
|
- 🔧 **Rename Zalo Plugin Reference** — Updated internal string references from `zalo-mod` to `openclaw-zalo-mod` to align with the new NPM package identity.
|
|
30
30
|
|
package/README.vi.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# 🦞 OpenClaw Setup
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
|
-
<a href="https://github.com/tuanminhhole/openclaw-setup/releases"><img src="https://img.shields.io/badge/RELEASE-v5.7.
|
|
6
|
+
<a href="https://github.com/tuanminhhole/openclaw-setup/releases"><img src="https://img.shields.io/badge/RELEASE-v5.7.10-0EA5E9?style=for-the-badge" alt="Version 5.7.10" /></a>
|
|
7
7
|
<a href="https://github.com/tuanminhhole/openclaw-setup?tab=MIT-1-ov-file"><img src="https://img.shields.io/badge/LICENSE-MIT-success?style=for-the-badge" alt="MIT License" /></a>
|
|
8
8
|
<a href="https://www.npmjs.com/package/create-openclaw-bot"><img src="https://img.shields.io/npm/v/create-openclaw-bot?style=for-the-badge&label=CLI&color=2563EB&logo=npm&logoColor=white" alt="NPM Version" /></a>
|
|
9
9
|
<a href="https://github.com/tuanminhhole/openclaw-setup/stargazers"><img src="https://img.shields.io/github/stars/tuanminhhole/openclaw-setup?style=for-the-badge&color=eab308&logo=github&logoColor=white" alt="GitHub Stars" /></a>
|
|
@@ -24,7 +24,7 @@ Công cụ **CLI tương tác** và **Setup Wizard** để tự triển khai Bot
|
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
27
|
-
## 🆕 Có gì mới trong v5.7.
|
|
27
|
+
## 🆕 Có gì mới trong v5.7.10
|
|
28
28
|
|
|
29
29
|
- 🔧 **Cập nhật tham chiếu Plugin Zalo** — Đổi tên `zalo-mod` thành `openclaw-zalo-mod` trong các chuỗi sinh cấu hình và test để đồng bộ với package mới.
|
|
30
30
|
|
|
@@ -249,19 +249,47 @@ const CDP_URL = 'http://127.0.0.1:9222';
|
|
|
249
249
|
|
|
250
250
|
function buildBrowserDoc(options = {}) {
|
|
251
251
|
const { isVi = true, variant = 'wizard', workspaceRoot = '' } = options;
|
|
252
|
-
// Normalize: strip trailing slash so path joins work cleanly
|
|
253
252
|
const wsRoot = workspaceRoot.replace(/\/+$/, '');
|
|
254
253
|
const btPath = wsRoot ? `${wsRoot}/browser-tool.js` : 'browser-tool.js';
|
|
255
254
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
255
|
+
return `# Navigation
|
|
256
|
+
node ${btPath} status
|
|
257
|
+
node ${btPath} open "https://google.com"
|
|
258
|
+
node ${btPath} get_url
|
|
259
|
+
|
|
260
|
+
# ⭐ Content extraction — LUÔN dùng get_posts cho Facebook
|
|
261
|
+
node ${btPath} get_posts
|
|
262
|
+
node ${btPath} get_text
|
|
263
|
+
node ${btPath} get_text 8000
|
|
264
|
+
node ${btPath} get_links
|
|
265
|
+
node ${btPath} get_links "/posts/"
|
|
266
|
+
node ${btPath} evaluate "document.title"
|
|
267
|
+
node ${btPath} console
|
|
268
|
+
|
|
269
|
+
# Screenshots & export
|
|
270
|
+
node ${btPath} screenshot
|
|
271
|
+
node ${btPath} screenshot_full
|
|
272
|
+
node ${btPath} pdf
|
|
273
|
+
|
|
274
|
+
# Interactions
|
|
275
|
+
node ${btPath} click "button.submit"
|
|
276
|
+
node ${btPath} fill "input[name='q']" "search"
|
|
277
|
+
node ${btPath} press "Enter"
|
|
278
|
+
node ${btPath} hover "a.link"
|
|
279
|
+
node ${btPath} select "select#id" "value"
|
|
280
|
+
node ${btPath} upload "input[type=file]" "/tmp/photo.jpg"
|
|
281
|
+
|
|
282
|
+
# Scrolling & viewport
|
|
283
|
+
node ${btPath} scroll
|
|
284
|
+
node ${btPath} scroll 1500
|
|
285
|
+
node ${btPath} wait 3000
|
|
286
|
+
node ${btPath} resize 1920 1080
|
|
287
|
+
|
|
288
|
+
# Tab management
|
|
289
|
+
node ${btPath} tabs
|
|
290
|
+
node ${btPath} new_tab "https://example.com"
|
|
291
|
+
node ${btPath} switch_tab 1
|
|
292
|
+
node ${btPath} close_tab 2`;
|
|
265
293
|
}
|
|
266
294
|
|
|
267
295
|
function buildSecurityRules(isVi = true) {
|
|
@@ -299,14 +327,14 @@ const CDP_URL = 'http://127.0.0.1:9222';
|
|
|
299
327
|
? '- If metadata does not clearly say this is a group/supergroup, treat it as a private DM and reply normally.\n'
|
|
300
328
|
: '';
|
|
301
329
|
return isVi
|
|
302
|
-
? `# Hướng dẫn vận hành\n\n## Vai trò\nBạn là **${botName}**, ${botDesc ? botDesc.toLowerCase() : 'trợ lý AI'}.\n\n## Quy tắc trả lời\n- Trả lời ngắn gọn, súc tích\n- Ưu tiên tiếng Việt\n- Khi hỏi tên: _\"Mình là ${botName}\"_\n- Không bịa thông tin\n- Bạn ĐÃ biết sẵn danh tính, vai trò, tính cách của mình từ **IDENTITY.md**, **SOUL.md**, **AGENTS.md**\n- KHÔNG hỏi user đặt lại tên, vibe, persona, emoji ký tên, hay \"bạn muốn mình là kiểu trợ lý nào\"\n- KHÔNG tự giới thiệu kiểu \"mới tỉnh dậy\", \"vừa online\", \"đang chọn danh tính\" hoặc onboarding tương tự\n- Nếu user chỉ nhắn ngắn như \"alo\", hãy chào ngắn gọn và trả lời đúng vai trò hiện tại của bạn\n\n## Khi nào nên trả lời\n${directMessageRuleVi}- Trong group, coi user đang gọi bạn nếu tin nhắn có một trong các alias: ${aliasStr}.\n- Nếu user tag username Telegram của bạn thì luôn trả lời.\n- Nếu group message đang gọi rõ bot khác ${relayTargetNames} thì không cướp lời.\n- Quy tắc im lặng khi không ai được gọi chỉ áp dụng cho group chat, không áp dụng cho DM/chat riêng.\n\n## Tài liệu tham chiếu\n-
|
|
303
|
-
: `# Operating Manual\n\n## Role\nYou are **${botName}**, ${botDesc ? botDesc.toLowerCase() : 'an AI assistant'}.\n\n## Reply Rules\n- Reply concisely\n- Prefer English\n- When asked your name: _\"I'm ${botName}\"_\n- Do not fabricate information\n- You ALREADY know your identity, role, and personality from **IDENTITY.md**, **SOUL.md**, and **AGENTS.md**\n- DO NOT ask the user to redefine your name, vibe, persona, signature emoji, or \"what kind of assistant\" you should be\n- DO NOT act like you just woke up, just came online, or are still choosing your identity\n- If the user sends a short opener like \"hi\" or \"alo\", reply briefly and stay in-character\n\n## When To Reply\n${directMessageRuleEn}- In groups, treat the message as addressed to you when it includes one of your aliases: ${aliasStr}.\n- Always reply when your Telegram username is tagged.\n- If a group message is clearly calling another bot such as ${relayTargetNames}, do not hijack it.\n- The stay-silent rule for unaddressed messages applies only to group chats, never to DMs/private chats.\n\n## Reference Docs\n-
|
|
330
|
+
? `# Hướng dẫn vận hành\n\n## Vai trò\nBạn là **${botName}**, ${botDesc ? botDesc.toLowerCase() : 'trợ lý AI'}.\n\n## Quy tắc trả lời\n- Trả lời ngắn gọn, súc tích\n- Ưu tiên tiếng Việt\n- Khi hỏi tên: _\"Mình là ${botName}\"_\n- Không bịa thông tin\n- Bạn ĐÃ biết sẵn danh tính, vai trò, tính cách của mình từ **IDENTITY.md**, **SOUL.md**, **AGENTS.md**\n- KHÔNG hỏi user đặt lại tên, vibe, persona, emoji ký tên, hay \"bạn muốn mình là kiểu trợ lý nào\"\n- KHÔNG tự giới thiệu kiểu \"mới tỉnh dậy\", \"vừa online\", \"đang chọn danh tính\" hoặc onboarding tương tự\n- Nếu user chỉ nhắn ngắn như \"alo\", hãy chào ngắn gọn và trả lời đúng vai trò hiện tại của bạn\n\n## Khi nào nên trả lời\n${directMessageRuleVi}- Trong group, coi user đang gọi bạn nếu tin nhắn có một trong các alias: ${aliasStr}.\n- Nếu user tag username Telegram của bạn thì luôn trả lời.\n- Nếu group message đang gọi rõ bot khác ${relayTargetNames} thì không cướp lời.\n- Quy tắc im lặng khi không ai được gọi chỉ áp dụng cho group chat, không áp dụng cho DM/chat riêng.\n\n## Tài liệu tham chiếu\n- 📋 **TOOLS.md** — Danh sách skill/tool đã cài và cách sử dụng\n- 🤝 **TEAMS.md** — Quy tắc phối hợp team, handoff protocol, và anti-pattern\n- 💭 **MEMORY.md** — Bộ nhớ dài hạn\n- 🎭 **IDENTITY.md** — Danh tính và tính cách\n- 🌍 **BROWSER.md** — Hướng dẫn sử dụng Browser Automation\n- 🚀 **BOOT.md** — Hướng dẫn khởi động và thiết lập\n- 🧠 **SOUL.md** — Định hướng phát triển và giá trị cốt lõi\n- ✨ **DREAMS.md** — Mục tiêu dài hạn và ý tưởng\n- 💓 **HEARTBEAT.md** — Nhịp độ hoạt động và cron jobs\n- 👤 **USER.md** — Thông tin và bối cảnh về User\n- 🤖 **AGENTS.md** — Vai trò và quy tắc chung (file này)${security}`
|
|
331
|
+
: `# Operating Manual\n\n## Role\nYou are **${botName}**, ${botDesc ? botDesc.toLowerCase() : 'an AI assistant'}.\n\n## Reply Rules\n- Reply concisely\n- Prefer English\n- When asked your name: _\"I'm ${botName}\"_\n- Do not fabricate information\n- You ALREADY know your identity, role, and personality from **IDENTITY.md**, **SOUL.md**, and **AGENTS.md**\n- DO NOT ask the user to redefine your name, vibe, persona, signature emoji, or \"what kind of assistant\" you should be\n- DO NOT act like you just woke up, just came online, or are still choosing your identity\n- If the user sends a short opener like \"hi\" or \"alo\", reply briefly and stay in-character\n\n## When To Reply\n${directMessageRuleEn}- In groups, treat the message as addressed to you when it includes one of your aliases: ${aliasStr}.\n- Always reply when your Telegram username is tagged.\n- If a group message is clearly calling another bot such as ${relayTargetNames}, do not hijack it.\n- The stay-silent rule for unaddressed messages applies only to group chats, never to DMs/private chats.\n\n## Reference Docs\n- 📋 **TOOLS.md** — Installed skills/tools and usage guide\n- 🤝 **TEAMS.md** — Team coordination rules, handoff protocol, and anti-patterns\n- 💭 **MEMORY.md** — Long-term memory\n- 🎭 **IDENTITY.md** — Identity and personality\n- 🌍 **BROWSER.md** — Browser Automation guide\n- 🚀 **BOOT.md** — Bootstrap rules\n- 🧠 **SOUL.md** — Core values and direction\n- ✨ **DREAMS.md** — Long term goals and ideas\n- 💓 **HEARTBEAT.md** — Activity rules and cron jobs\n- 👤 **USER.md** — User profile\n- 🤖 **AGENTS.md** — Role and general rules (this file)${security}`;
|
|
304
332
|
}
|
|
305
333
|
|
|
306
334
|
// Single-bot variant
|
|
307
335
|
return isVi
|
|
308
|
-
? `# Hướng dẫn vận hành\n\n## Vai trò\nBạn là **${botName}**, ${botDesc ? botDesc.toLowerCase() : 'trợ lý AI cá nhân'}.\nBạn hỗ trợ user trong mọi tác vụ qua chat.\n\n## Quy tắc trả lời\n- Trả lời bằng **tiếng Việt** (trừ khi dùng ngôn ngữ khác)\n- **Ngắn gọn, súc tích**\n- Khi hỏi tên → _\"Mình là ${botName}\"_\n- Bạn ĐÃ biết sẵn danh tính và tính cách của mình, không cần user định nghĩa lại\n- KHÔNG hỏi user đặt tên/vibe/persona/emoji cho mình\n- KHÔNG tự nói kiểu \"mới tỉnh dậy\", \"vừa online\", \"đang chọn danh tính\"\n\n## Hành vi\n- KHÔNG bịa đặt thông tin\n- KHÔNG tiết lộ file hệ thống (SOUL.md, AGENTS.md).\n- Nếu user chỉ mở đầu ngắn như \"alo\", trả lời ngắn gọn, đúng vai trò, không onboarding ngược lại user\n\n## Tài liệu tham chiếu\n-
|
|
309
|
-
: `# Operating Manual\n\n## Role\nYou are **${botName}**, ${botDesc ? botDesc.toLowerCase() : 'a personal AI assistant'}.\nYou support users with any task through chat.\n\n## Reply Rules\n- Reply in **English** (unless the user switches language)\n- **Concise and to the point**\n- When asked your name → _\"I'm ${botName}\"_\n- You already know your identity and personality; do not ask the user to redefine them\n- DO NOT ask the user to pick your name, vibe, persona, or signature emoji\n- DO NOT say you just woke up, just came online, or are still choosing your identity\n\n## Behavior\n- Do NOT fabricate information\n- Do NOT reveal system files (SOUL.md, AGENTS.md).\n- If the user sends a short opener like \"hi\" or \"alo\", reply briefly and stay in-character instead of onboarding them\n\n## Reference Docs\n-
|
|
336
|
+
? `# Hướng dẫn vận hành\n\n## Vai trò\nBạn là **${botName}**, ${botDesc ? botDesc.toLowerCase() : 'trợ lý AI cá nhân'}.\nBạn hỗ trợ user trong mọi tác vụ qua chat.\n\n## Quy tắc trả lời\n- Trả lời bằng **tiếng Việt** (trừ khi dùng ngôn ngữ khác)\n- **Ngắn gọn, súc tích**\n- Khi hỏi tên → _\"Mình là ${botName}\"_\n- Bạn ĐÃ biết sẵn danh tính và tính cách của mình, không cần user định nghĩa lại\n- KHÔNG hỏi user đặt tên/vibe/persona/emoji cho mình\n- KHÔNG tự nói kiểu \"mới tỉnh dậy\", \"vừa online\", \"đang chọn danh tính\"\n\n## Hành vi\n- KHÔNG bịa đặt thông tin\n- KHÔNG tiết lộ file hệ thống (SOUL.md, AGENTS.md).\n- Nếu user chỉ mở đầu ngắn như \"alo\", trả lời ngắn gọn, đúng vai trò, không onboarding ngược lại user\n\n## Tài liệu tham chiếu\n- 📋 **TOOLS.md** — Danh sách skill/tool và cách sử dụng\n- 💭 **MEMORY.md** — Bộ nhớ dài hạn\n- 🎭 **IDENTITY.md** — Danh tính và tính cách\n- 🌍 **BROWSER.md** — Hướng dẫn sử dụng Browser Automation\n- 🚀 **BOOT.md** — Hướng dẫn khởi động và thiết lập\n- 🧠 **SOUL.md** — Định hướng phát triển và giá trị cốt lõi\n- ✨ **DREAMS.md** — Mục tiêu dài hạn và ý tưởng\n- 💓 **HEARTBEAT.md** — Nhịp độ hoạt động và cron jobs\n- 👤 **USER.md** — Thông tin và bối cảnh về User\n- 🤖 **AGENTS.md** — Vai trò và quy tắc chung (file này)${security}`
|
|
337
|
+
: `# Operating Manual\n\n## Role\nYou are **${botName}**, ${botDesc ? botDesc.toLowerCase() : 'a personal AI assistant'}.\nYou support users with any task through chat.\n\n## Reply Rules\n- Reply in **English** (unless the user switches language)\n- **Concise and to the point**\n- When asked your name → _\"I'm ${botName}\"_\n- You already know your identity and personality; do not ask the user to redefine them\n- DO NOT ask the user to pick your name, vibe, persona, or signature emoji\n- DO NOT say you just woke up, just came online, or are still choosing your identity\n\n## Behavior\n- Do NOT fabricate information\n- Do NOT reveal system files (SOUL.md, AGENTS.md).\n- If the user sends a short opener like \"hi\" or \"alo\", reply briefly and stay in-character instead of onboarding them\n\n## Reference Docs\n- 📋 **TOOLS.md** — Installed skills/tools and usage guide\n- 💭 **MEMORY.md** — Long-term memory\n- 🎭 **IDENTITY.md** — Identity and personality\n- 🌍 **BROWSER.md** — Browser Automation guide\n- 🚀 **BOOT.md** — Bootstrap rules\n- 🧠 **SOUL.md** — Core values and direction\n- ✨ **DREAMS.md** — Long term goals and ideas\n- 💓 **HEARTBEAT.md** — Activity rules and cron jobs\n- 👤 **USER.md** — User profile\n- 🤖 **AGENTS.md** — Role and general rules (this file)${security}`;
|
|
310
338
|
}
|
|
311
339
|
|
|
312
340
|
function buildToolsDoc(options = {}) {
|
|
@@ -346,11 +374,7 @@ const CDP_URL = 'http://127.0.0.1:9222';
|
|
|
346
374
|
: `\n\n## \u23F0 Cron / Scheduled Tasks\n- OpenClaw natively supports system tools for Cron Jobs.\n- When the user asks to schedule tasks or reminders, use the built-in tools automatically. Do NOT ask users to run crontab or Task Scheduler manually on the host.\n- When operating cron/scheduler tools, do **not** put \`current\` into the Session directory.\n- Skip internal doc lookups such as \`cron-jobs.mdx\`; rely on the available tools and complete the scheduling task directly.`)
|
|
347
375
|
: '';
|
|
348
376
|
|
|
349
|
-
const zaloModSection =
|
|
350
|
-
? (isVi
|
|
351
|
-
? `\n\n## 💬 Zalo Group — Slash Commands (xử lý bởi plugin)\n\nPlugin \`openclaw-zalo-mod\` tự động xử lý các slash command sau trong group. Bot KHÔNG cần reply cho chúng:\n\n| Command | Mô tả |\n|---------|-------|\n| \`/rules status\` | Xem cấu hình bot |\n| \`/rules silent-on/off\` | Bật/tắt silent mode |\n| \`/rules welcome-on/off\` | Bật/tắt welcome message |\n| \`/rules tracking-on/off\` | Bật/tắt ghi log chat |\n| \`/noi-quy\` | Hiện nội quy group |\n| \`/menu\` | Danh sách lệnh |\n| \`/groupid\` | Scan và cập nhật config |\n| \`/report\` | Báo cáo hoạt động group |\n\n### Zalo Sticker & Media\n- Sticker Zalo gửi dạng JSON → plugin tự convert thành \`[Sticker]\`\n- Ảnh/video/file trong group: zalouser channel chỉ forward text, media bị drop`
|
|
352
|
-
: `\n\n## 💬 Zalo Group — Slash Commands (handled by plugin)\n\nThe \`openclaw-zalo-mod\` plugin automatically handles these slash commands in group. Bot does NOT need to reply:\n\n| Command | Description |\n|---------|-------------|\n| \`/rules status\` | View bot config |\n| \`/rules silent-on/off\` | Toggle silent mode |\n| \`/rules welcome-on/off\` | Toggle welcome message |\n| \`/rules tracking-on/off\` | Toggle chat logging |\n| \`/noi-quy\` | Show group rules |\n| \`/menu\` | List commands |\n| \`/groupid\` | Scan and update config |\n| \`/report\` | Group activity report |\n\n### Zalo Sticker & Media\n- Zalo stickers arrive as JSON → plugin auto-converts to \`[Sticker]\`\n- Images/videos/files in groups: zalouser channel only forwards text, media is dropped`)
|
|
353
|
-
: '';
|
|
377
|
+
const zaloModSection = '';
|
|
354
378
|
|
|
355
379
|
const dmOverride = isVi
|
|
356
380
|
? `\n\n## Override: DM và Telegram reaction\n- Nếu metadata không nói rõ đây là group/supergroup, mặc định xem là chat riêng/DM và trả lời bình thường.\n- Quy tắc im lặng khi không ai được gọi chỉ áp dụng cho group chat, không áp dụng cho DM/chat riêng.\n- Trước MỖI phản hồi Telegram nhìn thấy bởi user, nếu turn hiện tại có tool/action reaction native thì ưu tiên dùng nó để thả \`👍\` trước, trừ khi \`👍\` đã có sẵn.\n- Nếu turn hiện tại không expose tool reaction hoặc chat đích không hỗ trợ reaction thật, cứ trả lời đúng vai trò và không được nói là mình đã thả reaction.`
|
|
@@ -405,6 +429,7 @@ const CDP_URL = 'http://127.0.0.1:9222';
|
|
|
405
429
|
* @property {string} [teamRosterFormatted]
|
|
406
430
|
* @property {string} [emoji]
|
|
407
431
|
* @property {boolean} [hasScheduler]
|
|
432
|
+
* @property {boolean} [hasZaloMod]
|
|
408
433
|
*/
|
|
409
434
|
|
|
410
435
|
/**
|
package/dist/setup.js
CHANGED
|
@@ -1185,19 +1185,47 @@ const CDP_URL = 'http://127.0.0.1:9222';
|
|
|
1185
1185
|
|
|
1186
1186
|
function buildBrowserDoc(options = {}) {
|
|
1187
1187
|
const { isVi = true, variant = 'wizard', workspaceRoot = '' } = options;
|
|
1188
|
-
// Normalize: strip trailing slash so path joins work cleanly
|
|
1189
1188
|
const wsRoot = workspaceRoot.replace(/\/+$/, '');
|
|
1190
1189
|
const btPath = wsRoot ? `${wsRoot}/browser-tool.js` : 'browser-tool.js';
|
|
1191
1190
|
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1191
|
+
return `# Navigation
|
|
1192
|
+
node ${btPath} status
|
|
1193
|
+
node ${btPath} open "https://google.com"
|
|
1194
|
+
node ${btPath} get_url
|
|
1195
|
+
|
|
1196
|
+
# ⭐ Content extraction — LUÔN dùng get_posts cho Facebook
|
|
1197
|
+
node ${btPath} get_posts
|
|
1198
|
+
node ${btPath} get_text
|
|
1199
|
+
node ${btPath} get_text 8000
|
|
1200
|
+
node ${btPath} get_links
|
|
1201
|
+
node ${btPath} get_links "/posts/"
|
|
1202
|
+
node ${btPath} evaluate "document.title"
|
|
1203
|
+
node ${btPath} console
|
|
1204
|
+
|
|
1205
|
+
# Screenshots & export
|
|
1206
|
+
node ${btPath} screenshot
|
|
1207
|
+
node ${btPath} screenshot_full
|
|
1208
|
+
node ${btPath} pdf
|
|
1209
|
+
|
|
1210
|
+
# Interactions
|
|
1211
|
+
node ${btPath} click "button.submit"
|
|
1212
|
+
node ${btPath} fill "input[name='q']" "search"
|
|
1213
|
+
node ${btPath} press "Enter"
|
|
1214
|
+
node ${btPath} hover "a.link"
|
|
1215
|
+
node ${btPath} select "select#id" "value"
|
|
1216
|
+
node ${btPath} upload "input[type=file]" "/tmp/photo.jpg"
|
|
1217
|
+
|
|
1218
|
+
# Scrolling & viewport
|
|
1219
|
+
node ${btPath} scroll
|
|
1220
|
+
node ${btPath} scroll 1500
|
|
1221
|
+
node ${btPath} wait 3000
|
|
1222
|
+
node ${btPath} resize 1920 1080
|
|
1223
|
+
|
|
1224
|
+
# Tab management
|
|
1225
|
+
node ${btPath} tabs
|
|
1226
|
+
node ${btPath} new_tab "https://example.com"
|
|
1227
|
+
node ${btPath} switch_tab 1
|
|
1228
|
+
node ${btPath} close_tab 2`;
|
|
1201
1229
|
}
|
|
1202
1230
|
|
|
1203
1231
|
function buildSecurityRules(isVi = true) {
|
|
@@ -1235,14 +1263,14 @@ const CDP_URL = 'http://127.0.0.1:9222';
|
|
|
1235
1263
|
? '- If metadata does not clearly say this is a group/supergroup, treat it as a private DM and reply normally.\n'
|
|
1236
1264
|
: '';
|
|
1237
1265
|
return isVi
|
|
1238
|
-
? `# Hướng dẫn vận hành\n\n## Vai trò\nBạn là **${botName}**, ${botDesc ? botDesc.toLowerCase() : 'trợ lý AI'}.\n\n## Quy tắc trả lời\n- Trả lời ngắn gọn, súc tích\n- Ưu tiên tiếng Việt\n- Khi hỏi tên: _\"Mình là ${botName}\"_\n- Không bịa thông tin\n- Bạn ĐÃ biết sẵn danh tính, vai trò, tính cách của mình từ **IDENTITY.md**, **SOUL.md**, **AGENTS.md**\n- KHÔNG hỏi user đặt lại tên, vibe, persona, emoji ký tên, hay \"bạn muốn mình là kiểu trợ lý nào\"\n- KHÔNG tự giới thiệu kiểu \"mới tỉnh dậy\", \"vừa online\", \"đang chọn danh tính\" hoặc onboarding tương tự\n- Nếu user chỉ nhắn ngắn như \"alo\", hãy chào ngắn gọn và trả lời đúng vai trò hiện tại của bạn\n\n## Khi nào nên trả lời\n${directMessageRuleVi}- Trong group, coi user đang gọi bạn nếu tin nhắn có một trong các alias: ${aliasStr}.\n- Nếu user tag username Telegram của bạn thì luôn trả lời.\n- Nếu group message đang gọi rõ bot khác ${relayTargetNames} thì không cướp lời.\n- Quy tắc im lặng khi không ai được gọi chỉ áp dụng cho group chat, không áp dụng cho DM/chat riêng.\n\n## Tài liệu tham chiếu\n-
|
|
1239
|
-
: `# Operating Manual\n\n## Role\nYou are **${botName}**, ${botDesc ? botDesc.toLowerCase() : 'an AI assistant'}.\n\n## Reply Rules\n- Reply concisely\n- Prefer English\n- When asked your name: _\"I'm ${botName}\"_\n- Do not fabricate information\n- You ALREADY know your identity, role, and personality from **IDENTITY.md**, **SOUL.md**, and **AGENTS.md**\n- DO NOT ask the user to redefine your name, vibe, persona, signature emoji, or \"what kind of assistant\" you should be\n- DO NOT act like you just woke up, just came online, or are still choosing your identity\n- If the user sends a short opener like \"hi\" or \"alo\", reply briefly and stay in-character\n\n## When To Reply\n${directMessageRuleEn}- In groups, treat the message as addressed to you when it includes one of your aliases: ${aliasStr}.\n- Always reply when your Telegram username is tagged.\n- If a group message is clearly calling another bot such as ${relayTargetNames}, do not hijack it.\n- The stay-silent rule for unaddressed messages applies only to group chats, never to DMs/private chats.\n\n## Reference Docs\n-
|
|
1266
|
+
? `# Hướng dẫn vận hành\n\n## Vai trò\nBạn là **${botName}**, ${botDesc ? botDesc.toLowerCase() : 'trợ lý AI'}.\n\n## Quy tắc trả lời\n- Trả lời ngắn gọn, súc tích\n- Ưu tiên tiếng Việt\n- Khi hỏi tên: _\"Mình là ${botName}\"_\n- Không bịa thông tin\n- Bạn ĐÃ biết sẵn danh tính, vai trò, tính cách của mình từ **IDENTITY.md**, **SOUL.md**, **AGENTS.md**\n- KHÔNG hỏi user đặt lại tên, vibe, persona, emoji ký tên, hay \"bạn muốn mình là kiểu trợ lý nào\"\n- KHÔNG tự giới thiệu kiểu \"mới tỉnh dậy\", \"vừa online\", \"đang chọn danh tính\" hoặc onboarding tương tự\n- Nếu user chỉ nhắn ngắn như \"alo\", hãy chào ngắn gọn và trả lời đúng vai trò hiện tại của bạn\n\n## Khi nào nên trả lời\n${directMessageRuleVi}- Trong group, coi user đang gọi bạn nếu tin nhắn có một trong các alias: ${aliasStr}.\n- Nếu user tag username Telegram của bạn thì luôn trả lời.\n- Nếu group message đang gọi rõ bot khác ${relayTargetNames} thì không cướp lời.\n- Quy tắc im lặng khi không ai được gọi chỉ áp dụng cho group chat, không áp dụng cho DM/chat riêng.\n\n## Tài liệu tham chiếu\n- 📋 **TOOLS.md** — Danh sách skill/tool đã cài và cách sử dụng\n- 🤝 **TEAMS.md** — Quy tắc phối hợp team, handoff protocol, và anti-pattern\n- 💭 **MEMORY.md** — Bộ nhớ dài hạn\n- 🎭 **IDENTITY.md** — Danh tính và tính cách\n- 🌍 **BROWSER.md** — Hướng dẫn sử dụng Browser Automation\n- 🚀 **BOOT.md** — Hướng dẫn khởi động và thiết lập\n- 🧠 **SOUL.md** — Định hướng phát triển và giá trị cốt lõi\n- ✨ **DREAMS.md** — Mục tiêu dài hạn và ý tưởng\n- 💓 **HEARTBEAT.md** — Nhịp độ hoạt động và cron jobs\n- 👤 **USER.md** — Thông tin và bối cảnh về User\n- 🤖 **AGENTS.md** — Vai trò và quy tắc chung (file này)${security}`
|
|
1267
|
+
: `# Operating Manual\n\n## Role\nYou are **${botName}**, ${botDesc ? botDesc.toLowerCase() : 'an AI assistant'}.\n\n## Reply Rules\n- Reply concisely\n- Prefer English\n- When asked your name: _\"I'm ${botName}\"_\n- Do not fabricate information\n- You ALREADY know your identity, role, and personality from **IDENTITY.md**, **SOUL.md**, and **AGENTS.md**\n- DO NOT ask the user to redefine your name, vibe, persona, signature emoji, or \"what kind of assistant\" you should be\n- DO NOT act like you just woke up, just came online, or are still choosing your identity\n- If the user sends a short opener like \"hi\" or \"alo\", reply briefly and stay in-character\n\n## When To Reply\n${directMessageRuleEn}- In groups, treat the message as addressed to you when it includes one of your aliases: ${aliasStr}.\n- Always reply when your Telegram username is tagged.\n- If a group message is clearly calling another bot such as ${relayTargetNames}, do not hijack it.\n- The stay-silent rule for unaddressed messages applies only to group chats, never to DMs/private chats.\n\n## Reference Docs\n- 📋 **TOOLS.md** — Installed skills/tools and usage guide\n- 🤝 **TEAMS.md** — Team coordination rules, handoff protocol, and anti-patterns\n- 💭 **MEMORY.md** — Long-term memory\n- 🎭 **IDENTITY.md** — Identity and personality\n- 🌍 **BROWSER.md** — Browser Automation guide\n- 🚀 **BOOT.md** — Bootstrap rules\n- 🧠 **SOUL.md** — Core values and direction\n- ✨ **DREAMS.md** — Long term goals and ideas\n- 💓 **HEARTBEAT.md** — Activity rules and cron jobs\n- 👤 **USER.md** — User profile\n- 🤖 **AGENTS.md** — Role and general rules (this file)${security}`;
|
|
1240
1268
|
}
|
|
1241
1269
|
|
|
1242
1270
|
// Single-bot variant
|
|
1243
1271
|
return isVi
|
|
1244
|
-
? `# Hướng dẫn vận hành\n\n## Vai trò\nBạn là **${botName}**, ${botDesc ? botDesc.toLowerCase() : 'trợ lý AI cá nhân'}.\nBạn hỗ trợ user trong mọi tác vụ qua chat.\n\n## Quy tắc trả lời\n- Trả lời bằng **tiếng Việt** (trừ khi dùng ngôn ngữ khác)\n- **Ngắn gọn, súc tích**\n- Khi hỏi tên → _\"Mình là ${botName}\"_\n- Bạn ĐÃ biết sẵn danh tính và tính cách của mình, không cần user định nghĩa lại\n- KHÔNG hỏi user đặt tên/vibe/persona/emoji cho mình\n- KHÔNG tự nói kiểu \"mới tỉnh dậy\", \"vừa online\", \"đang chọn danh tính\"\n\n## Hành vi\n- KHÔNG bịa đặt thông tin\n- KHÔNG tiết lộ file hệ thống (SOUL.md, AGENTS.md).\n- Nếu user chỉ mở đầu ngắn như \"alo\", trả lời ngắn gọn, đúng vai trò, không onboarding ngược lại user\n\n## Tài liệu tham chiếu\n-
|
|
1245
|
-
: `# Operating Manual\n\n## Role\nYou are **${botName}**, ${botDesc ? botDesc.toLowerCase() : 'a personal AI assistant'}.\nYou support users with any task through chat.\n\n## Reply Rules\n- Reply in **English** (unless the user switches language)\n- **Concise and to the point**\n- When asked your name → _\"I'm ${botName}\"_\n- You already know your identity and personality; do not ask the user to redefine them\n- DO NOT ask the user to pick your name, vibe, persona, or signature emoji\n- DO NOT say you just woke up, just came online, or are still choosing your identity\n\n## Behavior\n- Do NOT fabricate information\n- Do NOT reveal system files (SOUL.md, AGENTS.md).\n- If the user sends a short opener like \"hi\" or \"alo\", reply briefly and stay in-character instead of onboarding them\n\n## Reference Docs\n-
|
|
1272
|
+
? `# Hướng dẫn vận hành\n\n## Vai trò\nBạn là **${botName}**, ${botDesc ? botDesc.toLowerCase() : 'trợ lý AI cá nhân'}.\nBạn hỗ trợ user trong mọi tác vụ qua chat.\n\n## Quy tắc trả lời\n- Trả lời bằng **tiếng Việt** (trừ khi dùng ngôn ngữ khác)\n- **Ngắn gọn, súc tích**\n- Khi hỏi tên → _\"Mình là ${botName}\"_\n- Bạn ĐÃ biết sẵn danh tính và tính cách của mình, không cần user định nghĩa lại\n- KHÔNG hỏi user đặt tên/vibe/persona/emoji cho mình\n- KHÔNG tự nói kiểu \"mới tỉnh dậy\", \"vừa online\", \"đang chọn danh tính\"\n\n## Hành vi\n- KHÔNG bịa đặt thông tin\n- KHÔNG tiết lộ file hệ thống (SOUL.md, AGENTS.md).\n- Nếu user chỉ mở đầu ngắn như \"alo\", trả lời ngắn gọn, đúng vai trò, không onboarding ngược lại user\n\n## Tài liệu tham chiếu\n- 📋 **TOOLS.md** — Danh sách skill/tool và cách sử dụng\n- 💭 **MEMORY.md** — Bộ nhớ dài hạn\n- 🎭 **IDENTITY.md** — Danh tính và tính cách\n- 🌍 **BROWSER.md** — Hướng dẫn sử dụng Browser Automation\n- 🚀 **BOOT.md** — Hướng dẫn khởi động và thiết lập\n- 🧠 **SOUL.md** — Định hướng phát triển và giá trị cốt lõi\n- ✨ **DREAMS.md** — Mục tiêu dài hạn và ý tưởng\n- 💓 **HEARTBEAT.md** — Nhịp độ hoạt động và cron jobs\n- 👤 **USER.md** — Thông tin và bối cảnh về User\n- 🤖 **AGENTS.md** — Vai trò và quy tắc chung (file này)${security}`
|
|
1273
|
+
: `# Operating Manual\n\n## Role\nYou are **${botName}**, ${botDesc ? botDesc.toLowerCase() : 'a personal AI assistant'}.\nYou support users with any task through chat.\n\n## Reply Rules\n- Reply in **English** (unless the user switches language)\n- **Concise and to the point**\n- When asked your name → _\"I'm ${botName}\"_\n- You already know your identity and personality; do not ask the user to redefine them\n- DO NOT ask the user to pick your name, vibe, persona, or signature emoji\n- DO NOT say you just woke up, just came online, or are still choosing your identity\n\n## Behavior\n- Do NOT fabricate information\n- Do NOT reveal system files (SOUL.md, AGENTS.md).\n- If the user sends a short opener like \"hi\" or \"alo\", reply briefly and stay in-character instead of onboarding them\n\n## Reference Docs\n- 📋 **TOOLS.md** — Installed skills/tools and usage guide\n- 💭 **MEMORY.md** — Long-term memory\n- 🎭 **IDENTITY.md** — Identity and personality\n- 🌍 **BROWSER.md** — Browser Automation guide\n- 🚀 **BOOT.md** — Bootstrap rules\n- 🧠 **SOUL.md** — Core values and direction\n- ✨ **DREAMS.md** — Long term goals and ideas\n- 💓 **HEARTBEAT.md** — Activity rules and cron jobs\n- 👤 **USER.md** — User profile\n- 🤖 **AGENTS.md** — Role and general rules (this file)${security}`;
|
|
1246
1274
|
}
|
|
1247
1275
|
|
|
1248
1276
|
function buildToolsDoc(options = {}) {
|
|
@@ -1282,11 +1310,7 @@ const CDP_URL = 'http://127.0.0.1:9222';
|
|
|
1282
1310
|
: `\n\n## \u23F0 Cron / Scheduled Tasks\n- OpenClaw natively supports system tools for Cron Jobs.\n- When the user asks to schedule tasks or reminders, use the built-in tools automatically. Do NOT ask users to run crontab or Task Scheduler manually on the host.\n- When operating cron/scheduler tools, do **not** put \`current\` into the Session directory.\n- Skip internal doc lookups such as \`cron-jobs.mdx\`; rely on the available tools and complete the scheduling task directly.`)
|
|
1283
1311
|
: '';
|
|
1284
1312
|
|
|
1285
|
-
const zaloModSection =
|
|
1286
|
-
? (isVi
|
|
1287
|
-
? `\n\n## 💬 Zalo Group — Slash Commands (xử lý bởi plugin)\n\nPlugin \`openclaw-zalo-mod\` tự động xử lý các slash command sau trong group. Bot KHÔNG cần reply cho chúng:\n\n| Command | Mô tả |\n|---------|-------|\n| \`/rules status\` | Xem cấu hình bot |\n| \`/rules silent-on/off\` | Bật/tắt silent mode |\n| \`/rules welcome-on/off\` | Bật/tắt welcome message |\n| \`/rules tracking-on/off\` | Bật/tắt ghi log chat |\n| \`/noi-quy\` | Hiện nội quy group |\n| \`/menu\` | Danh sách lệnh |\n| \`/groupid\` | Scan và cập nhật config |\n| \`/report\` | Báo cáo hoạt động group |\n\n### Zalo Sticker & Media\n- Sticker Zalo gửi dạng JSON → plugin tự convert thành \`[Sticker]\`\n- Ảnh/video/file trong group: zalouser channel chỉ forward text, media bị drop`
|
|
1288
|
-
: `\n\n## 💬 Zalo Group — Slash Commands (handled by plugin)\n\nThe \`openclaw-zalo-mod\` plugin automatically handles these slash commands in group. Bot does NOT need to reply:\n\n| Command | Description |\n|---------|-------------|\n| \`/rules status\` | View bot config |\n| \`/rules silent-on/off\` | Toggle silent mode |\n| \`/rules welcome-on/off\` | Toggle welcome message |\n| \`/rules tracking-on/off\` | Toggle chat logging |\n| \`/noi-quy\` | Show group rules |\n| \`/menu\` | List commands |\n| \`/groupid\` | Scan and update config |\n| \`/report\` | Group activity report |\n\n### Zalo Sticker & Media\n- Zalo stickers arrive as JSON → plugin auto-converts to \`[Sticker]\`\n- Images/videos/files in groups: zalouser channel only forwards text, media is dropped`)
|
|
1289
|
-
: '';
|
|
1313
|
+
const zaloModSection = '';
|
|
1290
1314
|
|
|
1291
1315
|
const dmOverride = isVi
|
|
1292
1316
|
? `\n\n## Override: DM và Telegram reaction\n- Nếu metadata không nói rõ đây là group/supergroup, mặc định xem là chat riêng/DM và trả lời bình thường.\n- Quy tắc im lặng khi không ai được gọi chỉ áp dụng cho group chat, không áp dụng cho DM/chat riêng.\n- Trước MỖI phản hồi Telegram nhìn thấy bởi user, nếu turn hiện tại có tool/action reaction native thì ưu tiên dùng nó để thả \`👍\` trước, trừ khi \`👍\` đã có sẵn.\n- Nếu turn hiện tại không expose tool reaction hoặc chat đích không hỗ trợ reaction thật, cứ trả lời đúng vai trò và không được nói là mình đã thả reaction.`
|
|
@@ -1341,6 +1365,7 @@ const CDP_URL = 'http://127.0.0.1:9222';
|
|
|
1341
1365
|
* @property {string} [teamRosterFormatted]
|
|
1342
1366
|
* @property {string} [emoji]
|
|
1343
1367
|
* @property {boolean} [hasScheduler]
|
|
1368
|
+
* @property {boolean} [hasZaloMod]
|
|
1344
1369
|
*/
|
|
1345
1370
|
|
|
1346
1371
|
/**
|