phương pháp làm việc với agent · ghi chú 3 · bản 2026-11-07

Thông tin lưu ở đâu: cái gì lên git, cái gì riêng máy

Mỗi mẩu thông tin trên máy phải trả lời được ba câu: phạm vi dùng, lên git không và repo nào, mất máy dựng lại từ đâu. Ghi chú này cho khung 13 phạm vi, cây quyết định 8 câu và các quy tắc đi kèm.

Văn bản có hiệu lực: kit doc/convention/information-placement.md (bảng đủ cột: bản chạy, ai sửa, đồng bộ, dựng lại). MiniGate chỉ là ví dụ (mục 6).

00Câu hỏi

  1. Mỗi mẩu thông tin (repo, file ngoài repo, cấu hình agent, cấu hình hệ thống) dùng cho phạm vi nào?
  2. Có lên git không, lên repo nào (kit, hub, repo nền tảng, không git, vault)?
  3. Mất máy thì dựng lại từ đâu?

Trả lời ngắn: phân theo 13 phạm vi, mỗi phạm vi đúng một nguồn chuẩn. Sinh lại được thì commit nguồn sinh, không commit bản sinh. Riêng một máy mà không sinh lại được thì vào ops/<máy>/ của hub kèm bootstrap.md. Hai thứ quan trọng nhất khi mất máy là dữ liệu chạy và khởi động khi boot, không phải file cấu hình.

01Khung phân loại

Phạm viVí dụNguồn chuẩnGit?Dựng lại
Mọi dự ánluật làm việc với agent, hồ sơ, mẫu, schema, hook, hợp đồng CLIkitcóclone
Sản phẩmluật sản phẩm, bảng repo, vai, env (không secret), flow, tài liệu vận hành, CLI dự án, trạng thái phát hànhhubcóclone
Hồ sơ serverconfig CLI chỉ server dùng: deploy, chứng chỉ, proxy, DBhub config/có; máy khác *.local.jsonclone
Repocode, test, testid, CLAUDE.md kỹ thuật + khối rule-block, skill của reporepo nền tảngcóclone + lệnh deploy
Cấu hình máyCLAUDE.md bàn làm việc, map, README tầng, manifest tiến trình (tên khoá env, không giá trị), route proxy thêm tay, cronhub ops/<máy>/có, không secretbootstrap.md + lệnh check
Trạng thái máydump tiến trình, config proxy đang chạy, launcher, biến shellsinh lại / export định kỳkhôngtừ cấu hình máy + lệnh setup
Khởi độngunit systemd, pm2 startup, lingerlệnh ghi trong bootstrap.mdcó (lệnh)chạy lại lệnh, cần root
Ngườimemory, phiên, settings cá nhân, file cấp user (chỉ dòng import, do setup sinh)~/.claudekhôngmất được; sự thật sản phẩm không được chỉ nằm ở đây
Secret thậtenv có mật khẩu, token, khoá, keystore, chứng chỉvault/ (700, agent không đọc)không, trừ quyết định riêng ghi ở decision/bản sao an toàn đã quyết + xin lại chứng chỉ
Secret testtài khoản test cho máy devchỗ dự án đã quyếttheo quyết địnhclone
Dữ liệu chạyDB, file người dùng tải lên, bộ cài đã phát hànhproduction: backup ngoài máy, đã thử restore; máy test: được không backup nếu có quyết định ghi lạikhôngrestore backup; bộ cài từ release của git host
Quyết địnhkết quả phản biện hoặc thiết kế đã chốthub doc/decision/YYYY-MM-DD-<chủ-đề>.mdcóclone
Một lần chạyreport, ảnh, log, tóm tắt phiênwork/run/<ngày>/<tác-vụ>/khôngkhông cần

02Cây quyết định

Gặp một mẩu thông tin mới: trả lời lần lượt, dừng ở câu “có” đầu tiên.

  1. Là mật khẩu, token, khoá, chứng chỉ? → secret thật: vault/.
  2. Là dữ liệu người dùng, DB, file đã phát hành? → dữ liệu chạy: không git; production backup ngoài máy.
  3. Sinh lại được bằng lệnh từ thứ khác đã có? → không commit bản sinh, commit nguồn sinh và lệnh.
  4. Đúng cho mọi dự án của công ty? → kit.
  5. Đúng cho cả sản phẩm, mọi máy? → hub.
  6. Chỉ một repo cần? → repo nền tảng.
  7. Chỉ máy này cần, không sinh lại được? → hub ops/<máy>/ + bootstrap.md.
  8. Chỉ một người hoặc một lần chạy? → ~/.claude hoặc work/run/. Nếu là sự thật về sản phẩm thì quay lại câu 5.

03Quy tắc

  • Một nguồn, chỗ khác chỉ trỏ. Trùng có chủ đích (khối rule-block ở mỗi repo nền tảng) phải có lệnh kiểm lệch.
  • Sinh lại được thì commit nguồn sinh: manifest tiến trình chỉ ghi tên khoá env; route do dịch vụ tự đẩy thì không chép.
  • Không commit secret ngoài chỗ dự án đã quyết rõ; lệnh export chặn nội dung có dấu hiệu secret; chạy secret-scan trước commit.
  • Mọi thứ một máy đi kèm bootstrap.md và lệnh check so máy với hồ sơ.
  • Sự thật sản phẩm không chỉ nằm ở memory hay settings của một người; memory chỉ trỏ tới doc.
  • Thư mục công khai không chứa file ẩn, sao lưu, secret. Sao lưu của agent ở work/run/<ngày>/; vault/ chặn agent bằng luật deny, chỉ người và lệnh của dự án ghi vault/backup/.
  • Luật phải tới mọi phiên: import ở file cấp user, không ở CLAUDE.md thư mục cha.
  • Tên máy theo vai trò (ops/<sp>-test/), không theo IP.

04Phản ví dụ đã gặp

SaiHậu quảSửa
Bảng repo, viết tắt, cảnh báo ở file ngoài git, lệch thực tếmất máy là mất; agent đọc thông tin cũhub doc/repos.md + doc/rule.md; file cũ chỉ trỏ
Một skill ba bản lệch nhau ở ba chỗkhông biết bản nào đúngmột nguồn ở repo công cụ, cài bằng lệnh
File sao lưu trong thư mục web công khaiai cũng tải được bản cũsao lưu ra work/run/<ngày>/
Memory chứa sự thật sản phẩm (keystore, quy tắc phát hành, server)người khác, máy khác không thấyhub doc/release/, doc/server/; memory chỉ trỏ
Luật sản phẩm import từ CLAUDE.md thư mục chaphiên mở trong repo bỏ quaimport ở file cấp user, do lệnh setup sinh
Khoá ký (APNs) nằm trong git repo app, app không dùnglộ khoá cho mọi người có repogỡ khỏi git, thư mục secret vào gitignore, tài liệu dựng lại và thay khoá ở hub; lịch sử cũ còn khoá thì thay và revoke
Không backup dữ liệu chạy mà không ai quyếtmất máy = mất dữ liệumáy test: ghi quyết định “không backup” + cách dựng dữ liệu test; production: bắt buộc backup ngoài máy
Không tự khởi động khi bootreboot = dịch vụ tắtghi việc chờ trong bootstrap.md, cần người có quyền root
Script vận hành nằm trong thư mục bản chạy, ngoài git, đường dẫn tương đốigãy khi đổi cây; không ai thấyvào hub, đường dẫn qua env
Cron gọi một file không tồn tại, hồ sơ máy export đúng dòng saihồ sơ “khớp” với cấu hình hỏnglệnh check phải thử chạy, không chỉ so chuỗi

05Hồ sơ máy và dựng lại

ops/<máy>/ trong hub giữ thứ không sinh lại được của một máy, không secret: CLAUDE.md bàn làm việc, map.md, README tầng, settings agent mẫu, manifest tiến trình, route proxy thêm tay, crontab. Hai lệnh đi kèm: export (chụp từ máy đang chạy, mặc định xem trước) và check (so máy với hồ sơ). bootstrap.md ghi thứ tự dựng lại và việc còn chờ người có quyền:

  1. user và công cụ (runtime, SDK)
  2. clone repo: hub, kit, repo nền tảng (sửa), bản chạy (clone riêng)
  3. thư mục cha bảy tầng, vault/ 700, symlink
  4. vault: env, chứng chỉ, khoá (từ bản sao an toàn đã quyết)
  5. dữ liệu: restore backup, hoặc tạo dữ liệu test mới
  6. dịch vụ theo manifest, lưu danh sách tiến trình
  7. proxy, route thêm tay
  8. cron
  9. kiểm: lệnh status, lệnh check, lệnh kiểm của kit

06Ví dụ MiniGate

Ví dụ · máy test minigate-test

Luật làm việc với agent ở kit (~/kit/agent-kit, pin trong kit.lock). Luật sản phẩm, bảng repo, tài liệu vận hành, quyết định ở hub product/minigate-hub/docs/; luật nạp qua file cấp user do mgctl setup sinh. Hồ sơ máy ở hub ops/minigate-test/ với mgctl server export | check. Secret thật ở ~/vault/config, bản sao trong hub secrets/ theo quyết định riêng của dự án (repo private, agent bị luật deny chặn). Dữ liệu chạy không backup vì là máy test, có quyết định ghi lại; mất máy dựng lại từ git, bootstrap.md và dữ liệu test mới.

Bộ ghi chú này là thông tin “mọi dự án” nên nằm trong kit (doc/method/) và được máy test phục vụ công khai qua một route tĩnh; không nằm ở bàn làm việc của máy.

Trước khi hỏi “file này để đâu”, hỏi “mất máy thì cái gì không lấy lại được”. Đó mới là thứ cần một chỗ chắc chắn.