DeepSeek Harness là một vòng lặp. Agent đọc không gian làm việc của bạn, chỉnh sửa tệp, chạy các lệnh thông qua công cụ bash của nó và quyết định làm gì tiếp theo dựa trên đầu ra. Vậy tại sao các bài kiểm tra API của bạn không nằm trong vòng lặp đó? Chúng nằm trong Apidog phía sau một giao diện người dùng đồ họa (GUI) và chạy khi ai đó nhớ nhấp vào. Agent không bao giờ chạm vào chúng.
Giải pháp chỉ là một khối cấu hình. Apidog CLI là một gói npm, apidog-cli, chạy các kịch bản kiểm thử bạn đã xây dựng trong Apidog trực tiếp từ terminal. Khi CLI được cài đặt và DeepSeek Harness biết nó tồn tại, agent sẽ chạy một kịch bản Apidog giống như cách nó chạy các bài kiểm thử đơn vị của bạn: kích hoạt lệnh, đọc mã thoát, sửa mã nếu nó báo lỗi.
Cũng có một đối số token để thực hiện điều này. Một agent xác nhận API của bạn vẫn hoạt động bằng cách đọc lại mã xử lý và suy luận về các hình dạng phản hồi sẽ đốt cháy ngữ cảnh trong mỗi lần chạy. Một agent chỉ chạy một lệnh sẽ nhận được thông tin chính xác trong vài dòng. CLI nén câu hỏi "API có đúng không?" thành một mã thoát, và agent dành ngữ cảnh của nó để sửa lỗi thay vì vậy.
Hướng dẫn này bao gồm phần dành riêng cho harness mà hướng dẫn cài đặt chung bỏ qua: tệp hướng dẫn nào DeepSeek Harness thực sự đọc, công cụ bash của nó thực thi apidog run như thế nào, và cách giữ cho vòng lặp trung thực. Nếu bạn chưa cài đặt CLI, hãy làm điều đó trước. Cách cài đặt Apidog CLI với một agent mã hóa AI hướng dẫn cài đặt npm, xác thực và lần chạy đầu tiên. Bài viết này giả định apidog --version in ra một số và máy của bạn đã được xác thực.
DeepSeek Harness này là về điều gì
DeepSeek Harness, dsh trên dòng lệnh, là công cụ harness agent mã nguồn mở mà DeepSeek đã phát hành vào ngày 13 tháng 8 năm 2026, cùng với V4-Pro trên API. Nó được cấp phép MIT, nằm tại github.com/deepseek-ai/deepseek-harness, và đã vượt qua 169k sao tính đến ngày 20 tháng 8. Bạn khởi động nó bằng npx @deepseek-ai/dsh web, lệnh này sẽ phục vụ một giao diện người dùng web cục bộ tại http://127.0.0.1:3080. Ở đó, bạn chọn một không gian làm việc, thư mục dự án nơi bạn đã khởi chạy nó, và agent làm việc bên trong nó: đọc và chỉnh sửa tệp, chạy lệnh và hỏi trước các hoạt động yêu cầu phê duyệt theo chính sách quyền hạn đang hoạt động.
Hai điều định hình mọi thứ dưới đây. Thứ nhất, harness là một bản xem trước dành cho nhà phát triển. README cảnh báo, bằng chữ in hoa, rằng sẽ có những thay đổi phá vỡ khả năng tương thích, vì vậy hãy coi tên tệp và khóa cấu hình ở đây là chính xác vào cuối tháng 8 năm 2026 và kiểm tra lại với tài liệu repo nếu có gì đó không tải được. Thứ hai, mọi thứ trong dsh đều là một plugin, được xây dựng trên kiến trúc Cordis, điều này giúp trả lời câu hỏi thực tế dưới đây: plugin nào đọc các quy tắc dự án của bạn, và nó tìm kiếm gì? Để có cái nhìn rộng hơn, hãy xem DeepSeek Harness là gì; để xem nó so sánh với đối thủ cạnh tranh như thế nào, hãy xem DeepSeek Harness so với Claude Code.
Bước 1: Đặt CLI vào AGENTS.md
DeepSeek Harness đọc các hướng dẫn không gian làm việc thông qua plugin @deepseek-ai/dsh-agent-instructions của nó, và các giá trị mặc định rất thân thiện nếu bạn đã sử dụng các agent khác. Theo nguồn của plugin và danh mục cấu hình, trình tải sẽ đi lên từ thư mục làm việc của phiên đến thư mục gốc dự án của bạn (được đánh dấu bằng .git) và tải AGENTS.md, sau đó là CLAUDE.md, trong mỗi thư mục trên đường đi. Các lớp phủ cục bộ có tên AGENTS.local.md hoặc CLAUDE.local.md tải sau các tệp cơ sở, và một tệp AGENTS.md toàn cục cố định cho người dùng trong $DSH_HOME (mặc định là ~/.dsh) áp dụng cho tất cả các dự án. Các tệp lớn hơn 1 MiB bị bỏ qua, điều mà tệp quy tắc của bạn sẽ không bao giờ đạt tới.
Kết quả thực tế: nếu repo của bạn đã có một tệp AGENTS.md cho Codex hoặc một tệp CLAUDE.md cho Claude Code, DeepSeek Harness sẽ nhận nó mà không cần thiết lập thêm. Thêm một khối Apidog ngắn gọn vào đó:
## API testing with the Apidog CLI
- To test the API, run the Apidog scenario. Do not click through the GUI.
- Command: apidog run -t <scenario_id> -e <env_id> -r cli
- Exit code 0 means every assertion passed. Non-zero means a failure; read the report and fix the code.
- The machine is already authenticated. Never add an --access-token flag and never put a token in this file.
Đây là lý do tại sao tệp quy tắc đánh bại trò chuyện. Một ID kịch bản được gõ vào trình soạn thảo phiên sẽ biến mất khi phiên kết thúc. Một ID được viết vào AGENTS.md sẽ tải vào mọi phiên mới, cho mọi đồng đội, trên mọi máy tính sao chép repo. Nếu bạn làm việc trên nhiều dự án, tệp ~/.dsh/AGENTS.md toàn cục cho người dùng sẽ mang theo thói quen ("luôn xác minh các thay đổi API bằng lệnh `apidog run` của dự án") trong khi tệp riêng của mỗi repo mang theo các ID thực.
Bước 2: Lấy lệnh từ Apidog
Bạn không cần phải đoán các ID kịch bản và môi trường. Mở kịch bản kiểm thử trong Apidog, đi đến tab CI/CD của nó và sao chép lệnh đã tạo. Nó trông như thế này:
apidog run -t 123456 -e 789012 -r cli
Cờ -t là ID kịch bản kiểm thử, -e là ID môi trường, và -r cli chọn trình báo cáo in kết quả trực tiếp, đó chính xác là những gì một agent cần đọc. Dán các ID thực vào khối AGENTS.md của bạn để agent chạy lệnh mà Apidog đã tạo, chứ không phải một phỏng đoán.
Bước 3: Yêu cầu agent chạy kiểm thử
Bắt đầu một phiên trong giao diện web của dsh với không gian làm việc của bạn đã được chọn. Trình tải hướng dẫn đã cấp dữ liệu AGENTS.md của bạn vào ngữ cảnh của agent, vì vậy nó biết CLI tồn tại. Thực hiện một thay đổi ảnh hưởng đến API của bạn, hoặc chỉ cần hỏi:
Run the Apidog test scenario and tell me the exit code.
Agent thực thi nó thông qua công cụ bash của nó, và việc biết cách công cụ đó hoạt động sẽ giúp bạn tiết kiệm một phiên gỡ lỗi sau này. Theo danh mục công cụ, công cụ bash mặc định chạy mỗi lệnh trong một shell mới: không có thư mục làm việc, biến hoặc hàm nào tồn tại giữa các lệnh gọi, và các lệnh chạy từ không gian làm việc của phiên trừ khi một workdir được truyền vào. Điều này tốt cho apidog run, một lệnh độc lập duy nhất, nhưng agent không thể cd đến một nơi nào đó trước rồi chạy kiểm thử như một bước thứ hai. Nếu kịch bản của bạn phải chạy từ một thư mục con, hãy đặt toàn bộ lệnh gọi trên một dòng trong tệp quy tắc của bạn.
Hai hành vi nữa đáng biết. Các mã thoát khác 0 sẽ trả về dưới dạng một dấu hiệu rõ ràng [exit code: N], vì vậy tín hiệu đạt/không đạt vẫn tồn tại ngay cả khi đầu ra dài bị cắt ngắn. Và các lệnh có thể chạy dưới một sandbox tệp: một hoạt động bị chặn được báo cáo là từ chối chính sách, chứ không phải lỗi lệnh. Một lần chạy kiểm thử chỉ đọc hiếm khi gây ra điều này, nhưng trình báo cáo HTML ghi vào ./apidog-reports có thể, tùy thuộc vào chính sách đang hoạt động.
Việc chạy có cần bạn nhấp trước hay không phụ thuộc vào cùng chính sách quyền hạn đó. Giao diện web sẽ hỏi trước các hoạt động yêu cầu phê duyệt theo chính sách đó, theo hướng dẫn người dùng. Khi nó nhắc nhở về apidog run, hãy chấp thuận: một kịch bản kiểm thử chống lại môi trường staging chính xác là loại lệnh an toàn, chỉ đọc mà quy trình phê duyệt tồn tại để chấp thuận.
Bước 4: Đọc báo cáo
Khi một lần chạy báo lỗi (màu đỏ), báo cáo có câu trả lời. Với -r cli, agent nhận được một bản phân tích dễ đọc trực tiếp: mỗi yêu cầu, mỗi khẳng định và khẳng định nào bị lỗi với giá trị mong đợi so với giá trị thực tế. Khẳng định bị lỗi đặt tên trường hoặc mã trạng thái chính xác, điều này thường đủ để agent định vị bản sửa lỗi mà không cần bạn phải dịch.
Để có một báo cáo bạn có thể mở trong trình duyệt hoặc đưa cho đồng đội, hãy thêm trình báo cáo HTML:
apidog run -t 123456 -e 789012 -r cli,html
Trình báo cáo html ghi một tệp độc lập vào ./apidog-reports. Giữ cli trong danh sách để agent vẫn nhận được đầu ra trực tiếp mà nó đọc để quyết định bước tiếp theo.
Vòng lặp, từ đầu đến cuối
Đây là những gì thiết lập này mang lại cho bạn. Giả sử agent đang chỉnh sửa một trình xử lý thanh toán. Nếu không có CLI, vòng lặp của nó kết thúc ở "mã trông đúng." Với khối trong AGENTS.md, vòng lặp mở rộng: nó chỉnh sửa trình xử lý, chạy apidog run -t 123456 -e 789012 -r cli và đọc kết quả. Xanh, nó tiếp tục. Đỏ, nó thấy [exit code: 1], đọc khẳng định nào bị lỗi (lỗi 500 khi dự kiến 200, thiếu trường total, mã tiền tệ sai), vá trình xử lý và chạy lại. Kiểm tra hợp đồng API trở thành một phần của cùng một chu trình chỉnh sửa-kiểm tra-sửa lỗi mà agent đã chạy các bài kiểm thử đơn vị của bạn.
Lưu ý những gì agent đã không làm: đọc lại mọi tệp định tuyến để thuyết phục bản thân rằng API hoạt động. Kịch bản đã mã hóa hành vi mong đợi, được xây dựng trực quan trong Apidog bởi bất kỳ ai sở hữu API. Agent ủy quyền xác minh cho một công cụ xác định và dành token của nó cho những nơi cần phán đoán. Sự phân công lao động đó là toàn bộ mẫu hình: dsh viết mã, CLI xác minh lớp API, và bạn tác giả các kịch bản trong Apidog mà không cần viết bất kỳ mã kiểm thử nào.
Xác minh dsh thực sự đã chạy nó
Các agent báo cáo thành công mà chúng không kiếm được, và một công cụ harness xem trước dành cho nhà phát triển không phải là nơi để tin tưởng vào văn xuôi. Ba kiểm tra, theo thứ tự chúng bắt lỗi.
Đầu tiên, xác nhận lệnh đã chạy. Giao diện web dsh hiển thị các lệnh gọi công cụ của agent và đầu ra của chúng trong phiên. Tìm lệnh bash apidog run ... thực tế và kết quả của nó. Nếu agent nói nó đã chạy các kiểm thử nhưng không có lệnh gọi nào xuất hiện, thì nó đã tóm tắt một thứ mà nó chưa bao giờ làm. Yêu cầu nó chạy lại và hiển thị đầu ra thô.
Thứ hai, xác nhận mã thoát. Hỏi trực tiếp: "Mã thoát của lệnh apidog run đó là gì?" Harness cấp cho agent một dấu hiệu [exit code: N] rõ ràng khi thất bại, vì vậy không có sự mơ hồ nào để che giấu. Khi tóm tắt của agent nói "kiểm thử đã vượt qua" nhưng dấu hiệu cho thấy một giá trị khác không, thì dấu hiệu đó là đúng.
Thứ ba, xác nhận nó đã sử dụng kịch bản thực. Lỗi "không tìm thấy kịch bản" thường có nghĩa là agent đã tạo ra hoặc nhớ nhầm một ID. Kiểm tra lại các giá trị -t và -e so với khối AGENTS.md của bạn và lệnh trong tab CI/CD của Apidog. Các ID trong tệp quy tắc là sự thật; bất cứ điều gì khác mà agent đã gõ đều là phỏng đoán.
Tùy chọn: thêm máy chủ Apidog MCP để truy cập đặc tả
Chạy các kịch bản bao gồm xác minh. Nếu bạn cũng muốn agent đọc đặc tả API của bạn trong khi nó viết mã, đó là công việc của MCP, và ở đây bức tranh trung thực rất quan trọng: tính đến cuối tháng 8 năm 2026, hỗ trợ MCP không được ghi lại trong README hoặc hướng dẫn người dùng cốt lõi của DeepSeek Harness. Điều tồn tại là một plugin cộng đồng, hyqhyq3/dsh-mcp-manager, được phát hiện thông qua chủ đề GitHub dsh-plugin giống như phần còn lại của hệ sinh thái. Nó thêm một trang MCP dưới Cài đặt, hỗ trợ máy chủ HTTP từ xa và stdio cục bộ, đăng ký công cụ dưới dạng mcp__<name>__*, và đọc định nghĩa máy chủ trên mỗi dự án từ <workspace>/.dsh/dshmm/mcp.json.
Thông qua đó, bạn có thể kết nối máy chủ Apidog MCP, máy chủ này sẽ hiển thị các đặc tả API của bạn qua MCP để agent có thể kiểm tra lược đồ thực tế của một điểm cuối trước khi viết trình xử lý, thay vì sau khi kịch bản thất bại. Plugin cộng đồng cộng với máy chủ xem trước dành cho nhà phát triển có nghĩa là cặp này có thể bị lỗi khi một trong hai bên cập nhật, vì vậy hãy coi đây là một lớp bổ sung. Đường dẫn CLI ở trên là đường dẫn chịu tải chính: nó không cần gì ngoài một shell.
Những lưu ý về bản xem trước, và hướng đi của nó
DeepSeek Harness di chuyển nhanh và cảnh báo bạn rằng nó sẽ gây ra lỗi. Các chi tiết cụ thể có khả năng thay đổi nhất là những gì được nêu tên ở đây: các ứng cử viên tệp của plugin hướng dẫn, báo cáo sandbox của công cụ bash và bất cứ thứ gì mà plugin MCP cộng đồng chạm vào. Tuy nhiên, mẫu hình này có thể di động. Một tệp quy tắc nói "xác minh API bằng lệnh này" cộng với một CLI trả về mã thoát sạch sẽ hoạt động trong dsh hôm nay vì lý do tương tự nó hoạt động trong Claude Code và mọi công cụ harness khác trong chuỗi này: các agent giỏi đọc đầu ra lệnh và kém khi được tin tưởng mà không có nó.
Vậy thì: tải xuống Apidog, xây dựng một kịch bản kiểm thử trực quan, sao chép lệnh apidog run của nó từ tab CI/CD và thả khối đó vào tệp AGENTS.md mà repo của bạn có thể đã có. Lần tới khi DeepSeek Harness chạm vào mã API của bạn, nó sẽ kiểm tra công việc của chính mình trước khi báo cho bạn biết nó đã hoàn thành.
FAQ
DeepSeek Harness có đọc AGENTS.md nguyên bản không? Có. Plugin @deepseek-ai/dsh-agent-instructions tải AGENTS.md (hoặc CLAUDE.md làm dự phòng) từ thư mục gốc dự án của bạn và các thư mục phía trên thư mục làm việc của phiên của bạn, cộng với các lớp phủ AGENTS.local.md/CLAUDE.local.md và một tệp AGENTS.md toàn cục cho người dùng trong ~/.dsh. Nếu bạn đã giữ một tệp AGENTS.md cho các agent khác, dsh sẽ nhận nó mà không thay đổi.
Tôi có cần gói DeepSeek trả phí để sử dụng Apidog CLI trong dsh không? Không. Harness là mã nguồn mở được cấp phép MIT, và bạn tự mang mô hình của riêng mình: các nhà cung cấp danh mục bao gồm Anthropic, OpenAI, Bedrock, Vertex và Azure, và các cổng tùy chỉnh hoạt động thông qua settings.yaml, như đã đề cập trong cách chạy bất kỳ mô hình nào trong DeepSeek Harness. Bản thân Apidog CLI là một gói npm miễn phí; nó cần một kịch bản kiểm thử Apidog và xác thực, không phải một mô hình cụ thể.
Tại sao lệnh thứ hai của agent lại quên thư mục mà lệnh đầu tiên đã thay đổi đến? Theo thiết kế. Công cụ bash dsh mặc định chạy mọi lệnh gọi trong một shell mới, vì vậy cd không tồn tại giữa các lệnh. Truyền tham số workdir của công cụ hoặc, đơn giản hơn, giữ toàn bộ lệnh gọi apidog run trên một dòng trong tệp quy tắc của bạn để không có gì bị quên.
Dsh có thể chạy kịch bản mà không hỏi tôi mỗi lần không? Điều đó phụ thuộc vào chính sách quyền hạn đang hoạt động. Giao diện web hỏi trước các hoạt động yêu cầu phê duyệt theo chính sách đó; hướng dẫn người dùng không liệt kê các cấp độ chính sách, vì vậy hãy kiểm tra Cài đặt trong bản dựng của bạn để xem triển khai của bạn cho phép điều gì. Khi nó nhắc nhở, việc chấp thuận một lệnh apidog run đối với môi trường staging là một sự đồng ý an toàn.
