84 điểm bởi GN⁺ 2025-11-03 | 2 bình luận | Chia sẻ qua WhatsApp
  • Claude Code được sử dụng rất rộng rãi trong cả dự án cá nhân lẫn môi trường monorepo doanh nghiệp, đồng thời bài viết tổng hợp cách dùng thực tế của các thành phần cốt lõi và tính năng nâng cao
  • Trọng tâm của việc vận hành agent hiệu quả nằm ở chất lượng của PR cuối cùng chứ không phải kiểu đầu ra hay UI, với mục tiêu ủy quyền theo kiểu “cài xong để đó (shoot and forget)”
  • Trung tâm của codebase là tệp CLAUDE.md, đóng vai trò như “hiến pháp” định nghĩa quy tắc hành vi và cách sử dụng công cụ của agent
  • Mức độ cộng tác và tự động hóa được nâng lên thông qua nhiều tính năng như quản lý ngữ cảnh, lệnh slash, subagent, Hooks, GitHub Action(GHA)
  • Bài viết phân biệt mối quan hệ giữa SkillsMCP(Model Context Protocol), nhấn mạnh cấu trúc agent linh hoạt lấy scripting làm trung tâm
  • Cung cấp hướng dẫn thực tiễn để mở rộng Claude Code từ một công cụ CLI đơn thuần thành hạ tầng phát triển AI cấp doanh nghiệp

  • Sử dụng Claude Code rất nhiều
    • Với dự án sở thích, chạy vài lần mỗi tuần trên VM, dùng --dangerously-skip-permissions để biến ý tưởng vừa nảy ra thành code ngay lập tức
    • Trong công việc, cả nhóm xây dựng quy tắc và công cụ cho AI-IDE, và đội ngũ kỹ sư của chúng tôi mỗi tháng tiêu thụ hàng tỷ token chỉ riêng cho việc sinh mã
  • Thị trường agent CLI đang chật chội với Claude Code, Gemini CLI, Cursor và Codex CLI, nhưng cạnh tranh thực chất là giữa Anthropic và OpenAI
    • Tuy vậy, khi nói chuyện với các lập trình viên thì việc chọn công cụ lại phụ thuộc vào những yếu tố bề mặt
      • Chẳng hạn một tính năng được triển khai “gặp may”, hay “vibe” của system prompt mà họ thích
    • Ở thời điểm hiện tại, tất cả những công cụ này đều đã rất tốt
  • Một số người lại quá tập trung vào kiểu đầu ra hoặc UI
    • Những câu nịnh như "you're absolutely right!" không phải là lỗi đáng để chú ý
    • Ngược lại, đó là dấu hiệu cho thấy người dùng đang can dự quá nhiều vào vòng lặp
  • Triết lý sử dụng cốt lõi của tôi là "Shoot and Forget"
    • Thực hiện theo thứ tự ủy quyền, thiết lập ngữ cảnh, thực thi công việc
    • Công cụ được đánh giá bằng PR cuối cùng, tức là bằng kết quả chứ không phải quá trình đi đến đó
  • Bài viết này là suy ngẫm về toàn bộ hệ sinh thái dựa trên trải nghiệm dùng Claude Code trong vài tháng qua
    • Gần như mọi tính năng tôi dùng (và cả những thứ tôi không dùng)
    • Tệp CLAUDE.md cơ bản
    • Lệnh slash tùy chỉnh
    • Thế giới mạnh mẽ của Subagent, Hook và GitHub Actions
  • Vì bài khá dài nên khuyến nghị dùng như tài liệu tham khảo hơn là đọc từ đầu đến cuối

