>_

Bắt đầu

Ba bước, từ máy trắng tới portal đang chạy. Không có bước "khởi động daemon" riêng — lệnh nào cần daemon thì tự dựng một cái.

Bước 1: Máy cần gì

ThứBắt buộc?Vì sao
Windows 10 1809+ x64
hoặc Ubuntu Desktop 22.04 / 24.04 x86-64
Cóphiên agent chạy trên ConPTY hoặc PTY Linux
Agent CLI trên PATHCó claude, codex hoặc opencode — thứ thật sự viết ra câu trả lời. Thiếu thì portal vẫn lên nhưng spawn sẽ thất bại.
Git 2.5+Cho fan-out mỗi agent cần một git worktree riêng

Bước 2: Cài

Tải cho Windows. Nhấp đúp file agentdc-windows-amd64.exe vừa tải.

  1. Nếu SmartScreen hiện ra, bấm More info → Run anyway — binary chưa ký số.
  2. Binary tự cài vào %LOCALAPPDATA%\Programs\AgentDC\agentdc.exe, tạo AgentDC trên Desktop và một App trong Start/Search.
  3. Một Terminal duy nhất hiện ra và ở lại khi app chạy. Đóng cửa sổ hoặc nhấn Ctrl+C là dừng AgentDC.

Về sau, Desktop hoặc Start chạy thẳng app ở đường dẫn chuẩn. File trong Downloads chỉ dùng cho lần cài đầu tiên và có thể xoá sau khi AgentDC đã mở thành công.

Linux x64: tải binary thô, cấp quyền chạy rồi mở nó:

$ curl -fL https://agentdc.nqdiepoii.com/download/linux-amd64/agentdc-linux-amd64 -o agentdc
chmod +x agentdc
./agentdc

Lần chạy đầu tự cài vào ~/.local/bin/agentdc, ghi desktop entry dưới ${XDG_DATA_HOME:-~/.local/share}/applications, mở một Terminal nhìn thấy được và portal trong trình duyệt. Agent CLI có sẵn trên PATH được dùng lại; máy mới có thể cài Claude Code, Codex hoặc OpenCode trong mục Agents.

Zalo dùng được trên Windows và Linux x64. Linux không hỗ trợ server/systemd, ARM hoặc cài qua package manager; phạm vi đã kiểm là Ubuntu Desktop 22.04 / 24.04 x86-64.

PowerShell là lựa chọn phụ khi cần cài tự động hoặc cài trên máy không có giao diện. Mở PowerShell (bản đi kèm Windows là đủ) và dán:

# cài, và cũng là lệnh cập nhật
$ irm https://…/install.ps1 | iex

Script tạo cùng app ở đường dẫn chuẩn, cùng lối tắt Windows trên Desktop và Start/Search, rồi mở một Terminal nhìn thấy được. Chạy lại lệnh chỉ thay mã ứng dụng; daemon hiện tại và các phiên đang sống vẫn được giữ nguyên.

Dữ liệu nằm riêng trong AGENTDC_HOME và không bao giờ nằm trong gói tải. Binary cài đặt hay cập nhật không chép, xoá hoặc đặt lại dữ liệu đó.

