DeepSeek Harness và phần việc người còn làm khi agent tự lên plan
DeepSeek Harness cho agent tự viết plugin có giao diện ngay trong phiên. Trong lịch sử repo, người viết tài liệu ngày đầu và chọn chế độ quyền cho agent.
Ngày 07/10/2026 mình nhắn cho Claude Code rằng việc DeepSeek Harness (dsh) để UI với chức năng "mọc ra" tự động rất thú vị, và AI agent đã đủ thông minh để tự phát triển hệ thống động mà không cần người lên plan. Mình đã chạy Creator mode của dsh.
Trong cùng tin nhắn đó, mình nhờ Claude Code phân tích repo deepseek-ai/deepseek-harness. Nó clone đủ lịch sử, đếm commit, đọc các bản ghi quyết định và postmortem, rồi mang về một danh sách bằng chứng, trong đó có mấy chỗ đi ngược câu của mình.
Đọc xong, mình vẫn giữ câu cũ. Phần việc người còn làm trong dsh dồn về ngày đầu tiên của repo và về chế độ quyền khi agent cài thứ nó vừa viết.
UI mọc ra giữa phiên
Ở Creator mode, agent viết một package cùng một file patch YAML vào thư mục làm việc, rồi tự cài bundle đó. Một bundle có giao diện gồm hai phần: phần Host chạy trong process của harness, phần Client chạy trong trình duyệt [1]. Nếu profile bật hot reload, bundle vừa cài hiện ra ngay trong phiên đang chạy, không cần khởi động lại.
Plugin chỉ được gắn component vào những vị trí đã khai báo trước, dsh gọi là slot; gắn vào một slot chưa ai khai báo thì plugin lỗi ngay lúc kích hoạt [2]. Mọi thứ một plugin đăng ký, từ một nút bấm tới một listener, đều kèm hàm gỡ, nên gỡ plugin thì những thứ đó biến mất theo. Paper về Cordis, framework nền của dsh, gọi tính chất này là temporal composability [3].
Ai viết plan cho chính repo dsh
Commit thứ hai của repo, ngày 10/06/2026, thêm vào AGENTS.md hai đường dẫn Feishu: một bản phân tích yêu cầu cho MVP, một bản bàn về kiến trúc microkernel, kèm lời mô tả "everything is a plugin" [4]. Hai tài liệu đó không công khai, nhưng có người đã viết yêu cầu và kiến trúc từ ngày đầu. Đây là bằng chứng ngược với câu của mình.

Hình 1. AGENTS.md tại commit 804eede ngày 10/06/2026, phần tô vàng là hai tài liệu thiết kế viết trước code.
Từ 10/06 tới 03/10/2026, repo có 20.736 commit của 74 tên tác giả, trong đó 8.267 là merge commit; bỏ merge đi thì còn 12.469 commit, riêng tháng 7 có 4.240 [5]. Agent có mặt trong repo từ sớm. Ngày 11/06 đã có commit tên "Fix schema-DSL findings from the second Codex review", và trong 1.933 pull request được merge có 238 cái đến từ nhánh có tiền tố codex/.

Hình 2. Số commit không tính merge mỗi tuần, gộp từ git log của repo.
Git không cho biết ai gõ từng dòng. Trường tác giả gần như chỉ ghi tên người, nên không đo được agent viết bao nhiêu phần trăm trong số đó.
Trong .agents/notes, DeepSeek định nghĩa Agent Note là RFC do agent viết, gồm các bản đề xuất và bản ghi quyết định thiết kế, có lý do, phương án đã bỏ và hệ quả [6]. Tới 03/10, repo có 1.196 Agent Note bản tiếng Anh: 227 đã triển khai, 37 còn ở dạng đề xuất, 8 bị bác và 924 đã lưu trữ. Note đề xuất được review trước khi triển khai, nhưng tài liệu quy trình không ghi ai review [7].
Mục Design Documents ở Hình 1 bị bỏ khỏi AGENTS.md ngày 04/07/2026, trong lần viết lại file này. Bản lúc 03/10 ghi bố cục repo, lệnh kiểm tra, quy ước code, ngưỡng coverage 100% và quy trình pull request [8].
Quyền tự sửa runtime từ tháng 7 tới tháng 9
Ngày 08/07/2026, repo có một RFC tên "The self-referential cordis toolset". Phần Problem viết rằng agent chạy bên trong runtime nhưng không nhìn thấy runtime, và không tự thêm được tool mới giữa phiên. RFC trao cho model ba tool: xem runtime, gắn plugin do chính model viết vào runtime, và gỡ plugin đó ra [9].

Hình 3. RFC ngày 08/07/2026, commit 68ebc76. Phần tô vàng là vấn đề và mục tiêu của RFC.
Theo cùng RFC đó, tính năng này mặc định tắt, phải bật trong file cấu hình. Sandbox node:vm chỉ cách ly biến toàn cục, nên plugin do model viết vẫn có quyền thật trên máy.
Một ngày trước khi DeepSeek công bố bản v0.1 [10], commit ngày 12/08 mở rộng cơ chế này. Plugin có thể có thêm phần chạy trong trình duyệt, tức là có giao diện, và mỗi lần model định nghĩa lại thì sinh một phiên bản mới thay vì sửa đè bản cũ [11]. Phần chạy trong trình duyệt phải chờ người dùng duyệt rồi mới chạy [12].
Agent Note ngày 16/09 bỏ hẳn tool định nghĩa plugin trong bộ nhớ và chuyển Creator sang Plugin Manager: agent viết package thành file, rồi cài như mọi bundle khác [1].

Hình 4. Agent Note "Creator mode installs persistent plugin bundles", mục Decision, tô vàng điều kiện duyệt khi gọi Plugin Manager.
Plugin do agent viết bền hơn trước. Định nghĩa cũ mất khi khởi động lại, còn bundle mới vẫn còn sau khi khởi động lại và áp cho mọi phiên dùng chung profile. Đổi lại, vì thay đổi profile có thể nạp code chạy với quyền của máy host, mỗi lần gọi Plugin Manager phải qua một bước duyệt, trừ khi phiên chạy ở sandbox danger-full-access. Khi đó agent tự cài mà không cần ai duyệt. Ở mức sandbox thấp hơn, chính sách ask khiến agent hỏi người dùng trước mỗi lần gọi Plugin Manager, kể cả khi chỉ đọc danh sách, còn never thì từ chối.
Lần agent sửa giao diện rồi kiểm sai chỗ
Postmortem số 0003 trong repo kể một phiên agent sửa theme cho chính giao diện web của dsh [13]. Sửa xong, agent bảo người dùng tự chạy một lệnh demo hoặc mở một ứng dụng web không rõ là cái nào. Lượt sau, nó chạy riêng dev server Vite ở cổng 5173, thấy HTTP 200 và báo xong, trong khi trang trắng vì thiếu window.__DSH_BOOT__, thứ chỉ host đầy đủ mới chèn vào. Lượt sau nữa, nó dựng thêm một server ở cổng 3334 rồi tự kiểm trên server đó. Người dùng lúc ấy đang xem cổng 3081, nơi theme mới đã hiện từ trước, và phải tự chỉ ra cả ba lỗi.

