1 điểm bởi GN⁺ 2025-05-20 | 1 bình luận | Chia sẻ qua WhatsApp
  • SDK Claude Code cung cấp khả năng tích hợp công cụ lập trình dùng AI vào ứng dụng
  • Nhà phát triển có thể chạy Claude Code dưới dạng tiến trình con, ưu tiên hỗ trợ sử dụng qua dòng lệnh
  • Bao gồm các tính năng quản lý ngữ cảnh hội thoại, chỉ định system prompt tùy chỉnh và tích hợp công cụ bên ngoài (MCP)
  • Có thể tận dụng đa dạng định dạng đầu ra (văn bản, JSON, JSON streaming) cùng các tùy chọn CLI chi tiết
  • Ví dụ thực tế cho thấy khả năng tích hợp vào quy trình phát triển thực tế như review mã tự động, tạo PR khi kết hợp với GitHub Actions

Giới thiệu

SDK Claude Code là một công cụ phát triển mã nguồn mở cho phép tích hợp trực tiếp các khả năng của Claude Code vào ứng dụng bằng lập trình. SDK chạy Claude Code dưới dạng một tiến trình riêng biệt, từ đó mang lại khả năng mở rộng để áp dụng vào nhiều quy trình phát triển khác nhau như trợ lý viết mã dùng AI, công cụ tự động hóa, hệ thống review mã, v.v.

Hiện tại, công cụ hỗ trợ giao diện dựa trên dòng lệnh (CLI), còn SDK cho TypeScript và Python sẽ sớm được phát hành.

Cách dùng SDK cơ bản

SDK Claude Code hỗ trợ thực thi không tương tác. Ví dụ, trong mã chương trình, bạn có thể gọi Claude Code kèm đối số dòng lệnh để tự động nhận được đầu ra mong muốn.

Cách dùng nâng cao

Tiếp tục phiên hội thoại nhiều lượt

  • Khi trao đổi qua nhiều lượt hội thoại, công cụ cung cấp khả năng duy trì và tiếp nối ngữ cảnh hội thoại bằng cách dùng phiên trước đó hoặc một session ID cụ thể
  • Nhà phát triển có thể tiếp tục cuộc hội thoại từ phiên gần nhất hoặc tải một phiên cụ thể

System prompt tùy chỉnh

  • Có thể điều chỉnh cách hoạt động mặc định của Claude bằng system prompt tùy chỉnh theo nhu cầu nhà phát triển
  • Có thể đính kèm chỉ dẫn bổ sung vào system prompt mặc định để thay đổi định hướng công việc và phạm vi hành vi của assistant

Thiết lập MCP (Model Context Protocol)

  • MCP là giao thức kết nối máy chủ bên ngoài để mở rộng chức năng của Claude Code
  • Thông qua cờ --mcp-config và tệp cấu hình JSON, có thể bổ sung truy cập cơ sở dữ liệu, tích hợp API, công cụ tùy chỉnh do máy chủ bên ngoài cung cấp
  • Khi sử dụng công cụ MCP, chỉ các công cụ được cho phép rõ ràng mới có thể được dùng (cờ --allowedTools), và mẫu tên có dạng mcp__<serverName>__<toolName>

Các tùy chọn CLI có thể dùng

Trong SDK Claude Code, có thể dùng nhiều cờ dòng lệnh khác nhau để thiết lập môi trường thực thi.

  • --print, -p : chạy ở chế độ không tương tác
  • --output-format : chọn định dạng đầu ra (văn bản, JSON, stream JSON, v.v.)
  • --resume, -r : tiếp tục hội thoại với một session ID cụ thể
  • --continue, -c : tiếp tục phiên gần nhất
  • --verbose : xuất log chi tiết
  • --max-turns : giới hạn số vòng hội thoại tối đa trong chế độ không tương tác
  • --system-prompt : ghi đè system prompt
  • --append-system-prompt : đính kèm chỉ dẫn bổ sung vào system prompt
  • --allowedTools : chỉ định danh sách công cụ được phép dùng (bao gồm cả công cụ MCP)
  • --disallowedTools : chỉ định danh sách công cụ bị cấm
  • --mcp-config : tải tệp cấu hình máy chủ MCP
  • --permission-prompt-tool : chỉ định công cụ MCP để xử lý permission prompt

Để xem toàn bộ các tùy chọn khả dụng và ví dụ sử dụng, hãy tham khảo tài liệu CLI chính thức.

Định dạng đầu ra

SDK hỗ trợ nhiều định dạng đầu ra khác nhau.

Đầu ra văn bản (mặc định)

  • Chỉ trả về văn bản phản hồi

