DeepSeek Harness Remote
DeepSeek Harness Remote 可将手机或另一台电脑与你运行 DeepSeek Harness 的电脑安全连接,随时随地继续你的工作,方便随时查看进度并继续工作。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Web cho cả nhóm, hai việc chính:
Chạy trên Vercel (miễn phí) hoặc trên máy cá nhân. Web không chạy trên máy ảo và không có mục quản lý máy ảo. Máy ảo (VPS) là chuyện của PyloS.
Nhóm Zalo ─► PyloS ──(một khoá, chỉ API giao lịch)──► web: ghi lệnh vào hàng của từng người
└─► máy chủ ghi ngay vào Google Lịch của người đó
zaloUid). PyloS không nhận cấu hình từ web, không gửi nhịp tim hay session lên web.| Vai trò | Sử dụng bình thường | Quản lý bot lịch | Tài khoản người dùng |
|---|---|---|---|
| Owner | ✔ | ✔ | xem + cấp quyền, gỡ Zalo, xoá |
| Technician | ✔ | ✔ | chỉ xem |
| User | ✔ | ✘ | ✘ |
src/roles.js), đổi quyền có hiệu lực ngay.OWNER_EMAILS (Gmail của bạn, cách nhau dấu phẩy), đăng nhập bằng Gmail đó. Đây cũng là đường cứu hộ khi mất hết Owner.Sao lưu trước nếu đang có dữ liệu: UPSTASH_REDIS_REST_URL=... UPSTASH_REDIS_REST_TOKEN=... node scripts/backup.mjs.
Tạo project: https://vercel.com/new → repo quanlythoigian → Import.
Biến môi trường (Settings → Environment Variables, đổi xong phải Redeploy):
| Tên | Giá trị |
|---|---|
OWNER_EMAILS | Gmail của bạn |
TOKEN_ENC_KEY | node -e "console.log(require('crypto').randomBytes(32).toString('base64'))". Đừng đổi về sau (đổi là mọi người phải kết nối lại Google Lịch). Production và Preview dùng khoá khác nhau |
CRON_SECRET | chuỗi ngẫu nhiên dài, không dấu cách và ký tự đặc biệt |
PRIMARY_HOST | tên miền chính, vd iforgotmywayhome.vercel.app |
GEMINI_API_KEY, ZALO_BOT_TOKEN | (hoặc nhập trên web ở Khoá & trạng thái) |
Môi trường Preview nên đặt thêm KV_PREFIX=qltg-preview: và STORAGE_KEY=quanlythoigian-preview:db để bản thử không đụng dữ liệu thật.
Upstash Redis (bắt buộc, miễn phí): tab Storage → Create Database → Upstash for Redis → Connect, rồi Redeploy.
Google (mục dưới), cron (mục dưới), nối PyloS (mục dưới).
iforgotmywayhome, email hỗ trợ, link https://<tên miền>/privacy.html và /terms.html.openid, email, profile, https://www.googleapis.com/auth/calendar.events.calendar.events (cần video demo, chính sách quyền riêng tư).https://<tên miền chính>https://<tên miền chính>/api/google/callback
(Hai dòng này có sẵn để chép ở Quản lý bot lịch → Khoá & trạng thái → Google.)Mẫu giải trình khi Google hỏi về scope: Web ghi lịch được giao trong nhóm Zalo vào Google Lịch của chính người dùng (thêm, sửa, xoá sự kiện do web tạo) và hiện lịch của họ trên web. calendar.readonly không ghi được; calendar.events là quyền hẹp nhất cho phép ghi sự kiện. Quyền được lưu mã hoá, không chia sẻ, không dùng quảng cáo hay huấn luyện AI; người dùng ngắt được bất cứ lúc nào.
Vercel miễn phí chỉ cron 1 lần/ngày. Tạo job miễn phí ở https://cron-job.org: URL https://<tên miền>/api/cron?key=<CRON_SECRET>, GET, mỗi 5 phút, timeout 30 giây. Cron chạy lại lệnh Google bị lỗi tạm thời (mạng, Google quá tải), đồng bộ nguồn và Google Lịch theo lô (tối đa 20 người/lần, xoay vòng), gửi nhắc việc Zalo. Lịch được giao vẫn được ghi ngay lúc bot giao; cron chỉ là lưới an toàn.
settings.env của PyloS (máy Windows và VPS):
SCHEDULE_API_URL=https://<tên miền>
SCHEDULE_API_KEY=<khoá vừa tạo>
/api/agent/openapi.json.API (xác thực Authorization: Bearer <khoá>) | Việc |
|---|---|
POST /api/agent/zalo-link {code, zaloUid, zaloName} | liên kết Zalo của người gửi mã với tài khoản Google của họ |
POST /api/agent/assign {title, start, end?, allDay?, note?, assignees:[{zaloUid, name}], source} | giao lịch; ghi vào Google Lịch của từng người đã liên kết; trả {eventId, assigned, unlinked, appUrl} |
PATCH /api/agent/assign/:id · DELETE … · GET … | sửa (người mới nhận lệnh thêm, người bị bỏ bị xoá khỏi Google Lịch), huỷ, xem tình trạng |
POST /api/agent/events, GET/POST /api/agent/tasks, PATCH …/tasks/:id, GET …/agenda, POST …/message | lịch / việc riêng của người nhắn, bắt buộc kèm zaloUid (chưa liên kết → 404 kèm appUrl) |
config, heartbeat, sessions, device-login | đã bỏ, trả 410 (PyloS đã tách khỏi web) |
APP_PASSWORD / tài khoản quản trị không còn. Đặt OWNER_EMAILS, đăng nhập bằng Google.node scripts/cleanup-w5.mjs sau khi ổn.2026-11-01) và nên đăng nhập lại để cho phép Google Lịch (quyền trước đây nằm trong trình duyệt, không chuyển sang máy chủ được). Lịch đã ghi trước đây không bị tạo trùng (cùng ID cố định).quanlythoigian-azure…) vẫn nhận API của PyloS, webhook Zalo, cron; mọi trang chuyển (308) về PRIMARY_HOST.Cần Node.js ≥ 20.12.
npm install
cp .env.example .env # điền OWNER_EMAILS, GEMINI_API_KEY, Google Client...
npm start # http://localhost:3000
npm test # kiểm thử đơn vị
npm run test:e2e # trình duyệt thật, 3 vai trò (cần Playwright + Chromium); SHOTS_DIR=thư-mục để lưu ảnh
Dữ liệu trên máy: data/db.json, data/kv.json. Google OAuth khi chạy máy cần thêm http://localhost:3000/api/google/callback.
⚠️ Không bao giờ commit key vào repo. Key chỉ nằm trong
.envhoặc Environment Variables của Vercel.
| Biến | Ý nghĩa | Mặc định |
|---|---|---|
OWNER_EMAILS | Gmail Owner (cũng là đường cứu hộ) | trống |
TOKEN_ENC_KEY | Khoá mã hoá quyền Google Lịch (base64, 32 byte) | trống (trên Vercel bắt buộc) |
CRON_SECRET | Bảo vệ /api/cron?key= | trống |
PRIMARY_HOST (cũ: APP_HOST) | Tên miền chính | trống: dùng host hiện tại |
GEMINI_API_KEY, GEMINI_MODEL, ZALO_BOT_TOKEN | Có thể nhập trên web | trống |
GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET | Có thể nhập trên web | trống |
KV_PREFIX, STORAGE_KEY | Tiền tố khoá Redis (tách Preview/Production) | qltg:, quanlythoigian:db |
APP_TIMEZONE | Múi giờ | Asia/Ho_Chi_Minh |
SYNC_INTERVAL_MINUTES, REMIND_BEFORE_MINUTES, DAILY_SUMMARY_HOUR | Chu kỳ đồng bộ, nhắc, tóm tắt | 30, 15, 7 |
ZALO_MODE, ZALO_WEBHOOK_SECRET, ZALO_CHAT_ID | Bot Zalo nhắc việc của web | polling |
src/limits.js)Tối đa 5 nguồn (2 nguồn trang web), 2.000 lịch, 1.000 việc, 20 lần AI trích lịch mỗi ngày. Nguồn không được trỏ vào địa chỉ nội bộ.
api/index.js, server.js điểm vào Vercel / chạy trên máy
src/app.js API Express: đăng nhập Google, /api/me (dữ liệu riêng), /api/admin (theo quyền), /api/agent (PyloS)
src/roles.js Owner / Technician / User và bảng quyền
src/members.js tài khoản, điều khoản, mã liên kết Zalo, hàng lệnh, đổi quyền + nhật ký
src/userstore.js dữ liệu riêng từng người (udata:<id>), Owner chính
src/gtoken.js, gsync.js quyền Google Lịch (mã hoá) và ghi lịch từ máy chủ
src/calsync.js áp lệnh thêm/sửa/xoá vào Google Lịch (ID cố định, không trùng)
src/calbot.js, calbot-log.js bot lịch: giao/sửa/huỷ lịch, nhật ký 90 ngày
src/google.js, sources.js, gemini.js, zalo.js, cron.js, migrate.js, kv.js, storage.js
views/app.html một giao diện cho mọi người; public/app/*.js: main (sử dụng), account, admin-bot, admin-accounts
scripts/backup.mjs, cleanup-w5.mjs sao lưu Upstash, dọn dữ liệu cũ
test/ npm test (58 test); test/e2e: npm run test:e2e
docs/KE-HOACH-CAP-NHAT-2026-11-01.md kế hoạch cập nhật
calendar.events.