Giải Quyết Vấn Đề Quy Mô
Trong thế giới phát triển phần mềm, các trợ lý AI rất giỏi trong việc xử lý các tác vụ nhỏ nhưng lại gặp khó khăn trong việc quản lý các mã nguồn lớn. Trong chế độ vibe, tôi đã yêu cầu Kiro chọn kho mã nguồn mở lớn nhất để thử nghiệm việc di chuyển sang Rust và Kiro đã chọn kho PostgreSQL với 1,5 triệu dòng mã C. Một lợi thế khi sử dụng Claude Sonnet 4 với Kiro là dữ liệu đào tạo của LLM chủ yếu bao gồm kho mã nguồn mở PostgreSQL, vì vậy nó hiểu cấu trúc mã nguồn ở một mức độ nhất định.
Lựa Chọn Công Cụ MCP: Tắt 15+ Công Cụ và Giữ Lại Chỉ
- Sequential-thinking: Phân tích vấn đề phức tạp.
- Git-repo-research: Truy cập dễ dàng vào phân tích kho mã nguồn.
- AWS-knowledge-mcp-server: Truy cập tài liệu AWS.
- AWS-api-mcp-server: Tích hợp với AWS Cloud.
Mặc dù hai máy chủ MCP AWS có thể được tắt cho dự án này, tôi giữ chúng cho các nhiệm vụ khác vì đây là những công cụ tôi yêu thích.
Máy chủ MCP sequential-thinking của Anthropic đã giúp phân tích các thông số di chuyển PostgreSQL phức tạp thành các bước dễ quản lý thông qua việc giải quyết vấn đề một cách động và phản xạ. Nó cho phép cải thiện suy nghĩ lặp đi lặp lại, cho phép sửa đổi lý luận trước đó và phân nhánh ra các phương pháp thay thế, điều này đã giúp Kiro làm việc có hệ thống với các phụ thuộc và các trường hợp biên một cách linh hoạt thay vì tiến trình tuyến tính.
Git-repo-research của AWS Labs đã cung cấp quyền truy cập vào kho mã PostgreSQL và mã nguồn, cho phép khám phá và phân tích các mẫu thiết kế cũng như chiến lược triển khai.
Sau nhiều lần lặp lại các thông số và sử dụng ba tài khoản Kiro của tôi (tài khoản Google hackathon Kiro, tài khoản AWS Builder ID và tài khoản AWS IAM Identity Center), tôi đã có một máy chủ PostgreSQL hoạt động và một client psql được xây dựng bằng Rust với chức năng UPSERT cốt lõi. Dưới đây là thống kê mã được tạo ra: 58,478 dòng mã Rust, 167 tệp, 264 tệp tổng cộng.
Ba Hướng Dẫn Chính Được Sử Dụng Với Cách Tiếp Cận Phát Triển Theo Thông Số
- Tính Minh Bạch: Làm cho các bài kiểm tra thất bại trở nên rõ ràng với Kiro.
- Tổ Chức: Ngăn ngừa sự hỗn loạn trong kho mã LLM.
- Hiệu Quả: Tránh sự trùng lặp và lãng phí.
Hướng Dẫn 1: Tính Minh Bạch - "Nếu Kiro Không Thấy, Thì Nó Không Xảy Ra"
bash
# Quan trọng cho các vấn đề tích hợp shell
cargo test 2>&1 | tee compilation_errors.log
cargo build --workspace 2>&1 | tee build_errors.log
cargo clippy --workspace 2>&1 | tee lint_errors.log
Vấn đề: Các lỗi tích hợp shell đã khiến Kiro giả định rằng các lệnh đã thành công khi thực tế là các bài kiểm tra đã thất bại.
Giải pháp Kỹ thuật:
- 2>&1 chuyển hướng stderr đến stdout.
- tee ghi vào cả tệp và terminal.
- Luôn dọn dẹp: rm *.log sau khi xác minh.
Tác động thực tế: Ngăn chặn các vòng lặp LLM gỡ lỗi các bài kiểm tra "đạt" ảo mà thực ra là lỗi biên dịch.
Lợi ích phụ: Khi giới hạn miễn phí của một tài khoản Kiro của tôi sắp hết, và các bài kiểm tra thực sự báo cáo thành công do vấn đề tích hợp shell của tôi, tôi đã sử dụng tiện ích mở rộng Q Developer trong Kiro IDE để sửa các bài kiểm tra thất bại và tiết kiệm được chi phí sử dụng Kiro. Tôi cũng đã nâng cấp tài khoản AWS Builder ID của mình lên tài khoản Kiro pro và sau đó cũng nhận được lợi ích từ việc tín dụng miễn phí tháng Tám, và các giới hạn bổ sung được thiết lập lại cho tất cả mọi người trong tháng Tám/Chín.
Hướng Dẫn 2: Tổ Chức - "Mỗi Tệp Đều Có Một Ngôi Nhà"
bash
postgres-rust-migration/
├── docs/{spec-name}/ # Tóm tắt triển khai
│ └── insert-storage-persistence_8_summary.md
├── scripts/verification/{spec-name}/ # Các kịch bản xác minh
│ └── database-durability_verification.rs
├── crates/{crate}/tests/temp/ # Tệp kiểm tra tạm thời
│ └── temp_sql-update_integration_test.rs
└── target/ # Tệp xây dựng gitignored
Quy tắc quan trọng:
- Không bao giờ tạo tệp trong thư mục gốc dự án - gây ô nhiễm không gian làm việc.
- Tiền tố tên thông số cho tất cả các tài liệu: {spec-name}{task-number}{type}.
- Dọn dẹp ngay lập tức các tệp tạm và nhật ký.
- Sử dụng crate tempfile cho các tệp thực sự tạm thời.
Hướng Dẫn 3: Hiệu Quả - "Tìm Kiếm Trước Khi Lập Trình"
bash
# Trước khi thực hiện bất kỳ chức năng nào
rg "fn.*storage.*persist" --type rust
rg "struct.*Buffer" --type rust
rg "impl.*Transaction" --type rust
Ngăn ngừa trùng lặp mã:
- Tìm kiếm toàn bộ kho mã trước khi triển khai.
- Kiểm tra các tên tệp tương tự: find . -name "storage" -name "*.rs".
- Xác minh chức năng hiện có trong các crate liên quan.
Quy tắc cụ thể cho Rust:
bash
# Luôn sử dụng cargo, không bao giờ sử dụng rustc trực tiếp
cargo build --workspace # ✓ Xử lý các phụ thuộc
rustc src/main.rs # ✗ Thất bại trong không gian làm việc đa crate
bash
# Quy trình kiểm tra
cargo test --workspace # Tất cả các bài kiểm tra
cargo test --package postgres-storage # Crate cụ thể
cargo run --example verification_script # Ví dụ
Vệ sinh kho:
.gitignore
bash
/target/
*.log
.env
*_temp*
*_backup*
Kết Nối Tự Động Hóa
Tích hợp Tokei (cập nhật tự động README):
bash
# Hook sau nhiệm vụ
tokei --output json
Hướng dẫn cho tác nhân Kiro: Tài liệu hoàn thành nhiệm vụ đã được cập nhật. Vui lòng chạy tokei . --output json để có thống kê dòng mã hiện tại, sau đó cập nhật tệp README.md với các chỉ số mã mới nhất. Bao gồm tổng số dòng mã, số dòng theo ngôn ngữ (đặc biệt là Rust) và bất kỳ thống kê nào khác có liên quan từ đầu ra tokei. Đảm bảo cập nhật bất kỳ phần thống kê mã nào hiện có hoặc thêm một phần mới nếu nó không tồn tại.
Một Số Mẹo Khác Về Kiro
- Nếu bạn di chuyển thư mục dự án Kiro và khởi động lại Kiro từ vị trí khác, bạn sẽ mất lịch sử trò chuyện và phiên thông số, vì vậy luôn được khuyến nghị lưu lịch sử phiên bằng tóm tắt nhiệm vụ như đã đề cập trong quy tắc điều hướng ở trên.
- Luôn yêu cầu Kiro chạy các lệnh cargo từ thư mục gốc của không gian làm việc để tránh các thư mục mục tiêu trùng lặp.
bash
cd $HOME/project && cargo build
- Để Kiro chạy các bài kiểm tra với độ chi tiết tối thiểu và lọc bằng grep nếu cần để tránh làm đầy ngữ cảnh nhanh chóng do đầu ra lớn.
- Khi Kiro chạy lệnh AWS CLI, hãy yêu cầu nó bao gồm
--no-cli-pager. Điều này ngăn chặn đầu ra trình phân trang tương tác mà tác nhân không thể thấy hoặc thoát khỏi. Các lệnh tương tự tạo ra đầu ra lớn nhanh chóng làm đầy ngữ cảnh phiên, vì vậy hãy sử dụng kỹ thuật tương tự để bỏ qua đầu ra này trong phản hồi nếu nó không hữu ích cho tác nhân. - Khi có nhiều phương pháp cho các tác vụ như xuất bản lên Amplify, hãy yêu cầu Kiro tạo kịch bản tiêu chuẩn hóa và chỉ định luôn sử dụng kịch bản đó thay vì ngẫu hứng các phương pháp khác nhau mỗi lần.
Kiểm Tra PostgreSQL-Rust
bash
# Khởi động máy chủ PostgreSQL
./target/release/postgres-server --config postgresql.conf > server.log 2>&1 &
# 1. Tạo bảng
./target/release/psql -c "CREATE TABLE kiro (id INTEGER, name TEXT, age INTEGER, email TEXT);"
# 2. Chèn bản ghi
./target/release/psql -c "INSERT INTO kiro (id, name, age, email) VALUES (1, 'Alice Johnson', 28, 'alice@example.com');"
./target/release/psql -c "INSERT INTO kiro (id, name, age, email) VALUES (2, 'Bob Smith', 35, 'bob@example.com');"
# 3. Chọn để xác minh
./target/release/psql -c "SELECT * FROM kiro;"
# 4. Cập nhật bản ghi của Alice
./target/release/psql -c "UPDATE kiro SET age = 29, email = 'alice.updated@example.com' WHERE id = 1;"
# 5. Chọn để xác minh cập nhật
./target/release/psql -c "SELECT * FROM kiro;"
Client PostgreSQL psql với các câu lệnh cập nhật hoạt động!
Khởi động lại máy chủ PostgreSQL để xác minh các cập nhật bền vững
Hãy xem kho lưu trữ di chuyển postgres-rust của tôi để có được triển khai hoàn chỉnh với hơn 58K dòng mã Rust qua các crate mô-đun.
Xem bản ghi livestream | Chương trình hai tuần một lần của Kiro | Quan điểm của một kỹ sư về Kiro
Kết Quả: Tác Động Đo Lường (AI - số liệu tính toán)
- Kích thước dự án: Giảm kích thước kho bằng cách loại trừ các mục tiêu.
- Thời gian xây dựng: Nhanh hơn 15% với cấu trúc không gian làm việc hợp lý.
- Hiệu quả gỡ lỗi: Giảm 80% các bài kiểm tra "đạt" giả.
- Tái sử dụng mã: 23% các chức năng tìm thấy các triển khai hiện có trước khi lập trình.