# cài app và lối tắt nhưng chưa mở AgentDC
$ & ([scriptblock]::Create((irm https://…/install.ps1))) -NoStart

Bước 3: Khám máy

Bản cài AgentDC không sửa PATH. Các ví dụ trong tài liệu dùng alias agentdc; đặt alias một lần cho phiên PowerShell hiện tại trước khi chạy:

$ $AgentDC = "$env:LOCALAPPDATA\Programs\AgentDC\agentdc.exe"
$ Set-Alias -Name agentdc -Value $AgentDC

$ agentdc doctor

[ok]   windows        build 26200 >= 17763
[ok]   agent binary   claude
[ok]   git            2.51.0
[ok]   config         C:\Users\you\AppData\Local\agentdc
[--]   daemon         not running (the CLI starts one on demand)

doctor kiểm 9 hàng: build Windows, agent CLI, git, config, quyền ghi, kho tri thức, daemon, home claim, database. Hàng nào FAIL thì các hàng sau vẫn chạy — trừ config, vì mọi thứ sau nó đều cần config.

[i] doctor không chỉ đọc: nó tạo thư mục config, token và database nếu chưa có. Chạy nó trên máy trắng là cách nhanh nhất để dựng sẵn mọi thứ.
>_

Cấu hình

Hai biến quyết định tất cả

Cả hai đều tuỳ chọn:

AGENTDC_HOME config, database, token, log. Mặc định %LOCALAPPDATA%\agentdc trên Windows hoặc ~/.config/agentdc trên Linux
AGENTDC_PORTmặc định 8770

Một daemon cho một AGENTDC_HOME. Muốn chạy con thứ hai thì đổi AGENTDC_HOME, không phải chỉ đổi cổng — đổi mỗi cổng thì nó từ chối và nói thẳng lý do.

[!] Đừng trỏ AGENTDC_HOME vào thư mục được OneDrive/Dropbox đồng bộ. SQLite đang mở trong đó sẽ hỏng.

Ba loại log, ba chỗ

daemon.logdaemon: định tuyến, việc nền, lỗi
logs\<sid>.log terminal của một cuộc chat — có mã màu ANSI, đừng mở bằng Notepad
update-apply.log lần tự cập nhật gần nhất. Đọc đây khi app không lên lại sau cập nhật

Tất cả nằm trong <AGENTDC_HOME>.

>_

Portal

$ agentdc portal
portal: http://127.0.0.1:8770/?k=…

Lệnh này làm ba việc: dựng daemon ở nền nếu chưa có, đúc một khoá dùng-một-lần, và mở trình duyệt vào portal.

agentdc app là lệnh CLI tương đương để mở phiên app có Terminal nhìn thấy được. Lối tắt Desktop, Start/Search và file tải về khi nhấp đúp đều chạy AgentDC không truyền đối số.

[!] Mở thẳng http://127.0.0.1:8770/ sẽ trả 401 — và đó không phải lỗi. Portal nằm sau một cookie phiên, còn agentdc portal là thứ đúc ra nó. Phiên chỉ nằm trong RAM, nên khởi động lại daemon là mất phiên: chạy lại agentdc portal.

Máy chuyên dụng một người dùng: đặt AGENTDC_PORTAL_OPEN=1 trước khi chạy daemon để bỏ yêu cầu cookie. Kiểm Origin, allowlist route và header vẫn giữ.

Dự án và cuộc chat

  1. Sidebar → + Thêm dự án → trỏ vào một thư mục làm việc.
  2. Sidebar → + Thêm cuộc chat → chọn dự án + agent.

Dự án là ngữ cảnh làm việc: agent sinh ra trong dự án nào thì chạy với thư mục đó làm cwd. Bộ nhớ dài hạn gắn theo dự án, không theo cuộc chat — hai cuộc chat cùng dự án dùng chung một cây trụ cột.

Làm được cả từ CLI:

# thêm dự án rồi mở một phiên agent trong đó
$ agentdc project add myapp C:\code\myapp
$ agentdc spawn myapp

# gửi prompt và xem output tới khi agent rảnh
$ agentdc send <sid> "đọc README rồi nói nó làm gì"

Chế độ an toàn

Trong hộp thoại mở chat có một công tắc Chế độ an toàn: agent chạy ở chế độ thường, không có cờ bỏ hỏi-quyền, và daemon nối thêm một system prompt nói rõ giới hạn ngay từ byte đầu. Bật nó cho cuộc chat nào sẽ đứng trước người ngoài.

Phiên sống bền

Agent chạy trong ConPTY do daemon giữ, không phải terminal của bạn. Đóng terminal chỉ dùng cho CLI/attach, đóng tab portal, đăng xuất — phiên vẫn sống và vẫn ghi transcript. Đừng nhầm nó với Terminal AgentDC do shortcut mở: cửa sổ đó giữ daemon, nên đóng nó hoặc nhấn Ctrl+C sẽ tắt AgentDC và các phiên đang sống.

# nối terminal này vào một phiên đang sống; Ctrl-] để rời ra
$ agentdc attach <sid>

# hoặc chỉ xem lại transcript
$ agentdc logs <sid>
>_

Fan-out

Một prompt, N agent, N git worktree riêng — rồi so kết quả cạnh nhau và tự chọn bản để lấy.

$ agentdc fanout myapp --n 3 "thêm test cho parser"
run 7f3a: 3 worktrees branched from commit 1c9de2f
3/3 agents completed

# so ba bản cạnh nhau
$ agentdc fanout diff 7f3a

# xem patch đầy đủ của bản số 2
$ agentdc fanout diff 7f3a 2

# dọn worktree, branch và bản ghi
$ agentdc fanout clean 7f3a

--n nhận từ 2 đến 8. Dự án phải là một git repo đã có commit — hai điều kiện đó bị từ chối ngay ở client, với hai câu lỗi khác nhau.

[i] Cột NEW trong fanout diff đếm file chưa track. Agent thường không commit, nên nếu chỉ đọc git diff thì mọi số đều là 0 và bảng trông như chẳng ai làm gì.
[i] agentdc không chấm điểm hộ — có chủ đích. Nó đưa bạn bảng so sánh và ba lệnh git để lấy attempt bạn chọn; việc chọn là của bạn.
>_

Tham chiếu CLI

Portal là giao diện chính; CLI là cho việc script hoá và cho lúc portal không lên. Mọi lệnh đều có --help.

Các lệnh bên dưới dùng alias của phiên PowerShell, vì AgentDC không được thêm vào PATH:

$ $AgentDC = "$env:LOCALAPPDATA\Programs\AgentDC\agentdc.exe"
$ Set-Alias -Name agentdc -Value $AgentDC

Alias chỉ tồn tại trong cửa sổ PowerShell hiện tại; mọi ví dụ agentdc … sau đây đều gọi executable ở đường dẫn chuẩn.

attachnối terminal này vào một phiên đang sống (thoát: Ctrl-])
appmở AgentDC như app có cửa sổ giữ phiên; đóng cửa sổ là tắt daemon
completionsinh script tự hoàn thành cho shell
daemonchạy daemon ở tiền cảnh
doctorkhám môi trường agentdc phụ thuộc vào
fanoutsinh N agent cùng một prompt, mỗi agent một git worktree
kbKnowledge Base: đề xuất và đọc trang tri thức
licensesin giấy phép bên thứ ba nhúng trong binary
logsxem transcript của một phiên
lsliệt kê phiên
portalmở portal trong trình duyệt
projectquản lý dự án
rmdừng phiên và xoá bản ghi (transcript được giữ)
sendgửi prompt và stream output tới khi agent rảnh
spawnsinh một phiên agent trong một dự án
statustrạng thái daemon (không tự dựng daemon)
stopdừng một phiên (tử tế trước, rồi kill)
viewhiện một file trong trình xem của portal
[i] Mọi lệnh trừ status, doctor, --version và completion đều tự dựng daemon nếu chưa có. status cố ý không — một lệnh để hỏi "daemon còn chạy không" mà tự khởi động daemon thì không trả lời được câu đó.

Định dạng máy đọc

$ agentdc ls --json | ConvertFrom-Json
$ agentdc status --json

ls, status, fanout list và fanout diff đều nhận --json. Danh sách rỗng trả về [], không bao giờ null.

>_

MCP cho Agents

Một endpoint AgentDC cho mọi MCP client tương thích. Codex, Claude Code và OpenCode là ba cấu hình hiện có dưới đây; agent mới dùng lại cùng hợp đồng này.

AgentDC phải đang chạy trong Terminal để agent kết nối tới http://127.0.0.1:8770/mcp. MCP dùng cùng daemon, dự án, phiên và bộ nhớ với portal; nó không mở thêm app và không gửi một prompt khởi đầu vào phiên.

[i] Lấy token tại %LOCALAPPDATA%\agentdc\token, hoặc <AGENTDC_HOME>\token nếu đã đổi thư mục dữ liệu. Đây là khoá quản trị cục bộ: không commit, không gửi cho người khác và chỉ kết nối qua 127.0.0.1.

Codex

Thêm server sau vào ~/.codex/config.toml, rồi mở lại Codex:

[mcp_servers.agentdc]
url = "http://127.0.0.1:8770/mcp"
http_headers = { Authorization = "Bearer <TOKEN>" }
tool_timeout_sec = 1200

Claude Code

Đăng ký ở scope người dùng để AgentDC có mặt trong mọi dự án:

$ claude mcp add --transport http --scope user agentdc http://127.0.0.1:8770/mcp --header "Authorization: Bearer <TOKEN>"
$ claude mcp get agentdc

OpenCode 1.x

Thêm server từ xa vào cấu hình OpenCode đang dùng, rồi mở lại OpenCode:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "agentdc": {
      "type": "remote",
      "url": "http://127.0.0.1:8770/mcp",
      "enabled": true,
      "oauth": false,
      "headers": {
        "Authorization": "Bearer <TOKEN>"
      }
    }
  }
}