CLAUDE.md: Hiến pháp của agent

  • CLAUDE.md ở thư mục gốc là nguồn sự thật chính của agent về cách repository vận hành
    • Dự án sở thích: để Claude tự do viết theo ý muốn
    • Monorepo doanh nghiệp: được quản lý nghiêm ngặt ở quy mô 13KB (có thể mở rộng đến 25KB)
    • Chỉ tài liệu hóa những công cụ mà hơn 30% kỹ sư sử dụng
    • Phân bổ số token tối đa cho tài liệu của từng công cụ nội bộ (kiểu “bán chỗ quảng cáo”)
    • Nếu không thể mô tả công cụ một cách ngắn gọn thì nghĩa là CLAUDE.md vẫn chưa sẵn sàng
  • Mẹo và các anti-pattern phổ biến

    • Bắt đầu bằng guardrail, không phải manual: bắt đầu tài liệu hóa quy mô nhỏ dựa trên những chỗ Claude thường làm sai
    • Không tài liệu hóa bằng tệp @
      • Nếu @-nhắc đến một tài liệu dài ở nơi khác, toàn bộ tệp sẽ bị nhúng vào context window ở mỗi lần chạy và phình to ra
      • Nếu chỉ nhắc đường dẫn đơn thuần thì Claude lại có xu hướng bỏ qua
      • Cần “gợi ý” cho agent biết lý do và thời điểm phải đọc tệp
      • Ví dụ: “Khi cần cách dùng phức tạp hoặc gặp FooBarError, hãy tham khảo path/to/docs.md để xử lý sự cố nâng cao”
    • Đừng chỉ nói điều “tuyệt đối không được”
      • Tránh các ràng buộc phủ định như “tuyệt đối không dùng cờ --foo-bar
      • Khi agent nghĩ rằng mình cần dùng cờ đó thì nó sẽ bị mắc kẹt
      • Luôn đưa ra phương án thay thế
    • Dùng CLAUDE.md như một forcing function
      • Nếu lệnh CLI quá phức tạp và dài dòng thì đừng viết hẳn một đoạn giải thích (vá lỗi cho con người)
      • Thay vào đó, viết một bash wrapper đơn giản với API rõ ràng, trực quan rồi tài liệu hóa wrapper đó
      • Giữ CLAUDE.md ngắn nhất có thể là một forcing function tuyệt vời để đơn giản hóa codebase và công cụ nội bộ
  • Cấu trúc ví dụ

    # Monorepo  
    
    ## Python  
    - Always ...  
    - Test with <command>  
    ... 10개 항목 ...  
    
    ## <Internal CLI Tool>  
    ... 80% 사용 사례에 집중한 10개 불릿 ...  
    - <usage example>  
    - Always ...  
    - Never <x>, prefer <Y>  
    
    복잡한 사용법이나 오류 시 path/to/<tool>_docs.md 참조  
    
  • Đồng bộ với tệp AGENTS.md để duy trì khả năng tương thích với các AI IDE khác mà kỹ sư đang dùng
  • Mẹo thêm: tham khảo "AI Can't Read Your Docs", "AI-powered Software Engineering", "How Cursor (AI IDE) Works"

Compact, Context, Clear: Quản lý context window

  • Dùng lệnh /context để kiểm tra tình trạng sử dụng của context window 200k token
    • Ngay cả với Sonnet-1M, vẫn chưa rõ toàn bộ context window có được tận dụng hiệu quả hay không
    • Một phiên mới trên monorepo mặc định tiêu tốn khoảng ~20k token (10%), còn lại 180k dành cho công việc chỉnh sửa (và hết rất nhanh)
  • Ba workflow chính
    • /compact (tránh dùng): nén tự động thiếu minh bạch, dễ lỗi, tối ưu chưa tốt nên cố gắng tránh tối đa
    • /clear + /catchup (khởi động lại đơn giản): cách reboot mặc định, dùng /clear để xóa trạng thái rồi dùng /catchup tùy chỉnh để đọc mọi tệp đã thay đổi trên nhánh git
    • "Document & Clear" (khởi động lại phức tạp): dành cho tác vụ lớn, Claude dump kế hoạch và tiến độ vào .md/clear → ở phiên mới đọc .md rồi tiếp tục

Lệnh slash tùy chỉnh

  • Lệnh slash chỉ là lối tắt đơn giản cho các prompt dùng thường xuyên, không hơn không kém
  • Thiết lập tối thiểu
    • /catchup: prompt để đọc mọi tệp đã thay đổi trên nhánh git
    • /pr: trợ lý dọn dẹp code, stage và chuẩn bị PR
  • Danh sách lệnh tùy chỉnh phức tạp là một anti-pattern
    • Điểm cốt lõi của agent như Claude là: gần như mọi đầu vào ngôn ngữ tự nhiên đều có thể tạo ra kết quả hữu ích và có thể merge
    • Bắt kỹ sư (hoặc cả người không phải kỹ sư) phải học một danh sách “lệnh ma thuật” cần thiết để làm việc = thất bại
    • Mục tiêu là xây dựng agent có CLAUDE.md trực quan hơn và công cụ tốt hơn

