참여하기
풀 리퀘스트는 환영이고, 기다려야 할 초대장은 없습니다. 이건 작은 프로젝트입니다. 쓸모 있는 것은 보통 커다란 기능이 아니라 표의 한 줄, 번역의 한 문장, 또는 손댈 수 있을 만큼 자세한 버그 보고입니다.
가장 쓸모 있는 기여
모델 표의 한 줄. 모델 시험하기는 정해진 5분짜리 과제입니다. 표가 짧은 이유는 돌려 본 것만 담기 때문이고, 부정적 결과는 긍정적 결과와 같은 값어치가 있습니다 —— 되지 않은 모델에 대해서는 아무도 글을 쓰지 않기에 모두가 다시 발견합니다.
번역, 또는 그중 한 줄의 수정. 열 가지가 들어 있습니다. 어느 것이든 나머지를 건드리지 않고 한 문장씩 고칠 수 있습니다 —— 다국어를 보세요. 새 언어는 JSON 파일 하나입니다.
네 가지가 갖춰진 버그 보고. 모델과 공급자를 이름 그대로(Ollama의
qwen3-coder:30b, 「로컬 모델」이 아니라), 무엇을 시켰는지, 무슨 일이 있었는지,
그리고 ~/.opencli/log 의 실패 앞뒤 오십 줄.
붙여 넣기 전에 그 로그 줄에 키가 들어 있는지 보세요.
당신이 실제로 하려던 것을 알려 주세요. 들어 있는 부서와 스킬은 사람들이 무엇을 필요로 하는가에 대한 짐작에서 쓰였습니다. 당신이 손을 뻗었는데 찾지 못한 것이야말로 할 수 있는 가장 쓸모 있는 말입니다.
코드를 쓰기 전에
한 군데 고치는 것보다 큰 일이라면 먼저 이슈를 여세요. 관문으로서가 아니라 —— 당신이 하룻밤을 쓰기 전에 방식을 합의해 두기 위해서입니다. 뒤에 이슈 없이 그냥 온 PR도 읽힙니다.
환경 준비
Rust와 pnpm. 워크스페이스는 opencli-rs/, 웹 화면은 web/,
데스크톱 껍데기는 desktop/ 입니다.
git clone https://github.com/ai-dashboad/opencli
cd opencli
pnpm install
cargo build -p opencli-cli
저장소 루트에서 just 를 쓰면 워크스페이스 보조 명령이 돕니다.
just help 가 목록을 냅니다.
PR 을 열기 전에
just fmt
just fix -p <crate>
cargo test -p <crate>
맨 cargo fmt 를 돌리지 마세요. 이 트리는 imports_granularity=Item 으로
포맷되어 있고, 그건 nightly 에만 있는 옵션입니다. stable 에서는 그 옵션이
조용히 무시되므로, cargo fmt 는 워크스페이스의 거의 모든 파일의 import 블록을
다시 쓰고, 당신의 변경을 수백 개의 무관한 diff 에 파묻습니다.
just fmt 가 nightly 를 부르는 이유가 정확히 그것입니다. nightly 툴체인이 없다면
(rustup toolchain install nightly), 당신이 건드린 파일만 포맷하고 나머지는 CI 에
확인을 맡기세요.
웹 화면을 건드렸다면 python3 scripts/i18n-check.py 가
번역을 위해 감싸지 않은 영어를 찾아 줍니다 —— 인라인 태그로 쪼개진 문장이나
임포트 시점에 만들어지는 레이블처럼 놓치기 쉬운 경우까지 포함해서요.
합치기 쉬운 PR 이란
- 한 가지만. 무관한 수정은 따로 PR 로.
- 당신 변경 전에는 실패하고 후에는 통과하는 테스트. 전체 커버리지가 아니라 —— 그 버그를 잡았을 단언 하나면 됩니다.
- 커밋마다 빌드될 것. 그래야 리뷰와 되돌리기가 가능합니다.
- 동작이 바뀌었으면 문서도. README,
opencli --help, 또는 이제 틀려진 여기 그 페이지. - 설명에 무엇을, 왜, 어떻게. 왜가 diff 에서 읽히지 않는 부분입니다.
CLA 는 없습니다
서명할 것이 없습니다. 기여는 트리의 나머지와 마찬가지로 Apache-2.0 아래에 있습니다.
취약점 신고하기
보안 버그는 공개 이슈를 열지 마세요. GitHub의 비공개 통보 양식 을 쓰세요. 아무것도 공개하지 않고 관리자에게 닿습니다.
가장 볼 값어치가 있는 곳: 샌드박스 정책, 승인 경로, 그리고 도구 호출이 무엇을 건드려도 되는지를 정하는 모든 부분. 당신의 파일을 읽고 당신 기계에서 명령을 실행하는 에이전트는 면이 넓고, 그것을 남보다 당신이 먼저 찾는 편이 낫습니다.
점잖게 하기
사람을 존중해서 대하세요. 우리는 Contributor Covenant 를 따릅니다. 선의를 전제하세요 —— 글로 하는 소통은 어려우니 너그러운 쪽으로 기울이세요. 무언가 헷갈린다면 그 자체로 이슈를 열 값어치가 있습니다: 헷갈리는 문서는 문서의 버그입니다.