Cách cài skill cho DeepSeek Harness: hướng dẫn thực chiến giúp dsh biết xem video
Hướng dẫn

Cách cài skill cho DeepSeek Harness: hướng dẫn thực chiến giúp dsh biết xem video

Đã đăng · Bởi BibiGPT Team
Thêm BibiGPT làm nguồn ưu tiên trên Google Xem thêm nội dung BibiGPT trong Tin bài hàng đầu và câu trả lời AI.

Cách cài skill cho DeepSeek Harness: hướng dẫn thực chiến giúp dsh biết xem video

Cài skill cho DeepSeek Harness, con đường ngắn nhất chỉ có một bước: đặt thư mục <tên-skill>/SKILL.md vào ~/.agents/skills, khởi động lại dsh là thấy nó xuất hiện trong command palette. Vì hợp đồng skill của dsh dùng đúng định dạng SKILL.md của Anthropic — skill bạn từng viết cho Claude Code có thể chuyển sang mà không cần sửa gì. Đây là câu đáng giá nhất của bài viết này, cho bạn ngay từ đầu.

Sau khi cài xong framework, điều thực sự làm bạn bí là “nó thực sự làm được gì”. Tuần này cộng đồng nói tiếng Trung đã tràn ngập các bài phân tích kiến trúc và hướng dẫn cài đặt dsh, nhưng gần như không ai trả lời câu hỏi tiếp theo: framework đã chạy rồi, làm sao thêm cho nó một năng lực mà nó vốn không có?

Bài này không nhắc lại lần thứ 101 “dsh là gì”. Chúng ta sẽ xuyên suốt bài viết bằng một nhiệm vụ cụ thể, có thể nghiệm thu được — giúp dsh học cách xem video, tức là cài cho nó một skill có thể tóm tắt Bilibili, YouTube, podcast. Làm theo đến cuối, bạn sẽ có trong tay một dsh thực sự làm được việc, đồng thời nắm luôn phương pháp chung để cài bất kỳ skill nào cho nó.

Mục lục

dsh sau khi cài xong, khoảng trống năng lực nằm ở đâu

DeepSeek Harness (gọi là dsh trên dòng lệnh) là framework Agent được DeepSeek mã nguồn mở vào ngày 13/8/2026, xây trên Cordis, với khẩu hiệu “mọi thứ đều là plugin”, dùng giấy phép MIT. Ngay ngày ra mắt độ hot đã rất cao — tính đến 14/8/2026, kho GitHub của nó đã có hơn 75.000 star. Bối cảnh nói đến đây là đủ, phần còn lại dành hết cho thực chiến.

Mặt trái của “mọi thứ đều là plugin” là: ở trạng thái mặc định nó không có bất kỳ năng lực chuyên biệt nào. Bạn cài xong dsh, hỏi nó “giúp tôi tóm tắt video Bilibili này”, nó không có công cụ nào để mở đường link đó, lấy phụ đề, rồi hiểu nội dung. Đây không phải khiếm khuyết của dsh, mà là thiết kế của nó — một nền tảng trống + bạn tự lắp ráp.

Và âm thanh - video chính là điểm mù điển hình nhất của loại nền tảng này. Thế hệ workspace Agent hiện tại mặc định chỉ “ăn” chữ: trang web đọc được, PDF đọc được, code đọc được, chỉ riêng một bản ghi bài giảng dài một tiếng, một tập podcast, một playlist Bilibili thì không nạp vào được. Ba tình huống tần suất cao — họp, học trực tuyến, podcast — cứ thế mắc kẹt ngay trước cửa. Cửa sổ ngữ cảnh lớn hơn cũng không dịch chuyển được cánh cửa đó: khi DeepSeek V4 ra mắt với cửa sổ ngữ cảnh 1 triệu token, một giờ âm thanh vẫn phải trở thành text trước khi bất kỳ phần dung lượng nào trong đó có ý nghĩa.

