agent

package
v0.29.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 11, 2026 License: MIT Imports: 27 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CheckGoModExists

func CheckGoModExists() bool

CheckGoModExists は go.mod があるか確認

func ExtractPlanJSON added in v0.29.0

func ExtractPlanJSON(response string) (string, error)

ExtractPlanJSON はレスポンスからPlan JSONを抽出

func FormatFileSize added in v0.29.0

func FormatFileSize(bytes int64) string

FormatFileSize はファイルサイズを人間が読める形式で返す

func FormatPlan added in v0.29.0

func FormatPlan(plan *Plan) string

FormatPlan は計画を見やすく整形

func GetSessionFileSize added in v0.29.0

func GetSessionFileSize(sessionPath string) (int64, error)

GetSessionFileSize はセッションファイルのサイズを返す(bytes)

func IsAPIKeyAvailable added in v0.29.0

func IsAPIKeyAvailable(provider string) bool

IsAPIKeyAvailable は指定されたプロバイダーのAPIキーが利用可能かチェック

func RunGoFmt

func RunGoFmt(filePath string) (string, error)

RunGoFmt は go fmt を実行

func RunGoTest

func RunGoTest(filePath string) (string, bool, error)

RunGoTest は go test を実行(該当パッケージのみ)

func RunInteractive

func RunInteractive(model string, provider api.Provider, autoApprove, planMode bool)

func RunInteractiveWithResume

func RunInteractiveWithResume(model string, provider api.Provider, autoApprove, planMode bool)

func RunOnce

func RunOnce(query string, model string)

Types

type Agent

type Agent struct {
	Model           string // 初期モデル(後方互換性のため保持)
	CurrentModel    string // 現在のモデル(再起動なしで切り替え可能)
	CurrentProvider api.Provider
	ProviderName    string
	History         []api.Message
	SystemPrompt    string

	AutoApprove bool          // --auto-approve フラグ
	PlanMode    bool          // --plan フラグ(Plan Mode有効化)
	Stats       *SessionStats // セッション統計情報
	// contains filtered or unexported fields
}

Agent はCLIエージェント

func NewAgent

func NewAgent(model string, provider api.Provider) *Agent

NewAgent は新しいAgentを作成

func (*Agent) Cleanup

func (a *Agent) Cleanup()

Cleanup はエージェントのリソースをクリーンアップ

func (*Agent) CompressHistory added in v0.29.0

func (a *Agent) CompressHistory(keepRecent int) error

CompressHistory は会話履歴を圧縮する

func (*Agent) RunPlanMode added in v0.29.0

func (a *Agent) RunPlanMode(ctx context.Context, userRequest string) error

RunPlanMode はPlan Modeで計画を生成・承認・実行

func (*Agent) SwitchProvider added in v0.29.0

func (a *Agent) SwitchProvider(providerName string) error

SwitchProvider はプロバイダーを切り替える

type ErrorInfo added in v0.29.0

type ErrorInfo struct {
	Type    string `json:"type"`           // エラータイプ(api_error, tool_error, etc.)
	Message string `json:"message"`        // エラーメッセージ
	Code    int    `json:"code,omitempty"` // エラーコード(HTTPステータスなど)
}

ErrorInfo はエラー情報

type HeadlessResult added in v0.29.0

type HeadlessResult struct {
	Status     string           `json:"status"`               // "success" or "error"
	Provider   string           `json:"provider"`             // LLMプロバイダー名
	Model      string           `json:"model"`                // モデル名
	Response   string           `json:"response"`             // AIの最終回答
	ToolCalls  []ToolCallResult `json:"tool_calls,omitempty"` // 実行されたツール呼び出し
	Tokens     *TokenUsage      `json:"tokens,omitempty"`     // トークン使用量
	DurationMs int64            `json:"duration_ms"`          // 実行時間(ミリ秒)
	Timestamp  string           `json:"timestamp"`            // タイムスタンプ(RFC3339)
	Error      *ErrorInfo       `json:"error,omitempty"`      // エラー情報
}

HeadlessResult はHeadlessモードの実行結果

func NewErrorResult added in v0.29.0

func NewErrorResult(provider, model string, errType, errMsg string, durationMs int64) *HeadlessResult

NewErrorResult はエラー結果を生成

func NewSuccessResult added in v0.29.0

func NewSuccessResult(provider, model, response string, toolCalls []ToolCallResult, durationMs int64) *HeadlessResult

NewSuccessResult は成功結果を生成

func RunHeadless added in v0.29.0

func RunHeadless(query string, model string, provider api.Provider) *HeadlessResult

RunHeadless はHeadlessモードでクエリを実行

func (*HeadlessResult) ToJSON added in v0.29.0

func (r *HeadlessResult) ToJSON() (string, error)

ToJSON は HeadlessResult を JSON 文字列に変換

type ParallelExecutor added in v0.29.0

type ParallelExecutor struct {
	// contains filtered or unexported fields
}

ParallelExecutor は複数ステップの並列実行を管理

func NewParallelExecutor added in v0.29.0

func NewParallelExecutor(agent *Agent, plan *Plan) *ParallelExecutor

NewParallelExecutor は新しいParallelExecutorを作成