Subagent tùy chỉnh

  • Về mặt lý thuyết là tính năng quản lý ngữ cảnh rất mạnh
    • Tác vụ phức tạp: ngữ cảnh đầu vào X token + ngữ cảnh tác vụ Y token + câu trả lời Z token
    • N tác vụ = (X + Y + Z) * N token trong cửa sổ chính
    • Giải pháp Subagent: giao (X + Y) * N tác vụ cho các agent chuyên biệt, chỉ trả về câu trả lời cuối cùng Z token
  • Trong thực tế, Subagent tùy chỉnh tạo ra hai vấn đề mới
    • Gác cổng ngữ cảnh: khi tạo Subagent PythonTests, toàn bộ ngữ cảnh kiểm thử bị ẩn khỏi agent chính → không thể suy luận tổng thể → buộc phải gọi Subagent để biết cách tự xác minh mã của chính nó
    • Ép buộc workflow của con người: ép Claude vào một workflow cứng nhắc do con người định nghĩa → chỉ dẫn cách ủy quyền chính là vấn đề mà agent tự nó phải giải quyết
  • Cá nhân tôi thích tính năng Task(...) hơn

    • Tạo bản sao agent đa dụng bằng tính năng Task(...) tích hợp sẵn của Claude
      • Đặt toàn bộ ngữ cảnh cốt lõi vào CLAUDE.md
      • Agent chính tự quyết định thời điểm và cách ủy quyền công việc cho bản sao của chính nó
      • Giữ được lợi ích tiết kiệm ngữ cảnh của Subagent nhưng loại bỏ nhược điểm
      • Agent tự quản lý điều phối một cách động
    • Được gọi là kiến trúc "Master-Clone" trong "Building Multi-Agent Systems (Part 2)"
      • Ưa chuộng hơn hẳn so với mô hình "Lead-Specialist" mà Subagent tùy chỉnh dẫn tới

Resume, Continue, History

  • Cách dùng cơ bản
    • Thường xuyên dùng claude --resumeclaude --continue
    • Khởi động lại terminal bị lỗi hoặc khởi động nhanh lại các phiên cũ
    • claude --resume một phiên từ vài ngày trước để tóm tắt cách vượt qua một lỗi cụ thể → cải thiện CLAUDE.md và công cụ nội bộ
  • Cách dùng nâng cao
    • Claude Code lưu toàn bộ lịch sử phiên trong ~/.claude/projects/
    • Có script để tận dụng dữ liệu phiên lịch sử thô
    • Chạy phân tích meta trên log: tìm ngoại lệ phổ biến, yêu cầu quyền hạn, mẫu lỗi → cải thiện ngữ cảnh dành cho agent

Hooks

  • Rất quan trọng trong repo enterprise: không dùng trong các dự án cá nhân
  • Các quy tắc "must-do" mang tính xác định để bổ sung cho các gợi ý "should-do" trong CLAUDE.md
  • Hai loại
    • Hook chặn ở bước commit (Block-at-Submit): chiến lược chính
      • Dùng Hook PreToolUse để bọc mọi lệnh Bash(git commit)
      • Kiểm tra file /tmp/agent-pre-commit-pass (script kiểm thử chỉ tạo khi toàn bộ test đều pass)
      • Nếu không có file thì chặn commit → buộc Claude vào vòng lặp "test-sửa" cho đến khi build thành công
    • Hook gợi ý: Hook không chặn đơn giản, cung cấp phản hồi "fire-and-forget" khi agent thực hiện phương án kém tối ưu
  • Cố ý không dùng Hook chặn ở bước ghi (Edit hoặc Write)
    • Chặn agent giữa lúc lập kế hoạch dễ gây rối hoặc tạo cảm giác "bực bội"
    • Xác nhận kết quả hoàn chỉnh cuối cùng ở bước commit sau khi xong việc hiệu quả hơn nhiều