Quy tắc thực dụng: Chặng tiếp theo của Agent không phải là một agent thông minh hơn, mà là một lớp đầu vào có thể nạp được âm thanh - video.

Chỉ khi bổ sung xong lớp đầu vào này, agent mới thực sự có thể “dùng một câu để thao tác với một đoạn video”. Ảnh dưới đây là hình dạng trưởng thành của cùng một việc — nói ý định bằng ngôn ngữ tự nhiên, công cụ tự động được gọi lên:

Giao diện trò chuyện nơi Agent dùng ngôn ngữ tự nhiên để gọi công cụ xử lý nội dung video

Ảnh chụp màn hình: BibiGPT · Chế độ Agent trò chuyện AI

Vì vậy, trong việc “cài skill cho dsh”, năng lực đầu tiên đáng cài chính là khả năng xem video. Bản demo tương tác dưới đây là hiệu quả cuối cùng mà chúng ta muốn dsh có được — chọn một video, nhận ngay bản tóm tắt có cấu trúc kèm mốc thời gian:

Summarize any video in seconds

Pick a sample below to see the AI summary — TL;DR, key points, and jump-to timestamps.

Try a sample:

TL;DR: Karpathy builds a GPT-style language model from scratch in code, explaining every piece — from a tiny character-level model up to the full Transformer.

Key points

  • Start with a bigram model, then add self-attention so tokens can "talk" to each other
  • A Transformer block = multi-head attention + feed-forward + residual connections + layer norm
  • Training is just predicting the next token; scale and data do the rest
  • The same architecture behind nanoGPT is what scales up to ChatGPT

Jump to

  • 00:07 Why build GPT from scratch
  • 08:23 Self-attention, intuitively
  • 1:00:00 Assembling the Transformer block
  • 1:35:00 From nanoGPT to ChatGPT

Định dạng skill của dsh là gì

Skill của dsh chính là một file Markdown có YAML frontmatter, tên thư mục dùng kebab-case, frontmatter tối thiểu phải có hai trường namedescription. Đây là cùng một hợp đồng với đặc tả Agent Skills mà Anthropic định nghĩa cho Claude Code — nghĩa là skill có thể tái sử dụng xuyên agent, không cần viết lại riêng cho dsh.

Hai hình thức tổ chức hợp lệ:

skills/
  bibi/
    SKILL.md          ← Gói thư mục: file chính + có thể kèm references/, scripts/
  quick-note.md       ← File phẳng: skill một file

Theo tài liệu subsystem skills chính thức, việc phát hiện đệ quy không được hỗ trợ: dsh chỉ nhận diện các thư mục con trực tiếp và file phẳng ngay dưới thư mục gốc phát hiện, giấu skill vào thư mục con cấp hai là sẽ không tìm thấy. Đây là chi tiết đầu tiên rất dễ bị bỏ qua.

Thứ thực sự quyết định “cài vào đâu” là sáu cấp đường dẫn phát hiện của dsh, số càng nhỏ độ ưu tiên càng cao. Với công việc trong bài này — cài một skill bạn đã có sẵn — trong sáu cấp đó chỉ có hai cấp thực sự liên quan:

Độ ưu tiênĐường dẫnDùng khi nào
200<project>/.agents/skillsskill thuộc về một repo cụ thể và cần đi theo repo đó
500~/.agents/skillsbạn muốn dùng skill này ở mọi nơi — Claude Code cũng đọc chung đường dẫn này

Bốn cấp còn lại phục vụ cho các trường hợp ghi đè và đóng gói riêng của dsh, không phải việc cài đặt hàng ngày.

Ở đây “dự án” chỉ thư mục tổ tiên gần nhất có chứa .git; không tìm thấy thì lùi về thư mục làm việc hiện tại. Vì vậy việc skill cùng tên trong dự án ghi đè lên skill toàn cục là điều hợp lý trực giác.

Ảnh dưới đây là hình dạng repo trên GitHub của skill mà chúng ta đang nói đến, bạn có thể đối chiếu để xem gói thư mục trông như thế nào:

