npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

claude-my-office

v0.6.0

Published

A 3D office for your Claude Code sessions that also looks after your Mac: live agents, approve from the office, RAM per session, forgotten dev servers, cleanup.

Readme

My Office

npm CI License: MIT

English · Tiếng Việt

My Office: tầng công ty với các phiên đang làm việc

Văn phòng chibi 3D cho thấy các session Claude Code đang làm gì, kèm bảng "Máy Mac" để xem RAM, CPU, ổ đĩa và giải phóng.

Mở: http://localhost:4310 · Xem thử không cần Claude Code: http://localhost:4310/?demo · Xem online, không cần cài: https://khanh020905.github.io/my-office/vi/

Có câu hỏi hay ý tưởng? Hỏi ở Discussions → Q&A, góp ý ở Ideas, hoặc khoe văn phòng của bạn ở Show and tell.

Chạy được trên macOS, Linux và Windows (bảng máy đọc từng hệ điều hành theo cách riêng; mở cửa sổ IDE và thoát app chỉ có trên macOS). Giao diện mặc định là tiếng Anh; đổi sang tiếng Việt trong Cài đặt → Ngôn ngữ (hoặc đặt OFFICE_LANG=vi).

My Office là dự án cộng đồng, không do Anthropic làm, bảo trợ hay liên kết.

Cài

npm install -g claude-my-office   # (lệnh nó cài là my-office)
my-office install --service   # thêm hook vào ~/.claude/settings.json + chạy nền khi đăng nhập
my-office doctor              # kiểm tra Node, curl, server, đủ hook, dịch vụ nền

Thử không cần cài: npx claude-my-office start (hook vẫn cần npx claude-my-office install). Cài bằng npm thì dữ liệu (cài đặt, mã PIN điện thoại, kho lịch sử) nằm ở ~/.my-office, nên nâng bản (npm install -g claude-my-office@latest) không mất gì.

Cài từ mã nguồn (để sửa code):

git clone https://github.com/khanh020905/my-office.git && cd my-office
npm install
node bin/cli.mjs install --service   # cùng các lệnh như `my-office …`, dữ liệu ở data/

install sao lưu settings.json trước khi sửa và chỉ thêm hook của My Office (chạy lại không thêm trùng). Gỡ: my-office uninstall (cài từ mã nguồn: node bin/cli.mjs uninstall).

| Lệnh | Việc | | --- | --- | | install [--service] [--lan] [--no-approve] [--no-status] [--no-otel] [--no-otel-names] | Thêm 13 hook báo sự kiện, hook duyệt quyền, hook trả lời câu hỏi / duyệt kế hoạch, và status line báo hạn mức gói (status line cũ của bạn vẫn chạy bên trong). Bật luôn số liệu dùng của chính Claude Code (OpenTelemetry) cho "Cái gì đang ăn gói", trừ khi bạn đã gửi nó đi chỗ khác. --service: chạy nền bằng launchd. --lan: cho điện thoại cùng wifi xem. --no-approve: bỏ hai hook duyệt. --no-status: không đụng status line. --no-otel: không bật số liệu dùng; --no-otel-names: giữ ẩn tên MCP, skill, agent bạn tự thêm ("custom") | | uninstall | Gỡ mọi hook của My Office, phần cài đặt số liệu dùng do install thêm, và dịch vụ nền; giữ nguyên phần còn lại của settings.json | | doctor | Kiểm tra từng bước, nói rõ thiếu gì và lệnh sửa | | start [--lan] | Chạy server ở cửa sổ hiện tại (không dùng launchd) | | pin [--new] | Xem mã PIN điện thoại; --new đổi mã và đăng xuất mọi điện thoại |

Khởi động lại sau khi sửa code: launchctl kickstart -k gui/$(id -u)/com.my-office · Log: tail -f ~/.my-office/server.log (cài từ mã nguồn: data/server.log)

