Skip to content

Ran — kiến trúc ​

Ran là agent chạy trên máy của bạn: nó nghe tài khoản Zalo cá nhân và trả lời những người, những group mà bạn chọn, mỗi nơi theo một cách riêng.

Ran không thuộc nhóm năm site Cloudflare và không đi qua api.conan1.com. Nó là công cụ cá nhân chạy local, giữ phiên Zalo và API key trên máy bạn. Mã nguồn nằm ở ran/.

zca-js listener ──message──▶ agent.onMessage
                                │ ghi lịch sử  data/threads/<id>.json
                                │ lọc: target? enabled? paused? bạn vừa tự nhắn? mode?
                                ▼
                       chờ replyDelaySec (gom tin)
                                ▼
          system = persona chung + persona riêng + bối cảnh + hồ sơ tự học
          messages = historyLimit tin gần nhất (người kia = user, bạn = assistant)
                                ▼
                         llm.complete()  ──▶  "<SKIP>"  → im lặng
                                ▼
               mode=draft → nháp chờ duyệt  ·  còn lại → sendMessage

Target ​

Mỗi cuộc trò chuyện 1-1 hoặc group mà Ran theo dõi là một target, có "model" riêng của nó.

Thuộc tínhGhi chú
threadId, typeId Zalo; user hoặc group
enabledTắt thì Ran vẫn ghi lịch sử nhưng không trả lời
modeauto: trả lời mọi tin. mention: chỉ khi bạn bị @ hoặc tin chứa keywords. draft: soạn nháp để bạn duyệt. Group mặc định là mention
providerId, model, temperatureĐể trống thì dùng giá trị mặc định
personaCách trả lời ở nơi này, được thêm vào sau persona chung
contextBạn tự ghi: người này là ai, group này để làm gì

Hồ sơ tự học ​

Thuộc tínhGhi chú
Khi nàoCứ mỗi profileEvery tin mới, hoặc khi bạn bấm "Học lại từ lịch sử"
Nội dungQuan hệ, cách xưng hô, giọng điệu, chủ đề, việc đang dở. Với group: mục đích, thành viên chính, quy ước
Cách làmModel đọc hồ sơ cũ cùng tối đa 150 tin gần nhất rồi viết lại hồ sơ
Sửa tayĐược: hồ sơ là văn bản trong giao diện

An toàn hành vi ​

Cơ chếGhi chú
Bạn tự nhắn thì Ran nhườngThấy tin isSelf không phải do Ran gửi, Ran ngừng trả lời ở thread đó takeoverMinutes phút
Gom tinĐợi replyDelaySec giây sau tin cuối rồi mới trả lời một lần
Im lặngModel trả <SKIP> khi tin không cần trả lời
Tạm dừng toàn bộCông tắc trên giao diện (paused)
Chỉ localServer chỉ lắng nghe 127.0.0.1, giao diện không có mật khẩu

Chưa làm

Danh sách đầy đủ những việc Ran chưa làm nằm ở ran/BACKLOG.md và hiện trong giao diện Ran ở tab Chưa làm. Những thiếu sót chính: chưa từng chạy với Zalo và Claude thật, chỉ đọc và gửi chữ, không bù tin bị lỡ, không nhập lịch sử cũ, chỉ một tài khoản Zalo, chưa giới hạn tốc độ gửi, chưa có tool, API key và phiên Zalo chưa được mã hoá.

Dữ liệu ​

FileNội dung
data/config.jsonProvider (có API key), mặc định, target
data/credentials.jsonPhiên Zalo. Ai có file này là đăng nhập được Zalo của bạn
data/threads/<id>.jsonTối đa 500 tin gần nhất và hồ sơ tự học

REST API của giao diện và schema đầy đủ có trong /zalo/index.json.