func (*ParallelExecutor) ExecuteSteps added in v0.29.0

func (e *ParallelExecutor) ExecuteSteps(ctx context.Context, stepIDs []int) error

ExecuteSteps は複数のステップを並列実行

type Plan added in v0.29.0

type Plan struct {
	Steps []PlanStep `json:"steps"`
}

Plan は実行計画を表す

func ParsePlan added in v0.29.0

func ParsePlan(jsonStr string) (*Plan, error)

ParsePlan はJSON文字列からPlanを解析

func (*Plan) CanExecute added in v0.29.0

func (p *Plan) CanExecute(stepID int) bool

CanExecute はステップが実行可能かチェック

func (*Plan) GetNextStep added in v0.29.0

func (p *Plan) GetNextStep() int

GetNextStep は次に実行すべきステップIDを取得

func (*Plan) GetParallelSteps added in v0.29.0

func (p *Plan) GetParallelSteps() []int

GetParallelSteps は並列実行可能なステップを取得

func (*Plan) GetStep added in v0.29.0

func (p *Plan) GetStep(id int) *PlanStep

GetStep は指定IDのステップを取得

func (*Plan) HasFailed added in v0.29.0

func (p *Plan) HasFailed() bool

HasFailed は失敗したステップがあるかチェック

func (*Plan) IsCompleted added in v0.29.0

func (p *Plan) IsCompleted() bool

IsCompleted はすべてのステップが完了したかチェック

func (*Plan) UpdateStatus added in v0.29.0

func (p *Plan) UpdateStatus(stepID int, status, result string)

UpdateStatus はステップのステータスを更新

type PlanStep added in v0.29.0

type PlanStep struct {
	ID          int      `json:"id"`
	Description string   `json:"description"`
	Tools       []string `json:"tools"`      // 使用予定ツール
	DependsOn   []int    `json:"depends_on"` // 依存するステップID
	Parallel    bool     `json:"parallel"`   // 並列実行可能か
	Status      string   `json:"status"`     // "pending", "running", "completed", "failed"
	Result      string   `json:"result"`     // 実行結果
}

PlanStep は計画の1ステップを表す

type SessionStats added in v0.29.0

type SessionStats struct {
	StartTime         time.Time
	UserMessages      int
	AssistantMessages int
	ToolExecutions    map[string]int // ツール名 -> 実行回数
	InputTokens       int
	OutputTokens      int
	Provider          string // "deepseek", "openai", "claude", "gemini", "groq", "ollama"
}

SessionStats はセッション統計情報

func NewSessionStats added in v0.29.0

func NewSessionStats(provider string) *SessionStats

NewSessionStats は新しいSessionStatsを作成

func (*SessionStats) AddTokens added in v0.29.0

func (s *SessionStats) AddTokens(input, output int)

AddTokens はトークン使用量を追加

func (*SessionStats) AddToolExecution added in v0.29.0

func (s *SessionStats) AddToolExecution(toolName string)

AddToolExecution はツール実行をカウント

func (*SessionStats) ElapsedTime added in v0.29.0

func (s *SessionStats) ElapsedTime() time.Duration

ElapsedTime はセッション開始からの経過時間を返す

func (*SessionStats) EstimatedCost added in v0.29.0

func (s *SessionStats) EstimatedCost() float64

EstimatedCost は推定コストを計算(USD)

func (*SessionStats) FormatElapsedTime added in v0.29.0

func (s *SessionStats) FormatElapsedTime() string

FormatElapsedTime は経過時間を人間が読める形式で返す

func (*SessionStats) TotalMessages added in v0.29.0

func (s *SessionStats) TotalMessages() int

TotalMessages は合計メッセージ数を返す

func (*SessionStats) TotalTokens added in v0.29.0

func (s *SessionStats) TotalTokens() int

TotalTokens は合計トークン数を返す

func (*SessionStats) TotalToolExecutions added in v0.29.0

func (s *SessionStats) TotalToolExecutions() int

TotalToolExecutions は合計ツール実行回数を返す

type TokenUsage added in v0.29.0

type TokenUsage struct {
	Input  int `json:"input"`  // 入力トークン数
	Output int `json:"output"` // 出力トークン数
	Total  int `json:"total"`  // 合計トークン数
}

TokenUsage はトークン使用量

type ToolCallResult added in v0.29.0

type ToolCallResult struct {
	Tool    string            `json:"tool"`    // ツール名
	Args    map[string]string `json:"args"`    // 引数
	Output  string            `json:"output"`  // 出力
	Success bool              `json:"success"` // 成功フラグ
}

ToolCallResult は個別のツール呼び出し結果

type VerifyResult

type VerifyResult struct {
	NeedsVerify  bool     // 検証が必要か
	FileType     string   // "go", "js", "py" など
	ChangedFiles []string // 変更されたファイル
	FmtResult    string   // go fmt の結果
	TestResult   string   // go test の結果
	TestPassed   bool     // テスト成功したか
}

VerifyResult は検証結果

func ShouldVerify

func ShouldVerify(filePath string) *VerifyResult

ShouldVerify は変更されたファイルが検証対象かを判定

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL