@mrtrinhvn/ag-kit 1.1.3 → 1.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -2
- package/bin/cli.js +53 -4
- package/package.json +3 -2
- package/template/.agent/knowledge/model-switching-vfs.md +22 -0
- package/template/.agent/skills/lazy-gravity/SKILL.md +23 -0
- package/template/.agent/skills/remoat-integration/SKILL.md +24 -0
- package/template/.agent/skills/telegram-agentic-gateway/SKILL.md +18 -11
- package/template/GEMINI.md +35 -0
package/README.md
CHANGED
|
@@ -4,8 +4,14 @@ A generic, institutional-grade AI programming framework for automating scaffoldi
|
|
|
4
4
|
|
|
5
5
|
## 📦 Quick Start
|
|
6
6
|
|
|
7
|
-
The best way to inject AG-Kit into any project is via `npx
|
|
7
|
+
The best way to inject AG-Kit into any project is via `npx`. Bạn có thể chạy trực tiếp để vào **Menu tương tác**:
|
|
8
8
|
|
|
9
|
+
```bash
|
|
10
|
+
# DASHBOARD - Menu chọn tất cả tác vụ (Khuyên dùng)
|
|
11
|
+
npx @mrtrinhvn/ag-kit@latest
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Hoặc chạy các lệnh đơn lẻ:
|
|
9
15
|
```bash
|
|
10
16
|
# 1. Khởi tạo bộ não (Inject .agent folder)
|
|
11
17
|
npx @mrtrinhvn/ag-kit@latest init
|
|
@@ -23,6 +29,7 @@ npx @mrtrinhvn/ag-kit@latest status
|
|
|
23
29
|
|
|
24
30
|
| Lệnh | Ý nghĩa | Chi tiết |
|
|
25
31
|
|---|---|---|
|
|
32
|
+
| `ag-kit` | **Dashboard** | (Không tham số) Mở menu chọn tương tác cực kỳ tiện lợi. |
|
|
26
33
|
| `ag-kit init` | **Khởi tạo** | Cài đặt tủy não `.agent` và tạo file `.env` mẫu. |
|
|
27
34
|
| `ag-kit check` | **Kiểm tra** | Quét cổng CDP (mặc định 9555), kiểm tra Ollama và AI Models. |
|
|
28
35
|
| `ag-kit update` | **Cập nhật** | Nâng cấp Agents/Skills/Workflows mới nhất mà không làm mất dữ liệu Ký ức. |
|
|
@@ -66,7 +73,8 @@ npx @mrtrinhvn/ag-kit@latest update
|
|
|
66
73
|
|
|
67
74
|
**1. Lỗi phiên bản không khớp (Version ghosting):**
|
|
68
75
|
Nếu `status` báo phiên bản cũ hơn bản trên NPM, đó là do cache của `npx` hoặc bạn đã cài global.
|
|
69
|
-
- Cách giải quyết: Luôn thêm `@latest` sau tên gói hoặc
|
|
76
|
+
- Cách giải quyết: Luôn thêm `@latest` sau tên gói (`npx @mrtrinhvn/ag-kit@latest`) hoặc cập nhật bộ não bằng lệnh `ag-kit update`.
|
|
77
|
+
- Giờ đây, các lệnh `init` và `status` sẽ tự động phát hiện và nhắc bạn chạy `update` nếu phát hiện lệch phiên bản.
|
|
70
78
|
|
|
71
79
|
**2. Lỗi EACCES (Quyền truy cập):**
|
|
72
80
|
Nếu cài global bị báo lỗi quyền, hãy dùng `npx` (Khuyên dùng) hoặc dùng `sudo`.
|
package/bin/cli.js
CHANGED
|
@@ -90,7 +90,18 @@ program.command('init')
|
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
} else {
|
|
93
|
-
console.log('\x1b[33m⚠️ Thư mục .agent đã tồn tại
|
|
93
|
+
console.log('\x1b[33m⚠️ Thư mục .agent đã tồn tại.\x1b[0m');
|
|
94
|
+
const vPath = path.join(TARGET_AGENT_DIR, '.version');
|
|
95
|
+
if (fs.existsSync(vPath)) {
|
|
96
|
+
const installedVersion = fs.readFileSync(vPath, 'utf-8').trim();
|
|
97
|
+
if (installedVersion !== pkg.version) {
|
|
98
|
+
console.log(`\x1b[35m👉 Phát hiện phiên bản cũ (v${installedVersion}). Hãy dùng lệnh "ag-kit update" để cập nhật lên v${pkg.version}.\x1b[0m`);
|
|
99
|
+
} else {
|
|
100
|
+
console.log('\x1b[34mℹ️ Bạn đang sử dụng phiên bản khớp với bộ công cụ (v${pkg.version}).\x1b[0m');
|
|
101
|
+
}
|
|
102
|
+
} else {
|
|
103
|
+
console.log('\x1b[35m👉 Hãy dùng lệnh "ag-kit update" để đồng bộ cấu trúc mới.\x1b[0m');
|
|
104
|
+
}
|
|
94
105
|
}
|
|
95
106
|
|
|
96
107
|
console.log('\x1b[35m\n🎉 Hoàn tất! Vui lòng copy luật GEMINI vào file GEMINI.md của dự án nếu chưa có.\x1b[0m');
|
|
@@ -127,6 +138,12 @@ program.command('check')
|
|
|
127
138
|
.action(async () => {
|
|
128
139
|
const { execSync } = require('child_process');
|
|
129
140
|
console.log('\x1b[36m🔍 Đang kiểm tra hệ sinh thái Antigravity...\x1b[0m');
|
|
141
|
+
|
|
142
|
+
if (!fs.existsSync(TARGET_AGENT_DIR)) {
|
|
143
|
+
console.log('\x1b[31m❌ Hệ thống chưa được khởi tạo. Thư mục .agent không tồn tại.\x1b[0m');
|
|
144
|
+
console.log('\x1b[35m👉 Hãy chạy "ag-kit init" trước khi thực hiện kiểm tra này.\x1b[0m');
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
130
147
|
|
|
131
148
|
// 1. Check .env
|
|
132
149
|
const envPath = path.join(process.cwd(), '.env');
|
|
@@ -203,8 +220,9 @@ program.command('status')
|
|
|
203
220
|
console.log(`📁 Đường dẫn : ${TARGET_AGENT_DIR}`);
|
|
204
221
|
|
|
205
222
|
const vPath = path.join(TARGET_AGENT_DIR, '.version');
|
|
223
|
+
let installedVersion = '0.0.0';
|
|
206
224
|
if (fs.existsSync(vPath)) {
|
|
207
|
-
|
|
225
|
+
installedVersion = fs.readFileSync(vPath, 'utf-8').trim();
|
|
208
226
|
console.log(`🧠 Bản cài đặt : v${installedVersion}`);
|
|
209
227
|
} else {
|
|
210
228
|
console.log(`🧠 Bản cài đặt : Không rõ (Legacy)`);
|
|
@@ -212,10 +230,41 @@ program.command('status')
|
|
|
212
230
|
|
|
213
231
|
console.log(`🏷 Bản Tool : v${pkg.version}`);
|
|
214
232
|
|
|
233
|
+
if (installedVersion !== pkg.version) {
|
|
234
|
+
console.log('\n\x1b[33m⚠️ CẢNH BÁO: Phiên bản bộ não (.agent) đang lệch với bộ công cụ (ag-kit)!\x1b[0m');
|
|
235
|
+
console.log(`\x1b[35m👉 Hãy chạy "ag-kit update" để đồng bộ ngay.\x1b[0m`);
|
|
236
|
+
}
|
|
237
|
+
|
|
215
238
|
} else {
|
|
216
|
-
console.log('\x1b[31m❌ Trạng thái : Chưa có g
|
|
239
|
+
console.log('\x1b[31m❌ Trạng thái : Chưa có gì.\x1b[0m');
|
|
240
|
+
console.log('\x1b[35m👉 Gõ "ag-kit init" để biến thư mục này thành một Agentic Workspace!\x1b[0m');
|
|
217
241
|
console.log(`🏷 Bản Tool : v${pkg.version}`);
|
|
218
242
|
}
|
|
219
243
|
});
|
|
220
244
|
|
|
221
|
-
|
|
245
|
+
|
|
246
|
+
if (process.argv.length <= 2) {
|
|
247
|
+
const inquirer = require('inquirer');
|
|
248
|
+
console.log('\x1b[35m\n🧠 ANTIGRAVITY KIT - BẢNG ĐIỀU KHIỂN TÁC VỤ\x1b[0m');
|
|
249
|
+
inquirer.prompt([
|
|
250
|
+
{
|
|
251
|
+
type: 'list',
|
|
252
|
+
name: 'action',
|
|
253
|
+
message: 'Chọn một tác vụ để thực hiện:',
|
|
254
|
+
choices: [
|
|
255
|
+
{ name: '🚀 Khởi tạo (init) - Cài đặt .agent', value: 'init' },
|
|
256
|
+
{ name: '🔄 Cập nhật (update) - Nâng cấp bộ não', value: 'update' },
|
|
257
|
+
{ name: '🔍 Kiểm tra (check) - Test môi trường', value: 'check' },
|
|
258
|
+
{ name: '📊 Trạng thái (status) - Xem version', value: 'status' },
|
|
259
|
+
new inquirer.Separator(),
|
|
260
|
+
{ name: '❌ Thoát', value: 'exit' }
|
|
261
|
+
]
|
|
262
|
+
}
|
|
263
|
+
]).then(answers => {
|
|
264
|
+
if (answers.action !== 'exit') {
|
|
265
|
+
program.parse([process.argv[0], process.argv[1], answers.action]);
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
} else {
|
|
269
|
+
program.parse(process.argv);
|
|
270
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mrtrinhvn/ag-kit",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.5",
|
|
4
4
|
"description": "Antigravity Kit Base Framework - Generic Agentic AI Programming Core",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"package.json"
|
|
30
30
|
],
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"commander": "^14.0.3"
|
|
32
|
+
"commander": "^14.0.3",
|
|
33
|
+
"inquirer": "^8.2.5"
|
|
33
34
|
}
|
|
34
35
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Tiết Kiệm Token & Quản Lý Mô Hình (Model & VFS Knowledge)
|
|
2
|
+
|
|
3
|
+
## 1. Cơ Chế Tiết Kiệm Token
|
|
4
|
+
Trong môi trường điều khiển từ xa (Telegram), việc tối ưu hóa token là cực kỳ quan trọng để duy trì hiệu suất và chi phí.
|
|
5
|
+
|
|
6
|
+
### VFS (Virtual File System)
|
|
7
|
+
- **Tác dụng**: Giảm 98% lượng token khi khám phá mã nguồn.
|
|
8
|
+
- **Cách hoạt động**: Thay vì đọc toàn bộ file, AI sử dụng công cụ `vfs` để chỉ lấy chữ ký (signatures) của hàm và lớp.
|
|
9
|
+
- **Quy tắc**: Phải luôn sử dụng `vfs` trước khi dùng `grep` hoặc đọc file đầy đủ. (Xem `GEMINI.md`).
|
|
10
|
+
|
|
11
|
+
## 2. Chiến Lược Lựa Chọn Mô Hình (Model Strategy)
|
|
12
|
+
Hệ thống sử dụng cơ chế "Phân tầng độ khó" để chọn model:
|
|
13
|
+
|
|
14
|
+
| Độ khó | Tác vụ | Mô hình khuyến nghị | Lý do |
|
|
15
|
+
| :--- | :--- | :--- | :--- |
|
|
16
|
+
| **Thấp** | Giải thích code, Refactor nhỏ, Chat thông thường | **Ollama (Local)** | Không tốn quota, phản hồi nhanh cho tác vụ đơn giản. |
|
|
17
|
+
| **Trung bình** | Fix lỗi, Thêm tính năng mới | **Gemini 3 Flash** | Cân bằng giữa chi phí và độ thông minh. |
|
|
18
|
+
| **Cao** | Thiết kế kiến trúc, Debug lỗi phức tạp | **Claude 3.5 Sonnet / Gemini 1.5 Pro** | Độ chính xác cao nhất cho các vấn đề hóc búa. |
|
|
19
|
+
|
|
20
|
+
## 3. Tích Hợp Local Model (Ollama)
|
|
21
|
+
- Bot kết nối trực tiếp với Ollama API tại `http://localhost:11434`.
|
|
22
|
+
- Người dùng có thể chọn dùng model local qua lệnh `/model` để "đóng băng" quota Google khi không cần thiết.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: lazy-gravity
|
|
3
|
+
description: Cross-platform remote operation patterns for Antigravity, based on the LazyGravity project.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Vận Hành Đa Nền Tảng (LazyGravity Patterns)
|
|
7
|
+
|
|
8
|
+
LazyGravity tập trung vào việc quản lý nhiều dự án và phiên làm việc từ xa một cách an toàn và linh hoạt.
|
|
9
|
+
|
|
10
|
+
## Các Đặc Điểm Chính
|
|
11
|
+
|
|
12
|
+
1. **Project Discovery**: Tự động quét các thư mục trong Workspace để cho phép người dùng chuyển đổi dự án từ xa qua lệnh `/project`.
|
|
13
|
+
2. **Session Management**: Quản lý lịch sử hội thoại (Past Conversations), cho phép chọn lại phiên cũ để tiếp tục làm việc.
|
|
14
|
+
3. **Auto-Accept Flow**: Tích hợp cơ chế tự động nhấn "Accept" cho các file edit nếu người dùng bật chế độ `/autoaccept`.
|
|
15
|
+
|
|
16
|
+
## Quản Lý Dự Án (Remote Switching)
|
|
17
|
+
|
|
18
|
+
- Sử dụng `WorkspaceService` để liệt kê các thư mục con.
|
|
19
|
+
- Khi người dùng chọn dự án, bot sẽ cung cấp thông tin hoặc tự động restart target sang dự án mới (nếu được cấp quyền).
|
|
20
|
+
|
|
21
|
+
## Phân Loại Mô Hình (Model Categorization)
|
|
22
|
+
- Phân tách rõ ràng giữa **Cloud Models** (Google Gemini, Claude) và **Local Models** (Ollama).
|
|
23
|
+
- Ưu tiên Local Models cho các yêu cầu giải thích hoặc refactor nhỏ để tiết kiệm quota Cloud.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: remoat-integration
|
|
3
|
+
description: Patterns for controlling AI code editors from Telegram, based on the Remoat project.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Kỹ Thuật Điều Khiển Editor Từ Xa (Remoat Integration)
|
|
7
|
+
|
|
8
|
+
Kỹ thuật này cho phép điều khiển Antigravity hoặc bất kỳ Editor nào hỗ trợ CDP (Chrome DevTools Protocol) thông qua Telegram.
|
|
9
|
+
|
|
10
|
+
## Nguyên Tắc Cốt Lõi (Remoat Strategy)
|
|
11
|
+
|
|
12
|
+
1. **Bridge qua CDP**: Không can thiệp vào mã nguồn của Editor. Sử dụng CDP để Inject Prompt và Monitor Response.
|
|
13
|
+
2. **Single Brain Architecture**: Bot Telegram chỉ đóng vai trò "lễ tân", nhận lệnh và chuyển tiếp cho Editor. Editor là "bộ não" thực hiện công việc.
|
|
14
|
+
3. **Wait for Generate**: Sử dụng DOM Observation để biết khi nào AI trong Editor đang suy nghĩ hoặc đã hoàn thành.
|
|
15
|
+
|
|
16
|
+
## Các Tập Lệnh Đặc Trưng
|
|
17
|
+
|
|
18
|
+
- `/screenshot`: Chụp ảnh màn hình Editor để kiểm tra kết quả trực quan.
|
|
19
|
+
- `/stop`: Dừng khẩn cấp quá trình sinh code của AI.
|
|
20
|
+
- `/mode`: Chuyển đổi giữa chế độ `fast` (flash models) và `plan` (pro models).
|
|
21
|
+
|
|
22
|
+
## Cấu Hình Hạ Tầng
|
|
23
|
+
- Yêu cầu Editor mở cổng debug: `--remote-debugging-port=9555`.
|
|
24
|
+
- Sử dụng `.env` để quản lý `IDE_PORT` đồng nhất với script khởi động.
|
|
@@ -61,20 +61,27 @@ Mỗi Topic/Chat trên Telegram sẽ sinh ra 1 File Ký ức lưu Context. Bắt
|
|
|
61
61
|
|
|
62
62
|
---
|
|
63
63
|
|
|
64
|
-
## PHẦN E:
|
|
65
|
-
|
|
64
|
+
## PHẦN E: GIAO DIỆN PREMIUM (awesome-grammY Aesthetics)
|
|
65
|
+
Một Gateway chuyên nghiệp phải có UI/UX tinh tế:
|
|
66
|
+
1. **Header & Divider**: Sử dụng các thẻ `<b>` và ký tự ngăn cách (e.g. `━━━━━`) để tạo khối thông tin rõ ràng.
|
|
67
|
+
2. **Status Mapping**: Sử dụng emoji trực quan cho trạng thái (✅ Online, 🚨 Offline, 🛡️ Protected).
|
|
68
|
+
3. **Categorized Menus**: Nhóm các nút bấm theo chức năng (Hệ thống, AI, Dự án).
|
|
69
|
+
4. **Short Callback Data**: Vì Telegram giới hạn callback data là 64 bytes, hãy sử dụng `shortIdMap` để lưu trữ Title dài và map chúng với một mã ngắn (e.g. `sess_a1b2`).
|
|
66
70
|
|
|
67
|
-
|
|
68
|
-
- Hướng dẫn User tạo 1 Group Telegram mới.
|
|
69
|
-
- Thêm con Bot vào Group và cấp quyền Admin.
|
|
70
|
-
- **ĐẶC BIỆT QUAN TRỌNG:** Nhắc User phải vào Cài đặt Group (Group Settings) -> Bật tính năng **"Topics"** (Diễn đàn).
|
|
71
|
-
- Giải thích cho User: Mỗi khi có 1 "Bệnh nhân" (Lỗi/Tính năng mới), User tạo một cái Topic mới trong Group đó. Bot sẽ phân luồng Ký ức cực mượt theo từng Topic.
|
|
71
|
+
---
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
## PHẦN F: KIẾN TẠO HẠ TẦNG & HƯỚNG DẪN (User Setup)
|
|
74
|
+
Khi triển khai, hãy hướng dẫn User:
|
|
75
|
+
1. **Tạo Nhóm (Group with Topics)**:
|
|
76
|
+
- Tạo Group Telegram. Thêm Bot làm Admin.
|
|
77
|
+
- Bật **"Topics"** trong cài đặt nhóm.
|
|
78
|
+
- Mỗi dự án hoặc tính năng lớn nên là 1 Topic riêng để cô lập ký ức.
|
|
79
|
+
2. **Cấu Hình .env**: Giải thích rõ các token:
|
|
80
|
+
- `TELEGRAM_BOT_TOKEN`: Lấy từ @BotFather.
|
|
81
|
+
- `ALLOWED_USER_IDS`: Bảo mật, chỉ cho phép chủ nhân điều khiển.
|
|
82
|
+
- `IDE_PORT`: Cổng CDP của Antigravity (thường là 9555).
|
|
76
83
|
|
|
77
84
|
---
|
|
78
85
|
|
|
79
86
|
## TỔNG KẾT TRIỂN KHAI
|
|
80
|
-
*(Ghi chú cho AI)*:
|
|
87
|
+
*(Ghi chú cho AI)*: Luôn tích hợp VFS (`GEMINI.md`) để tiết kiệm token khi thực hiện code discovery từ xa thông qua Bot.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# 🚀 Antigravity Core Rules
|
|
2
|
+
|
|
3
|
+
> This file defines the core operational rules for the AI Agent in this workspace.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 🛠️ TOKEN SAVING: VFS PROTOCOL (MANDATORY)
|
|
8
|
+
|
|
9
|
+
**You MUST use `vfs` for code discovery before using `grep` or reading entire files.**
|
|
10
|
+
|
|
11
|
+
### Why use VFS?
|
|
12
|
+
`vfs` extracts logical signatures (functions, classes, types) without reading the bodies. This saves up to 98% of tokens compared to raw file reads.
|
|
13
|
+
|
|
14
|
+
### Usage Protocol
|
|
15
|
+
1. **Locate**: Use `vfs search` or `vfs <path>` to find the logical structure.
|
|
16
|
+
2. **Review**: Analyze the signatures returned by `vfs`.
|
|
17
|
+
3. **Read**: Only read the specific line ranges identified via `vfs`.
|
|
18
|
+
|
|
19
|
+
### Commands
|
|
20
|
+
- **CLI**: `vfs . -f <function_name>`
|
|
21
|
+
- **MCP**: Use the `vfs` MCP tool if available.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 🤖 MODEL SELECTION
|
|
26
|
+
|
|
27
|
+
- **Simple Tasks**: Prefer local Ollama models (e.g., `nemotron`, `llama3`) to save cloud budget.
|
|
28
|
+
- **Complex Tasks**: Use high-tier models (e.g., `Claude 3.5 Sonnet`, `Gemini 1.5 Pro`).
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 🧹 CLEAN CODE
|
|
33
|
+
- Write self-documenting code.
|
|
34
|
+
- Avoid over-engineering.
|
|
35
|
+
- Follow the patterns defined in `.agent/skills/clean-code`.
|