Cách tổ chức gói thư mục SKILL.md của skill dsh trong kho GitHub

Ảnh chụp màn hình: BibiGPT · Trang cài đặt của kho mã nguồn mở Agent Skill

Quy tắc thực dụng: Skill bạn từng viết cho Claude Code, cứ đưa nguyên vẹn cho dsh thử trước, rồi mới tính chuyện sửa — nhiều khả năng bạn sẽ chẳng cần sửa gì cả.

Làm sao để dsh dùng ngay skill bạn đã có

Cách triển khai nhanh nhất là đi qua gốc phát hiện cấp 500: đặt thư mục skill vào ~/.agents/skills/, dsh sẽ tự động quét thấy khi khởi động, không cần cấu hình gì. Thư mục này không phải do dsh phát minh ra, Claude Code và các agent khác đã dùng nó từ lâu — vì vậy cài một lần, cả hai agent đều thấy được.

Lấy skill âm thanh - video mã nguồn mở của chúng tôi làm ví dụ, cách làm chạy được ngay hôm nay là clone repo rồi copy thư mục skill sang:

git clone https://github.com/JimmyLv/bibigpt-skill.git
mkdir -p ~/.agents/skills
cp -r bibigpt-skill/skills/bibi ~/.agents/skills/

Sau đó khởi động lại dsh, gõ / trong command palette, skill sẽ xuất hiện trong nhóm Skills. Ảnh dưới đây là ảnh chụp thực nghiệm — bibi đã có trong danh sách, phần mô tả hiển thị đầy đủ:

Skill bibi xuất hiện trong nhóm Skills của command palette DeepSeek Harness

Ảnh chụp màn hình: giao diện web dsh 0.1.0-rc.6. Dòng API key is invalid trong ảnh là kết quả dự kiến khi chúng tôi dùng key giả để kiểm chứng cô lập, không phải cài đặt thất bại — nhận diện skill và gọi model là hai chuyện khác nhau.

Trong cùng một phiên bạn còn thấy dấu vết Context injection · skill-catalog, chứng tỏ thư mục skill đã thực sự được đưa vào ngữ cảnh của model, chứ không chỉ liệt kê tên trong UI. Đây là tín hiệu đáng tin cậy nhất để xác định “đã cài thành công hay chưa”.

Chỉ muốn skill có hiệu lực trong một dự án cụ thể? Đặt cùng thư mục đó vào .agents/skills/ của dự án (cấp 200), độ ưu tiên cao hơn, và cũng không làm ô nhiễm phạm vi toàn cục.

Làm sao biến skill thành một plugin của dsh

Copy thư mục thì dùng được, nhưng cập nhật lại rất đau đầu: skill nâng cấp rồi, bạn phải nhớ copy lại lần nữa. Plugin nén việc cài đặt và cập nhật thành một dòng lệnh duy nhất — đó là lý do duy nhất nó tồn tại.

Cốt lõi của plugin dsh là khai báo một file patch trong package.json:

{
  "dsh": {
    "bundle": { "patch": "./cordis.patch.yml" }
  }
}

cordis.patch.yml đóng góp một dòng cấu hình vào profile, và việc cài đặt phía người dùng được rút gọn thành một lệnh duy nhất. Lấy skill âm thanh - video của chúng tôi làm ví dụ, lệnh dưới đây chạy được ngay hôm nay:

dsh plugin --profile web add "github:JimmyLv/bibigpt-skill#path:/dsh-plugin"

Đừng bỏ dấu nháy — trong shell, # là ký hiệu bắt đầu chú thích, không có nháy thì nửa sau của tham số sẽ bị nuốt mất.

Trong lệnh này có một kiến thức đáng nhớ riêng: dsh plugin chỉ chuyển tiếp tham số sang pnpm, mà bản thân pnpm hỗ trợ cài gói trực tiếp từ một thư mục con của repo git. Nghĩa là làm một plugin dsh hoàn toàn không cần phát hành gói npm — đẩy mã nguồn lên GitHub là người khác cài được bằng một lệnh, và vẫn cập nhật theo repo.