Chế độ lập kế hoạch

  • Khi thay đổi tính năng ở quy mô "lớn" trong AI IDE thì lập kế hoạch là bắt buộc
  • Dự án cá nhân: chỉ dùng chế độ lập kế hoạch tích hợp sẵn
    • Sắp xếp cách tiếp cận trước khi khởi động Claude
    • Xác định cách build và các "checkpoint kiểm tra" cần dừng lại để hiển thị kết quả trong quá trình làm việc
    • Việc dùng thường xuyên giúp xây dựng trực giác rất tốt về lượng ngữ cảnh tối thiểu cần thiết để Claude đưa ra kế hoạch tốt mà không làm hỏng phần triển khai
  • Monorepo enterprise: bắt đầu triển khai công cụ lập kế hoạch tùy chỉnh dựa trên Claude Code SDK
    • Tương tự chế độ plan native, nhưng tập trung prompt để căn đầu ra theo định dạng thiết kế kỹ thuật hiện có
    • Tích hợp sẵn việc áp dụng các best practice nội bộ (từ cấu trúc mã đến quyền riêng tư dữ liệu và bảo mật)
    • Giúp kỹ sư có thể "vibe plan" tính năng mới như một kiến trúc sư cấp cao (ít nhất đó là lời hứa)

Skills

  • Đồng ý với Simon Willison: Skills (có lẽ) là thương vụ lớn hơn MCP
  • Mô hình tư duy về quyền tự chủ của agent tiến hóa qua 3 giai đoạn
    • Single Prompt: đưa mọi ngữ cảnh cho agent trong một prompt khổng lồ duy nhất (mong manh, không thể mở rộng)
    • Tool Calling: mô hình agent "cổ điển", tự tay xây công cụ và tạo lớp trừu tượng hóa hiện thực cho agent (đã cải thiện nhưng lại tạo ra các abstraction mới và nút thắt cổ chai về ngữ cảnh)
    • Scripting: cho agent quyền truy cập môi trường thô (binary, script, tài liệu) → agent tự viết mã tại chỗ để tương tác
  • Agent Skills rõ ràng là tính năng tiếp theo: sản phẩm hóa chính thức lớp "Scripting"
  • Nếu bạn ưa chuộng CLI hơn MCP thì bạn đã ngầm hưởng lợi từ Skills
    • File SKILL.md là cách có tổ chức hơn, dễ chia sẻ hơn và dễ khám phá hơn để ghi lại các CLI và script này rồi phơi bày chúng cho agent
  • Skills là abstraction đúng đắn: chính thức hóa mô hình agent dựa trên "scripting" bền vững và linh hoạt hơn mô hình kiểu API cứng nhắc mà MCP đại diện

MCP (Model Context Protocol)

  • Việc có Skills không có nghĩa MCP đã chết (xem "Everything Wrong with MCP")
  • Vấn đề trước đây: nhiều người xây MCP khủng khiếp và nặng ngữ cảnh với hàng chục công cụ chỉ để phản chiếu REST API (read_thing_a(), read_thing_b(), update_thing_c())
  • Mô hình "Scripting" (được chính thức hóa qua Skills) là cách tốt hơn, nhưng vẫn cần một phương thức an toàn để truy cập môi trường → vai trò mới và tập trung hơn của MCP
  • Vai trò mới của MCP: cổng dữ liệu

    • Thay vì API cồng kềnh, hãy cung cấp một cổng đơn giản và an toàn với vài công cụ cấp cao mạnh mẽ
      • download_raw_data(filters…)
      • take_sensitive_gated_action(args…)
      • execute_code_in_environment_with_state(code…)
    • Vai trò của MCP: quản lý xác thực, mạng và ranh giới bảo mật rồi tránh cản đường, chứ không phải trừu tượng hóa hiện thực cho agent
      • Cung cấp điểm vào cho agent → agent dùng scripting và ngữ cảnh markdown để thực hiện công việc thực tế
    • MCP duy nhất hiện đang dùng: Playwright (hợp lý vì đây là môi trường phức tạp và có trạng thái)
      • Mọi công cụ không trạng thái (Jira, AWS, GitHub) đều đã được chuyển sang CLI đơn giản