Đầu ra JSON

  • Trả về metadata và dữ liệu có cấu trúc, thuận tiện cho việc phân tích bằng chương trình
  • Thông điệp phản hồi API tuân theo cấu trúc kiểu nghiêm ngặt, và trong tương lai cũng sẽ có định nghĩa kiểu theo định dạng JSON Schema

Đầu ra JSON streaming

  • Truyền stream từng thông điệp theo thời gian thực
  • Khi phiên hội thoại diễn ra, các đối tượng JSON riêng biệt sẽ được gửi theo thứ tự: thông điệp khởi tạo (init), thông điệp người dùng/assistant, rồi thông điệp result cuối cùng chứa thống kê

Schema thông điệp

  • Các thông điệp phản hồi của JSON API được cấu trúc theo schema chính xác
  • Dự kiến sẽ định kỳ cập nhật schema và quản lý phiên bản

Ví dụ

  • Tích hợp script đơn giản
  • Xử lý tệp bằng Claude
  • Hỗ trợ luồng hội thoại phức tạp bằng quản lý phiên

Best practice

  1. Dùng định dạng đầu ra JSON để phân tích phản hồi
  2. Xử lý lỗi: kiểm tra mã thoát và luồng lỗi
  3. Quản lý phiên: duy trì ngữ cảnh của hội thoại nhiều vòng
  4. Cân nhắc timeout: bảo đảm an toàn cho các tác vụ kéo dài
  5. Điều chỉnh khoảng cách giữa các yêu cầu: tránh gọi quá mức và duy trì độ ổn định dịch vụ

Trường hợp áp dụng thực tế

SDK Claude Code cung cấp khả năng tự động hóa và tích hợp mạnh mẽ trong môi trường phát triển thực tế.

  • Một ví dụ tiêu biểu là kết hợp với GitHub Actions để tự động hóa hoàn toàn các quy trình phát triển như review mã tự động, tạo PR, phân loại issue, v.v.

