OpenSource-Hub

freebuff

CLI 도구

CodebuffAI/freebuff

무료 AI 프로그래밍 어시스턴트. 명령줄, 데스크톱 및 클라우드 도구를 제공합니다.

개요

Freebuff는 전용 AI 에이전트와 주요 모델을 터미널, 데스크톱, 브라우저 및 GitHub 저장소에서 사용할 수 있게 해주는 무료 프로그래밍 어시스턴트입니다. 병렬 에이전트, 파일 검색, 코드 편집 및 실행 검사를 지원하며, 구독이나 API 키가 필요하지 않습니다. 이 프로젝트는 TypeScript 모노레포로 구성되어 있으며, CLI, 데스크톱, 웹, 클라우드, 채팅 등 다양한 제품 형태를 제공합니다.

README 미리보기

# Freebuff\n\nEnglish | [简体中文](./README.zh-CN.md)\n\n**Five free AI products for coding, building, and research.** No subscription, credits, or API key required.\n\n[Freebuff](https://freebuff.com) brings specialized agents and a choice of leading models to your terminal, desktop, browser, and GitHub repositories. Text ads support access to the included models.\n\n## Choose your Freebuff\n\n| Product              | What it does                        | Get started                                                           |\n| -------------------- | ----------------------------------- | --------------------------------------------------------------------- |\n| **Freebuff Desktop** | Run parallel agents locally         | [Download for macOS, Windows, or Linux](https://freebuff.com/desktop) |\n| **Freebuff CLI**     | Code from your terminal             | [Install the CLI](https://freebuff.com/cli)                           |\n| **Freebuff Web**     | Build and ship full-stack apps      | [Build an app](https://freebuff.com/web)                              |\n| **Freebuff Cloud**   | Run agents on any GitHub repository | [Connect a repository](https://freebuff.com/cloud)                    |\n| **Freebuff Chat**    | Research and think with AI          | [Start a chat](https://freebuff.com/chat)                             |\n\n## Quick start\n\nRun Freebuff in any project from your terminal:\n\n```bash\nnpm install -g freebuff\ncd ~/my-project\nfreebuff\n```\n\nThen describe what you want. Freebuff finds the relevant files, makes changes, and runs the checks that matter for your project.\n\n## Models\n\nFreebuff includes a curated model catalog. The regular picker currently offers:\n\n| Model                       | Access                  | Best for                                                           |\n| --------------------------- | ----------------------- | ------------------------------------------------------------------ |\n| **GPT-5.6 Luna**            |

FAQ (3)

문제 해결
Linux에서 Freebuff CLI의 "terminal command broker protocol response was missing" 오류를 어떻게 해결하나요?

이 오류는 일반적으로 터미널 명령 브로커 프로세스가 프로토콜 응답을 쓰기 전에 실패했음을 의미하며, 근본적인 원인은 종종 ENOSPC(디스크 가득 참) 또는 EACCES(권한 거부)입니다. 브로커 stderr 수정이 포함된 최신 릴리스로 Freebuff CLI를 업그레이드한 다음 명령을 다시 실행하여 실제 쓰기 오류가 표시되도록 하세요. df -h $HOME /tmp로 사용 가능한 공간을 확인하고 디스크 또는 임시 파일 시스템이 가득 찬 경우 공간을 확보하세요. 예를 들어 ls -ld $HOME/.config/freebuff $HOME/.cache/freebuff /tmp 명령과 touch $HOME/.cache/freebuff/.write-test && rm $HOME/.cache/freebuff/.write-test 같은 쓰기 테스트를 사용하여 Freebuff 구성/캐시 디렉터리가 쓰기 가능한지 확인하세요. 필요한 경우 chown -R $USER:$USER $HOME/.config/freebuff $HOME/.cache/freebuff로 소유권/권한을 수정한 다음 Freebuff를 다시 시작하세요.

원본 Issue #1359
문제 해결
SDK에서 OpenRouter 크레딧이 이중으로 계산되거나 부풀려지는 문제를 어떻게 해결하나요?

SDK가 usage.cost와 cost_details.upstream_inference_cost를 잘못 합산합니다. OpenRouter의 최상위 usage.cost에는 이미 업스트림 추론 비용이 포함되어 있으므로, 둘을 합산하면 정상 비용의 약 두 배가 청구됩니다. sdk/src/impl/llm.ts의 세 가지 크레딧 계산 경로(스트리밍 reportCost, 논스트림 generateText, Responses)에서 합산을 Math.max(...)로 교체하세요:

costOverrideDollars = Math.max(
  openrouterUsage.cost ?? 0,
  openrouterUsage.costDetails?.upstreamInferenceCost ?? 0,
)

이렇게 하면 BYOK 요청도 올바르게 처리되는데, BYOK는 cost: 0으로 보고하고 실제 사용액은 upstreamInferenceCost에 보고하기 때문입니다. 패치 후 SDK를 다시 빌드하거나, SDK가 설치된 종속성으로 사용되는 경우 patch-package를 사용하세요. 해당 이슈는 stale 상태로 자동 종결되었으므로, 설치된 버전에 수정 사항이 포함되어 있는지 확인하세요.

원본 Issue #1164
문제 해결
왜 /compact를 사용하면 이전 채팅 기록이 모두 지워지고 빈 요약만 남나요?

이 문제는 compaction이 빈 모델 응답을 수락하거나 출처(provenance) 대신 메시지 내용으로 요약을 식별할 때 발생합니다. packages/agent-runtime/src/run-agent-step.ts에서 fullResponse.trim()이 비어 있지 않을 때만 히스토리를 교체하도록 수정하고, 그렇지 않은 경우에는 agentState.messageHistory를 유지하면서 빈 completion을 로그에 기록한 뒤 재시도가 요약을 다시 생성하도록 하세요. compact-history.ts와 agents/context-pruner.ts에서는 생성된 요약에 CONVERSATION_SUMMARY 마커/메타데이터 필드를 부여하고, isConversationSummary가 해당 출처를 요구하도록 만드세요. 레거시 폴백은 완전한 envelope를 포함하는 메시지, 즉 여는 태그와 닫는 <conversation_summary> 태그, 요약 헤더, 그리고 <historical_memory>를 모두 갖춘 메시지에 대해서만 유지하세요. 또한 set-messages.ts에서 메시지를 검증하여 사용자가 인용한 <conversation_summary> 텍스트가 활성 요약이 되지 못하도록 하세요. 별도의 resume 문제로 인해 run-state.json을 읽을 수 없을 때 유사한 기억 상실이 발생할 수 있으므로, 빈 sessionState를 가진 RunState로 폴백하는 대신 해당 경우를 처리하세요. 임시 해결 방법: 빈 모델 응답 이후에는 /compact에 의존하지 말고, 일반 사용자 메시지에 <conversation_summary> 마커를 붙여 넣지 마세요.

원본 Issue #1166