TRAE Agent: دليل شامل لأتمتة التطوير السحابي - هندسة البرمجيات بالذكاء الاصطناعي
⏱️ وقت القراءة المقدر: 12 دقائق
مقدمة
TRAE Agent هو وكيل هندسة برمجيات مدعوم بالذكاء الاصطناعي طوّرته ByteDance. يُؤتمت العملية الكاملة لبناء التطبيقات وتعديلها وتوسيعها من خلال قدرات التخطيط المتقدم واستخدام الأدوات المتعددة وتسجيل المسارات.
يقوم TRAE Agent على فلسفة تتجاوز مجرد توليد الكود: فهو يعمل كوكيل ذكي يفهم مهام التطوير بعمق، ويخطط بشكل منهجي، وينفّذ من البداية إلى النهاية.
المعمارية الجوهرية
يتمحور TRAE Agent حول ثلاثة مكونات رئيسية:
1. مخطط المهام
from trae import TaskPlanner
planner = TaskPlanner(model="claude-3-7-sonnet-latest")
plan = planner.plan(
task="بناء REST API لمصادقة المستخدمين باستخدام رموز JWT",
codebase_context="/path/to/project"
)
for step in plan.steps:
print(f"الخطوة {step.index}: {step.description}")
print(f" الأدوات: {step.required_tools}")
print(f" الملفات: {step.affected_files}")
2. منفذ الأدوات
from trae.tools import (
FileManager,
ShellExecutor,
CodeSearcher,
WebFetcher
)
# عمليات الملفات
fm = FileManager(working_dir="/project")
content = fm.read("src/main.py")
fm.write("src/auth.py", new_content)
fm.patch("src/main.py", diff_patch)
# عمليات الشل
shell = ShellExecutor()
result = shell.run("pytest tests/ -v")
print(result.stdout)
# بحث الكود
searcher = CodeSearcher(codebase="/project")
matches = searcher.find_usages("authenticate_user")
3. مُسجِّل المسارات
كل إجراء يُسجَّل لإمكانية الإعادة والتصحيح:
{
"trajectory_id": "traj_2025_07_04_001",
"task": "إضافة تحديد المعدل لنقاط نهاية المصادقة",
"steps": [
{
"step": 1,
"tool": "read_file",
"input": "src/auth/router.py",
"timestamp": "2025-07-04T09:00:01Z"
},
{
"step": 2,
"tool": "web_search",
"input": "أفضل ممارسات تحديد المعدل في fastapi 2025",
"timestamp": "2025-07-04T09:00:03Z"
},
{
"step": 3,
"tool": "write_file",
"input": {
"path": "src/auth/rate_limit.py",
"content": "..."
},
"timestamp": "2025-07-04T09:00:10Z"
}
]
}
التثبيت والإعداد
# تثبيت trae-cli
pip install trae-cli
# أو من المصدر
git clone https://github.com/bytedance/trae-agent.git
cd trae-agent
pip install -e .
# تكوين مفاتيح API
trae config set --provider anthropic --api-key $ANTHROPIC_API_KEY
trae config set --provider openai --api-key $OPENAI_API_KEY
# التحقق من التثبيت
trae --version
ملف التكوين
{
"default_provider": "anthropic",
"default_model": "claude-3-7-sonnet-latest",
"trajectory": {
"enabled": true,
"output_dir": "~/.trae/trajectories"
},
"tools": {
"shell": {
"allowed_commands": ["git", "npm", "pip", "pytest", "make"],
"timeout_seconds": 60
},
"web": {
"enabled": true,
"max_results": 10
}
}
}
الاستخدام الأساسي
واجهة سطر الأوامر
# مهمة بسيطة
trae run "إضافة التحقق من صحة المدخلات لنقطة نهاية تسجيل المستخدمين"
# مع سياق المشروع
trae run "إعادة هيكلة تجميع اتصالات قاعدة البيانات" --project /path/to/project
# الوضع التفاعلي
trae chat
# تشغيل جاف (تخطيط فقط، بدون تنفيذ)
trae run "إضافة طبقة تخزين مؤقت" --dry-run
Python API
from trae import TraeAgent
agent = TraeAgent(
model="claude-3-7-sonnet-latest",
project_path="/path/to/project",
record_trajectory=True
)
result = agent.run(
task="تطبيق الترقيم الصفحي لنقطة نهاية API للمنتجات",
context="نستخدم FastAPI مع SQLAlchemy وPostgreSQL"
)
print("الحالة:", result.status)
print("الملفات المُعدَّلة:", result.modified_files)
print("مسار المسار:", result.trajectory_path)
الميزات المتقدمة
تكامل الأدوات المخصصة
from trae.tools import BaseTool
from typing import Any
class DatabaseInspector(BaseTool):
name = "database_inspector"
description = "فحص مخطط قاعدة البيانات وخطط تنفيذ الاستعلامات"
def __init__(self, connection_string: str):
self.connection_string = connection_string
def get_schema(self, table: str) -> dict:
"""إرجاع تعريفات الأعمدة لجدول."""
...
def explain_query(self, sql: str) -> str:
"""تشغيل EXPLAIN ANALYZE على استعلام."""
...
def execute(self, action: str, **kwargs: Any) -> Any:
if action == "get_schema":
return self.get_schema(kwargs["table"])
elif action == "explain":
return self.explain_query(kwargs["sql"])
raise ValueError(f"إجراء غير معروف: {action}")
agent = TraeAgent(model="claude-3-7-sonnet-latest")
agent.register_tool(DatabaseInspector("postgresql://localhost/mydb"))
التكامل مع سير عمل التطوير
التكامل مع GitHub Actions
# .github/workflows/trae-review.yml
name: مراجعة كود TRAE
on:
pull_request:
types: [opened, synchronize]
jobs:
ai-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: إعداد Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: تثبيت TRAE
run: pip install trae-cli
- name: تشغيل مراجعة AI
env:
ANTHROPIC_API_KEY: $
run: |
git diff origin/main...HEAD --name-only > changed_files.txt
trae run "راجع تغييرات الكود في هذه الملفات للأخطاء ومشكلات الأمان وانتهاكات أفضل الممارسات" \
--context-files changed_files.txt \
--output review.md
- name: نشر تعليق المراجعة
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const review = fs.readFileSync('review.md', 'utf8');
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `## مراجعة كود AI\n\n${review}`
});
النشر على Kubernetes للاستخدام الجماعي
apiVersion: apps/v1
kind: Deployment
metadata:
name: trae-server
namespace: dev-tools
spec:
replicas: 2
selector:
matchLabels:
app: trae-server
template:
metadata:
labels:
app: trae-server
spec:
containers:
- name: trae-server
image: your-registry/trae-server:latest
ports:
- containerPort: 8080
env:
- name: ANTHROPIC_API_KEY
valueFrom:
secretKeyRef:
name: ai-secrets
key: anthropic-key
- name: TRAE_TRAJECTORY_DIR
value: "/data/trajectories"
resources:
requests:
memory: "1Gi"
cpu: "500m"
limits:
memory: "2Gi"
cpu: "1000m"
volumeMounts:
- name: trajectory-storage
mountPath: /data/trajectories
volumes:
- name: trajectory-storage
persistentVolumeClaim:
claimName: trae-trajectories-pvc
الأمان
التنفيذ في بيئة معزولة
from trae import TraeAgent
from trae.sandbox import DockerSandbox
sandbox = DockerSandbox(
image="python:3.12-slim",
memory_limit="2g",
cpu_limit=1.0,
network="none",
readonly_paths=["/project/src"],
writable_paths=["/project/tests", "/tmp"]
)
agent = TraeAgent(
model="claude-3-7-sonnet-latest",
sandbox=sandbox
)
قائمة الأوامر المسموح بها
from trae.security import ShellPolicy
policy = ShellPolicy(
allowed_commands=["pytest", "python", "pip", "git status", "git diff"],
blocked_patterns=["rm -rf", "sudo", "curl", "wget", "ssh"],
require_confirmation=["git commit", "git push"]
)
agent = TraeAgent(
model="claude-3-7-sonnet-latest",
shell_policy=policy
)
مثال عملي: بناء ميزة من البداية إلى النهاية
trae run \
"إضافة نظام معالجة مهام في الخلفية باستخدام Celery وRedis.
المتطلبات:
- قائمة انتظار مهام لإرسال البريد الإلكتروني وإنشاء التقارير
- نقطة نهاية لتتبع حالة المهام
- منطق إعادة المحاولة مع التراجع الأسي
- قائمة انتظار الحروف الميتة للمهام الفاشلة
- نقطة نهاية لوحة مراقبة" \
--project /path/to/fastapi-app \
--model claude-3-7-sonnet-latest \
--record-trajectory
الخلاصة
يمثل TRAE Agent خطوة ملموسة للأمام في هندسة البرمجيات بمساعدة الذكاء الاصطناعي. يجمع بين تخطيط المهام المنهجي والوصول الثري للأدوات وتسجيل المسارات، مما يجعله أداة عملية لأتمتة سير عمل التطوير الحقيقي.
المزايا الرئيسية:
- أتمتة شاملة: يخطط وينفذ الميزات الكاملة
- تسجيل المسارات: كل إجراء مُسجَّل للمراجعة وإمكانية الإعادة
- تكامل مرن للأدوات: التوسع بأدوات مخصصة لأي قاعدة كود
- صديق للفريق: وضع الخادم وتكاملات CI/CD للتعاون الجماعي
- واعٍ للأمان: بيئات معزولة وقوائم أوامر مسموح بها للتنفيذ الآمن
المراجع: