feat: add context budget system for LLM overflow (#19) #20

Merged
rodin merged 6 commits from fix/19-context-overflow into main 2026-05-02 03:07:17 +00:00
2 changed files with 9 additions and 5 deletions
Showing only changes of commit 75190d53ed - Show all commits
+6 -2
View File
@@ -65,7 +65,7 @@ type Sections struct {
Conventions string // Repo conventions (trimmed second)
FileContext string // Full file content (trimmed third)
Diff string // The actual diff (trimmed last, only truncated)
UserMeta string // PR title, description, CI status (never trimmed)
UserMeta string // PR title, description, CI status (truncated only if base exceeds budget)
}
// Result holds the trimmed content and metadata about what was dropped.
@@ -154,7 +154,11 @@ func Fit(model string, sections Sections) Result {
removed := EstimateTokens(sections.Diff) - diffBudget
trimmed = append(trimmed, fmt.Sprintf("diff truncated (~%dK tokens removed)", removed/1000))
if maxChars > 0 {
sections.Diff = truncateUTF8(sections.Diff, maxChars) + diffTruncMarker
if diffBudget >= markerBudget {
sections.Diff = truncateUTF8(sections.Diff, maxChars) + diffTruncMarker
} else {
sections.Diff = truncateUTF8(sections.Diff, maxChars)
}
} else {
sections.Diff = diffTooLargeMarker
}
+3 -3
View File
@@ -255,12 +255,12 @@ func fetchPatterns(ctx context.Context, client *gitea.Client, patternsRepo, patt
continue
}
for filepath, content := range files {
for filePath, content := range files {
// Only include markdown and text files as patterns
if !isPatternFile(filepath) {
if !isPatternFile(filePath) {
continue
}
sb.WriteString(fmt.Sprintf("### %s/%s\n\n%s\n\n", repoRef, filepath, content))
sb.WriteString(fmt.Sprintf("### %s/%s\n\n%s\n\n", repoRef, filePath, content))
}
}
}