0

Bạn học gì qua gstack ?

Repo.

https://github.com/garrytan/gstack

Các workflow trong gstack (cách phối hợp skill).

Là 1 framework và design sản phẩm tới buidl sản phẩm trong dưới startup , của 1 bác SEO thì phải. Thật ra đối với mình nó khá phức tạp vì đầu óc kinh doanh của mình còn ít.

Thôi thì vì nó nổi nên nhân tiện tìm hiểu thêm.

Đây là giai đoạn hỏi các câu hỏi về định hình ý tưởng. image.png

Đây là giai đoạn design. image.png

Đây là giai đoạn design về mặt kĩ thuật. image.png

Đây là giai đoạn build và ship image.png

Đây là giai đoạn collect metric và gặt hái. image.png

Nhìn qua lăng kính flowchart

Nó là cả 1 workflow định hình lên phong cách chuyên nghiệp. image.png

/office-hours , /spec, /design-consultation là các skill giúp đình hình nên ý tưởng .

Đây là ba làn làm việc của skill, tương đương 3 vai trò. image.png

Tiếp theo là 1 chuỗi các skill về plan và build.

image.png

Có cả 1 chuỗi skill , ấn tượng là cả browser testing và check security nữa mọi người, hội tụ đầy đủ chuyên nghiệp.

Ấn tượng cả phần learning.

Ở đây thấy có file learning.json, 1 kiểu cấu trúc mà mình hay thấy ở openclaw để append log message liên tục

image.png

gstack-learnings-log '{"skill":"review","type":"pitfall","key":"orders-n-plus-one",
  "insight":"OrderList goi orders.customer trong vong lap, sinh N+1 query...",
  "confidence":7,"source":"observed","files":["app/views/orders/index.html.erb"]}'


{..., "ts":"2026-08-22T14:07:06.137Z", "trusted":false}

Binary tự thêm 2 field. ts để tie-break dedup sau này. trusted được dẫn xuất từ source, bạn không set được — observed nên false.

Để hiểu cấu trúc dữ liệu , ta sẽ mô tả rõ như sau:

  1. type: là định tuyến, xác định cứng 7 loại.
Type Nghĩa chính thức Ai ghi Ví dụ (từ demo vừa chạy)
pattern Cách làm tái sử dụng được Capture Learnings của review/office-hours result-object-services"Mọi service trả Result.ok/err thay vì raise"
pitfall Cái không được làm review, qa, investigate orders-n-plus-one"OrderList gọi orders.customer trong vòng lặp"
preference Bạn đã nói rõ ý muốn /learn add, office-hours no-tailwind"Team không dùng Tailwind, chỉ CSS modules"
architecture Quyết định cấu trúc plan-eng-review, plan-ceo-review stripe-webhook-idempotency"Stripe retry 3 lần/24h nên handler phải idempotent"
tool Đặc tính library/framework review, ship sidekiq-cron-tz"sidekiq-cron đọc TZ từ ENV, không từ config.time_zone"
operational Môi trường / CLI / workflow của dự án preamble của MỌI skill bun-test-watch-windows"bun test --watch treo trên Windows"
investigation Root cause của một bug đã điều tra chỉ /investigate checkout-500-nil-cart"500 ở checkout: session cart nil sau Redis evict"

Chúng bắt nguồn từ các skill action: • /learn search --type • /learn export → chia section Patterns / Pitfalls / Preferences / Architecture để dán vào CLAUDE.md • /learn stats → BY_TYPE

  1. key: Nó không phải tiêu đề, không phải tag, không phải mô tả. Nó là primary key — danh tính của một learning trong một bảng append-only. Cơ chế latest-wins: cùng key+type → chỉ bản ts mới nhất sống Key neo vào thứ bất biến, không neo vào cách diễn đạt. Công thức dùng được: <vùng code hoặc component>-<hiện tượng>, 2–5 từ, kebab-case, chữ thường hết.
❌ Tránh Vì sao ✅ Thay bằng
slow-page Quá chung — lần sau AI có thể đặt page-perf, slow-load orders-n-plus-one
orders-index-n-plus-one-fix-query-issue Mô tả hành động, mà hành động đổi theo từng lần orders-n-plus-one
orders-page-load-slow-because-of-loop Là một câu, không phải khoá — lần sau chắc chắn diễn đạt khác orders-n-plus-one
Orders-N-Plus-One Hoa/thường phá dedup orders-n-plus-one
n1 Quá ngắn, dễ đụng với module khác orders-n-plus-one
  1. insight: Là nội dung agent thật sự đọc. Nó đến từ gstack-brain-cache bootstrap cắt 80 ký tự đầu làm title của goal draft • Nội dung này được replay thẳng vào context của agent ở session sau — nên mới phải quét injection ở tầng ghi

Đây là bảng mô tả cách learning được duy trì, add + update + delete image.png

GHI     type ─┐
        key ──┼─→ validate → reject hoặc pass
 confidence ──┤
     source ──┘
    insight ────→ hasInjection() → reject hoặc pass
                        ↓
                  inject ts, derive trusted
                        ↓
                  append 1 dòng (< PIPE_BUF = atomic)

ĐỌC    ts + source ──→ ①  decay        → _effectiveConfidence
          trusted ──→ ②  trust gate    (chỉ khi --cross-project)
       key + type ──→ ③  dedup latest-wins
key+insight+files ──→ ④  filter --query / --type
_effConf + ts ──────→ ⑤  sort
                      ⑥  cắt --limit

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí