Rạng sáng nay, DeepSeek V4 Pro phiên bản chính thức đã được phát hành, gây nên làn sóng nhiệt tình. Bây giờ, nửa ngày đã trôi qua, DeepSeek Harness(bản xem trước dành cho nhà phát triển) cũng đã đến!

Đương nhiên, điều này không có gì bất ngờ, bởi dự án này đã được chủ động chuẩn bị từ lâu, ví dụ như DeepSeek Harness đội ngũ của Thôi Thiêm Dực (Cui Tianyi) liên tục đăng bài tiết lộ sơ bộ và tuyển dụng nhân tài cho đội ngũ trên mạng xã hội.

Chúng tôi cũng đã có được tư cách thử nghiệm nội bộ của DeepSeek Harness vào đầu tháng 8, tận hưởng sớm khung làm việc trí tuệ nhân tạo (AI agent) chắc chắn sẽ mang lại sự thay đổi mới cho cộng đồng AI này.

Địa chỉ mã nguồn mở: https://github.com/deepseek-ai/deepseek-harness
Ví dụ ở đây, chúng tôi đã cấu hình DeepSeek Harness với DeepSeek -V4-Flash chính thức để xây dựng một trò chơi bắn súng zombie góc nhìn thứ nhất. Chúng tôi không can thiệp gì trong suốt quá trình, và sau hơn 30 phút đã có được một sản phẩm hoàn chỉnh dù chưa hoàn hảo nhưng đã khá có thể chơi được.
Xét đến việc gần đây ý tưởng tạo thế giới 3D bằng AI của Andrej Karpathy đang rất nổi, chúng tôi cũng để DeepSeek Harness(V4-Flash) thử thách chuẩn đánh giá "Hoa Cường mua dưa hấu": Dựa trên mô tả văn bản để tái hiện lại cảnh kinh điển "Hoa Cường mua dưa hấu" thành hoạt hình 3D (cũng là kết quả từ một lần nhắc duy nhất - one-shot prompt):

Nhìn chung, dù còn xa mới hoàn hảo, nhưng cốt truyện của hoạt hình này về cơ bản đã được tái hiện, mối quan hệ nhân vật cũng có thể nhận ra phần lớn. Ngược lại, hoạt hình do chúng tôi sử dụng cùng một prompt, được tạo ra bằng Codex (được cấu hình với GPT-5.6 sol-xhigh) thì kém hơn nhiều:

Cần biết rằng, quy mô tham số của DeepSeek -V4-Flash thấp hơn nhiều so với GPT-5.6 sol. Có thể thấy, DeepSeek Harness hẳn đã lập công lớn.
Hôm nay cùng với việc phát hành phiên bản chính thức của DeepSeek V4 Pro, chúng tôi cũng đã kết nối mô hình này vào DeepSeek Harness và chạy lại một lần nữa:

Hiệu quả thực sự tốt hơn một chút.
Tiếp theo, hãy xem cấu trúc dự án, rất đáng kinh ngạc:Kho lưu trữ đã chứa hơn 230 thành viên workspace, mã nguồn được phân bố ở các khu vực packages/, apps/, examples/, python/, native/, vendor/, website/, v.v. Hệ thống tệp, terminal, tiến trình con, PTY, máy chủ ngôn ngữ, truy cập web, kỹ năng, agent con, quy trình làm việc, chế độ kế hoạch, lưu trữ phiên làm việc, cài đặt, thông tin xác thực, telemetry, hầu như mỗi khả năng đều có gói riêng của nó.

Nếu so sánh dự án Agent thông thường như một máy tính đã được lắp ráp sẵn, thì DeepSeek Harness giống như một tấm ván lỗ (breadboard) có kích thước đáng kinh ngạc: mô hình, công cụ, giao diện, lưu trữ, chính sách bảo mật và quản lý ngữ cảnh đều có thể cắm vào, và cũng đều có thể rút ra.
Nó cung cấp một phương án lắp ráp mặc định, nhưng có thể thấy, điều mà DeepSeek thực sự muốn tạo ra không phải là một "trợ lý lập trình DeepSeek" có hình thái cố định, mà làmột cách thức lắp ráp các agent.
DeepSeek Harness là gì?
Trước tiên làm rõ một vấn đề dễ gây nhầm lẫn: DeepSeek Harness không phải là mô hình DeepSeek mới, cũng không chỉ đơn thuần là một client API. Nó làmột bộ SDK và framework ứng dụng dùng để xây dựng, chạy và mở rộng các agent, mặc định có thể kết nối với mô hình DeepSeek (cũng có thể dễ dàng tùy chỉnh để kết nối với các mô hình khác), cho phép mô hình đọc dự án, sửa tệp, chạy lệnh, quản lý tác vụ, phân công nhiệm vụ con, và tương tác với người dùng thông qua Web UI, terminal toàn màn hình, lệnh Headless hoặc giao thức tự động hóa.

DeepSeek Harness phiên bản web cung cấp cổng vào thuận tiện để cấu hình trực tiếp các dịch vụ mô hình khác, không yêu cầu người dùng chỉnh sửa tệp cấu hình thủ công
Cộng đồng AI ngày nay đã không còn xa lạ với từ Harness. Ý nghĩa nguyên bản của nó là yên ngựa, dây nịt, thiết bị hãm, v.v. Nếu trừu tượng hóa lên một chút, tác dụng của nó là kết nối sức mạnh vào cơ cấu có thể làm việc, đồng thời không để sức mạnh đó thoát khỏi kiểm soát. Cụ thể đến AI, Harness chịu trách nhiệm kết nối mô hình với hệ thống tệp, Shell, trình chỉnh sửa mã nguồn, trang web và các Agent khác, đồng thời ghi lại những gì nó đã làm, giới hạn những gì nó có thể làm, và quyết định thử lại, hủy bỏ, nén ngữ cảnh hay trả lại vấn đề cho người dùng khi xảy ra lỗi.
Điều này có lẽ cũng giải thích tại sao mã nguồn và số lượng gói của dự án này lại lớn như vậy, vì rốt cuộc các tác vụ và lựa chọn công cụ liên quan ở đây rất nhiều, bao gồm việc gọi công cụ có thể chạy song song hay không, lệnh hủy có thể thực sự dừng tiến trình con hay không, kết quả công cụ có làm ô nhiễm ngữ cảnh không, tin nhắn mới người dùng gửi đến trong khi mô hình đang chạy nên được chèn vào đâu, làm thế nào để xây dựng lại đầu vào mô hình lúc đó sau khi khôi phục phiên làm việc, agent con sở hữu những công cụ nào, việc ghi tệp có vượt qua phạm vi workspace không, nội dung nhìn thấy khi phát lại giao diện có thể nhất quán với chạy thời gian thực không.
DeepSeek Harness cố gắng biến tất cả những vấn đề này thành khả năng hệ thống chính thức.
Mọi thứ đều là plugin
Thiết kế nổi bật nhất của DeepSeek Harness là "Mọi thứ đều là plugin", thậm chí chính vòng lặp Agent (Agent Loop) cũng được coi là một plugin.