Có gì

  • Văn phòng 3D: mỗi session là một nhân vật (kiểu A Đồ chơi hoặc B Pixar), đi tới thư viện khi đọc file, ngồi gõ khi sửa, ra phòng máy khi chạy lệnh, phóng tên lửa khi deploy. Cảnh nền thành phố, đồng quê, biển; ngày/đêm theo giờ. Thành phố có xe cộ dừng đèn đỏ, xe hơi theo dáng các dòng xe phổ biến ở Việt Nam: VinFast VF3, VF8, Toyota Vios, Fortuner, Honda City, Kia Morning, Ford Ranger, Mitsubishi Xpander (phần lớn dựng trên bộ Car Kit của Kenney, CC0) (taxi điện Xanh SM màu xanh ngọc; tài xế Grab và Xanh SM mặc áo, đội mũ của hãng có logo ở lưng, ngực và hông mũ, phần lớn chở khách đội mũ của hãng; GrabFood chở thùng xanh; nhiều người đeo khẩu trang), người đi bộ chờ đèn qua vạch kẻ (trời mưa thì che ô), và cửa hàng theo thành phố chọn ở mục thời tiết: TP.HCM có GS25, Circle K, 7-Eleven; Hà Nội có Circle K, GS25, WinMart+; Đà Nẵng có WinMart+, quán mì Quảng và hải sản. Thành phố nào Cộng Cà Phê có cửa hàng thật thì có một quán Cộng (Hà Nội, TP.HCM, Đà Nẵng, Nha Trang; ở Hải Phòng, Huế, Đà Lạt thì xa hơn cuối phố, chỉ thấy mặt tiền): mặt tiền sơn xanh lính, chữ CỘNG CÀ PHÊ trắng ngà, hộp đèn logo trắng (chữ CỘNG xanh rêu trên vạch đỏ) chìa ra ngoài, mái ngói đỏ nhỏ, tấm ván "Ở ĐÂY CÓ BÁN CÀ PHÊ"; bên trong kiểu Hà Nội bao cấp những năm 80: tường xanh rêu, sàn gỗ cũ, bàn gỗ thấp, ghế đẩu, ghế băng có gối vải chăn con công, cốc tráng men, phích nước, đài radio cũ, tivi vỏ gỗ, ảnh cũ và lịch bloc trên tường, bao tải cà phê; thực đơn in như tem phiếu với giá thật (cốt dừa cà phê 59.000đ, bạc xỉu 45.000đ, sữa chua cà phê 55.000đ), nhân viên áo xanh rêu, ngoài vỉa hè ghế xếp sắt bên bàn gỗ thấp và chiếc xe đạp cũ giỏ đầy hoa; mở 7:00–23:00. Chiều ngày thường và sáng cuối tuần có người đang nghỉ rủ "Đi Cộng làm ly cốt dừa không?" rồi xuống mua; hoá thân vào quán thì gọi món ở quầy hoặc ngồi ghế đẩu cạnh cửa sổ. Quán vẽ bằng code, tên và logo Cộng là nhãn hiệu của chủ sở hữu, dự án không liên quan. Đường phố theo giờ của văn phòng: giờ cao điểm sáng và chiều xe máy gấp đôi, chạy hàng ba, nhích từng chút; nửa đêm đường vắng. Ô tô xi-nhan tấp vào lề trước cửa hàng và dọc công viên rồi lát sau xi-nhan ra; taxi dừng đón khách thì bật đèn khẩn cấp. Ra ngoài (cảnh thành phố): trước giờ trưa shipper GrabFood dừng trước toà nhà, một người đang nghỉ đi thang máy xuống lấy cơm cho cả nhóm (văn phòng Chuyên nghiệp); thỉnh thoảng có người đang nghỉ xuống cửa hàng tiện lợi bên kia đường, chờ đèn xanh qua vạch kẻ, mua ly nước rồi về; có việc thì chạy về liền. Logo cửa hàng lấy từ Wikimedia Commons (logo chữ, không có bản quyền), vẫn là nhãn hiệu của các công ty đó; dự án không liên quan tới họ. Bên kia đường có xe bánh mì (sáng và chiều), quán trà đá ghế nhựa (tối đông, có bóng đèn), cô gánh hàng rong đội nón lá, người bán vé số. Công viên bên kia đường theo giờ: 5 giờ sáng các cụ tập dưỡng sinh thành hàng, 16:30 đánh cầu lông và đá cầu thành vòng, trẻ con chạy đuổi nhau, tối người ngồi ghế đá (tối có ánh điện thoại). Cạnh quán trà đá hai ông cụ đánh cờ tướng, vài người đứng xem, thỉnh thoảng có người cãi nước cờ. Cuối tuần, một nhà gần văn phòng có đám cưới: rạp hồng trắng dựng trên vỉa hè, cổng hoa (Lễ Vu Quy hoặc Lễ Tân Hôn, 囍); 8:36 xe hoa trắng kết hoa trên nắp capo tới đón dâu, nhà gái mặc áo dài đứng chờ; tiệc trưa và tối, cô dâu chú rể đi chào bàn, xe máy của khách đỗ dọc lề, tối có dây đèn (?wedding để xem ngày nào cũng được). Nghề vỉa hè: hai ba bác xe ôm chờ khách ở góc phố (6:30–19:30), giờ nghỉ trưa nằm ngủ ngay trên yên xe, gác chân lên ghi-đông, mũ úp mặt; trong công viên có người đu võng ngủ trưa. 5:30–8:30 có gánh xôi và nồi bánh cuốn bốc hơi: người đi làm ghé đứng ăn vội, ngồi ăn một đĩa, hoặc dừng xe mua mang đi. Ban ngày có ông cắt tóc treo gương lên gốc cây, cạnh góc vá xe với chồng lốp, máy bơm và chiếc xe dựng chân chống. Cột điện bê tông với từng bó dây võng dọc phố; thỉnh thoảng xe cấp cứu (115) hoặc xe cứu hoả (114) hú còi chạy qua, xe cộ tấp vào lề nhường đường (?siren để xem). Cảnh sát giao thông làm việc như ngoài đời: thỉnh thoảng hai chiến sĩ mặc quân phục vàng chạy xe tuần tra màu trắng (thùng xe ghi C.S.G.T / TRAFFIC POLICE, đèn chớp) ngang qua; một số buổi sáng và chiều họ lập chốt trên vỉa hè trước văn phòng, ngay sau ngã tư: xe dựng trên vỉa hè, biển báo, cọc tiêu dọc lề, một người đứng mép làn cầm gậy chỉ huy, người kia đứng cạnh xe (tối mặc áo phản quang). Ai không đội mũ bảo hiểm, chở ba, dùng điện thoại hay vượt đèn đỏ thì bị thổi còi: xe tấp vào lề, cán bộ chào theo điều lệnh, thông báo lỗi, kiểm tra giấy phép lái xe và đăng ký xe trên VNeID, lập biên bản, người vi phạm ký rồi đi tiếp. Một số buổi tối (thứ Sáu, thứ Bảy nhiều hơn) là chốt đo nồng độ cồn: ai cũng có thể được mời thổi, vượt mức cao thì bị tạm giữ xe, người lái đi bộ về. Bấm nhãn trên chốt để xem các bước (Thông tư 73/2024/TT-BCA), khung phạt và điều khoản (Nghị định 168/2024/NĐ-CP, Điều 7) và chính tờ biên bản, bản minh hoạ với tên người, biển số bịa; ở góc nhìn thứ nhất đến gần bấm E cũng xem được (?csgt để xem). Quán nhậu vỉa hè bên mép công viên đối diện, mở 16:30–23:00: bàn nhựa xanh thấp, ghế đẩu nhựa đỏ xanh, thùng đá xốp, két bia (nhãn "BIA" tự chế, không phải hãng thật), đậu phộng, khô mực nướng, ốc, nồi lẩu bốc hơi trên bếp ga, bếp than nghi ngút khói với chủ quán ngồi quạt, anh phục vụ chạy tới chạy lui, biển chữ vẽ tay, tối có dây bóng đèn; khách quen thỉnh thoảng nâng ly "Một, hai, ba, dô!", tối thứ Sáu thứ Bảy đông hơn. Khoảng 18:30 thứ Sáu (và một tối trong bốn ngày thường) vài người trong công ty đang nghỉ rủ nhau xuống làm vài lon: lời rủ trong nhóm chat, ngồi bàn dài sát lề, mỗi lần dô là cụng ly và má đỏ thêm một chút; có việc thì một người chạy về công ty. Đã uống thì không ai tự lái xe về: trong nhóm chat có câu "Đã uống rượu bia thì không lái xe nha 🚕", gọi GrabBike, Xanh SM Bike hoặc taxi tới lề, xe máy để lại hàng xe trước toà nhà mai lấy. Tối nào có chốt đo nồng độ cồn thì CSGT đứng ngay trên con đường có quán: khách quen nào tự chạy xe về sẽ bị dừng và đo nồng độ cồn. Bấm nhãn của quán để xem thực đơn (giá minh hoạ) và ai trong công ty đang ngồi bàn nào; ở góc nhìn thứ nhất đến gần bấm E để ngồi cùng (?nhau để xem lúc nào cũng được). Sân pickleball cạnh công viên, đúng kích thước thật (20 × 44 ft, vùng kitchen 7 ft mỗi bên lưới, lưới cao 34 in ở giữa và 36 in ở cột), mặt sân xanh dương trên nền xanh lá, hàng rào lưới B40 có bạt chắn gió, đèn LED chiếu sáng buổi tối, bảng "Sân pickleball · 200.000–300.000đ/giờ sau 17h" ở cổng; tối ngày thường và sáng, tối cuối tuần hàng xóm ra đánh đôi, đội visor, mặc váy tennis, giày thể thao. Ngày nào CI xanh suốt thì khoảng 17:00 có người hỏi trong nhóm chat "Tối nay kèo pick không?", 17:30 bốn người đang nghỉ xuống sân đánh đôi (người thứ năm cầm điện thoại quay); lúc đó mà chạy test thì đó là một điểm: mỗi test qua là một cú qua lưới, test hỏng đầu tiên là bóng vào lưới. Hết giờ thì clip được gửi vào nhóm chat kèm tiền sân mỗi người (70k). Ở góc nhìn thứ nhất bấm E ở cổng sân (?pickle để xem sân đang có người chơi). Tiệm chụp ảnh Hàn Quốc bên kia đường: container màu hồng, bảng neon hồng "Chụp ảnh Hàn Quốc · 4 khung", hai buồng chụp có rèm (thấy chân người bên dưới), rổ phụ kiện (băng đô tai mèo, kính trái tim to đùng, nón tiệc), bảng giá (dải 4 khung 70k, khung lớn 100k), tối và cuối tuần các bạn trẻ ra chụp, cuối tuần xếp hàng dài trên vỉa hè. Mỗi lần ra bản (tag phiên bản mới trong repo của một session, hoặc một bản release trên GitHub) bốn người đang nghỉ qua chụp: bốn khung, bốn kiểu tạo dáng nhí nhố với phụ kiện, đèn flash nháy; dải ảnh được gửi vào nhóm chat, cả nhóm về văn phòng vẫn còn đeo phụ kiện và ghim dải ảnh lên bảng trắng, có ghi số phiên bản: giữ sáu dải mới nhất, thành lịch sử các lần ra bản. Cuối tuần thì gần 2 tiếng sau mới về. Ở góc nhìn thứ nhất bấm E ở cửa tiệm để tự chụp một dải. Xe máy điện: một nửa số xe trong hàng xe trước văn phòng là xe điện (dáng xe máy điện phổ biến ở Việt Nam năm 2026, đèn LED ngang yếm, động cơ ở bánh sau, không có ống xả), mỗi xe có vạch pin năm nấc theo pin của máy tính này (pmset trên macOS, /sys trên Linux; máy không có pin, như Windows, thì ẩn), đang sạc thì các nấc sáng dần. Pin dưới 20% thì chủ chiếc xe cạn pin nhất chạy ra tủ đổi pin ở góc công viên (kiểu tủ V-Green: các ô tủ có đèn trạng thái, màn hình, mã QR), rút pin cũ, quét mã, bỏ vào tủ, lấy pin 1,5 kWh đã sạc đầy (2–3 phút, 9.000đ) rồi chạy về với xe đầy pin. Ở Hà Nội có biển "Vùng phát thải thấp" (trong Vành đai 1, từ 1/7/2026) ở góc phố gần văn phòng. Tủ đổi pin vẽ bằng code, tên V-Green là nhãn hiệu của chủ sở hữu, dự án không liên quan. Cột đèn có hộp đếm ngược số đỏ, xanh; ngày nắng nóng (từ 33 °C, theo thời tiết thật) xe máy dừng đèn đỏ lùi lại dưới bóng cây. Ngày nắng nhiều chị mặc đồ chống nắng "ninja" hoa văn, đeo kính, quấn váy; thỉnh thoảng có xe chở tủ lạnh, thang nhôm, bình ga, chậu cây, lồng gà hay chồng thùng xốp cao hơn người lái. Mùng một và rằm, trước vài cửa hàng nhỏ có người đốt vàng mã trong thùng sắt cạnh mâm cúng (?lunar=1 để xem ngày nào cũng được). Tối về nhà và sáng đi làm qua phố, mỗi người một kiểu: xe máy riêng dựng thành hàng trên vỉa hè trước toà nhà, GrabBike, Xanh SM Bike hoặc taxi Xanh SM; danh sách phiên ghi người đó đang ở đâu ("Đang ở Circle K", "Đang về nhà (GrabBike)"). Nút Hoá thân để đi trong văn phòng ở góc nhìn thứ nhất; cạnh thang máy (hoặc cửa) bấm E để xuống phố: đi vỉa hè, qua đường (xe sẽ dừng), mua nước ở cửa hàng tiện lợi, mua bánh mì, bấm E ở cửa toà nhà để lên lại. Lần đầu mở có hướng dẫn ngắn chỉ những thứ bấm được; Cài đặt → Khác → "Xem lại hướng dẫn".

  • Hai kiểu văn phòng (Cài đặt → Văn phòng): Ấm cúng là một phòng mở như trước. Chuyên nghiệp là cả tầng công ty 22 × 17 m:

    • Các phòng: phòng giám đốc, phòng họp kính, thư viện, phòng máy chủ, sảnh lễ tân có cửa ra vào, nhà vệ sinh, phòng ăn, khu thư giãn (sofa, bể cá, arcade, bi lắc, bệ phóng deploy).
    • Tường thật: các phòng ngăn bằng tường dày có khung cửa, cắt ngang ở 1,3 m như mô hình kiến trúc để camera nhìn vào được. Phòng giám đốc, phòng họp, phòng máy chủ là vách kính; từ sảnh vào khu làm việc qua cửa kính đôi.
    • Khối Dev: 12 bàn chia ba cụm, mỗi cụm bốn bàn quay mặt vào nhau, ngăn giữa bằng vách nỉ. Mỗi bàn có laptop, màn hình rời và tủ hồ sơ; dưới mỗi cụm là thảm. Mỗi cụm là một nhóm theo thư mục dự án ("Nhóm website-ielts · 3"); hai người đầu tiên của nhóm ngồi phía nhìn thẳng ra camera.
    • Tiện ích: hai buồng gọi điện cách âm, tủ hồ sơ và máy in.
    • Giám đốc là bạn: mỗi việc bạn nhắn, giám đốc mang tới bàn người làm, đưa tận tay nếu họ đang ngồi, không thì để trên bàn. Xong việc, người làm tới phòng giám đốc báo cáo (khi giám đốc có mặt) rồi mới ra phòng ăn nghỉ.
    • Nhà vệ sinh: thỉnh thoảng có người ghé trước khi ngủ trưa; vào buồng thì cửa đóng, đèn đỏ.

    Kiểu văn phòng lưu theo trình duyệt; ?layout=pro hoặc ?layout=cozy để thử một lần.

  • Đồ vật bấm được: rê chuột lên đồ vật thì nó sáng viền, hiện tên khu vực và chú thích. Bấm vào thì mở thẻ ghi agent đã làm gì ở đó:

    • thư viện: file vừa đọc;
    • cửa sổ: tra web;
    • bệ phóng: deploy;
    • góc cà phê / phòng ăn: ai đang nghỉ;
    • phòng họp: trợ lý;
    • máy in: việc vừa xong;
    • phòng giám đốc: việc vừa giao, việc chờ giao.

    Có cả trò nhỏ: cho cá ăn, pha cà phê, gọi mèo lên sofa, bật tắt đèn, đổi giờ ở đồng hồ. Tên khu vực chỉ hiện khi rê chuột tới, cho đỡ rối; muốn luôn hiện thì bật trong Cài đặt. Ở chế độ Hoá thân, đứng trước đồ vật rồi bấm E. Đứng trước người đang ngủ rồi bấm E để gọi dậy: họ vươn vai, nói một câu rồi ngủ tiếp (gọi mãi thì họ bực).

  • Nhân vật phản ứng với bạn:

    • tối mà tắt đèn cây thì người làm gần đó kêu "Ơ, tôi đang làm mà!", đi tới bật lại rồi về làm tiếp. Tắt nữa thì họ bực hơn, tới lần thứ tư thì chịu thua;
    • công tắc cạnh cửa tắt đèn cả tầng: ai cũng kêu, người gần nhất ra bật lại;
    • in một trang hay pha cà phê thì có người ra lấy;
    • vuốt mèo thì nó đi nằm lên bàn phím ai đó, người đó bế nó xuống;
    • bấm vào người đang làm thì họ ngẩng lên một chút;
    • bấm chuông trên bàn họp: ai rảnh thì vào họp, từng người nói mình đang làm gì, rồi giám đốc cho về;
    • có cúp mới thì có bánh trên bàn họp và cả phòng vỗ tay; deploy xong thì mấy bàn gần đó vỗ tay;
    • cây để lâu không tưới thì héo vàng, bấm vào cây khát nước thì có người cầm bình ra tưới.
  • Khuya (sau 21 giờ), phiên nào nghỉ quá nửa tiếng thì mặc áo khoác, đi thang máy về nhà; có việc là quay lại, không thì sáng hôm sau mới tới.

  • Thang máy bảo trì sau khi khởi động lại (văn phòng Chuyên nghiệp): 3 phút đầu sau khi server văn phòng chạy (5 phút nếu chạy bản mới) thang máy đang bảo trì: cửa mở hé sau rào chắn sọc vàng đen ghi "ĐANG BẢO TRÌ · Xin lỗi quý khách vì sự bất tiện", bảng gọi tầng tháo nắp, đèn cabin chập chờn, anh kỹ thuật áo xanh với thùng đồ nghề và đồng hồ vạn năng. Ai lên xuống thì đi thang bộ bên cạnh, xuống chậm hơn, lên tới nơi thì thở hồng hộc, nhóm chat than "Thang máy lại bảo trì 😩 leo bộ thôi". Xong việc anh dẹp rào, đi thang máy xuống; nếu là bản mới thì dán tem "Đã kiểm định" có số phiên bản và ngày vào cabin, tem ở đó luôn. Không chặn việc gì cả (?liftservice, hoặc ?liftservice=new, để xem).

  • Hết lượt Claude: khi hạn mức gói của một tài khoản (5 giờ hoặc tuần) dùng hết, người của tài khoản đó rời bàn đi nghỉ: uống trà ở bàn pantry, đọc sách, ngồi tán gẫu. Tấm bảng trên tường đếm ngược tới lúc dùng lại được; tới giờ thì chuông reo, mọi người về chỗ. Phiên nào còn đang chạy thì người đó vẫn làm. (?limitout=30 để xem thử trong nửa tiếng.)

  • Nhịp tuần: 9:00 thứ Hai chuông tự reo giao ban đầu tuần, ai rảnh ra bàn họp nói nhanh đang làm gì; 16:00 thứ Sáu trà chiều ở pantry, có trà sữa và bánh tráng trộn cho ai đang nghỉ.

  • TV chơi game ở phòng khách (văn phòng Chuyên nghiệp): TV 55" trên kệ gỗ, máy chơi game đứng bên cạnh, hai tay cầm. Thỉnh thoảng hai người đang nghỉ rủ nhau ra sofa chơi một trận (bóng đá 3 đấu 3, đua xe chia đôi màn hình qua phố Sài Gòn lúc hoàng hôn, đối kháng trên sân thượng; game pixel làm riêng cho văn phòng): ghi bàn thì reo, thủng lưới thì than, có việc thì đặt tay cầm xuống đi về. Bấm vào TV để gọi hai người rảnh ra chơi. Ở chế độ Hoá thân, đứng trước TV bấm E để tự ngồi xuống chơi, đấu với đồng nghiệp ra ngồi cạnh hoặc với máy; cắm tay cầm thật vào là chơi được.

  • Bida ở phòng khách (văn phòng Chuyên nghiệp): bàn 7 feet thành gỗ óc chó, nút xà cừ, lỗ bọc da, bi lăn thật (dội băng, chạm bi, rơi lỗ). Thỉnh thoảng hai người đang nghỉ mỗi người cầm một cây cơ ra đánh một ván: đi vòng quanh bàn ra sau bi cái, cúi xuống ngắm, đưa cơ vài lần rồi thọc; ai vào bi thì đánh tiếp, bi cái rơi lỗ thì mất lượt, ai vào 5 bi trước thì thắng. Bấm vào bàn để gọi hai người rảnh ra đánh. Ở chế độ Hoá thân, đứng cạnh bàn bấm E để cầm cơ: ←/→ (hoặc kéo chuột) để ngắm theo vạch, giữ Space lấy lực rồi thả để đánh, với đồng nghiệp ra đánh cùng hoặc một mình.

  • Phòng karaoke mini (văn phòng Chuyên nghiệp, cạnh phòng gọi điện): cabin cách âm như ở các trung tâm thương mại, có đèn neon, màn hình, hai mic và ghế ngồi. Thỉnh thoảng một người đang nghỉ (có khi hai người, chiều tối thứ Sáu thì hay hơn) vào hát một bài của chính văn phòng: chữ chạy trên màn hình và đổi màu theo lời hát, nốt nhạc bay lên trên cabin, đèn nháy theo nhịp, hát xong máy chấm điểm, mọi người vỗ tay và khoe trong nhóm chat. Giai điệu đi theo thanh điệu tiếng Việt của lời như dân ca, tổng hợp ngay trên trình duyệt, nhỏ thôi và chỉ khi bật âm thanh. Bấm vào cabin để gọi một người vào hát; ở chế độ Hoá thân, đứng trước cabin bấm E để tự vào hát.

  • Nhân viên không phải phiên: ở văn phòng Chuyên nghiệp có cô lễ tân ngồi quầy từ 7:45 tới 18:15, chào người bước ra thang máy và chào người về buổi tối. Mỗi ngày hai lần shipper Shopee lên giao hàng cho một người đang nghỉ: để hộp ở quầy, lễ tân gọi tên, người đó ra lấy, ôm về bàn mở (văn phòng nhỏ thì shipper gọi ở cửa). 18:30 cô lao công đẩy xe lên, lau từng lối đi, dựng biển vàng "Sàn ướt" (sàn bóng nước tới khi khô, ai đi qua thì đi vòng), đổ thùng rác lớn rồi về.

  • Khu theo dự án: mỗi dự án (theo repo git) có khu bàn riêng: ở văn phòng Chuyên nghiệp là nửa cụm bàn (hai bàn đối diện), trải thảm màu của dự án kèm biển "Nhóm …"; dự án nhiều phiên thì lấy luôn nửa còn lại. Văn phòng nhớ chỗ của từng dự án nên phiên sau ngồi lại đúng chỗ cũ; chỉ khi hết khu mới phải ngồi chung. Văn phòng nhỏ thì mỗi dự án một dãy.

  • Bàn thờ Thần Tài – Thổ Địa (văn phòng Chuyên nghiệp): khám sơn đỏ đặt sát đất cạnh quầy lễ tân, quay ra sảnh; bên trong Ông Địa và Thần Tài, câu đối trên hai cột, bát hương, đôi đèn thờ đỏ sáng khi tối. Mùng 1 và rằm (theo lịch âm thật) lễ tân bày mâm ngũ quả trên đĩa chân cao, xôi gấc, cúc vàng, thắp ba nén nhang và vái; khói nhang bay gần một tiếng (?lunar=1 để xem ngày nào cũng được).

  • Cơm nhà và hàng chờ lò vi sóng (văn phòng Chuyên nghiệp): khoảng một phần ba văn phòng mang cơm nhà (thứ Hai hơn một nửa, cuối tuần không ai), hộp nhựa nắp gài, hộp thuỷ tinh hay cặp lồng inox, đựng trong túi giữ nhiệt. Từ 11:45 mọi người xếp hàng ở hai lò vi sóng trong pantry, tay lướt điện thoại: mở cửa lò, đặt hộp vào, đĩa xoay trong ánh đèn, hai ba phút, "tít tít tít" (khi bật âm thanh), người sau bước lên. Ai hâm cá kho, mắm thì có vệt mùi bốc lên và nhóm chat kêu "ai hâm cá vậy trời 😭"; hộp quên mở nắp thì bật nắp cái bụp. Rồi ăn ở bàn pantry hoặc tại bàn làm việc. Người mang cơm nhà không đi lấy GrabFood, không xuống quán cơm (?comnha để xem ngay).

  • Trực nhật hằng ngày (văn phòng Chuyên nghiệp): bảng trắng trên tường pantry ghi bốn việc hôm nay và ai làm, xoay vòng mỗi ngày làm việc giữa người của các dự án đang có mặt (sáng ra chị HR đăng danh sách lên nhóm chat): rửa ly (ly tách chất dần trong bồn rửa suốt ngày: cà phê buổi sáng, ly trà đá buổi trưa, cà phê buổi chiều; ngủ trưa dậy thì rửa từng cái), đổ rác (khoảng 5 giờ chiều buộc túi rác ở thùng lớn pantry mang ra phòng rác ở chiếu nghỉ thang bộ), tưới cây (buổi sáng), lau bàn pantry. Ai cũng làm lúc đang nghỉ, không bao giờ bỏ dở việc thật. Việc nào cả ngày bận không làm được thì sáng hôm sau còn nợ: nhóm chat than "Hôm qua ai trực mà ly chất đống vậy 😤", người trực xin lỗi rồi làm ngay đầu giờ (bảng ghi đỏ "Nợ hôm qua", thùng rác thì tràn ra). Cô lao công 18:30 chỉ lau sàn, thùng rác để cho người trực nhật. Cuối tuần và ngày lễ (lịch nghỉ chính thức của Việt Nam, có Tết và Ngày Văn hóa Việt Nam) không trực nhật. Lưu trong trình duyệt theo từng ngày (?duty để xem hết các việc ngay).

  • Diễn tập PCCC mỗi quý (văn phòng Chuyên nghiệp): ngày làm việc đầu tiên của mỗi quý, sáng ra chị HR ghim thông báo lên nhóm chat; đúng 15:00 chuông báo cháy reo (khi bật âm thanh), đèn chớp trên tường nháy. Thang máy về tầng trệt rồi đứng đó; chị HR, đội viên PCCC của tầng đeo băng tay đỏ, hô mọi người ra, ai trên tầng (đang làm hay đang nghỉ, lễ tân, sếp) cũng đi thang bộ xuống, không ai đi thang máy, chị HR đi sau cùng. Có thành phố bên ngoài thì mọi người tập trung ở điểm tập kết trên vỉa hè cạnh tấm biển xanh "ĐIỂM TẬP KẾT"; chị HR cầm bìa kẹp điểm danh từng người ("Có!") rồi báo đủ bao nhiêu người, thoát nạn hết bao lâu; anh bảo vệ, người chỉ huy thứ hai, đốt khay cháy tập rồi hướng dẫn dùng bình bột (lắc bình, giật chốt, hướng loa phun vào gốc lửa, bóp van), lửa tắt, cả nhà vỗ tay, rồi đi thang máy lên lại. Chỉ là cảnh diễn: các phiên vẫn chạy bình thường suốt buổi. Theo Luật PCCC và CNCH 2024, Nghị định 105/2025/NĐ-CP Điều 16 (cơ sở thực tập phương án chữa cháy ít nhất mỗi năm một lần) và hướng dẫn của Cảnh sát PCCC (chỉ dùng thang bộ, tuyệt đối không dùng thang máy). Tắt trong Cài đặt → Khác (?drill để xem ngay).

  • Đi làm bù thứ Bảy, nghỉ bù: văn phòng theo lịch chính thức của Việt Nam: ngày lễ, Tết và lịch hoán đổi ngày làm việc Chính phủ công bố (nghỉ một ngày thường cho liền kỳ nghỉ, đi làm bù một ngày thứ Bảy), trong một bảng nhỏ có ngày và số văn bản (src/shared/workdays.js, cách thêm năm mới ghi trong chú thích). Thứ Bảy làm bù thì văn phòng chạy như ngày thường: lễ tân ngồi quầy, có cơm nhà, quán cơm, trực nhật; sáng ra có người than trong nhóm chat "Thứ Bảy mà vẫn phải lên công ty 😩 làm bù mà". Ngày nghỉ bù là ngày nghỉ (quầy lễ tân đóng, không cơm nhà, không trực nhật, không họp đầu tuần), cuối tuần và ngày lễ cũng vậy; chiều làm việc cuối trước kỳ nghỉ từ ba ngày trở lên có người nhắc nghỉ mấy ngày, thứ Bảy nào phải đi làm bù. Theo các thông báo tới nay: thứ Bảy 10/1/2026 làm bù cho thứ Sáu 2/1, thứ Bảy 22/8/2026 làm bù cho thứ Hai 31/8; năm 2027 không có ngày làm bù nào (Chính phủ chọn phương án nghỉ Tết 4/2–10/2 và Quốc khánh 2/9–5/9 không phải làm bù).

  • Tiệc chia tay: dự án từng làm thật (ít nhất hai ngày khác nhau) mà 30 ngày không mở phiên nào (Cài đặt → Khác: 14, 30, 60 hay 90 ngày, hoặc tắt) thì có một buổi chiều cuối, trong giờ hành chính: người của dự án lên công ty lần nữa, đeo thẻ nhân viên, dọn bàn vào thùng các-tông (chậu cây nhỏ, cái cốc, khung ảnh) trong lúc thảm khu làm việc hiện màu dự án; ai rảnh ra phòng họp ăn bánh kem nhỏ của chị nhân sự, mỗi người ký một dòng lên tấm thiệp to ("Chúc em thành công", "Nhớ ghé chơi nha"); "Một, hai, ba… cười nào!" và ảnh chụp chung lên nhóm chat; trả thẻ nhân viên cho chị nhân sự; rồi ôm thùng xuống thang máy, thảm tự cuộn lại, bàn có tấm biển "Bàn trống". Mở lại dự án thì người đó "quay về công ty cũ": nhóm chat trêu "Ủa quay lại hả 😆", mở thùng ra bàn, thảm trải lại. Chỉ là cảnh trong văn phòng: không đụng gì tới dự án; văn phòng ghi quãng làm việc của từng dự án ở data/tenure.json (lần chạy đầu chỉ đọc một lần ngày giờ và thư mục của các transcript Claude Code).

  • Thực tập sinh lên chính thức: dự án mới với văn phòng (trước đó văn phòng và Claude Code chưa từng làm ở đó, nên cập nhật bản mới không tự dưng có thực tập sinh) bắt đầu là thực tập sinh: người của dự án đeo dây thẻ màu cam "Thực tập sinh", trên bàn có biển nhỏ "Thực tập sinh". Xong 20 lượt việc trong ít nhất hai ngày khác nhau thì chị nhân sự làm lễ trong giờ hành chính: lên bàn nhân sự ký "Hợp đồng lao động", chị đóng dấu đỏ cái cộp, giám đốc ra bắt tay, mấy người ngồi gần vỗ tay, về bàn thì biển tên thay cho biển thực tập; nhóm chat "Chúc mừng … lên chính thức 🎉" (và có người đòi khao trà sữa). Văn phòng Nhỏ không có nhân sự thì cắt bánh ở bàn họp.

  • Ngủ trưa 12:30–13:30: rèm kéo xuống, phòng tối bớt, ai không có việc đang chạy thì ngủ ngay tại bàn, nửa ngả ghế đắp chăn, nửa gục xuống bàn. 13:30 chuông báo thức, rèm kéo lên.

  • Logo agent: vòng tròn trong danh sách phiên là logo của agent chạy phiên đó (Claude Code; Codex và Gemini khi văn phòng đọc được phiên của chúng), viền màu là màu riêng của phiên.

  • Nhóm chat công ty (nút trên thanh trên cùng), giống nhóm chat Zalo: mọi người nhắn về chuyện có thật trong văn phòng (xong task, commit, push, CI đỏ, hết lượt Claude, có hàng Shopee ở lễ tân, bình chọn ăn trưa, trà sữa thứ Sáu kèm ảnh chụp bàn, sinh nhật), có "đang soạn tin", thả cảm xúc và trả lời nhau, và trả lời bạn: @ ai thì người đó nói đang làm gì, nhắn "họp" thì chuông họp reo, nhắn "trà sữa" thì trà chiều được mang ra. Ảnh đại diện là chibi của từng người; có sticker, bình chọn, ghim tin, số tin chưa đọc. Chỉ lưu trên máy này; tin bạn gửi không đến Claude.

  • Kho lịch sử: Claude Code xoá bản ghi một cuộc trò chuyện sau 30 ngày (cleanupPeriodDays). Văn phòng giữ lại phần chữ trong data/vault: lời bạn, câu trả lời của Claude, tên, thư mục, thời gian, của mọi tài khoản, đọc lại 3 tiếng một lần. Không giữ ảnh, lệnh và kết quả lệnh, nên một tháng lịch sử (vài GB) chỉ còn vài MB. Nhóm chat → ••• → Kho lịch sử: tìm trong mọi lời đã nói (gõ có dấu hay không đều được), đọc lại từng cuộc, chép lệnh claude --resume <id> khi bản gốc còn. OFFICE_VAULT=0 để tắt.

  • Phiếu điểm prompt hằng tuần (tab thứ hai của Kho lịch sử, ?vault=report): 7 ngày qua bạn nhắn Claude những gì, chấm bằng chính bộ luật của Trợ lý soạn prompt: bao nhiêu % đủ rõ để Claude làm ngay (so với tuần trước), những thói quen tốn thêm một lượt (ảnh kèm vài chữ, nói "cái này" mà không chỉ rõ, bảo "khác đi" mà không có tiêu chí, nhiều việc trong một tin, quá ngắn) kèm mẹo, và ví dụ thật trong tuần. Tính ngay trên máy, không dùng model; sáng thứ Hai nhóm chat có một dòng tóm tắt.

  • Trợ lý soạn prompt trên ô nhập của nhóm chat, khi "Gửi tới" Claude: xem ngay trên trang (không gửi đi đâu), gõ xong là nhắc từng ý một những chỗ hay làm Claude hỏi lại: ảnh kèm một hai chữ ("sao", "điền sao"), "khác đi", "hay hơn" mà không có tiêu chí, "cái này", "số 4" mà không chỉ rõ là gì, nhiều việc trong một tin, tin quá ngắn. Bấm gợi ý là sửa luôn tin đang soạn (thêm câu nói rõ muốn làm gì với ảnh, "Tiêu chí: ", đánh số các việc theo đúng thứ tự cần làm); ẩn gợi ý nào thì tin đó không nhắc lại, và không bao giờ chặn gửi. Nút "✨ Viết lại cho rõ" nhờ chính Claude Code viết lại thành Mục tiêu / Bối cảnh / Xong khi (model nhỏ, không công cụ, một lượt, chỉ gửi chữ, tối đa 20 lần một giờ; tốn chút lượt của gói), có "Hoàn tác". Tắt ở Cài đặt → Khác → Nhóm chat.

  • Lệnh nhanh: khi "Gửi tới" một cuộc trò chuyện, hàng nút trên ô nhập điền sẵn prompt hay dùng (chạy test, commit và push, deploy…). Nút ✎ để sửa (tối đa 12, lưu trên máy Mac, điện thoại dùng chung), còn ⭐ Lưu câu này biến câu đang soạn thành một nút mới bằng một chạm, tên nút là mấy chữ đầu.

  • Bảng kế hoạch: bảng trắng ghi việc của từng session (đang làm, chờ bạn, xong; kèm tiến độ checklist TodoWrite nếu Claude có dùng) và việc của riêng bạn dưới dạng giấy dán. Bấm bảng để thêm, đánh dấu xong hay xoá việc; lưu trong data/todos.json.

  • Hội thoại dễ đọc: tab Hội thoại hiển thị markdown (danh sách, bảng, code có nút chép), thu gọn tin dài, gom các bước công cụ thành một dòng đếm "đọc / sửa / lệnh", và gập đoạn tóm tắt Claude tự viết khi phiên quá dài.

  • Duyệt quyền ngay trong văn phòng: khi trang đang mở và đang được nhìn, yêu cầu quyền của Claude Code hiện thành thẻ Cho phép / Luôn cho phép / Từ chối. Trang không được nhìn, hoặc 45 giây không ai bấm, thì Claude Code hỏi như bình thường. Tắt trong Cài đặt.

  • Rời Mac thì điện thoại duyệt: đã bật "Duyệt lệnh từ điện thoại" và điện thoại đã nhận thông báo, thì yêu cầu đến sau 2 phút không ai chạm phím/chuột trên Mac sẽ chờ điện thoại (tối đa 10 phút) thay vì trả về IDE, và điện thoại có thông báo ngay: duyệt lệnh, trả lời câu hỏi hay duyệt kế hoạch ở tab Tổng quan. Chạm phím hay chuột trên Mac là yêu cầu trả về IDE sau vài giây. Cài từ trước: chạy lại my-office install một lần để hook được chờ lâu như vậy (không thì dừng ở 45 giây). Yêu cầu một trang đang giữ (hết 45 giây, hay trang bị ẩn) cũng ở lại chờ điện thoại khi không ai chạm Mac, thay vì về một IDE không ai ngồi; yêu cầu nào đã về IDE thì điện thoại được báo lúc nào và vì sao, và nhật ký ghi lại từng lần.

  • Ngắt vòng lặp kẹt: một phiên chạy đi chạy lại một lệnh mà lỗi y hệt 3 lần liền thì lần thứ 4 bị chặn, Claude được nhắc đổi cách khác hoặc hỏi bạn (hook PreToolUse chạy đồng bộ, văn phòng trả lời ngay từ bộ nhớ; quá 0,3 giây là bỏ qua, nên văn phòng tắt hay đang bận thì lệnh vẫn chạy như thường). Bảng tên của người đó đỏ lên chữ "kẹt", nhóm chat có thẻ ("api-worker chạy npm test lỗi y hệt 3 lần — đã chặn lần 4") với nút Dừng (dừng ở bước kế tiếp; việc giao từ văn phòng thì dừng hẳn) và Gửi gợi ý (Claude đọc ở bước kế tiếp; lượt đã xong thì gợi ý nhắn tiếp cuộc trò chuyện), điện thoại nhận thông báo. Văn phòng cũng báo khi phiên nén bộ nhớ liên tục hay tiêu tiền 10 phút mà chưa sửa file nào, nhưng không chặn gì. Bạn gõ gì vào phiên là xoá hết. Cài đặt → Khác: bật/tắt, chặn sau mấy lần lỗi, sau bao nhiêu phút. Cài từ trước: chạy lại my-office install một lần để thêm hook.

  • Hai phiên cùng sửa một file, giành cổng: một phiên sắp sửa file mà phiên khác vừa sửa trong 20 phút qua thì Claude của nó được nhắc trước (đọc lại file, đừng ghi đè thay đổi của phiên kia, đụng việc thì hỏi bạn) và nhóm chat báo. Một lệnh không mở được cổng (EADDRINUSE, "Port 3000 is in use") thì nhóm chat nói server nào đang giữ, của phiên nào, và Claude của phiên đó được dặn đừng kill nó. Cả hai đi qua hook ngắt vòng lặp nên không phải cài thêm gì.

  • Ghi nhớ sống qua lúc nén: ngăn chi tiết của mỗi phiên có tab Ghi nhớ cho những điều cuộc đó phải luôn nhớ ("commit message bằng tiếng Việt", "đừng push khi chưa hỏi"). Khi Claude Code nén một cuộc dài, những gì dặn giữa chừng có thể bị tóm mất; ngay sau mỗi lần nén văn phòng nhắc lại các điều đã ghim (hook SessionStart, nguồn compact) và nhóm chat báo. Lưu theo cuộc trò chuyện trong data/pins.json, tối đa 12 điều. Cài từ trước thì chạy lại my-office install để thêm hook.

  • Lệnh bị chế độ tự động chặn: chế độ tự động chặn một lệnh (hook PermissionDenied của Claude Code) thì nhóm chat có thẻ: phiên nào, lệnh gì, lý do. Khi đang mở văn phòng, Claude Code chờ tối đa 40 giây để bạn chọn Cho Claude thử lại (Claude được báo là có thể thử lại, lệnh vẫn qua chế độ tự động lần nữa) hay Giữ chặn; không mở thì giữ chặn ngay, thẻ vẫn lưu lại. Nút Chép lệnh để tự chạy. Điện thoại chỉ trả lời được khi máy Mac cho phép duyệt từ điện thoại. Cài từ trước thì chạy lại my-office install để thêm hook.

  • Hoàn tác lượt cuối: ngăn chi tiết của một phiên đang nghỉ có nút ↶ Hoàn tác lượt cuối: các file Claude sửa bằng công cụ sửa file (Edit, Write…) trong lượt cuối trở lại như trước lượt đó, file nó mới tạo thì bị xoá. Văn phòng tự giữ bản sao (hook ngắt vòng lặp chạy trước mỗi lệnh chép file ngay lần đầu một lượt đụng tới nó, trước khi Claude Code ghi), nên không phụ thuộc chi tiết nội bộ của Claude Code. Thay đổi do lệnh terminal (git, sed, build) không hoàn tác; file bị sửa lại sau lượt đó thì để yên; bản lúc trước được giữ trong data/undo/. Xem trước từng file sẽ ra sao, bấm hai lần mới làm, rồi Báo cho Claude. Từ điện thoại chỉ khi đã cho giao việc từ điện thoại.

  • "Sửa luôn" khi CI đỏ: lần chạy CI mới nhất của repo mà một phiên đang làm bị hỏng (đọc bằng gh) thì nhóm chat có thẻ từ phiên đó, kèm link lần chạy và nút Sửa luôn. Bấm là giao cho Claude: đọc log bước hỏng, sửa, chạy lại đúng phần kiểm tra đó trên máy, báo lại, không tự push. Phiên đang làm thì nhận như lời chen giữa chừng; phiên đang nghỉ thì làm tiếp cuộc trò chuyện. CI xanh lại thì thẻ báo. Từ điện thoại chỉ khi đã cho phép giao việc từ điện thoại.

  • Câu hỏi và kế hoạch của Claude: khi Claude hỏi bạn chọn phương án (AskUserQuestion) hay xin duyệt kế hoạch (ExitPlanMode), văn phòng hiện thẻ có đủ câu hỏi, các lựa chọn, ô "Khác", hoặc nội dung kế hoạch với nút Duyệt / Sửa tiếp kèm góp ý. Cùng luật với duyệt quyền: chỉ giữ khi trang đang được nhìn, tối đa 45 giây; "Trả lời trong IDE" trả lại cho Claude Code hỏi như thường.

  • Hạn mức gói: viên "Gói Claude" trên thanh trên cùng hiện hạn mức sát nhất, tô màu theo mức; bấm vào xem từng hạn mức:

    • 5 giờ;
    • tuần (chỉ gói cá nhân Pro / Max; gói tổ chức Team / Enterprise không có, thẻ ghi rõ);
    • riêng theo model nếu có.

    Có tài khoản đang đăng nhập; báo khi qua 80% và 95%; số 5 giờ cũng hiện trên màn hình TV. Văn phòng đọc trực tiếp từ tài khoản như mục Usage của IDE: lấy đăng nhập của Claude Code trong Keychain mỗi lần (không lưu, không ghi log), gọi địa chỉ hạn mức của Anthropic mỗi 2 phút khi có trang mở. Địa chỉ này chưa có trong tài liệu nên có thể đổi; lỗi thì văn phòng dùng số từ status line (khi chạy trong terminal). Tắt bằng OFFICE_USAGE=0.

    Có tài khoản Claude Code thứ hai trên cùng máy (thư mục cấu hình riêng, CLAUDE_CONFIG_DIR, ví dụ ~/.claude-org2) thì hạn mức của tài khoản đó hiện ngay bên dưới, và nhân vật của các phiên chạy bằng tài khoản đó đeo nhãn tên tài khoản.

  • Cái gì đang ăn gói (dòng cuối thẻ hạn mức, hoặc ••• trong nhóm chat, cả trên điện thoại): Claude Code tốn vào đâu, hôm nay hoặc 7 ngày. Ai ăn nhiều nhất (MCP, skill, plugin, loại subagent: "MCP github 34% · Skill pdf 12% · Subagent Explore 9%"), chia theo model và theo nguồn (hội thoại chính, subagent, việc nền), mỗi ngày một cột, rồi theo dự án và theo phiên. Mỗi con số tính bằng USD theo giá API và, khi biết tuần của gói, quy ra ≈ % hạn mức tuần. Số liệu là bộ đếm và sự kiện OpenTelemetry của chính Claude Code (code.claude.com/docs/en/monitoring-usage), Claude Code gửi thẳng về văn phòng trong máy (/v1/metrics, /v1/logs, OTLP/HTTP JSON), lưu thành tổng theo ngày trong data/otel/, giữ 30 ngày. install thêm vào env của ~/.claude/settings.json, gắn nhãn MY_OFFICE_OTEL để uninstall gỡ đúng những khoá đó; nếu bạn đã gửi telemetry đi chỗ khác (trong settings, shell hay chính sách quản lý) thì không đụng vào mà in cách thêm văn phòng làm exporter thứ hai cho OpenTelemetry Collector của bạn. Nội dung prompt không gửi (OTEL_LOG_USER_PROMPTS không bật); OTEL_LOG_TOOL_DETAILS=1 cho thấy tên thật của MCP và skill bạn tự thêm, phần nội dung công cụ nó thêm vào sự kiện thì văn phòng bỏ, không đọc. Phiên Claude Code mới mới nhận cài đặt; phiên đang mở giữ cài đặt cũ.

  • Nhiều tài khoản Claude: nút "Thêm tài khoản Claude" trong thẻ hạn mức tạo thư mục cho tài khoản và mở trang đăng nhập trên trình duyệt, không cần Terminal. Rê chuột vào một tài khoản để đổi tên, bấm "Dùng" để phiên mới chạy bằng tài khoản đó, hoặc kéo tay nắm ⠿ để xếp thứ tự. Bật "Tự đổi tài khoản khi hết lượt" thì khi một tài khoản hết lượt, phiên mới tự chạy bằng tài khoản kế tiếp theo thứ tự đó, có lượt lại thì tự quay về tài khoản trên cùng. Văn phòng làm việc này qua tiện ích Claude Code của trình soạn thảo (claudeCode.claudeProcessWrapper, văn phòng tự thêm và tự gỡ) hoặc một alias cho Terminal hiện trong thẻ; các tài khoản dùng chung lịch sử, cài đặt và bộ nhớ qua liên kết tới ~/.claude. Chạy trên macOS và Linux.

  • Chuyển phiên đang mở sang tài khoản khác: bấm vào người đó, chọn "Đổi tài khoản" rồi chọn tài khoản. Phiên trong trình soạn thảo dừng lại một chút lúc đang rảnh; bạn gõ tiếp là đúng hội thoại đó chạy tiếp bằng tài khoản mới (người đó ngồi chờ ở bàn trong lúc ấy). Phiên chạy trong Terminal thì nhận lệnh để mở lại ở đó. Khi bật tự đổi, tài khoản nào hết lượt lâu (không phải giới hạn ngắn vài phút) thì các phiên đang mở của nó cũng tự chuyển; có ô bên dưới công tắc để tắt việc này.

  • Sếp và đội trợ lý: khi Claude gọi trợ lý (subagent), nhân vật chính ra bảng giao việc; mỗi trợ lý vào cửa, tới cạnh sếp nhận việc, rồi đi tới đúng chỗ đang làm (thư viện khi đọc, phòng máy khi chạy lệnh, cửa sổ khi tra web, bàn họp khi sửa), xong việc thì quay về đưa báo cáo rồi mới ra về. Nhãn của sếp có số trợ lý; chọn hoặc rê chuột lên sếp thì hiện đường nối tới cả đội. Phòng họp có 4 ghế và 12 chỗ đứng; nhãn và bóng thoại chen nhau thì tự tránh.

  • Nghỉ có chăn gối: phiên nghỉ lâu thì nhân vật ngả ghế, kê gối, đắp chăn; có việc thì vươn vai, gấp chăn đặt lên bàn rồi cất. Phiên còn việc chạy nền thì không ngủ mà ngồi canh. Lỗi hai lần trong 2 phút thì đập bàn (ý từ agents-at-work).

  • Lệnh nguy hiểm: thẻ duyệt tô đỏ và ghi lý do (xoá đệ quy, force push, curl | sh, sudo, có chữ prod…), phải bấm Cho phép hai lần, không có "Luôn cho phép". Phím Y / N / A trả lời thẻ trên cùng (mẫu lệnh từ cubicle-crew, MIT).

  • Mở đúng cửa sổ: nút "Mở cửa sổ" (phím O) trong chi tiết phiên đưa cửa sổ IDE hay terminal đang chạy phiên đó lên trước (ý từ cubicle-crew).

  • Thời tiết thật: chọn thành phố trong Cài đặt (mặc định tắt); mưa rơi quanh văn phòng, mây làm tối trời, giông có chớp và sấm, sương mù làm xa mờ đi; đồng hồ hiện nhiệt độ. Dữ liệu Open-Meteo, không cần khoá.

  • Giao diện 2D (nút 3D | 2D trên thanh trên cùng, hoặc ?view=2d): không có cảnh 3D, chỉ các phiên thành từng dòng, tối giản. Lệnh chờ duyệt nằm trên cùng kèm nút duyệt, rồi đến cần bạn, đang làm, đang nghỉ; tab vừa đếm vừa lọc, ô tìm (phím /) theo tên, dự án, nhánh. Mỗi dòng: tên cuộc trò chuyện, dự án và nhánh (hoặc việc đang giao), việc đang làm nói bằng việc thật (lệnh, file), danh sách việc, ngữ cảnh, thời gian, chi phí, các subagent bên dưới; bấm để mở. Mỗi trình duyệt nhớ lựa chọn riêng. Đỡ pin, dùng được khi máy không có WebGL.

  • Câu trả lời cuối của Claude: lúc xong việc, bóng thoại, bảng hoạt động và thông báo hiện câu cuối Claude viết.

  • Dòng thời gian: trong khung Hoạt động. Mỗi phiên một hàng, trợ lý thụt vào bên dưới, tô màu theo việc (nghĩ, đọc, sửa, chạy lệnh, web, giao trợ lý, chờ duyệt, đến lượt bạn), có số phút Claude chờ bạn trong ngày. Bấm một đoạn để xem lại đúng lúc đó; xuất CSV.

  • Tên phiên theo tên chat: tên bạn đổi trong IDE, không có thì tên Claude tự đặt; cạnh đó là thư mục dự án.

  • Đến lượt bạn: chuông khi một session xong việc lúc bạn đang ở cửa sổ khác; phím N nhảy tới session đang chờ bạn.

  • Ngữ cảnh và chi phí: thanh ngữ cảnh mỗi session, thùng rác cạnh bàn đầy dần theo ngữ cảnh, nhân vật dẫm bẹp khi nén hội thoại. Chi phí tính theo giá API (với gói đăng ký thì không phải hoá đơn của bạn).

  • Đồng hồ bộ nhớ đệm: mỗi bàn đang nghỉ có một tách cà phê, hơi bốc mờ dần khi bộ nhớ đệm (prompt cache) của phiên nguội đi, tắt hẳn khi đã nguội. Còn ấm thì nhắn tiếp phiên đó rẻ; nguội rồi thì lần nhắn sau phải đọc lại cả cuộc trò chuyện. Bảng của phiên ghi "Bộ nhớ đệm còn ấm ~23 phút" hay "đã nguội · nhắn tiếp sẽ đọc lại ~180k token", ô Gửi tới trong nhóm chat cũng vậy ("còn ấm ~23 phút · nhắn tiếp rẻ"), để bạn trả lời trước khi nguội. Số liệu lấy từ prompt_cache của status line (Claude Code 2.1.251 trở lên) và SessionStart khi mở lại phiên; không có thì ước tính từ lúc xong lượt cuối cộng thời hạn trong tài liệu (một giờ với gói đăng ký, năm phút với API key) và ghi "(ước tính)". Cài đặt → Khác có thể báo điện thoại khi phiên đang chờ bạn trả lời còn 5 phút là nguội (mặc định tắt).

  • Sự cố: 3 lỗi trong 5 phút thì văn phòng chuyển đỏ, có còi.

  • Máy Mac: viên "Máy Mac" trên thanh trên cùng là chỗ duy nhất xem máy (chấm vàng khi có gợi ý dọn); bấm vào mở bảng RAM, swap, CPU, ổ đĩa; tắt dev server, đóng session rảnh, thoát app nặng, dọn cache. Luật mới (ý từ cc-reaper, Apache-2.0): tiến trình phình thêm 512 MB trong 15 phút, tiến trình giữ một lõi CPU trên 80% suốt 10 phút (đo bằng thời gian CPU, không bằng %cpu), dev server có người đang mở (kết nối ESTABLISHED) thì không bị gợi ý tắt, và ngưỡng "rảnh bao lâu thì nên đóng" rút ngắn khi máy căng RAM. Dev server ghi rõ session nào mở; session đã đóng mà bỏ quên dev server thì nó nằm ở phòng máy với đèn đỏ và lên đầu danh sách "Nên giải phóng". Máy chủ mini trên bàn = dev server của session ngồi bàn đó.

  • Việc bỏ quên (trong bảng Máy Mac): mọi worktree git và bản chính của các repo session từng làm (cả .claude/worktrees của Claude Code) còn tệp chưa commit, commit chưa đẩy lên hay stash, kèm nhánh, dung lượng và lần sửa cuối. Mở trong trình soạn thảo hoặc terminal, Giao Claude làm nốt (một phiên mới trong thư mục đó, lời nhắn soạn sẵn sửa được), hoặc Xoá worktree không còn gì dở sau khi xác nhận: không bao giờ xoá bản chính, worktree còn việc hay đang có session mở, và git (không --force) kiểm lại ngay trước khi xoá.

  • Xem lại: nút Xem lại tua lại 1 giờ, 3 giờ, hôm nay hoặc hôm qua ở ×10 đến ×120 (mặc định 1 giờ trong 1 phút), bỏ qua đoạn yên ắng. Quay video ghi cả tab thành MP4 (Chrome) từ đầu tới cuối đoạn xem lại, rồi lưu vào thư mục Tải về.

  • Chế độ quay màn hình: làm mờ lệnh, đường dẫn và nội dung hội thoại để quay video hay livestream.

  • Git trong văn phòng: bàn bừa dần theo số file chưa commit; commit thì máy in in một trang; push thì tên lửa phóng; CI trên GitHub đỏ thì hiện thông báo đỏ, có còi nếu bật âm thanh (đọc bằng gh đã đăng nhập, tắt bằng OFFICE_CI=0).

  • Màn hình trên bàn: hiện đúng việc phiên đang làm: trình soạn code, terminal, trình duyệt, khung chat, hộp thoại xin quyền, màn hình chờ khi ngủ.

  • Tổng kết tuần: thẻ ảnh 7 ngày qua (giờ làm của các agent, việc đã giao, lần sửa file, lệnh, chi phí theo giá API, dự án chăm nhất), tải về hoặc chép để đăng mạng xã hội.

  • Tủ cúp: cột mốc 1.000 việc, 10.000 lần sửa file, lần deploy đầu tiên…

  • Kiểu văn phòng Tập đoàn: tầng Công ty thêm một cánh bốn phòng ban (tổng 44 bàn); biển trên cửa mỗi phòng hiện tên dự án đang ngồi ở đó.

  • Chế độ chụp ảnh (phím P): ẩn mọi bảng, xoay camera tự do, lưu ảnh PNG tới 4K, có vẽ sẵn tên nhân vật.

  • Clip 15 giây (nút trong chế độ chụp ảnh): video quay văn phòng từ sáng tới tối, khung vuông để đăng bảng tin hoặc dọc 9:16 cho Reels, TikTok, Shorts. Camera xoay chậm, có tiêu đề, số liệu trong ngày và nhạc nền lo-fi tự soạn, tạo ngay trong trình duyệt nên không lo bản quyền (tắt được). Chrome lưu ra MP4, đăng Facebook được ngay.

  • Đồ hoạ: Tự động, Thấp, Vừa, Cao (Cài đặt → Hiển thị). Tự động tự hạ khi máy giật và nhớ theo từng máy.

  • Hai ngôn ngữ: tiếng Anh (mặc định) và tiếng Việt; chữ nằm trong src/i18n/locales/, thêm ngôn ngữ mới bằng cách chép thư mục en/.