Claude Code SDK

  • Claude Code không chỉ là một CLI tương tác mà còn là một SDK mạnh mẽ để xây dựng agent hoàn toàn mới cho cả tác vụ lập trình lẫn không lập trình
  • Trong hầu hết các dự án sở thích mới, bắt đầu dùng nó làm framework agent mặc định thay vì các công cụ như LangChain/CrewAI
  • Ba cách sử dụng chính
    • Scripting song song quy mô lớn: không dùng chat tương tác khi refactor quy mô lớn, sửa lỗi, hoặc migration
      • Viết script bash đơn giản để gọi song song claude -p &quot;in /pathA change all refs from foo to bar&quot;
      • Có khả năng mở rộng và kiểm soát tốt hơn nhiều so với việc để một agent chính quản lý hàng chục tác vụ Subagent
    • Xây dựng công cụ chat nội bộ: hoàn hảo để bọc các quy trình phức tạp trong giao diện chat đơn giản cho người dùng không chuyên kỹ thuật
      • Ví dụ: một trình cài đặt fallback sang Claude Code SDK khi có lỗi để xử lý vấn đề cho người dùng
      • Ví dụ: công cụ nội bộ "v0-at-home" để đội thiết kế có thể vibe-code frontend mockup bằng framework UI nội bộ (đảm bảo độ trung thực cao của ý tưởng, có thể dùng trực tiếp hơn từ mã frontend production)
    • Tạo prototype agent nhanh: trường hợp sử dụng phổ biến nhất, không chỉ dành cho lập trình
      • Khi có ý tưởng cho một tác vụ agent (ví dụ: "agent điều tra mối đe dọa" dùng CLI tùy chỉnh hoặc MCP)
      • Có thể nhanh chóng xây dựng và kiểm thử prototype bằng Claude Code SDK trước khi commit toàn bộ khung triển khai

Claude Code GitHub Action (GHA)

  • Một trong những tính năng yêu thích nhất và bị đánh giá thấp nhất: khái niệm đơn giản (chạy Claude Code trong GHA), nhưng chính sự đơn giản này là nguồn gốc sức mạnh của nó
  • Tương tự Cursor background agent hoặc giao diện web được quản lý của Codex nhưng tùy biến cao hơn rất nhiều
    • Kiểm soát toàn bộ container và môi trường → cải thiện khả năng truy cập dữ liệu
    • Sandboxing và kiểm soát audit mạnh hơn nhiều so với các sản phẩm khác
    • Hỗ trợ mọi tính năng nâng cao như Hook, MCP
  • Trường hợp sử dụng

    • Xây dựng công cụ "PR từ bất cứ đâu" tùy chỉnh
      • Có thể kích hoạt PR từ Slack, Jira, thậm chí cả cảnh báo CloudWatch
      • GHA trả về PR đã được kiểm thử đầy đủ sau khi sửa lỗi hoặc thêm tính năng
    • Flywheel dựa trên dữ liệu
      • Log của GHA = log agent đầy đủ
      • Ở cấp độ công ty, định kỳ rà soát log để phát hiện lỗi phổ biến, lỗi bash, các thực hành kỹ thuật không đồng bộ
      • Flywheel: bug → cải thiện CLAUDE.md/CLI → agent tốt hơn
      • $ query-claude-gha-logs --since 5d | claude -p &quot;see what the other claudes were getting stuck on and fix it, then put up a PR&quot;

settings.json

  • Một số cấu hình thiết yếu cho cả công việc cá nhân lẫn công việc chuyên môn
  • HTTPS_PROXY/HTTP_PROXY: dùng để debug
    • Kiểm tra raw traffic để xem chính xác prompt mà Claude gửi đi
    • Với background agent, đây là công cụ mạnh để sandbox mạng ở mức chi tiết
  • MCP_TOOL_TIMEOUT/BASH_MAX_TIMEOUT_MS: tăng giá trị
    • Ưu tiên chạy các lệnh dài và phức tạp, trong khi timeout mặc định thường quá thận trọng
    • Chưa chắc còn cần thiết sau các tác vụ bash chạy nền, nhưng vẫn giữ lại cho chắc
  • ANTHROPIC_API_KEY: dùng API key enterprise trong công việc (qua apiKeyHelper)
    • Chuyển từ giấy phép "theo ghế" sang mô hình giá "theo mức sử dụng" (phù hợp hơn nhiều với cách làm việc)
    • Xét đến chênh lệch mức sử dụng khổng lồ giữa các developer (đã thấy chênh lệch 1:100 giữa các kỹ sư)
    • Kỹ sư có thể thử nghiệm các script LLM không phải Claude Code bằng một tài khoản enterprise duy nhất của công ty
  • &quot;permissions&quot;: định kỳ tự audit danh sách lệnh mà Claude được phép tự động chạy

Kết luận

  • Nội dung khá nhiều nhưng hy vọng sẽ hữu ích
  • Nếu vẫn chưa dùng các agent dựa trên CLI như Claude Code hoặc Codex CLI thì nên dùng
  • Gần như không có hướng dẫn tốt nào cho các tính năng nâng cao này, và cách duy nhất để học là tự lao vào dùng thử