Dự án được xây dựng trên lõi vi mô Cordis, Harness đang chạy về bản chất là một Cordis Context. Các gói khác nhau đăng ký dịch vụ, sự kiện và khả năng vào Context, cuối cùng được tệp cấu hình kết hợp thành một agent có thể chạy.
packages/core/ là lõi của toàn bộ hệ thống, trong đó bao gồm Session, System Prompt, Tools, Agent và Agent Loop. Chúng giải quyết những vấn đề cơ bản nhất: phiên làm việc là gì, prompt hệ thống được lắp ráp như thế nào, công cụ được đăng ký và gọi ra sao, Agent được tạo như thế nào, và một lượt hội thoại đi từ đầu vào người dùng đến yêu cầu mô hình, thực thi công cụ và câu trả lời cuối cùng ra sao.
Bên ngoài lõi là một lượng lớn các gói khả năng:
- packages/llm/ chịu trách nhiệm về bộ chuyển đổi mô hình (adapter) và đầu ra dạng luồng (stream);
- packages/shell/, packages/subprocess/ và packages/terminal/ chịu trách nhiệm về lệnh một lần, cây tiến trình và terminal liên tục;
- packages/fs/ chịu trách nhiệm đọc ghi tệp, chỉnh sửa, tìm kiếm và hạn chế chính sách;
- packages/lsp/ kết nối máy chủ ngôn ngữ, cho phép Agent không chỉ tìm kiếm bằng văn bản mà còn có thể điều hướng mã nguồn ở cấp độ ngữ nghĩa;
- packages/web/ chịu trách nhiệm tìm kiếm và thu thập dữ liệu web;
- packages/skill/ quản lý kỹ năng có thể tái sử dụng;
- packages/subagent/ và packages/workflow/ mở rộng một Agent đơn lẻ thành hệ thống đa agent có thể ủy quyền và sắp xếp.
Nhìn ra xa hơn, kế hoạch, mục tiêu, việc cần làm, tác vụ nền, nén ngữ cảnh, truy vấn phiên làm việc, tiêu đề phiên làm việc, thông tin xác thực, cài đặt người dùng, cơ chế phê duyệt và telemetry cũng được tách thành các khả năng độc lập. Điều thú vị nhất trong cấu trúc này, là nó thể hiện ý thức về ranh giới gần như cứng nhắc: ai sở hữu giao diện, ai chịu trách nhiệm triển khai, ai trình bày khả năng cho mô hình, cố gắng không trộn lẫn lại với nhau.
Tài liệu dự án chia các khả năng điển hình thành ba lớp: giao diện, triển khai và người tiêu dùng.
Lấy Bash làm ví dụ, giao diện định nghĩa "thực thi lệnh" là gì, triển khai cục bộ chịu trách nhiệm thực sự tạo tiến trình, còn gói công cụ hướng tới mô hình chịu trách nhiệm biến khả năng này thành schema và kết quả mà mô hình có thể hiểu. Trong tương lai nếu Shell cục bộ muốn đổi thành container từ xa, sandbox đám mây hoặc nền tảng thực thi doanh nghiệp, về lý thuyết chỉ cần thay thế lớp triển khai, mà không cần viết lại công cụ mô hình và vòng lặp Agent.
Đây là một tư duy framework điển hình. Nó sẽ khiến kho lưu trữ trông lớn trong giai đoạn đầu, nhưng cũng cho thấy mục tiêu của DeepSeek Harness không phải là làm ra một sản phẩm hoàn chỉnh chỉ có đội ngũ chính thức mới có thể bảo trì, mà là để các bên triển khai khác nhau có thể thay đổi mô hình, thay đổi lưu trữ, thay đổi chính sách bảo mật, thêm công cụ, thậm chí thay thế vòng lặp agent.
Ở đây, chúng ta cũng thấy DeepSeek luôn kiên trì vớimã nguồn mở thực sự!
cordis.yml
Một tệp cấu hình lắp ráp các Agent khác nhau
Kiến trúc plugin hóa cuối cùng thông qua cordis.yml đến tay nhà phát triển. Tệp cấu hình liệt kê tên plugin, ID ổn định và tham số, quyết định agent hiện tại cuối cùng sở hữu nhóm khả năng nào.
Cùng một bộ mã nguồn có thể được lắp ráp thành các hình thái sản phẩm hoàn toàn khác nhau. Thêm bộ chuyển đổi LLM của DeepSeek , hệ thống tệp, Bash và TUI, sẽ có được agent lập trình trong terminal; thay đổi giao diện tương tác thành plugin Web, sẽ có được ứng dụng trình duyệt; sử dụng cổng vào Headless, nó sẽ nhận một tác vụ, hoàn thành các lượt mô hình và công cụ, in câu trả lời rồi thoát; đổi thành cổng trước ACP hoặc JSON-RPC, nó lại có thể trở thành dịch vụ tự động hóa mà các chương trình khác có thể điều khiển.
Cấu hình cũng hỗ trợ lớp phủ. TUI và Web UI có thể chia sẻ một cấu hình cơ bản, sau đó chồng lên các plugin giao diện và tham số của riêng mình; cấu hình cá nhân nằm ở lớp cuối cùng. Bằng cách này, bên triển khai không cần sao chép toàn bộ cây cấu hình, chỉ cần thay thế plugin được chỉ định. Tuy nhiên cũng có một chi tiết cần lưu ý ở đây: bản vá cấu hình thay thế toàn bộ config của plugin mục tiêu, không phải hợp nhất sâu. Nếu chỉ viết một trường mới, API Key, địa chỉ cơ sở hoặc các tham số khác có thể biến mất cùng lúc. Nó rất rõ ràng, nhưng không nhất thiết phù hợp với trực giác của người dùng lần đầu.
Dự án còn cho phép đọc biến môi trường và biểu thức thời gian chạy thông qua !!js trong YAML, ví dụ lấy khóa từ DEEPSEEK_API_KEY. Cấu hình chỉ tham chiếu tên thông tin xác thực, khóa thực tế được phân tích khi gọi. Web UI sẽ ghi khóa vào $DSH_HOME/.credentials.yaml, còn biến môi trường và .env có thể là nguồn dự phòng trong tự động hóa hoặc phát triển cục bộ; khóa không nên được ghi trực tiếp vào cordis.yml hoặc đi vào nhật ký phiên làm việc.
Agent Loop
Không phải một vòng lặp, mà là một bộ quy tắc giao thông
Mã lõi của nhiều dự án Agent thời kỳ đầu có thể được đơn giản hóa thành vài dòng: gửi tin nhắn đến mô hình, nếu mô hình trả về lời gọi công cụ, thì thực thi công cụ, sau đó gửi kết quả về lại mô hình, cho đến khi mô hình xuất ra văn bản. DeepSeek Harness đương nhiên cũng làm việc này, nhưng nó tách quá trình này thành vòng đời nghiêm ngặt.
Một lượt đầu vào người dùng sẽ mở ra một Turn, một Turn có thể chứa nhiều Step; một Step tương ứng với một yêu cầu mô hình và việc thực thi công cụ tiếp theo của nó. Trước khi yêu cầu, hệ thống sẽ lắp ráp prompt hệ thống ổn định, môi trường thực thi hiện tại, schema công cụ và tin nhắn phiên làm việc; sau khi yêu cầu, chunk dạng luồng, tin nhắn hoàn chỉnh, lời gọi công cụ, kết quả công cụ và lý do kết thúc của mô hình sẽ đi vào luồng sự kiện.

Trò chơi bắn súng zombie nói trên đã thực hiện 3 turn, 127 step
Công cụ cũng không phải là "nhận được tên hàm là gọi". Nó sẽ trải qua chính sách tiền xử lý, biện pháp bảo vệ bảo mật không thể đảo ngược, thực thi thực tế, xử lý hậu kỳ, sắp xếp nội dung và thông báo kết quả. Cho phép hoặc từ chối, quá thời gian, thử lại, thống kê chỉ số, đính kèm ngữ cảnh, đều có thể được kết nối từ các vị trí khác nhau trong đường ống xử lý. Công cụ có thể khai báo rằng việc gọi ở dưới một loại tham số nào đó là an toàn để chạy đồng thời (concurrency-safe), bộ lập lịch sẽ để các tác vụ chỉ đọc liên tục chạy song song; một khi gặp phải lời gọi sửa đổi trạng thái hoặc không thể xác định tính an toàn, nó sẽ coi đó là rào cản, chờ các tác vụ trước đó kết thúc rồi thực thi độc quyền.
Thiết kế này trông có vẻ giống như lắp đặt hệ thống kiểm soát không lưu trên một con đường làng nhỏ, nhưng khi Agent bắt đầu đồng thời tìm kiếm mười tệp, chạy thử nghiệm, chấp nhận lệnh bổ sung của người dùng, và còn phải cho phép hủy bất cứ lúc nào, thì những quy tắc này sẽ nhanh chóng từ "thiết kế quá mức" trở thành "thứ muốn có sớm nhất trong báo cáo điều tra sự cố".
Nó còn xử lý nghiêm túc hướng đi của tin nhắn trong khi chạy. Nội dung mới người dùng gửi trong khi Agent đang làm việc, có thể là nhiệm vụ lượt tiếp theo, cũng có thể là lệnh chuyển hướng cho công việc hiện tại. Hệ thống phân biệt tin nhắn xếp hàng, tiêm vào ngữ cảnh và Steering, và xác nhận qua biên nhận xem một lệnh chuyển hướng cụ thể có thực sự đi vào một yêu cầu mô hình nào đó hay không. Nói cách khác, nó không chỉ quan tâm "tin nhắn đã nhận được", mà còn quan tâm "mô hình cuối cùng đã thấy nó ở bước nào".
Session Log
Nguồn thẩm quyền thực sự của toàn bộ hệ thống
Một thiết kế đáng chú ý khác của DeepSeek Harness là Session Log.
Dự án quy định, bất kỳ nội dung nào mô hình nhìn thấy, đều phải có thể xây dựng lại từ nhật ký. Tin nhắn người dùng, ngữ cảnh môi trường thực thi, thông tin yêu cầu mô hình, đầu ra dạng luồng, lời gọi và kết quả công cụ, sự kiện nén, chuyển đổi quyền hạn, lý do hủy bỏ, đều sẽ đi vào luồng phiên làm việc dạng nối thêm dưới dạng sự kiện. Giao diện, lưu trữ lâu dài, khôi phục, Fork, telemetry và phát lại, không nên tự duy trì một trạng thái "gần như đúng", mà nên được suy ra từ cùng một nguồn sự kiện.
Nguyên tắc này giải quyết một vấn đề rất khó khăn trong hệ thống Agent: khi một nhiệm vụ xảy ra lỗi, chúng ta cuối cùng có thể biết mô hình lúc đó đã nhìn thấy những gì không?
Nếu hệ thống chỉ lưu văn bản trò chuyện cuối cùng, nhiều yếu tố quan trọng sẽ bị mất. Có thể trước khi yêu cầu mô hình vừa tiêm trạng thái workspace, có thể kết quả công cụ đã bị cắt xén, có thể hệ thống tự động chuyển đổi định tuyến mô hình, có thể người dùng thay đổi hướng đi giữa lúc đầu ra dạng luồng. DeepSeek Harness sẽ lưu lại các bản ghi đủ để xây dựng lại tin nhắn tại ranh giới yêu cầu, chunk dạng luồng gốc cũng sẽ được giữ lại, để giao diện và phát lại duy trì nhất quán.
Bản thân việc lưu trữ lâu dài phiên làm việc vẫn là một plugin. Dự án cung cấp các backend như JSONL và SQLite, khả năng truy vấn có thể ưu tiên truy cập phiên làm việc thời gian thực, cũng có thể tìm kiếm toàn văn bản lịch sử qua SQLite. Resume sẽ tiếp tục công việc bằng phiên làm việc gốc, Fork thì suy ra phiên làm việc mới từ một ranh giới lịch sử xác định. Đối với nhà phát triển, điều này cung cấp nền tảng thống nhất cho việc gỡ lỗi, đánh giá, kiểm toán và tự động hóa.
Từ một Agent đến một nhóm Agent
DeepSeek Harness đã tích hợp sẵn nhiều khả năng agent con và quy trình làm việc.

Agent chính có thể ủy quyền nhiệm vụ cho agent con, agent con có thể là một phiên bản mới được tạo, cũng có thể Fork từ ranh giới hoàn thành của một phiên làm việc đã có, hoặc kết nối với tiến trình con bên ngoài thông qua ACP.

Trò chơi bắn súng zombie nói trên đã tạo ra 5 agent con chạy song song
Thiết kế phạm vi tác dụng ở đây rất quan trọng. Mỗi Agent sở hữu lớp ngữ cảnh riêng của mình, có thể nhìn thấy các công cụ, prompt và lệnh cụ thể. Một agent con nào đó có thể bị giới hạn chỉ làm tìm kiếm và phân tích, một agent con khác thì được phép sửa tệp. Các khả năng được đăng ký trong phạm vi tác dụng của Agent sẽ được dọn dẹp tự động theo vòng đời của Agent, không cần dựa vào quy ước tên toàn cục để duy trì sự cô lập.
Quy trình làm việc thì tiến xa hơn: nó cho phép dùng script để điều khiển việc sắp xếp đa agent, kết nối nhiều tác vụ con, đầu ra có cấu trúc và tiếp tục thực thi. Dự án đồng thời cung cấp mục tiêu, kế hoạch, việc cần làm và tác vụ nền, chúng không chỉ là bốn tiện ích con UI có tên gần giống nhau, mà thực ra là các trạng thái hợp tác có vòng đời khác nhau. Chế độ kế hoạch ghi lại giai đoạn hợp tác hiện tại, mục tiêu có thể tồn tại liên tục xuyên suốt cùng một phiên làm việc, việc cần làm cung cấp danh sách tác vụ nhẹ cho mô hình, tác vụ nền chịu trách nhiệm quản lý công việc thực tế vẫn đang chạy.

Điều này cho thấy Harness muốn bao phủ không chỉ là "lập trình hỏi một đáp một". Nó hy vọng hỗ trợ các tác vụ dài, điều tra song song, chạy tự động hóa và phối hợp với hệ thống bên ngoài. Còn việc mô hình có thể ổn định điều khiển nhiều cơ chế như vậy hay không, là một cuộc thử nghiệm khác; ít nhất framework đã làm ra tay lái, bảng điều khiển và phanh trước.
Web, TUI, Headless và SDK
Hướng tới người dùng thông thường, dự án đề xuất Web UI, mặc định lắng nghe http://127.0.0.1:3080. Nó cung cấp hội thoại, thanh bên phiên làm việc, lựa chọn quyền hạn, chế độ kế hoạch, thẻ công cụ và tương tác workspace.

Web UI còn cung cấp bốn chế độ cài đặt sẵn Agent. Chúng không phải là bốn Agent độc lập với nhau, cũng không chỉ thay đổi phong cách prompt, mà dựa trên cùng một máy chủ Harness, lắp ráp các công cụ, prompt và khả năng thời gian chạy khác nhau cho phiên làm việc hiện tại:

Chế độ tiêu chuẩn: Agent mã hóa đa dụng hoàn chỉnh nhất về chức năng, cung cấp chỉnh sửa tệp, Shell, truy xuất tệp và web, Skills, kế hoạch, mục tiêu, agent con và quy trình làm việc, phù hợp với phần lớn các tác vụ phát triển hàng ngày;
Chế độ PTC: Giữ lại toàn bộ khả năng của chế độ tiêu chuẩn, đồng thời trình bày công cụ cho mô hình thông qua SDK Code Mode. Mô hình có thể viết một chương trình TypeScript, kết hợp nhiều thao tác trong một lần run_code, giảm chi phí đi lại nhiều lần giữa mô hình và công cụ, phù hợp hơn với các tác vụ phức tạp có chuỗi gọi dài;
Chế độ cực giản: Chỉ cung cấp hai công cụ là Bash lưu trữ lâu dài và str_replace_editor. Tập hợp công cụ nhỏ hơn giảm bớt gánh nặng lựa chọn và ngữ cảnh, phù hợp với các tác vụ mã hóa có đường dẫn rõ ràng, mong muốn Agent trực tiếp thao tác;
Chế độ sáng tạo: Trên chế độ tiêu chuẩn, thêm vào kiểm tra thời gian chạy Cordis, thử nghiệm plugin tạm thời và hướng dẫn sáng tạo Agent preset. Agent không chỉ có thể sử dụng các công cụ hiện có, mà còn có thể khám phá và kết hợp lại thời gian chạy của chính mình, từ đó tạo ra các preset tùy chỉnh mới. Vì nó có thể chạy mã plugin do mô hình viết, đây là một chế độ tin cậy cao hướng tới người dùng nâng cao.
Nhóm cài đặt sẵn này có lẽ là biểu hiện sản phẩm hóa trực quan nhất của "Mọi thứ đều là plugin": định tuyến mô hình cơ bản, lưu trữ lâu dài phiên làm việc, sandbox và phê duyệt vẫn được cung cấp bởi máy chủ dùng chung, cài đặt sẵn chỉ quyết định cụ thể những khả năng nào được nạp vào trong một Agent Context. Cùng một Web UI, do đó có thể chuyển đổi từ Agent cực giản hai công cụ, sang chế độ tiêu chuẩn có thể sắp xếp agent con, thậm chí tiến xa hơn thành chế độ sáng tạo có thể tự cải tạo.

Ví dụ ở đây, chúng tôi trong chế độ sáng tạo, để DeepSeek Harness được kết nối với DeepSeek V4 Pro tạo ra một "chế độ ba cột" mà Web UI chính thức không có:
Ngoài Web UI, TUI hướng tới các nhà phát triển thích ở lại trong terminal.

Chế độ Headless phù hợp với script và CI: nó nhận một tác vụ, chờ Agent dừng hoàn toàn, xuất ra phản hồi hợp lệ cuối cùng rồi thoát. Nếu chương trình cần sự kiện có cấu trúc và kiểm soát liên tục, nên sử dụng ACP hoặc JSON-RPC/Python SDK.
Về mặt tự động hóa, dự án cung cấp dịch vụ ACP và cổng vào JSON-RPC. Python SDK điều khiển thời gian chạy JSON-RPC đi kèm, cho phép ứng dụng Python có thể khởi động phiên làm việc, gửi tác vụ, nhận thông báo, mà không cần nhúng trực tiếp lõi Node. Kho lưu trữ còn bao gồm các ví dụ về Code Mode, Cordis tự chỉ, dịch vụ bộ nhớ MCP, v.v.
Đáng chú ý là, các cổng vào này không phải là bốn Agent phát triển riêng rẽ. Chúng chia sẻ mô hình khả năng lõi, ngữ nghĩa sự kiện phiên làm việc và phần lớn các plugin cơ sở, nhưng không phải đơn giản thay thế một lớp UI, mà thông qua các bundle khác nhau để lắp ráp thành các hình thái sản phẩm như Web, tác vụ một lần và dịch vụ tự động hóa. Đây chính là thành quả trực quan nhất của "Mọi thứ đều là plugin".
Agent có thể kiểm tra thậm chí cải tạo chính mình
DeepSeek Harness còn cung cấp một nhóm công cụ Cordis tự chỉ. Chúng sẽ không đi vào các chế độ tiêu chuẩn, PTC hoặc cực giản, mà được cung cấp thông qua cổng vào nâng cao rõ ràng là "chế độ sáng tạo" trong Web UI. Sau khi chọn cài đặt sẵn này, Agent có thể kiểm tra cây plugin của thời gian chạy hiện tại, và động lắp hoặc gỡ bỏ plugin tạm thời.

Nghe có vẻ hơi giống để xe hơi tự thay động cơ trên đường cao tốc, do đó dự án không mặc định mở nó. Nó phù hợp với các kịch bản nghiên cứu hoặc tự động hóa nâng cao: mô hình có thể viết tạm trình lắng nghe sự kiện, đăng ký công cụ mới, cung cấp một dịch vụ, sau đó gỡ bỏ sau khi tác vụ hoàn thành.
Agent tự sửa đổi dễ dàng trở thành trình diễn khái niệm, nhưng Harness ít nhất đã đặt nó vào vòng đời plugin hiện có. Plugin động vẫn chạy dưới cơ chế Context và Effect của Cordis, các mục đăng ký có đường dẫn dọn dẹp rõ ràng.
Nó còn lâu mới có thể nói là an toàn vô lo, nhưng đã cho thấy nơi mà kiến trúc này thực sự muốn hướng đến: agent không chỉ sử dụng khả năng, mà còn có thể kết hợp lại thời gian chạy của chính mình trong ranh giới được kiểm soát.
Thiết kế đằng sau Cordis, có thể tham khảo bài báo được phát hành đồng bộ chính thức "A Programming Paradigm for Spatiotemporal Composability":

Địa chỉ bài báo: https://github.com/cordiverse/paper
Chính sách bảo mật
Agent lập trình một khi có quyền hệ thống tệp và Shell, có thể sửa mã nguồn, cài đặt phụ thuộc, khởi động tiến trình, thậm chí chạm đến môi trường máy chủ bên ngoài workspace. DeepSeek Harness rõ ràng coi việc này như một vấn đề kiến trúc cơ sở, chứ không phải chỉ tăng một cửa sổ bật lên xác nhận trên giao diện là xong.
Dự án mặc định sử dụng chế độ workspace-write, hạn chế việc thực thi lệnh và sửa tệp trong workspace hiện tại và các thư mục tạm thời được phép, đồng thời kết hợp với chính sách phê duyệt ask để xử lý các thao tác cần mở rộng quyền hạn. Chế độ danger-full-access lỏng lẻo hơn cũng tồn tại, nhưng phải được bên triển khai lựa chọn rõ ràng; nó sẽ không được đóng gói thành một tùy chọn tương thích trông có vẻ vô hại.