Công cụ

statusđọc trạng thái daemon, bản hiện tại và bản cập nhật
list_agentskhám phá profile agent hiện có và trạng thái cài, bật, resume
list_projectsliệt kê dự án AgentDC đang quản lý
list_sessionsliệt kê phiên, có thể lọc theo dự án
spawn_sessiontạo phiên bằng ID profile do list_agents trả về
prompt_sessiongửi prompt và nhận output UTF-8 đã làm sạch
stop_sessiondừng đúng một phiên khi người dùng yêu cầu
search_memorytra bộ nhớ dài hạn trong đúng một dự án
record_memoryghi một quyết định vào nhánh bộ nhớ có sẵn
update_statusđọc tiến trình tải và cài bản mới

Ba công cụ liệt kê nhận cursor/limit và trả next_cursor; search_memory dùng before/next_before. Toàn bộ kết quả gửi trên wire, gồm cả text fallback cho MCP client cũ, được giới hạn ở 256 KiB và báo truncated; số project, session hay agent tăng lên vẫn không làm tràn ngữ cảnh của client.

MCP chỉ cung cấp các thao tác được kiểm soát ở trên. Xoá dự án, xoá lịch sử, tắt daemon và áp dụng cập nhật vẫn cần người dùng thực hiện trực tiếp trong AgentDC.

