تعليق وكلاء البرمجة
علّق على تتبعات وكلاء البرمجة مع تصيير الفروق ومخرجات الطرفية والتنقل في شجرة الملفات. استورد من Claude Code وAider وSWE-Agent وغيرها من مساعدات البرمجة.
جديد في الإصدار v2.4.0
تنتج وكلاء البرمجة -- Claude Code وAider وSWE-Agent وOpenHands وغيرها -- تتبعات تختلف عن تتبعات الوكلاء العامة. فهي تحتوي على فروق كود ومخرجات طرفية وقراءات ملفات وتنقل في المجلدات ونتائج اختبارات. ومراجعة هذه التتبعات تتطلب تصييراً متخصصاً يفهم بنية تغييرات الكود ويعرضها بصيغة مألوفة لمهندسي البرمجيات.
وCodingTraceDisplay في Potato نوع عرض مخصص لجلسات وكلاء البرمجة. يصيّر الفروق الموحّدة بأسطر حمراء/خضراء مبرزة صياغياً، ومخرجات الطرفية في كتل داكنة، وقراءات الملفات مع أرقام الأسطر، ويوفر شريطاً جانبياً بشجرة الملفات يعرض كل ملف لمسه الوكيل. ويستطيع المعلّقون التنقل بين الملفات، وتوسيع المخرجات الطويلة أو طيّها، وتقييم العمليات فرادى أو التتبع ككل.
التهيئة
فعّل عرض تتبع البرمجة في تهيئة مشروعك:
agentic:
enabled: true
trace_converter: claude_code
display_type: coding_trace
coding_trace_display:
# Diff rendering
diff_style: unified # "unified" or "side_by_side"
diff_context_lines: 3 # lines of context around changes
syntax_highlight: true # language-aware highlighting
show_line_numbers: true
# Terminal output
terminal_theme: dark # "dark" or "light"
terminal_max_lines: 80 # auto-collapse after this many lines
show_exit_codes: true
# File reads
file_read_max_lines: 100 # auto-collapse file reads longer than this
show_file_path: true
show_line_range: true # display "lines 42-87" when partial reads
# File tree sidebar
file_tree:
enabled: true
position: left # "left" or "right"
show_operation_icons: true # icons for read/edit/create/delete
group_by_directory: true
click_to_navigate: true # click a file to jump to its operations
# Collapsible sections
auto_collapse_threshold: 500 # characters before auto-collapsing
collapse_file_reads: true
collapse_terminal_output: trueميزات العرض
عرض الـ diff الموحّد
تُصيَّر عمليات التحرير على هيئة فروق موحّدة بإبراز أحمر/أخضر. تظهر الأسطر المحذوفة بخلفية حمراء وبادئة -، وتظهر الأسطر المضافة بخلفية خضراء وبادئة +. أما أسطر السياق فتظهر برمادي محايد. ويظهر مسار الملف ونطاق الأسطر في شريط علوي فوق كل كتلة diff.
وحين تُضبط diff_style: side_by_side، تظهر النسختان القديمة والجديدة في عمودين متجاورين، فيسهل تبيّن ما تغيّر في التحريرات المعقدة.
كتل الطرفية الداكنة
تُصيَّر أوامر bash والصدفة في كتل طرفية داكنة بخط أحادي العرض. ويظهر الأمر نفسه ببادئة موجّه $، ويظهر المخرج تحته. وتُعرض رموز الخروج في شارة صغيرة (خضراء للقيمة 0، وحمراء لغيرها). أما المخرجات الطويلة فتُطوى تلقائياً مع موسّع يقول Show N more lines.
قراءات الملفات مرقّمة الأسطر
حين يقرأ الوكيل ملفاً، يُعرض المحتوى مع أرقام الأسطر في كتلة كود فاتحة. وتعرض القراءات الجزئية نطاق الأسطر (مثلاً lines 42-87 of 312). ويُطبَّق الإبراز الصياغي بحسب امتداد الملف.
الشريط الجانبي لشجرة الملفات
يعرض الشريط الجانبي لشجرة الملفات كل ملف لمسه الوكيل خلال التتبع. وتُجمَّع الملفات بحسب المجلد وتُرتَّب أبجدياً. ولكل ملف أيقونة تدل على العمليات التي جرت عليه:
- أيقونة قلم للملفات المحرَّرة
- أيقونة عين للملفات المقروءة فقط
- أيقونة زائد للملفات المنشأة حديثاً
- أيقونة سلة للملفات المحذوفة
- أيقونة طرفية للسكربتات المنفَّذة
والنقر على ملف في الشجرة يمرّر اللوحة الرئيسية إلى أول عملية تخص ذلك الملف.
طيّ المخرجات الطويلة
تُطوى تلقائياً أي كتلة مخرجات تتجاوز auto_collapse_threshold. ويعرض سطر ملخص أول أسطر قليلة وآخرها مع زر Show all N lines. وهذا يبقي التتبع قابلاً للتصفح حتى حين تنتج عملية واحدة مئات الأسطر من المخرجات.
محوّلات التتبعات
يأتي Potato بأربعة محوّلات خاصة بوكلاء البرمجة تحوّل صيغ التتبعات إلى التمثيل الموحّد لتتبع البرمجة.
| المحوّل | المصدر | الصيغة |
|---|---|---|
claude_code | Claude Code / Anthropic API | Messages API مع كتل tool_use (أدوات Read وEdit وBash وWrite) |
aider | Aider | سجلات محادثة بصيغة Markdown مع كتل تحرير SEARCH/REPLACE وORIGINAL/UPDATED |
swe_agent_trajectory | SWE-Agent | ملفات JSON للمسارات بثلاثيات فكرة/إجراء/ملاحظة |
auto | كشف تلقائي | يفحص بنية التتبع ويختار المحوّل الأنسب تلقائياً |
حدّد المحوّل في تهيئتك:
agentic:
trace_converter: claude_code # or aider, swe_agent_trajectory, autoمحوّل Claude Code
يتعامل محوّل claude_code مع التتبعات القادمة من Anthropic Messages API حيث يُمثَّل استخدام الأدوات بكتل محتوى tool_use وtool_result. وهو يتعرف على أدوات Claude Code القياسية:
- نداءات أداة Read تصير عروض قراءة ملفات
- نداءات أداة Edit تصير فروقاً موحّدة
- نداءات أداة Write تصير عروض إنشاء ملفات
- نداءات أداة Bash تصير كتل طرفية
- نداءات أداتي Glob/Grep تصير عروض نتائج بحث
محوّل Aider
يحلّل محوّل aider صيغة محادثة Aider القائمة على Markdown. ويستخرج كتل SEARCH/REPLACE (والصيغة الأقدم ORIGINAL/UPDATED) ويحولها إلى فروق موحّدة. أما أوامر الصدفة ومخرجاتها فتُستخرج من كتل الكود المسوّرة الموسومة بـ bash أو shell.
محوّل مسارات SWE-Agent
يقرأ محوّل swe_agent_trajectory ملفات JSON لمسارات SWE-Agent. ويحتوي كل مدخل مسار على فكرة (تفكير الوكيل) وإجراء (الأمر المنفَّذ) وملاحظة (مخرج الأمر). ويصنّف المحوّل الإجراءات إلى تحريرات ملفات وقراءات ملفات وأوامر صدفة وعمليات تنقل.
استخدام سطر الأوامر
حوّل التتبعات الخام قبل تشغيل خادم التعليق:
# Convert Claude Code traces
python -m potato.trace_converter \
-i traces.json \
-f claude_code \
-o data/converted.jsonl
# Convert Aider chat logs
python -m potato.trace_converter \
-i aider_chat_history/ \
-f aider \
-o data/aider_converted.jsonl
# Convert SWE-Agent trajectories
python -m potato.trace_converter \
-i trajectories/ \
-f swe_agent_trajectory \
-o data/swe_converted.jsonl
# Auto-detect format
python -m potato.trace_converter \
-i mixed_traces/ \
-f auto \
-o data/auto_converted.jsonlيقبل الخيار -i ملفاً واحداً أو مجلداً. وحين يُعطى مجلد، تُعالَج كل ملفات .json و.jsonl. ويكتب المحوّل كائن JSON واحداً في كل سطر من ملف المخرجات.
خيارات إضافية:
# Filter by file extension
python -m potato.trace_converter \
-i traces/ -f claude_code -o data/out.jsonl \
--include "*.json"
# Add metadata fields from a CSV
python -m potato.trace_converter \
-i traces/ -f claude_code -o data/out.jsonl \
--metadata metadata.csv --join-key trace_id
# Validate output without writing
python -m potato.trace_converter \
-i traces.json -f claude_code --validateصيغة البيانات
بعد التحويل، يتبع كل سطر في ملف JSONL الناتج هذه البنية:
{
"id": "trace_001",
"task_description": "Fix the failing test in test_parser.py",
"repository": "myproject",
"structured_turns": [
{
"type": "file_read",
"tool": "Read",
"file_path": "src/parser.py",
"content": "def parse(input_str):\n tokens = tokenize(input_str)\n ...",
"line_start": 1,
"line_end": 45
},
{
"type": "edit",
"tool": "Edit",
"file_path": "src/parser.py",
"old_content": " if len(tokens) == 0:\n return None",
"new_content": " if len(tokens) == 0:\n raise ParseError('Empty input')",
"line_start": 12,
"line_end": 13
},
{
"type": "terminal",
"tool": "Bash",
"command": "python -m pytest test_parser.py -v",
"output": "test_parser.py::test_empty_input PASSED\ntest_parser.py::test_valid_input PASSED\n\n2 passed in 0.34s",
"exit_code": 0
},
{
"type": "file_write",
"tool": "Write",
"file_path": "src/parser.py",
"content": "...",
"is_new_file": false
}
],
"metadata": {
"agent": "claude_code",
"model": "claude-sonnet-4-20250514",
"total_tokens": 15234,
"duration_seconds": 42
}
}يحفظ مصفوف structured_turns ترتيب العمليات كما وقعت بالضبط. ولكل دور حقل type (file_read أو edit أو terminal أو file_write أو search أو thought) وحقول خاصة بكل نوع.
مرجع التهيئة
هذه تهيئة كاملة تجمع بين عرض تتبع البرمجة ومخططات تعليق لتقييم مخرجات وكلاء البرمجة:
task_name: "Coding Agent Evaluation"
task_dir: "."
data_files:
- "data/coding_traces.jsonl"
item_properties:
id_key: id
text_key: task_description
agentic:
enabled: true
trace_converter: claude_code
display_type: coding_trace
coding_trace_display:
diff_style: unified
diff_context_lines: 3
syntax_highlight: true
show_line_numbers: true
terminal_theme: dark
terminal_max_lines: 80
show_exit_codes: true
file_read_max_lines: 100
file_tree:
enabled: true
position: left
show_operation_icons: true
group_by_directory: true
click_to_navigate: true
auto_collapse_threshold: 500
annotation_schemes:
# Did the agent complete the task?
- annotation_type: radio
name: task_completion
description: "Did the agent successfully complete the task?"
labels:
- "Fully Complete"
- "Partially Complete"
- "Failed"
- "Made Things Worse"
# Per-step correctness
- annotation_type: per_turn_rating
name: step_quality
description: "Rate this step"
target: agentic_steps
rating_type: radio
labels:
- "Good"
- "Acceptable"
- "Unnecessary"
- "Incorrect"
# Code quality rating
- annotation_type: likert
name: code_quality
description: "Rate the quality of the code changes"
min: 1
max: 5
labels:
1: "Very Poor"
2: "Poor"
3: "Acceptable"
4: "Good"
5: "Excellent"
# Free-text notes
- annotation_type: text
name: notes
description: "Any additional observations about the coding trace"
label_requirement:
required: false
output_annotation_dir: "output/"
output_annotation_format: "jsonl"تشغيل المشاريع النموذجية
يتضمن Potato مشاريع نموذجية لتعليق وكلاء البرمجة:
# Clone the repository
git clone https://github.com/davidjurgens/potato.git
cd potato
# Run the Claude Code trace evaluation example
potato start example/coding_agent_eval/config.yaml -p 8000
# Run the SWE-bench evaluation example
potato start example/swe_bench_eval/config.yaml -p 8000
# Run the multi-agent comparison example
potato start example/coding_agent_comparison/config.yaml -p 8000ويشمل كل مثال تتبعات عيّنة وملف تهيئة كاملاً وملف README يصف مهمة التعليق.
انظر أيضاً
- تعليق مكافأة العملية -- اجمع إشارات مكافأة لكل خطوة لتدريب PRM
- تعليق مراجعة الكود -- مراجعة مضمّنة على طريقة PR في GitHub لتغييرات الكود
- مراقبة وكيل البرمجة المباشر -- شاهد وكلاء البرمجة وتفاعل معهم في الوقت الفعلي
- التعليق على الوكلاء -- تعليق عام على تتبعات الوكلاء
- صيغ التصدير -- صدّر بيانات التعليق لتدريب النماذج
للاطلاع على تفاصيل التنفيذ، انظر الوثائق المصدرية.