2 bình luận

 
GN⁺ 2025-11-03
Ý kiến trên Hacker News
  • Chúng tôi đang đồng bộ tệp với AGENTS.md để tương thích với các AI IDE khác
    Tìm hiểu gần đây thì cách mà Anthropic khuyến nghị là chỉ đặt một dòng @AGENTS.md trong tệp CLAUDE.md, còn nội dung thực tế thì để trong AGENTS.md
    Tài liệu liên quan: Claude Code Best Practices

    • Tôi nghĩ để thống nhất chuẩn thì nên đổi tên CLAUDE.md thành AGENTS.md
    • Chúng tôi đang dùng liên kết tượng trưng từ AGENTS.md sang CLAUDE.md và nó hoạt động tốt
    • Có vẻ đó là cách gọn gàng hơn
    • Tôi đang thắc mắc không biết dùng liên kết tượng trưng có phải là ý hay không
    • Theo kinh nghiệm của tôi, Claude hay các agent khác thực ra không đọc AGENTS.md hay CLAUDE.md ở mỗi phiên nếu không được chỉ thị rõ ràng
  • Tôi thực sự thích bài viết này về MCP
    Tôi thích góc nhìn rằng “MCP không nên là một API phức tạp, mà nên là một cổng trung gian gọn nhẹ quản lý xác thực, mạng và ranh giới bảo mật rồi tránh sang một bên”
    Bài liên quan

    • Khi MCP mới xuất hiện tôi chưa hình dung ra cách dùng này, nhưng giờ thì có cảm giác Claude muốn script hóa dữ liệu hơn là nhiều ‘tool’. Vai trò của tôi chỉ là chuyển dữ liệu cho thật tốt
    • MCP của tôi chỉ có đúng một code interpreter. Gần đây tôi đang thử một proxy MCP cho phép gọi MCP từ bên trong code interpreter
      Dù vậy tôi gần như không dùng MCP. Tôi muốn họ tập trung vào phần auth hơn
      Link tham khảo: bài đăng trên X
    • Nếu dùng MCP làm API gateway nội bộ thì nó vận hành theo kiểu này. Về bản chất khá giống OpenAPI nhưng được tối ưu hơn cho suy luận của LLM
  • Hơi tiếc khi một bài 3000 từ lại bị xem là “quá dài nên chỉ đọc để tham khảo”
    Tôi muốn xem một phiên bản còn dài hơn với các ví dụ thực tế

    • Dạo này tôi khá bi quan về việc mọi người sẽ đọc được bao nhiêu
    • Tôi cũng đã kỳ vọng, nhưng thấy nội dung bị giới hạn nên hơi tiếc. Dù vậy vẫn rút ra được vài điểm hữu ích
  • Tôi đang dùng một quy trình khởi động lại đơn giản với /clear/catchup để đặt lại trạng thái Claude và buộc nó đọc lại các tệp đã thay đổi
    Có lẽ sắp tới lệnh /compact sẽ đảm nhận vai trò này

    • độ trễ của /compact nên gần như không thể dùng được
      Dù hiển thị “0% context remaining” thì thực tế vẫn có khoảng 30% được dành riêng cho việc nén
      Nhưng ngay cả vậy thì khoảng một nửa số lần nén vẫn thất bại hoặc vướng giới hạn API
  • Dùng Claude Code để cải thiện chính cấu hình của mình cũng là một ý hay
    Hãy chuyển sang chế độ plan và thử prompt sau:
    “Hãy đọc tài liệu này (How I use every Claude Code feature) và cho tôi biết cách cải thiện cấu hình Claude Code của tôi”

  • Tôi đã bỏ cuộc trong việc bảo trì CLAUDE.md vì Claude không tuân thủ tốt ngay cả các chỉ dẫn đơn giản trong đó
    Ví dụ, dù bảo đặt tên script được tạo là <foo>.aigen.ts thì một nửa số lần nó vẫn bỏ qua
    Vì vậy tôi đang lách bằng cách đưa thẳng context vào prompt mỗi lần
    Có phải chỉ mình tôi gặp vấn đề này không?

    • CLAUDE.md của tôi khá dài nhưng hầu như lúc nào nó cũng làm theo. Khi bị bỏ qua, tôi sửa thành kiểu nhấn mạnh bằng CHỮ HOA như “IMPORTANT! ALWAYS DO …” thì 95% trường hợp hoạt động đúng
      Tôi cũng có kết quả tương tự ở nhiều dự án
    • Tôi cũng có trải nghiệm giống vậy. Chỉ là tôi đã bỏ cuộc rồi nên không biết các phiên bản mới có cải thiện không
    • Đây đã là vấn đề ai cũng biết giữa các Claudemaster rồi
  • Có câu “nếu bạn chưa dùng agent nền CLI thì bạn nên dùng”, nên tôi tò mò liệu nó có thực sự tốt hơn ứng dụng Cursor không
    Cursor hay ở chỗ có thể chọn một đoạn mã cụ thể rồi nhấn Cmd-L để nói “hãy sửa phần này” rất dễ
    Còn gửi một đoạn code qua CLI thì có vẻ hơi phiền

    • Tôi dùng Claude và Codex trong VS Code, và luồng thao tác ra lệnh trực tiếp trên đoạn mã đã chọn hoạt động khá tốt
    • So với Cursor thì dùng trực tiếp Codex + GPT5 hoặc Claude Code CLI cho kết quả tốt hơn. Có vẻ Cursor đang điều chỉnh giảm kích thước đầu ra để tiết kiệm token
    • Tôi cũng bắt đầu với Cursor, sau đó dùng kiểu hybrid, rồi cuối cùng chuyển hẳn sang CLI
      Cả UX gọn nhẹ lẫn hiệu quả đều tốt hơn. Claude hoạt động tốt nhất trong CC
    • Claude tự động nhận diện các dòng mã được chọn trong VS Code
    • Bạn cũng có thể chọn nhiều tệp cùng lúc để đặt focus, và còn có thể chạy các lệnh trong PATH (gh v.v.)
  • Khi thấy câu “Claude Code không phải là một CLI đơn thuần mà là một SDK để tạo ra các agent mới”, tôi thấy mệt vì nó giống giọng văn do AI viết
    Nó tạo cảm giác không tôn trọng độc giả

    • Tôi cũng từng có phản ứng dị ứng bản năng với văn bản do AI tạo, nhưng giờ tôi cố đánh giá dựa trên nội dung
      Bài này theo tôi là một ví dụ tốt vì có dấu vết tác giả đã tự đọc và biên tập
      Ngược lại, việc copy-paste nguyên xi đầu ra của AI thì đáng bị phê phán
    • Câu “internet đã chết. Internet muôn năm” chợt hiện ra trong đầu
    • Đâu có ai bắt phải đọc, nên tôi không hiểu vì sao lại thấy khó chịu
      Trái lại, tôi còn cảm thấy được tôn trọng nên đã đọc đến cuối
  • Những công cụ này đúng là thú vị, nhưng tôi lo rằng ngành này lại một lần nữa đang tập trung vào công nghệ tự thân thay vì khách hàng
    (Nó làm tôi nhớ đến bài luận “Top idea in your mind” của Paul Graham)

    • Đúng vậy. Các công cụ lập trình dựa trên LLM thì tốt cho các chỉ số doanh nghiệp như tốc độ và cắt giảm chi phí, nhưng thứ khách hàng muốn là tính năng và độ ổn định
      Một sản phẩm làm nhanh và rẻ mà đầy lỗi thì chẳng có ý nghĩa gì
      AI cũng vậy, các CEO chỉ nhìn nó như công cụ cắt giảm nhân sự, nhưng công nghệ vẫn chưa ở mức đem lại lợi ích thực chất cho khách hàng
      Chatbot AI chỉ khiến khách hàng bực bội hơn mà thôi
    • Tôi tò mò “khách hàng” ở đây có nghĩa là gì. Tôi đang dùng những công cụ này để hiểu khách hàng tốt hơn
  • Tốc độ phát triển của Claude Code nhanh đến mức đáng kinh ngạc
    Nó liên tục tốt hơn đến mức tuần nào tôi cũng phải học thứ mới

    • Nhìn mức dùng CPU và bộ nhớ thì cũng chẳng có gì đáng ngạc nhiên
      Nếu nó có thể tăng tính năng mà không làm chậm chiếc M4 Mac của tôi (64GB RAM), thì đó mới thật sự là phép màu
 
hyeonseokoh94 2025-11-05

Cũng hay đấy nhưng ..