>_

Tự cập nhật

Daemon kiểm bản mới ngay khi khởi động, sau đó mỗi một phút. Có bản mới thì một dải đỏ hiện ở đỉnh portal; bấm vào đó sẽ mở hộp tiến trình với ghi chú bản vá, phần trăm và số byte tải thật, bước kiểm sha256 và trạng thái cài đặt.

Terminal AgentDC vẫn là dòng trạng thái liên tục: nó in lần kiểm phiên bản, ghi chú bản vá, các mốc tải, bước kiểm tra, thay bản, lỗi nếu có và lúc bản mới đã sẵn sàng để dùng.

Cập nhật chỉ thay mã ứng dụng: AgentDC tải nguyên binary phát hành mới, không chép nối vài MB vào binary cũ. Bản đang chạy được đổi tên tạm thành agentdc.exe.old, bản mới nhận tên agentdc.exe. Daemon hiện tại vẫn chạy từ bản .old, nên mọi phiên agent tiếp tục nguyên trạng; lần mở app kế tiếp dùng bản mới và tự dọn bản .old.

Database, cấu hình, lịch sử và toàn bộ AGENTDC_HOME vẫn được dùng tại chỗ, không bị sao chép theo binary và không bao giờ nằm trong gói tải. Chỉ dung lượng tệp chương trình tạm tăng gần gấp đôi trong khoảng từ lúc cài tới lần mở app kế tiếp.

[i] Terminal này sở hữu vòng đời app. Đóng nó hoặc nhấn Ctrl+C là tắt AgentDC. Trong lúc đang tải, nên đợi Terminal báo đã cài xong rồi mới ngắt.
[i] Cập nhật không dừng phiên đang sống và không tự restart. Hộp thoại xác nhận nói rõ số phiên được giữ nguyên. Bạn chủ động đóng và mở lại AgentDC khi thuận tiện để dùng bản mới. Nếu máy chủ có thêm bản phát hành trong lúc đó, AgentDC sẽ đợi lần mở lại này rồi mới mời cài tiếp, vì tệp .old vẫn đang được daemon hiện tại sử dụng.

Kích hoạt bản mới

Sau khi Terminal báo đã cài, tiếp tục dùng các phiên hiện tại bình thường. Khi thuận tiện, đóng Terminal rồi mở AgentDC từ shortcut. Có thể chạy thẳng app chuẩn bằng PowerShell:

$ & "$env:LOCALAPPDATA\Programs\AgentDC\agentdc.exe"

Chi tiết lần cập nhật nằm ở <AGENTDC_HOME>\update-apply.log; lỗi khởi động và trạng thái chạy nằm ở <AGENTDC_HOME>\daemon.log. Mặc định <AGENTDC_HOME> là %LOCALAPPDATA%\agentdc.

Tắt việc kiểm

AGENTDC_NO_UPDATE_CHECK=1 tắt hẳn. Chỉ nhận đúng chuỗi 1
AGENTDC_UPDATE_URL trỏ sang một mirror khác

Bản go build tự dựng không có kênh cập nhật và không gọi ra mạng — dải cập nhật sẽ không hiện.

>_

Hỏng thì nhìn đâu

Mở 127.0.0.1:8770 ra 401 chưa agentdc portal, hoặc phiên portal đã hết hạn
Route mới 404 nhưng /status 200 exe cũ — daemon đang chạy là bản trước
spawn thất bại Claude Code, Codex hoặc OpenCode không có trên PATH. Chạy agentdc doctor
fanout từ chối dự án không phải git repo, hoặc chưa có commit nào
Phiên hiện orphaned daemon trước chết mà không dọn. Bản ghi còn, tiến trình thì không
Cập nhật xong app không lên chạy lại AgentDC bằng lệnh ở mục Kích hoạt bản mới; đọc <AGENTDC_HOME>\update-apply.log và daemon.log
Cập nhật báo không ghi được kiểm tra antivirus và quyền ghi vào %LOCALAPPDATA%\Programs\AgentDC; có thể nhấp đúp bản tải mới để app tự sửa bản ở đường dẫn chuẩn
[i] agentdc doctor trả lời được phần lớn bảng trên. Chạy nó trước khi đi tìm trong log.
>_

Có gì mới

Đang tải lịch sử phiên bản…