Việc gọi công cụ còn phải trải qua chính sách tiền xử lý, biện pháp bảo vệ an toàn đơn điệu, bao bọc thực thi và xử lý hậu kỳ. Thao tác bị biện pháp bảo vệ từ chối không thể được các plugin tiếp theo mở lại; lệnh cần mở rộng quyền hạn phải giải thích lý do, và thử lại thông qua cơ chế phê duyệt. Hệ thống tệp, Bash và tiến trình con chia sẻ cùng một bộ chính sách sandbox, tránh xuất hiện ranh giới chia cắt "lệnh bị hạn chế, nhưng công cụ tệp có thể vượt qua".
Đáng khẳng định hơn là, DeepSeek Harness áp dụng nguyên tắc "đóng lại khi thất bại" (fail-closed). Nếu hệ thống không thể xác nhận cơ chế cách ly thực sự có hiệu lực, nó sẽ từ chối thực thi, chứ không lặng lẽ thoái hóa thành chạy không bảo vệ. Chuyển đổi quyền hạn, yêu cầu phê duyệt, tham số công cụ, kết quả thực thi và lý do hủy bỏ cũng sẽ đi vào Session Log, lưu lại căn cứ cho việc kiểm toán sau sự kiện và tái hiện vấn đề.
Thiết kế này không thể loại bỏ toàn bộ rủi ro của việc agent thực thi thao tác cục bộ, nhưng nó thể hiện một thái độ kỹ thuật đáng quý:Bảo mật là một ràng buộc hệ thống xuyên suốt cơ chế cấu hình, thực thi, phê duyệt, nhật ký và khôi phục. Mô hình có thể đề xuất hành động, thứ thực sự quyết định hành động có thể xảy ra hay không, vẫn là Harness.
DeepSeek muốn làm không chỉ là "một Codex khác"
Nếu chỉ nhìn Web UI hoặc TUI, dễ dàng hiểu nhầm DeepSeek Harness là phiên bản DeepSeek của Codex, Claude Code hoặc các trợ lý lập trình khác. Nhưng nhìn từ cấu trúc kho lưu trữ, mục tiêu của nó rõ ràng ở mức thấp hơn.
Ứng dụng mặc định đương nhiên quan trọng, nó cho phép nhà phát triển trực tiếp có được một công cụ có thể đọc ghi dự án, chạy lệnh, lập kế hoạch tác vụ và gọi agent con. Nhưng thứ thực sự chiếm vị trí trung tâm của dự án, là giao diện khả năng có thể thay thế, vòng đời hướng sự kiện, nhật ký phiên làm việc có thẩm quyền và kết hợp khai báo. Nói cách khác, Agent thành phẩm giống như khách hàng đầu tiên của bộ SDK này.
Điều này cũng bổ sung một mảnh ghép trước đây không đủ nổi bật cho hệ sinh thái mô hình của DeepSeek . Mô hình quyết định trí tuệ trên, Harness quyết định trí tuệ này đi vào môi trường thực tế như thế nào, sử dụng công cụ ra sao, giữ trạng thái như thế nào, và lại làm việc trong ranh giới quyền hạn ra sao. Đối với nhà phát triển doanh nghiệp, cái sau thường quan trọng hơn việc cửa sổ trò chuyện có thêm vài nút, bởi nó quyết định hệ thống có thể được kiểm toán, mở rộng, thay thế và bảo trì lâu dài hay không.
DeepSeek Harness hiện tại còn lâu mới đến giai đoạn "cài đặt xong, mọi thứ trơn tru", nhưng nó đã thể hiện một phán đoán kỹ thuật khá hoàn chỉnh: Agent không nên là một vòng lặp ngày càng phình to, mà nên là một nhóm khả năng có thể kết hợp, quan sát và thay thế; phiên làm việc không nên chỉ là bản ghi trò chuyện, mà nên là sự thực chạy; công cụ không nên chỉ là hàm, mà nên đồng thời sở hữu chính sách, nhật ký và giao thức trình bày.
Vì vậy, thứ đáng chú ý nhất của DeepSeek Harness, không phải là việc hôm nay nó có thể thay thế trợ lý lập trình bạn đang sử dụng hay không, mà là nó đã công khai câu trả lời của DeepSeek về kỹ thuật Agent đến mức nào.
Bài viết này đến từ tài khoản WeChat công chúng "Cỗ máy có trái tim" (ID:almosthuman2014), tác giả: Cỗ máy có trái tim theo dõi DSH