Không cần mạng

three.js và hai font (Be Vietnam Pro, JetBrains Mono, OFL) đóng gói cùng trang, qrcode.js nằm trong public/assets/vendor, nên văn phòng mở được khi không có mạng. Chỉ hạn mức gói, kiểm tra CI, dịch tiếng Việt và thời tiết (nếu bật) cần mạng.

Nhẹ máy

Lúc mở trang, các vật tĩnh dùng chung kiểu vật liệu được gộp lại theo từng món đồ (màu từng phần giữ nguyên), nên số lần vẽ mỗi khung giảm từ khoảng 3.300 xuống khoảng 1.100 (đo trên M1 Pro). Trang vẽ 60 khung/giây khi bạn đang xoay camera hay rê chuột, 40 khi có người đi lại, 30 khi văn phòng yên, 10 khi cửa sổ ở phía sau; bóng đổ vẽ lại cách khung khi không ai đi. Viền sáng khi rê chuột chỉ vẽ lại đúng món đồ đó.

Xem trên điện thoại

Trên điện thoại, văn phòng tự xếp lại như một app (cầm dọc hay ngang đều được): thanh trên gọn (gói Claude, máy Mac, cài đặt), văn phòng chiếm cả màn hình, và thanh dưới có năm mục Tổng quan · Phiên · Hoạt động · Duyệt · Chat (kèm số đếm), bấm mục nào thì mục đó mở thành một trang phủ kín màn hình. Tổng quan đặt việc đang chờ bạn lên đầu (chính các thẻ duyệt), rồi các phiên đang làm, hạn mức gói và máy Mac. Lệnh chờ duyệt nổi ngay trên thanh dưới với nút to vừa ngón cái.