Plugin đăng ký skill lúc runtime thông qua ctx.skills.register(), chứ không đi sửa customSkillDirs của filesystem skill provider. Lý do rất thực tế: dòng patch của dsh là thay thế toàn bộ config, không gộp sâu — bạn sửa dòng của người khác thì phải khai lại từng key một, và sẽ đụng độ với bất kỳ package nào khác cũng muốn sửa cùng dòng đó.

SkillRegistration có một trường tùy chọn resourceBase, hỗ trợ ba hình thức directory / url / opaque. Nếu skill của bạn không phải một file đơn mà là gói thư mục có references/scripts/, bắt buộc phải khai báo nó, nếu không mọi tham chiếu đường dẫn tương đối trong nội dung skill sẽ mất tác dụng. Plugin dsh chính thức của PicGo đã ra mắt chỉ là một SKILL.md đơn, không gặp vấn đề này — sao chép y nguyên cách triển khai của nó là bạn sẽ vấp phải bẫy.

Phần còn lại của hợp đồng này — toàn bộ danh sách trường của SkillRegistration, đầy đủ sáu gốc phát hiện skill kèm thứ hạng ưu tiên chính xác, và vì sao trang showcase chính thức của các công cụ tương thích skill vẫn chưa liệt kê dsh — xem tài liệu subsystem skills chính thức.

Hệ sinh thái plugin phát triển rất nhanh: các repo trên GitHub gắn tag dsh-plugin, tính đến 14/8/2026 đã vượt 1.200 repo và vẫn đang tăng rất nhanh, bạn có thể xem trực tiếp tại trang chủ đề dsh-plugin của GitHub.

Nếu bạn muốn xem qua triết lý plugin của bản thân framework trước khi bắt tay vào, video dưới đây giải thích khá rõ về “mọi thứ đều là plugin”:

Nguồn video: YouTube · DevsKingdom · Deepseek Harness: Everything is a plugin (12 phút)

Đến đây, cả hai con đường đều chạy được thật trong hôm nay: lệnh plugin ở trên (một lệnh là xong, lại còn cập nhật được), hoặc cách copy thư mục ở phần trước (không phụ thuộc gì, và Claude Code với dsh dùng chung một bản). Phần tiếp theo sẽ giúp bạn chọn.

Sao chép hay làm plugin, chọn con đường nào

Một câu: tự dùng thì copy thư mục, muốn phân phối cho người khác dùng thì làm plugin. Triển khai thành bốn khía cạnh để đối chiếu:

Khía cạnhCopy vào ~/.agents/skillsLàm thành plugin dsh
Phù hợp với aiChỉ dùng cho bản thân/máy riêngCần phân phối, để người khác cài một chạm
Chi phí cài đặtMột lệnh cpCần viết package.json + file patch
Cách cập nhậtCopy lại thủ công lần nữaTrình quản lý gói nâng cấp thống nhất
Tái sử dụng xuyên agentCó, Claude Code cũng thấy được đồng thờiKhông, chỉ phục vụ dsh

Hàng thứ ba mới là ranh giới thực sự. Skill sẽ thay đổi theo sự tiến hóa của năng lực sản phẩm, một skill mỗi tháng sửa ba lần thì dựa vào copy tay không duy trì được lâu; còn một skill cá nhân ổn định không đổi, làm thành plugin lại là kỹ thuật thái quá.

Hàng thứ tư cũng đáng nói riêng: ~/.agents/skills là thư mục dùng chung xuyên agent, còn đăng ký plugin chỉ có hiệu lực với dsh. Nếu bạn đang dùng đồng thời hai agent, cách dùng thư mục có tỷ lệ hiệu quả/chi phí cao hơn nhiều.

Bộ lọc quyết định: Chỉ mình bạn dùng → copy thư mục; cần cho người khác dùng và sẽ liên tục cập nhật → làm plugin.

Trước khi bắt tay vào cần biết hai cái bẫy nào

Hai cái bẫy này khi thực nghiệm trên bản 0.1.0-rc.6 đều sẽ gặp phải, và đều dễ khiến bạn phán đoán nhầm thành “cài thất bại”.

Bẫy một: thiếu DEEPSEEK_API_KEY là không vào được luôn. dsh khi khởi động yêu cầu bắt buộc biến môi trường này, thiếu nó sẽ thoát với lỗi MISSING_CREDENTIAL, giao diện còn không mở được — bạn chưa kịp xem skill có cài được hay không. Nó chỉ kiểm tra sự tồn tại, nên khi kiểm chứng cô lập, dùng giá trị giả cũng qua được bước kiểm tra khởi động: việc gọi model sẽ thất bại, nhưng bản ghi phiên và workspace vẫn được tạo bình thường, command palette vẫn dùng được, đủ để xác minh skill có được nhận diện hay không.

Bẫy hai: bộ chọn workspace trên giao diện web có thể không bấm được. Đây là chỗ thô ráp đã biết của bản rc. Cách vòng qua là chạy trước một lần ở chế độ không giao diện tại thư mục đích, tạo bản ghi phiên ra trước:

dsh --profile headless "liệt kê các tệp trong thư mục hiện tại"

Chạy xong quay lại giao diện web, thanh bên sẽ có workspace này. Kể cả lần đó báo lỗi xác thực vì dùng key giả cũng không ảnh hưởng — bản ghi đã được lưu xuống đĩa.

Còn một mẹo nhỏ: log của dsh không in log plugin ra standard output, ctx.logger.info bạn sẽ không thấy được, đừng trông chờ dùng log để xác minh đăng ký thành công. Muốn xác minh thì xem nhóm Skills trong command palette, cùng với Context injection · skill-catalog trong phiên.

Nhân tiện nói về phiên bản: mọi thử nghiệm trong bài đều chạy trên 0.1.0-rc.6, tính đến 14/8/2026 vẫn là bản preview cho nhà phát triển. Thư mục mã nguồn của gói dòng lệnh dsh sẽ thay đổi theo từng bản phát hành, hãy xem số hiện tại trước khi bắt tay vào làm. Các API nói trên (đặc biệt các trường mới như resourceBase) có thể thay đổi ở bản chính thức, nếu làm plugin thì nên khóa phiên bản.

Ảnh dưới đây là màn hình trợ giúp của công cụ dòng lệnh đứng sau skill này, bạn có thể xem qua nó nhận những tham số nào:

Màn hình trợ giúp của công cụ dòng lệnh tóm tắt âm thanh - video đứng sau skill dsh

Ảnh chụp màn hình: BibiGPT · Kết quả lệnh help của công cụ dòng lệnh

Quy tắc thực dụng: Với bản rc, hãy thử trước bằng DSH_HOME cô lập, đừng biến thư mục chính thành nơi thí nghiệm — thư mục home sẽ không bị ghi bẩn, và kết luận kiểm chứng mới đứng vững.

Sau khi cài xong, làm sao để dsh thực sự hiểu một video

Skill xuất hiện trong bảng điều khiển mới chỉ là bước đầu, tiêu chuẩn nghiệm thu thực sự là: ném một đường link vào, nhận lại một bản ghi chú có cấu trúc dùng được. Vòng khép kín đầy đủ có năm bước:

  1. Cài xong BibiGPT bản desktop, nó sẽ mang theo công cụ dòng lệnh mà skill phụ thuộc vào
  2. Theo bất kỳ con đường nào ở trên để cài skill vào dsh
  3. Khởi động lại dsh, xác nhận có thể thấy nó trong nhóm Skills của command palette
  4. Nói thẳng bằng lời tự nhiên: “giúp tôi tóm tắt video này” kèm theo đường link
  5. Nhận bản tóm tắt chia đoạn kèm mốc thời gian, bấm vào mốc thời gian để nhảy về video gốc đối chiếu

Bộ skill này phục vụ đồng thời Claude Code, OpenClaw và các agent khác, nội dung skill hoàn toàn giống nhau — đây cũng là lý do chúng tôi kiên trì dùng định dạng chuẩn SKILL.md. Muốn xem cách dùng đầy đủ trên các agent khác, bạn có thể đọc hướng dẫn đầy đủ về việc cài năng lực tóm tắt âm thanh - video cho AI Agent; muốn hiểu tư duy tổng thể của việc “nạp âm thanh - video vào agent”, quy trình nạp âm thanh - video cho AI Agent trình bày hệ thống hơn; nếu chưa quen với bản thân việc tóm tắt video bằng AI, hướng dẫn đầy đủ về tóm tắt video AI là điểm khởi đầu tốt hơn.

Trang hiển thị và lối vào cài đặt của Agent skill trên trang chợ skill

Ảnh chụp màn hình: BibiGPT · Trang Agent skill trên chợ skill

Giá trị của framework không nằm ở bản thân framework, mà ở việc bạn cài gì vào trong đó. dsh đã hạ ngưỡng của việc “cài gì” xuống chỉ còn một file Markdown — thứ thực sự khan hiếm là những skill có thể biến thứ mà agent không đọc được thành thứ nó đọc được.

Bổ sung mảnh ghép âm thanh - video cho dsh — hoặc bỏ qua cài đặt và thử ngay trên trình duyệt:

Câu hỏi thường gặp: dsh và việc cài skill

Q1: Skill viết cho Claude Code có thực sự dùng trực tiếp được trong dsh không?

A: Được. Cả hai bên đều dùng chung hợp đồng <tên-skill>/SKILL.md + YAML frontmatter, frontmatter tối thiểu phải có namedescription. Đặt thư mục skill vào ~/.agents/skills/, cả hai agent sẽ đọc cùng một file. Chỉ số ít skill có dùng đến năng lực chuyên biệt của một bên (ví dụ quy ước gọi công cụ đặc thù) mới cần sửa.

Q2: Skill nên cài vào thư mục nào?

A: Chỉ dùng cho riêng mình thì đặt vào ~/.agents/skills/ (cấp 500), dùng chung xuyên agent; chỉ muốn có hiệu lực trong một dự án cụ thể thì đặt vào .agents/skills/ của dự án đó (cấp 200), độ ưu tiên cao hơn. Lưu ý “dự án” là thư mục tổ tiên gần nhất có chứa .git, không phải bất kỳ thư mục nào bạn tiện tay cd vào.

Q3: dsh không khởi động được, báo MISSING_CREDENTIAL là sao?

A: dsh khi khởi động yêu cầu bắt buộc biến môi trường DEEPSEEK_API_KEY, thiếu nó sẽ thoát ngay, giao diện cũng không vào được. Đặt key thật vào là dùng bình thường; nếu chỉ muốn xác minh skill có được nhận diện hay không thì giá trị giả cũng qua được bước kiểm tra khởi động, việc gọi model sẽ thất bại nhưng command palette vẫn dùng được.

Q4: Không chọn được workspace trong giao diện web thì làm sao?

A: Đây là chỗ thô ráp đã biết của bản 0.1.0-rc.6. Hãy chạy trước một lần ở chế độ không giao diện (dsh --profile headless, cho một task bất kỳ) tại thư mục đích, sau khi bản ghi phiên được tạo xong, quay lại giao diện web thì thanh bên sẽ xuất hiện workspace này.

Q5: Khi nào nên làm thành plugin thay vì copy thư mục?

A: Tiêu chí phán đoán là “có cập nhật hay không” và “có cho người khác dùng hay không”. Skill sẽ tiếp tục lặp lại, hoặc bạn muốn người khác cài bằng một lệnh, thì làm plugin; chỉ dùng cho máy riêng của mình một cách ổn định thì copy thư mục tiện hơn, và tiện thể để Claude Code cũng thấy được.

BibiGPT Team

Xem tất cả 20 bài trong Tóm tắt video bằng AI →

Try these AI tools