Hình 5. Postmortem 0003, mục Root cause, bản tại commit 5badb15.
Nguyên nhân DeepSeek ghi là model không nhìn thấy giao diện nơi nó đang chạy, URL của trang người dùng đang mở và chế độ chạy. Cách sửa: launcher đưa URL vào prompt và vào biến môi trường DSH_WEB_URL, chạy Vite riêng thì báo lỗi ngay, và có thêm test bắt đúng lỗi này. Trong danh sách sửa không có bước duyệt mới nào.
Postmortem cũng ghi rằng HTTP 200, build thành công và boot manifest là ba chuyện khác nhau, còn agent đã coi chúng như nhau.
Rủi ro và trách nhiệm
SAFETY.md của repo viết rằng dsh chưa qua audit bảo mật, chạy code và lệnh do model sinh ra, có thể sửa hoặc xoá file và làm lộ credential trên máy chạy nó; người dùng tự chịu rủi ro [14].
Ngoài dsh, có nhóm đã cho model tự sinh cả harness. Các tác giả JIT-Agent (arXiv, 26/08/2026) train một model chuyên sinh harness theo từng task. Theo abstract, DeepSeek-V4-Flash dùng JIT-Agent vượt GPT-5.6 9,1 điểm trên DeepSearchQA và 4,3 điểm trên OdysseyBench [15]. Harness ở đó vẫn theo một giao thức bốn module cố định.
Mình vẫn tin hoàn toàn câu hôm 07/10, và coi repo này là giai đoạn chuyển tiếp.
Giả sử agent viết plan, viết code, tự cài plugin vào profile dùng chung của cả nhóm, còn bạn chỉ chọn giữa ask và full access. Khi một quyết định của agent sai, người chọn full access có phải người chịu trách nhiệm cho quyết định đó không?
Bình
Phụ lục: Citations (15)
- DeepSeek-AI. Agent Note: Creator mode installs persistent plugin bundles. GitHub. 2026-09-16. Creator dùng plugin_manager: agent viết package và patch YAML rồi cài bằng install_bundle; bundle UI gồm Host entry và Client artifact. Mỗi lần gọi cần danger-full-access hoặc được duyệt; phiên full access không cần duyệt thêm. Bundle áp cho mọi phiên của profile và còn sau khi khởi động lại.
- DeepSeek-AI. Web Client Slots. GitHub. 2026-10-03. Plugin đóng góp giao diện qua ctx.slots.register; đăng ký vào slot chưa khai báo thì lỗi lúc kích hoạt; gỡ một entry thì các slot con của nó sập theo.
- Yifan Shi, Wei Zhang, Tianyi Cui. A Programming Paradigm for Spatiotemporal Composability. arXiv. 2026-08. Paper mô tả Cordis, framework nền của dsh: effect được hoàn tác khi gỡ thành phần (temporal composability), và quản lý phụ thuộc giữa các thành phần. Tác giả thuộc Đại học Bắc Kinh và DeepSeek-AI.
- Tianyi Cui. AGENTS.md tại commit 804eede (10/06/2026). GitHub. 2026-06-10. Commit thứ hai của repo, thêm mục Design Documents trỏ tới tài liệu phân tích yêu cầu MVP và tài liệu kiến trúc microkernel trên Feishu. Hai tài liệu đó không công khai.
- DeepSeek-AI. Lịch sử commit của deepseek-ai/deepseek-harness tới bản 0.2.1-alpha.1. GitHub. 2026-10-03. Đếm bằng git log: 20.736 commit từ 10/06 tới 03/10/2026, trong đó 8.267 merge commit; 74 tên tác giả; 1.933 pull request được merge, 238 từ nhánh codex/. Trường tác giả gần như chỉ ghi tên người (có dependabot và một tài khoản dsh-agent với 3 commit), không cho biết dòng nào do agent viết.
- DeepSeek-AI. .agents/notes/AGENTS.md. GitHub. 2026-10-03. Định nghĩa Agent Note là RFC do agent viết. Tại commit này có 1.196 Agent Note bản tiếng Anh: 227 implemented, 37 proposed, 8 rejected, 924 archived.
- DeepSeek-AI. .agents/notes/README.md. GitHub. 2026-10-03. Vòng đời của Agent Note: proposed là đề xuất được review trước khi triển khai, implemented là quyết định đã ship. File không ghi ai là người review.
- DeepSeek-AI. AGENTS.md tại bản 0.2.1-alpha.1. GitHub. 2026-10-03. Bản hướng dẫn cho agent ở gốc repo: bố cục repo, lệnh kiểm tra, quy ước code, ngưỡng coverage 100% cho packages/*/*/src, quy trình pull request, luật viết tài liệu. Mục Design Documents bị bỏ ở commit 7702a33 ngày 04/07/2026.
- DeepSeek-AI. RFC: The self-referential cordis toolset. GitHub. 2026-07-08. Bản đầu tiên, commit 68ebc76. Cho model ba tool để xem runtime, gắn plugin do model viết vào runtime và gỡ ra. Tính năng mặc định tắt, phải bật trong cordis.yml; vm chỉ cách ly biến toàn cục.
- GIGAZINE. DeepSeek has released DeepSeek Harness v0.1, an AI agent harness. GIGAZINE. 2026-08-14. Ngày công bố bản developer preview v0.1 theo bài đăng X của DeepSeek, 13/08/2026.
- imccyu. feat(self-modification): add dynamic Cordis plugin runtime and UI. GitHub. 2026-08-12. Thêm cordis_define và cordis_run: plugin có phần Host, phần Client chạy trong trình duyệt, hoặc cả hai; mỗi lần define tạo một phiên bản bất biến.
- DeepSeek-AI. @deepseek-ai/dsh-cordis-host-runner README tại commit 4064198. GitHub. 2026-08-12. Bản 12/08/2026. Plugin có phần chạy trong trình duyệt thì lệnh run treo lại cho tới khi một người cho phép hoặc từ chối; định nghĩa động mất khi khởi động lại.
- DeepSeek-AI. Post-mortem 0003: Web agent validated a replacement server instead of its current GUI. GitHub. 2026-10-03. Agent sửa giao diện dsh nhưng kiểm bằng một server mới ở cổng 3334 trong khi người dùng xem cổng 3081. Nguyên nhân ghi trong postmortem: model không thấy được giao diện hiện tại, URL của trang và chế độ chạy.
- DeepSeek-AI. SAFETY.md. GitHub. 2026-10-03. Dự án chưa qua audit bảo mật, chạy code và lệnh do model sinh, có thể sửa hoặc xoá file và làm lộ credential trên máy host.
- Guibin Zhang, Leo Lu và 16 tác giả khác. JIT-Agent: Scaling Harness Intelligence via Just-in-Time Harness Evolution. arXiv. 2026-08-26. Model được train để sinh harness theo từng task, theo một giao thức bốn module cố định. Theo abstract, DeepSeek-V4-Flash dùng JIT-Agent vượt GPT-5.6 9,1 điểm trên DeepSearchQA và 4,3 điểm trên OdysseyBench.