Mặc định chỉ chính Mac mở được. Muốn xem trên điện thoại cùng wifi: bấm nút điện thoại trên Mac, bật "Mở trên điện thoại (mạng nhà)", rồi quét mã QR hoặc gõ địa chỉ và nhập mã PIN 6 số (không cần Terminal; tắt công tắc là điện thoại bị ngắt ngay, nút "Đổi mã" đăng xuất mọi điện thoại). Nhập sai 5 lần thì khoá địa chỉ đó 15 phút; 20 lần sai trong 15 phút thì khoá trang PIN với mọi máy. Điện thoại xem được; duyệt lệnh chỉ khi bạn bật "Duyệt lệnh từ điện thoại" trên Mac (mặc định tắt, chỉ Mac bật được): Cho phép một lần hoặc Từ chối, trả lời câu hỏi, duyệt kế hoạch; không có "Luôn cho phép", lệnh nguy hiểm (màu đỏ) chỉ Từ chối được từ điện thoại; mỗi lần duyệt từ điện thoại được ghi kèm địa chỉ máy. Hook chỉ nhận từ chính Mac. Khi ra ngoài (4G, wifi khác): bật "Dùng khi ra ngoài (qua Cloudflare)" trong cửa sổ Điện thoại, văn phòng mở một đường hầm Cloudflare (tự tải cloudflared một lần; không cần tài khoản hay domain) và hiện địa chỉ https kèm mã QR, đổi mỗi lần bật lại. Mọi thứ đi qua đường này bị coi là từ internet: chỉ vào bằng mã PIN (không nhận link có token), cookie chỉ gửi qua https, và chỉ được gửi mã PIN, câu trả lời duyệt lệnh (nếu đã cho phép) và trạng thái trang; hook, tắt tiến trình, tài khoản, các công tắc đều bị chặn. Tắt công tắc là cloudflared dừng và điện thoại bị ngắt. Mạng riêng Tailscale cũng dùng được (cửa sổ hiện sẵn địa chỉ). Muốn nhắn việc cho Claude từ điện thoại: dùng Remote Control của Claude Code (/rc), bấm vào người đó → "Mã QR" để mở phiên trong app Claude. Chỉ bật ở mạng nhà, mạng tin cậy hoặc Tailscale (trang chạy HTTP, không mã hoá).

Chạy việc từ điện thoại thành phiên nền (cửa sổ Điện thoại, dưới "Giao việc cho Claude từ điện thoại"; mặc định tắt): mỗi việc chạy thành một phiên nền của Claude Code (claude --bg, bản 2.1.257 trở lên) thay cho claude -p. Thẻ việc vẫn hiện từng bước, nút Dừng và câu trả lời (lấy từ hook của chính phiên đó); lệnh cần duyệt hay câu Claude hỏi sẽ chờ trên điện thoại và trong văn phòng tới khi bạn trả lời (không còn 45 giây), và thẻ ghi cách làm tiếp trên Mac (claude attach <mã>). Phiên vẫn sửa thẳng thư mục làm việc như trước (không tạo worktree riêng, không tự push). Claude Code chưa có phiên nền, hoặc thư mục Claude Code chưa được tin (mở Terminal ở đó, gõ claude một lần rồi đồng ý), thì việc chạy kiểu cũ và nhóm chat báo lý do.

Chen lời giữa chừng: bấm 💬 Chen lời trên thẻ việc đang chạy, hoặc dùng "Gửi tới" nhắn cho một cuộc trò chuyện đang làm dở (văn phòng hỏi lại trước), lời nhắn ("sửa luôn test", "sai file rồi, dừng") vào thẳng phiên đó qua hộp thư của nó (nhắn tin giữa các phiên của Claude Code, bản 2.1.224 trở lên): Claude đọc ngay sau bước đang làm. Claude Code đưa lời nhắn như tin từ một phiên khác, nên nó không bao giờ được tính là bạn đã duyệt lệnh nào. Phiên nào chưa nhận được (Claude Code bản cũ, phiên bỏ qua mọi lệnh duyệt, cài đặt giữ hay chặn tin từ phiên khác) thì nhóm chat báo, và lời nhắn được gửi như tin thường khi phiên đó xong.

An toàn

  • Hook gửi tới 127.0.0.1 và chạy nền; server tắt thì hook bỏ qua, Claude Code chạy bình thường. Hook ngắt vòng lặp chạy đồng bộ nhưng chờ tối đa 0,3 giây và không in gì khi văn phòng tắt hay chậm, nên không bao giờ chặn Claude Code vì văn phòng.
  • Chuỗi giống mật khẩu, token, khoá API bị che trước khi lưu hay hiển thị (redact.mjs).
  • Số liệu dùng ("Cái gì đang ăn gói") chỉ đi từ Claude Code tới 127.0.0.1: bộ nhận từ chối mọi thứ đến từ trang web, wifi hay đường hầm, chỉ đọc JSON (tối đa 4 MB mỗi lần), và chỉ giữ tổng chi phí, token theo ngày; email, prompt, lệnh không bao giờ được lưu.
  • Nút Tắt kiểm lại PID và giờ khởi động của tiến trình ngay trước khi tắt, nên không tắt nhầm tiến trình mới mang lại PID cũ. Mọi lần tắt, dọn, duyệt quyền ghi vào data/actions.log.

Tệp

  • server/: máy chủ Node. index.mjs nhận hook, đọc ~/.claude/sessions/*.json (theo CLAUDE_CONFIG_DIR nếu có), đẩy sự kiện qua SSE, giữ yêu cầu duyệt quyền, ghi nhật ký xem lại, trang PIN, và giao trang cho Next.js. system.mjs: RAM/CPU/ổ đĩa, dev server, session rảnh, dọn dẹp. otel.mjs: bộ nhận OpenTelemetry cho "Cái gì đang ăn gói" (otel-setup.mjs: phần cài đặt của install). usage.mjs: token và ngữ cảnh. trophies.mjs: tổng tích luỹ cho tủ cúp. redact.mjs: luật che bí mật.
  • app/ + src/components/: trang Next.js (App Router). src/styles/: CSS theo từng khu vực.
  • src/office/: văn phòng 3D (three.js), chia module theo thư mục core, scene, world, people, life, ui, interact, net, demo, replay. Bản đồ module ở docs/ARCHITECTURE.md.
  • bin/cli.mjs: lệnh install / uninstall / doctor / start / pin. hooks/hooks.json + .claude-plugin/: cài dạng plugin. hooks/status-line.mjs: status line gửi hạn mức gói về văn phòng.
  • tests/unit/ (node --test) và tests/e2e/ (Playwright), chạy trên CI ở .github/workflows/ci.yml (e2e: nhóm @smoke), toàn bộ e2e chia nhiều máy ở e2e-full.yml (mỗi đêm và mỗi PR).
  • data/ (không đưa lên git): state.json, token, pin, todos.json, limits.json, totals.json, statusline-prev.json, owners.json, replay/YYYY-MM-DD.jsonl (giữ 7 ngày), otel/YYYY-MM-DD.json (giữ 30 ngày), actions.log, server.log.

Phát triển

npm install
npm run dev        # Turbopack, tự nạp lại khi sửa code: http://localhost:4310/?demo
npm run lint && npm run typecheck && npm test
npm run build && npm run test:e2e

Đọc CONTRIBUTING.md trước khi gửi pull request.

Giấy phép

MIT. Tên và logo thương hiệu nhắc tới trong dự án vẫn thuộc về chủ sở hữu; My Office không liên kết với các thương hiệu đó.