1 bình luận

 
GN⁺ 2025-05-20
Ý kiến trên Hacker News
  • Tôi muốn nhấn mạnh rằng hướng đi mà Claude Code theo đuổi chính là dạng triết lý "unix toolish" của công cụ lập trình dựa trên agent mà tôi vẫn hằng mong muốn. Tôi đã dùng Claude Code từ thời bản preview công khai đầu tiên và đã theo dõi quá trình nó phát triển. Tôi nghĩ "chuẩn vàng" của một coding agent là mức độ mà bạn chỉ cần đưa vào một yêu cầu tính năng, ví dụ như một vé Jira, rồi nhận lại một PR để tự mình review và phản hồi. Theo tôi, Cursor, Windsurf và các công cụ tương tự bị giới hạn vì là editor chạy cục bộ nên không thể tích hợp vào môi trường CI. Nếu muốn tối ưu codebase cho AI như MCP, rules, v.v., thì cần nhắm đến công nghệ có thể chạy cả ở chế độ headless. Claude Code dùng rất đơn giản cùng với các công cụ tự động hóa, nên giờ nó đã trở thành mặc định trong đầu tôi khi nghĩ về coding agent. Tôi cũng có cảm nhận tương tự với gói npm Codex. Nhân tiện, tôi hiện làm công việc hỗ trợ thiết lập bộ công cụ tối ưu kiểu này, nên đương nhiên tôi có xu hướng thiên vị những công cụ dễ cấu hình hơn

    • "Trạng thái đích vàng" mà tôi mong muốn là tôi đứng giữa một căn phòng được bao quanh bởi các AI agent, ví dụ các agent viết code, thiết kế và kiểm thử. Tôi ở giữa, gần như không cần chạm tay vào bàn phím mà chỉ trao đổi để đưa ra định hướng, tiêu chuẩn thẩm mỹ và hướng dẫn. Tôi rất mong chờ tương lai đó

    • Tôi muốn nhắc rằng hôm nay Anthropic đã công bố bản beta của một tính năng tương tự. Tôi muốn chia sẻ tài liệu liên quan. https://docs.anthropic.com/en/docs/claude-code/github-actions

    • "Trạng thái đích vàng" của coding agent theo tôi là dùng một coding agent mã nguồn mở miễn phí có thể chạy tự do trên máy tính của tôi, hoặc bất cứ đâu tôi muốn. Cũng như việc tưởng tượng phải trả tiền mỗi khi chạy các lệnh như ls, ps, kill trong terminal là điều vô lý, tôi thấy với LLM cũng vậy. Tôi không nói rằng phải "cấm" LLM độc quyền, nhưng tôi mong những người được gọi là hacker trong lĩnh vực này sẽ lấy công cụ mã nguồn mở làm công cụ chính

    • Bạn có chỉ ra rằng Cursor, Windsurf và các công cụ tương tự khó dùng cho CI vì là editor cục bộ, nhưng tôi đã thử điều đó với tổ hợp Cursor + MCP. Tôi dùng thành công cả ngày, nhưng rồi nhanh chóng đụng rate limit và bị chuyển sang model chậm nhất, kém thông minh nhất. Tôi cũng thử với Claude nhưng chẳng bao lâu là hết quota. Hơn nữa, chỉ khoảng 25% PR là ở mức "dùng được ngay", và nhiều khi tự làm còn nhanh hơn việc tìm xem AI đã sai ở đâu

    • Tôi nghĩ chẳng phải chúng ta đã có thể làm kiểu tự động hóa dựa trên CI đó rồi sao. Chỉ cần đăng ký Aider CLI như một GitHub Action để nó tự chạy khi issue được tạo thì về cơ bản cấu trúc đó đã khả thi rồi

  • Claude Code là cách tôi thích nhất để tận dụng LLM cho việc lập trình. Nhưng thứ thực sự cần là một phiên bản mã nguồn mở của Claude Code. Cần có một môi trường nơi tôi có thể dùng model mình muốn và trực tiếp so sánh câu trả lời từ các model khác nhau. Tôi cảm thấy những lựa chọn khác như Aider chưa mang lại trải nghiệm ngang với Claude Code. Có thể đoán trước là Anthropic không muốn điều đó vì sẽ làm suy yếu hàng rào phòng thủ của họ. Nhưng từ góc nhìn người dùng, tôi muốn dùng model tốt nhất và không muốn bị trói vào một hệ sinh thái. Tôi đoán đây cũng là nỗi sợ lớn nhất từ phía các nhà cung cấp LLM

    • OpenAI Codex là lựa chọn mã nguồn mở gần nhất với điều bạn nói. Bạn có thể dùng model từ nhà cung cấp mình muốn. Hiện tại nó vẫn chưa bằng Claude Code, nhưng tôi nghĩ sớm muộn cũng sẽ bắt kịp. https://github.com/openai/codex/tree/main

    • Bạn có thể dùng Claude Code làm MCP server để phần nào tạo ra môi trường như mình muốn

  • Aider đã hỗ trợ Python và shell scripting từ khá lâu rồi. Gần đây họ còn làm một screencast có kèm công cụ hỗ trợ bash scripting ad-hoc như một phần của quá trình bổ sung hỗ trợ cho 130 ngôn ngữ lập trình mới. Bạn sẽ tự cảm nhận được cách tiếp cận kiểu scripting này mạnh đến mức nào. https://aider.chat/docs/scripting.html, https://aider.chat/docs/recordings/tree-sitter-language-pack.html

    • Tôi thật sự rất thích Aider. Họ cũng sắp hỗ trợ MCPs và hiện đang thử nghiệm trên nhánh phát triển. Khi làm được điều đó, phát triển end-to-end bằng PR, ticket, v.v. chỉ với những model mà bạn tin tưởng sẽ thực sự khả thi

    • Tôi tò mò liệu có thể đưa Aider lên đến mức khiến tôi thích nó như Claude Code không. Tôi thích UX của Claude Code, nhưng tôi ưu tiên Gemini 2.5 Pro nên không dùng Claude Code. Sức hút của nó với tôi không nằm ở các tính năng như commit mà nằm ở UX. Tôi muốn nghe suy nghĩ của bạn về điều này

    • Tôi nghĩ nếu Aider làm workflow tích hợp GitHub Actions polished hơn nữa thì nó có thể tăng trưởng rất mạnh. Chỉ cần thêm một file vào repo là có thể trò chuyện với model mình muốn thông qua issue

  • Tôi muốn chia sẻ thêm bối cảnh do chính đội Claude Code nói ra. http://latent.space/p/claude-code Tóm tắt nội dung chính là nhân viên Anthropic đang dùng Claude không giới hạn với mức trung bình khoảng 6 USD mỗi ngày. Một Claude Code headless giống như tiện ích linux cho CI là điều cực kỳ hấp dẫn. Họ cũng hướng tới một nền tảng người dùng có thể mở rộng. Lộ trình sắp tới gồm sandboxing, branching và tính năng planning. Ngoài ra còn có sonnet 3.7, một model agentic hoạt động bền bỉ, cũng đang được lên kế hoạch

    • Bạn nói "nhân viên Anthropic trung bình dùng Claude không giới hạn với giá 6 USD/ngày", nhưng bài viết cũng có đoạn nói rằng có kỹ sư dùng tới 1.000 USD trong một ngày. So với trung bình, tôi tò mò hơn về phân phối như P50, P75, P95

    • Tôi đã nhiều lần có trải nghiệm dùng Claude Code chỉ khoảng 2 giờ mà đã vượt quá 20 USD rất nhanh. Với dự án cá nhân thì nó quá đắt nên tôi đơn giản là không thể dùng

    • Gần đây tôi nghe podcast latent space và thấy thực sự rất hay. Rất hiếm có người hay podcast nào duy trì được lượng nội dung công khai năng suất cao như vậy mà vẫn giữ SNR cao. Thật ấn tượng khi họ vừa làm nhiều công việc kinh doanh song song vừa duy trì được mức sản lượng công khai như thế. Tôi cảm thấy sẽ rất tốt nếu nhiều người hơn có thể trải nghiệm kiểu gradient năng suất này. Dù bản thân họ có chia sẻ bí quyết, nhưng không phải điều dễ dàng để thực sự làm theo

  • Nếu tôi làm một AI code assistant, tôi sẽ không bao giờ để nó phụ thuộc vào một nhà cung cấp foundation model cụ thể. Chiến lược đó chỉ hợp lý nếu muốn thành công thì phải giả định rằng hiệu quả của model giờ gần như đã đạt đỉnh, hiệu năng giữa chúng gần như tương đồng và chỉ còn khác biệt nhỏ kiểu SDK quen tay mà thôi

    • Tôi nghĩ thực ra mức độ lock-in không quá nghiêm trọng, vì khác biệt chủ yếu chỉ là command hoặc argument. Cuối cùng cũng chỉ là một hàm đầu vào-đầu ra, nên có thể thay phần cần thiết hoặc bọc lại để dùng. Về cấu trúc thì không có gì quá phức tạp

    • Ở thời điểm hiện tại, tôi nghĩ Claude Code đang đóng vai trò khác biệt hóa trong thị trường lập trình dựa trên agent. Tôi đang tự phát triển AI code assistant và Claude Code là tích hợp đầu tiên tôi muốn thử. Tôi không cảm thấy đây là thời điểm nên quá lo về lock-in từ sớm. Cần chọn cái tốt nhất và bắt đầu xây dựng xoay quanh nó

  • Tôi muốn nhấn mạnh rằng Claude Code từ trước đã có thể dùng ở chế độ non-interactive, nên vốn dĩ đã dễ tích hợp vào ứng dụng khác như một tiện ích dòng lệnh UNIX. SDK lần này cũng chỉ hỗ trợ dùng qua dòng lệnh, nên về bản chất tôi chưa hiểu nó khác gì so với thứ đã có sẵn. Không rõ tôi có đang bỏ lỡ điểm nào không

  • Tôi trích điều khoản sử dụng của Anthropic: "cấm phát triển, huấn luyện hoặc bán lại bất kỳ sản phẩm hay dịch vụ nào cạnh tranh với trí tuệ tổng quát của dịch vụ". Nếu gần như mọi phần mềm đều có thể bị xem là "cạnh tranh" với trí tuệ tổng quát, thì nếu diễn giải nghiêm ngặt chẳng phải sẽ thành ra không thể dùng nó cho bất kỳ mục đích nào sao? Tôi nghĩ chính kiểu ngôn ngữ pháp lý này quá mơ hồ nên không thể áp dụng được. Bạn sở hữu đầu ra của AI nhưng lại không được cạnh tranh với trí tuệ tổng quát, vậy tại sao lại cấm bao quát đến vậy? Có phải chỉ là muốn nói rằng trách nhiệm pháp lý là do người dùng tự gánh? Tôi có rất nhiều thắc mắc

    • Tôi nghĩ đây là hệ quả khi để luật sư viết quy định theo đúng ý họ
  • GitHub Action mới được thêm vào đúng là thứ tôi tìm bấy lâu nay nên tôi rất vui. https://docs.anthropic.com/en/docs/claude-code/github-action... Nhưng hiện tại có vẻ chưa có cách dùng nó cùng gói Max plan của Claude Code. Cấu trúc hiện giờ chỉ nhận API key nên hơi đáng tiếc

  • Tôi muốn nhấn mạnh rằng đặc biệt là tính năng tích hợp GitHub Actions với issue/PR chính là thứ tôi đã mong muốn từ lâu. https://docs.anthropic.com/en/docs/claude-code/github-action...

  • Tôi chắc chắn sẽ thử khi Copilot bắt đầu hỗ trợ Claude. Chính sách công ty hiện tại chưa cho phép dùng các công cụ khác ngoài nó