docs/coder.mdXem bản gốc Bản dịch đầy đủ theo đúng cấu trúc tài liệu; code, liên kết và định danh kỹ thuật được giữ nguyên.
Coder
Coder cung cấp cho AI agent Pydantic một ngăn xếp hoàn chỉnh, có ý kiến để làm việc trong cơ sở mã cục bộ.
Đó là một khả năng kết hợp thông thường được tạo từ khả năng bên dưới, vì vậy bạn có thể sử dụng nguyên trạng hoặc tháo rời.
Mặc dù Pydantic AI Harness có trên các bản phát hành 0.x nhưng API có thể thay đổi giữa các bản phát hành nhỏ; khi đó, cảnh báo ngừng sử dụng và hướng dẫn di chuyển ghi chú phát hành sẽ cho bạn (hoặc người đại diện của bạn) biết chính xác cách nâng cấp. Xem chính sách phiên bản.
Cách sử dụng
Giao trực tiếp cho agent một nhiệm vụ:
from pydantic_ai import Agent
from pydantic_ai_harness import Coder
agent = Agent('anthropic:claude-fable-5', capabilities=[Coder('.')])
result = agent.run_sync('Find out why tests/test_parser.py fails and fix the bug it caught.')
print(result.output)
#> Found it: `parse()` returned None on empty input instead of raising. Fixed in src/parser.py; tests pass now.
agent tương tự hoạt động với mọi giao diện Pydantic AI: agent.to_cli_sync() bắt đầu cuộc trò chuyện tương tác trong terminal của bạn và agent.to_web() phục vụ giao diện người dùng trò chuyện trên trình duyệt.
Hoặc bỏ qua toàn bộ tệp và chạy đã xuấtcoder_agent với clai (Pydantic AI CLI), thông qua uvx:
uvx --with pydantic-ai-harness clai -a pydantic_ai_harness.coder:coder_agent -m anthropic:claude-fable-5
Có gì bên trong
Theo nghĩa đen, những khả năng này được kết hợp theo thứ tự sau:
FileSystem: các công cụ đọc, viết, chỉnh sửa và tìm kiếm bắt nguồn từ không gian làm việc, truyền tải đường dẫn và liên kết tượng trưng an toànShell: các lệnh được đưa vào danh sách cho phép bắt nguồn từ không gian làm việc (lan can, không phải ranh giới bảo mật), với các biến khóa API phổ biến của nhà cung cấp LLM được lọc từ môi trường lệnh kế thừaRepoContext: hướng dẫn và cấu trúc repositoryPlanning: một kế hoạch mà agent tạo và cập nhật trong quá trình làm việc gồm nhiều bướcSubAgents: ủy quyền, với quyền chỉ đọcexploreragent phụ theo mặc địnhClearToolResults: xóa kết quả công cụ cũ ở 70% cửa sổ ngữ cảnh mô hìnhWarnNearLimits: cảnh báo agent ở 90% cửa sổ ngữ cảnh mô hìnhToolOutputLimits: giới hạn số lượng ngữ cảnh mà bất kỳ kết quả công cụ đơn lẻ nào có thể sử dụng
Vượt qua subagents=[] để vô hiệu hóa việc ủy quyền hoặc cung cấp quyền của riêng bạn SubAgent mục nhập.
Hướng dẫn
Coder đi kèm không có hướng dẫn mặc định: các mô hình hiện đại không cần huấn luyện về quy trình ("làm việc từng bước", "chạy thử nghiệm") và mỗi khả năng tổng hợp đều đã đóng góp hướng dẫn công cụ riêng. Vượt qua instructions='...' để thêm (bản sắc, giai điệu hoặc quy tắc nội bộ) của riêng bạn và nó trở thành khả năng hướng dẫn thường xuyên ở phần đầu của bố cục. Đã xuất khẩu coder_agent mang riêng biệt hướng dẫn nhận dạng You are a coding agent built on Pydantic AI.
Danh sách cho phép ra lệnh là một rào chắn ngăn ngừa tai nạn chứ không phải là ranh giới an ninh. Quá trình xác thực chỉ kiểm tra token đầu tiên và các lệnh được đưa vào danh sách cho phép, chẳng hạn như python, git, uvvà make có thể tạo ra các quy trình tùy ý, do đó, một mô hình muốn hoạt động xung quanh danh sách cho phép có thể làm được. Đối với công việc không đáng tin cậy, hãy chạy agent bên trong hộp cát cấp hệ điều hành, chẳng hạn như ModalSandbox hoặc một thùng chứa.
Không được bao gồm theo mặc định
Các khả năng khác kết hợp tốt với Coder; thêm chúng cùng với nó vào capabilities:
- Tìm kiếm trên web và Tìm nạp web (core): tra cứu tài liệu và thông báo lỗi trên web
- Kỹ năng: tài liệu thủ tục có thể tái sử dụng mà agent tải theo yêu cầu
- Ký ức: bộ nhớ liên tục qua các cuộc hội thoại
- Tìm kiếm hội thoại: hãy để agent tìm kiếm các phiên trước đó
- Guardrails: xác nhận những gì agent làm trước và sau khi hành động
- Quy trình làm việc động: cho phép agent tạo quy trình làm việc gồm nhiều bước; kích hoạt tốt nhất theo yêu cầu
from pydantic_ai import Agent
from pydantic_ai.capabilities import WebSearch
from pydantic_ai_harness import Coder, Memory
from pydantic_ai_harness.memory import FileStore
agent = Agent(
'anthropic:claude-fable-5',
capabilities=[
Coder(),
WebSearch(), # look up docs and error messages on the web
Memory(FileStore('.agent-memory')), # remembers across sessions
],
)
Thêm Skills('skills') vào danh sách khi bạn có skills/ thư mục của SKILL.md các thủ tục để trỏ nó vào (nó xác thực thư mục một cách háo hức và cần skills thêm).
Thay vào đó, để loại bỏ hoặc thay thế một trong các thành phần tích hợp sẵn, hãy bắt đầu từ biểu mẫu mở rộng bên dưới và điều chỉnh danh sách.
Thổi ra tương đương
Đây chính xác là agent xuất khẩu coder_agent cung cấp cho bạn (cộng với một mô hình rõ ràng), được viết ra từng khối:
from pathlib import Path
from pydantic_ai import Agent
from pydantic_ai_harness import (
ClearToolResults,
FileSystem,
LLM_API_KEY_ENV_PATTERNS,
Planning,
RepoContext,
Shell,
SubAgent,
SubAgents,
ToolOutputLimits,
WarnNearLimits,
)
allowed_commands = [
'git', 'rg', 'grep', 'find', 'ls', 'cat', 'sed', 'head', 'tail',
'python', 'uv', 'pytest', 'ruff', 'make',
]
explorer = SubAgent(
Agent(
name='explorer',
description='Explore the codebase and answer questions without modifying anything',
instructions='Answer with concrete paths and evidence.',
capabilities=[
FileSystem('.', read_only=True),
RepoContext(workspace_dir=Path('.')),
],
)
)
agent = Agent(
'anthropic:claude-fable-5',
name='coder',
instructions='You are a coding agent built on Pydantic AI.',
capabilities=[
FileSystem('.'), # read/write/edit/search, path-traversal safe
Shell( # allowlisted commands, LLM API keys stripped from their environment
cwd='.',
allowed_commands=allowed_commands,
denied_env_patterns=LLM_API_KEY_ENV_PATTERNS,
),
RepoContext(workspace_dir=Path('.')), # loads AGENTS.md/CLAUDE.md + repo structure
Planning(), # structured task plans the model maintains
SubAgents(agents=[explorer], agent_folders=None), # delegate exploration off the main context
ClearToolResults(max_fraction=0.7), # clears old tool results near the limit
WarnNearLimits(max_context_fraction=0.9), # warns the model before it hits limits
ToolOutputLimits(), # bounds oversized tool results
],
)
Xem nguồn.
Tham chiếu API
::: pydantic_ai_harness.code.Coder
::: pydantic_ai_harness.code.code_agent