Toi von la nguoi kha tiet kiem. Ngay tu khi con nho choi Warcraft III, toi da rat ghe viec de mat chi mot paladin. Hoa ra thoi quen do da theo toi den ca viec lap trinh voi AI. Chi co dieu bay gio thu toi tiet kiem la token.
Moi khi dat mot cau hoi don gian ve repository va thay harness nhu Claude Code hay Codex bat dau grep qua nua codebase, toi gan nhu co the ngui thay token dang bi dot. Cam giac con te hon khi Claude Code quyet dinh phai decompile ca cac goi NuGet. Do thuong la luc toi bam huy.
De giam van de nay, toi co gang cung cap that nhieu context truoc khi bat dau tac vu. Them cac duong dan tep ma toi nghi LLM se can vao prompt da tro thanh viec lam hang ngay. Nhung cach nay rat met moi, vi vay toi quyet dinh thu mot huong moi: cac cong cu tri tue code.
Mục lục
Tri tue code
Y tuong ve tri tue code kha don gian. Ban cung cap cho harness mot ban do cua codebase, gom cac class, method va moi quan he giua chung. Khi dat cau hoi, LLM da co san mot diem xuat phat tot.
Visual Studio cua toi da lam dieu nay trong nhieu nam. Toi co the nhay den dinh nghia, tim moi noi tham chieu hoac xem method duoc goi tu dau gan nhu tuc thi. Vay tai sao harness lap trinh lai khong nhan duoc su tro giup tuong tu?
No hoat dong the nao?
Cac cong cu tri tue code phan tich source code de nhan dien thanh phan va moi quan he giua chung, sau do bien thong tin do thanh du lieu co the truy van. Thong thuong, mot MCP server se cung cap kha nang nay de harness LLM nhu Codex hay Claude Code co the goi trong luc lam viec.
Khi bat dau tim kiem cac MCP server loai nay, ban se nhanh chong nhan ra co rat nhieu cach tiep can: do thi code luu lau dai, tich hop voi language server, cac tep MD, ban do repository va cac cong cu phoi hop voi MCP.
Cam giac nay giong mot dot bung no Cambrian nua cua linh vuc tri tue code. Van de la cum tu “hieu codebase cua ban” co the mang rat nhieu y nghia. Toi da thu mot vai cong cu va chung thuong gap cac kho khan khac nhau. Mot so cong cu gap van de voi repository co kich thuoc trung binh cua toi, thậm chi sau hon 30 phut van chua lien ket xong. Mot so chi tot hon “grep” mot chut, va nhieu du an moi chi duoc cap nhat trong vai tuan.
Codebase Memory MCP
Codebase Memory MCP tu mo ta la mot bo may tri tue code chay cuc bo, xay dung mot do thi tri thuc luu lau dai cua codebase va cung cap do thi do cho harness lap trinh thong qua MCP. Quy trinh cua no dung Tree-sitter de phan tich, trong do co ho tro C#. “Cuc bo” co nghia la moi thao tac deu dien ra tren may cua ban, va ban co the lap chi muc codebase truc tiep tu dong lenh.
Day cung la mot du an da ton tai khoang tam thang va thu hut gan 42.000 luot danh dau sao. So voi cac lua chon khac, no co ve dang nhan duoc kha nhieu su quan tam.
Kien truc ket noi voi nhau ra sao?
Hay xem xet ky thuat hon mot chut. Quy trinh phan tich, luu tru va su dung mo hinh codebase kha ro rang:
Tree-sitter nhan dien cac cau truc code nhu class, method, import va lenh goi. Voi customer.Save(), no tim ra doi tuong nhan la customer va method la Save.
Lop Hybrid LSP cua Codebase Memory sau do xac dinh loi goi do tham chieu den khai bao nao. Bo phan lap chi muc su dung kha nang phan giai kieu rieng cho tung ngon ngu. Ho tro C# phu thuoc vao cac tinh nang va thu vien ma du an dang dung. Ket qua tao thanh mot do thi: symbol tro thanh node, con cac quan he nhu lenh goi va import tro thanh edge.
Do thi tri thuc, duoc SQLite lam nen tang, luu toan bo thong tin vao co so du lieu SQLite.
MCP Server cho phep Claude Code, Codex hoac harness ma ban yeu thich tim symbol, lan theo cac lenh goi va lay phan source code lien quan.
Cach lap chi muc
Ban co the lap chi muc cho repository bang cach chay lenh CLI. Codebase Memory cung ho tro lap chi muc truc tiep thong qua harness lap trinh. Thuc te, su dung Claude Code hoac Codex la cach duoc khuyen nghi.
Chi can yeu cau harness “Index this project” va hy vong no chon dung cong cu MCP. Neu dang ket noi nhieu cong cu tri tue code, ban co the phai ghi ro ten server Codebase Memory. Cach khac la dung CLI:
codebase-memory-mcp<br>cli<br>index_repository<br>--repo-path <path><br>--mode fast<br>--persistence true
Du dung cach nao, moi thao tac van dien ra cuc bo tren may cua ban.
Harness thuc su nhan duoc gi?
Sau khi repository duoc lap chi muc, harness co mot bo cong cu de dieu huong va hieu codebase. No co the tim symbol va xac dinh symbol do thuoc project nao, lan theo cac quan he dau vao de tim cac noi goi, theo cac lenh goi dau ra, sau do doc source code phia sau nhung thanh phan lien quan den thay doi de xuat.
Cac cong cu nay phu hop tu nhien voi nhung cau hoi toi thuong dat ra ve code. Trong do co search_graph de tim symbol, trace_path de theo cac moi quan he va get_code_snippet de harness xem phan cai dat thuc te.
De co cai nhin rong hon, get_architecture tom tat codebase. Con query_graph ho tro cac cau hoi cu the hon ve moi quan he bang cac truy van tuong tu Cypher.
Danh sach day du co trong tai lieu MCP tools.
Vi sao AGENTS.md va CLAUDE.md quan trong?
Van de la moi thu chi co ich khi Codex hoac Claude Code thuc su su dung cac cong cu nay. Neu muon harness dua vao do thi da lap chi muc thay vi quay lai cach tim kiem code thong thuong, ban can quy dinh ro hon ve thoi diem va cach su dung.
Ban dau toi chi viet mot chi dan kha yeu, dai lo nhu “uu tien Codebase Memory”, nhung cach nay khong lam thay doi hanh vi cua harness mot cach on dinh. Hieu qua hon la viet ro rang:
“Neu khong chac Codebase Memory co huu ich hay khong, hay thu Codebase Memory truoc.”
Toi dat nhung chi dan nhu vay trong AGENTS.md hoac CLAUDE.md.
AGENTS.md va CLAUDE.md la cac tep Markdown trong repository, dung de cung cap context cua project va chi dan cho harness lap trinh. Toi xem chung nhu noi ghi lai cach minh muon harness lam viec, de khong phai lap lai moi lan bat dau mot phien moi.
Hay nho rang LLM khong mang tinh xac dinh. Vi vay, can theo doi cac cong cu ma harness thuc su chon de xem LLM co lam dung theo chi dan hay khong.
Lam viec theo nhom
Ban dau toi cho rang chi muc la du lieu rieng, giong bo nho dem IntelliSense cua Visual Studio. Theo mac dinh, Codebase Memory luu co so du lieu SQLite tren may cuc bo, vi vay moi lap trinh vien tu xay dung chi muc rieng.
Tuy nhien, index_repository co tuy chon persistence de luu chi muc tai .codebase-memory/graph.db.zst. Dieu nay co nghia la ban co the commit chi muc va chia se voi ca nhom.
Toi khong tin day la y tuong tot. Chi muc co the loi thoi ngay khi code thay doi, lai duoc luu trong Git duoi dang tep nhi phan khong the doc truc tiep, con viec giai quyet xung dot khi merge thi rat kho.
Van de tuong tu cung ap dung cho manage_adr. Cong cu nay cho phep harness luu kien thuc kien truc khong the suy ra chi tu code. Du co ten ADR, thong tin nay khong nam trong mot tep Markdown cua repository ma duoc luu trong co so du lieu SQLite cuc bo.
Vi vay, chia se ADR cung dong nghia voi viec chia se graph.db.zst, kem theo cac nhược diem tuong tu. Voi kien thuc kien truc can song cung code va duoc ca nhom chia se, toi thich dat no trong AGENTS.md hoac mot tep Markdown thong thuong hon.
Hybrid LSP co gioi han
Vi Codebase Memory dung cach tiep can Hybrid LSP thay vi bo phan tich dua tren Roslyn, toi da thu nghiem mot vai tinh nang C# moi. O phien ban moi nhat, mot method duoc khai bao trong khoi extension cua C# 14 khong xuat hien trong do thi sau khi lap chi muc. Toi da bao cao van de nay.
Day co the la he qua cua cach phan tich ket hop thay vi mo hinh ngu nghia day du cua Roslyn. Trong bai thu, cong cu khong ghi nhan duoc cau truc C# moi nay. Vi vay, can than trong khi cho rang cong cu co the bao phu day du moi tinh nang ngon ngu gan day.
Cac quan he giua nhieu repository
Mot gioi han khac la thieu cross-repository edges, tuc cac moi quan he giua cac thanh phan code nam trong nhung repository khac nhau. Vi du kinh dien la lenh goi HTTP giua cac microservice.
Codebase Memory tuyen bo co the noi mot lenh goi HTTP trong repository nay voi route tuong ung trong repository khac va tao edge giua chung trong do thi.
Tuy nhien, khi thu voi vi du C# sau, Codebase Memory khong phat hien duoc moi quan he nay:
// API project<br>app.MapGet("/customers/{id}", (int id) => Results.Ok(new<br>{<br>Id = id,<br>Name = $"Customer {id}"<br>}));<br><br>// Client project trong mot repository khac<br>HttpClient.GetAsync("http://localhost:5000/customers/42")
Phia API hoat dong nhu mong doi: MapGet tao ra node Route cho GET /customers/{id}. Tuy nhien, phia client khong duoc dai dien trong do thi. Lenh GetAsync("http://localhost:5000/customers/42") khong tao ra node hay moi quan he tuong ung.
De thu them, toi viet cung logic bang JavaScript:
fetch('http://localhost:5000/customers/42')
Lan nay bo trich xuat di xa hon mot chut. No nhan dien fetch va tao ra quan he Function -HTTP_CALLS-> Route voi URL chinh xac.
Ho tro nhieu harness
Codebase Memory ho tro nhieu harness, tich hop voi 45 cong cu, trong do co Claude Code, Codex CLI, Gemini CLI, Cursor, Windsurf, OpenCode va nhieu cong cu khac.
Trinh cai dat co the phat hien moi truong duoc ho tro va cau hinh ket noi MCP, chi dan luu lau dai, ky nang va ho so harness, dong thoi giu nguyen thay doi cua nguoi dung va ton trong kha nang da duoc tai lieu hoa cua tung client.
It hon 120 lan token?
Codebase Memory tuyen bo cach tiep can dua tren do thi co the dung it hon toi da 120 lan token so voi viec dieu huong codebase ma khong co MCP server.
Dieu nay co the dung voi cac tac vu phuc tap, lien quan den nhieu symbol va moi quan he. Tuy nhien, toi khong thay muc cai thien do trong moi truong hop.
Trong mot bai thu don gian, khi yeu cau harness tim mot class, su dung Codebase Memory tieu ton khoang gap doi token so voi cach tim kiem bang grep truc tiep.
Toi cung thu nhung prompt rong hon, nhu “cho toi thay tac dong cua thay doi nay tren toan bo codebase gom nhieu repository”. Toi ky vong cach tiep can dua tren do thi se co loi the ro hon. Tuy nhien, trong cac bai thu do, Codebase Memory van tieu ton nhieu token hon mot chut so voi cach co so.
Mat khac, sau nhieu tuan thu nghiem, toi khong thay Claude Code hay Codex phai decompile goi NuGet de lay thong tin dependency bi thieu.
Con cac lua chon khac?
Co mot so du an dang de so sanh theo cung nhung cau hoi thuc te. Trong qua trinh tim hieu cho bai viet nay, toi tap trung hon vao hai cong cu tri tue code khac.
GitNexus
GitNexus dang thu hut nhieu chu y, noi bat ca tren Product Hunt lan GitHub. Ban dau toi dinh viet rieng ve cong cu nay, nhung vi no chi mien phi cho muc dich phi thuong mai, toi quyet dinh tap trung vao Codebase Memory.
Ve mat y tuong, GitNexus cung thuoc nhom voi Codebase Memory va Grafel. No lap chi muc repository, bien code thanh do thi gom cac symbol va moi quan he, sau do cung cap cong cu MCP cho harness.
Khi chay cung bai thu voi khoi extension C# 14, GitNexus nhan dien duoc cu phap nhung khong the phan giai lenh goi den extension method tu mot method khac trong cung solution.
Toi cung lap lai bai thu API va client voi GitNexus. Cong cu nhan dien duoc endpoint API, nhung khong dai dien lenh goi tu client va khong tao moi quan he giua hai ben.
Toi khong do muc tieu thu token cua GitNexus tren codebase thuong mai lon hon, vi lam vay se vi pham giay phep phi thuong mai cua cong cu.
Grafel
Grafel la mot daemon do thi kien thuc code chay cuc bo. Ban dang ky mot hoac nhieu repository vao mot nhom, chay bo lap chi muc, sau do truy van do thi thong qua MCP server, CLI hoac bang dieu khien. Cong cu luu mot do thi cho moi repository va them mot lop phu cho cac moi quan he vuot qua ranh gioi repository.
Voi cu phap extension moi cua C# 14, Grafel cung khong nhan dien duoc extension method.
Sau do toi thu Grafel voi cung hai project cung cap va tieu thu. Cong cu nhan dien lenh goi HTTP, nhung do thi xuat ra khong co edge truc tiep noi client voi API, vi vay bai thu nay cung that bai.
Van de lon nhat toi gap o Grafel la kha nang mo rong. Tren mot codebase lon hon gom khoang 30 project va 600.000 dong code, giai doan linking khong bao gio hoan tat, vi vay toi khong the do muc tieu thu token.
Tuong NuGet
Sau khi xem xet cac gioi han tren, van con mot ranh gioi nua dang de thu: thu ma toi goi la “tuong NuGet”.
Bai thu rat don gian:
// provider solution<br>public static IServiceCollection AddMyCache(<br>this IServiceCollection services,<br>bool enableDistributedCache)<br>{<br>services.AddMemoryCache();<br>if (enableDistributedCache)<br>{<br>services.AddDistributedMemoryCache();<br>}<br>return services;<br>}<br><br>// consumer solution trong mot repository Git khac<br>services.AddMyCache(enableDistributedCache: true);
Method AddMyCache nam trong mot repository Git, duoc phan phoi duoi dang goi NuGet va duoc goi tu consumer.
Dang tiec la ca ba cong cu deu khong giai quyet duoc moi quan he nay tu dau den cuoi. Dieu do cung de hieu o mot muc do nhat dinh: khi code vuot qua ranh gioi NuGet, khong co mapping ro rang nao cho biet “goi nay den tu repository cu the nao”. Tuy vay, cac cong cu van co the su dung namespace va package reference de ho tro.
Codebase Memory MCP tim thay AddMyCache trong provider, nhung khong tao node lenh goi cua consumer va cung khong lan theo moi quan he giua cac repository.
GitNexus khong phan giai moi quan he cua method trong nhom cross-relationship (gnx-cross) va bao cao co khong lien ket contract.
Grafel gan den ket qua nhat. No tim thay ca method ben provider lan lenh goi ben consumer, sau do tao mot ung vien quan he yeu o cap module voi do tin cay 64 phan tram.
Cuoi cung, ca ba deu dung cung mot “tuong NuGet”, chi khac nhau o giai doan that bai: mot so khong dai dien duoc lenh goi ben consumer, trong khi so khac tim thay ca hai dau nhung khong the noi chung voi do tin cay can thiet.
Ket luan
Toi van chua tim thay dieu minh dang can: mot cong cu tri tue code co the dang tin cay lan theo codebase .NET qua nhieu repository va cac dependency NuGet.
Toi se tiep tuc thu nghiem Codebase Memory MCP, dac biet trong cac tac vu dieu huong noi bo repository. Tuy nhien, cac bai thu cho den nay van chua cho thay loi the du lon de toi biet cong cu nay co tro thanh mot phan lau dai trong bo cong cu cua minh hay khong.



