- 新增 `git air msg` 命令,支持根据暂存区或历史 Diff 自动生成 Conventional Commits 提交说明 - 支持中、英、日、韩多语言自适应及通过 CLI/配置文件/环境变量进行定制 - 完善全局配置体系,新增 `commit_lang` 选项及相关单元测试
293 lines
13 KiB
Markdown
293 lines
13 KiB
Markdown
<p align="center">
|
|
<img src="assets/logo.png" width="180" height="180" alt="git-air logo" />
|
|
</p>
|
|
|
|
<h1 align="center">git-air �鴻</h1>
|
|
|
|
<p align="center">
|
|
<strong>Go險隱槭〒譖ク縺九l縺溘∫ゥコ豌励�繧医≧縺ォ霆ス蠢ォ縺ァ鬮倬溘↑Git繝阪う繝�ぅ繝泡I繧ウ繝シ繝峨Ξ繝薙Η繝シ繝��繝ォ縲�</strong>
|
|
</p>
|
|
|
|
<p align="center">
|
|
<a href="https://go.dev/"><img src="https://img.shields.io/badge/Go-1.26%2B-00ADD8?style=flat&logo=go" alt="Go Version" /></a>
|
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License" /></a>
|
|
<a href="https://github.com/unclesam-ly/git-air/pulls"><img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg" alt="PRs Welcome" /></a>
|
|
</p>
|
|
|
|
<p align="center">
|
|
<a href="README.md">邂菴謎クュ譁�</a> |
|
|
<a href="README_EN.md">English</a> |
|
|
<a href="README_JA.md"><strong>譌・譛ャ隱�</strong></a>
|
|
</p>
|
|
|
|
---
|
|
|
|
## �検 縺ェ縺� git-air 繧帝幕逋コ縺励◆縺ョ縺具シ�
|
|
|
|
### 隱イ鬘鯉シ哂I縺梧嶌縺�◆繧ウ繝シ繝峨�豌玲戟縺。縺�>縺後√Ξ繝薙Η繝シ縺ッ謔ェ螟「
|
|
|
|
迴セ莉」縺ョ髢狗匱縺ァ縺ッ縲、I��ursor縲,opilot縲∝推遞ョLLM繝励Λ繧ー繧、繝ウ�峨r豢サ逕ィ縺吶k縺薙→縺悟ス薙◆繧雁燕縺ォ縺ェ繧翫∪縺励◆縲よ焚遘偵〒謨ー蜊∬。後�謨ー逋セ陦後�繧ウ繝シ繝峨′逕滓�縺輔l繧九◆繧√�幕逋コ繧ケ繝斐�繝峨�蜉�噪縺ォ蜷台ク翫@縺セ縺吶�
|
|
|
|
**縺励°縺励√◎縺薙↓縺ッ隕矩℃縺斐○縺ェ縺�㍾螟ァ縺ェ隱イ鬘後′蟄伜惠縺励∪縺呻シ�**
|
|
- **縲瑚ヲ九◆逶ョ縺悟ョ檎挑縺吶℃繧九阪→縺�≧骭ッ隕�**�壹う繝ウ繝�Φ繝医d繧ウ繝。繝ウ繝医∝多蜷阪′邯コ鮗励↑縺溘a縲√ヰ繧ー縺後↑縺�→逶イ菫。縺励d縺吶>��
|
|
- **逕滓�AI閾ェ霄ォ縺ョ縲瑚�蟾ア閧ッ螳壹ヰ繧、繧「繧ケ縲�**�壼酔縺倥メ繝」繝�ヨ蜀�〒逕滓�AI縺ォ縲後%縺ョ繧ウ繝シ繝峨↓繝舌げ縺ッ縺ゅk�溘阪→閨槭>縺ヲ繧ゅ√悟撫鬘後↑縺丞��欧縺ォ蜍穂ス懊@縺セ縺呻シ√阪→霑斐▲縺ヲ縺上k縺薙→縺悟、壹>��
|
|
- **莠コ髢薙�逶ョ縺ァ隕玖誠縺ィ縺励d縺吶>貎懷惠逧�↑鄂�**�啻if err != nil` 縺ョ譌ゥ譛溘Μ繧ソ繝シ繝ウ譎ゅ↓繝ュ繝�け隗」髯、��utex Leak�峨r蠢倥l縺溘j縲;oroutine 蜀�〒 `recover` 縺後↑縺九▲縺溘j縲√Ν繝シ繝怜�縺ァ繧ウ繝阪け繧キ繝ァ繝ウ縺瑚ァ」謾セ縺輔l縺ェ縺九▲縺溘j縺吶k繝舌げ縺ッ縲∫岼隕悶〒縺ッ髱槫クク縺ォ隕玖誠縺ィ縺励d縺吶>縲�
|
|
|
|
縺昴�邨先棡縲�**縲窟I縺後さ繝シ繝峨r螟ァ驥冗函逕」縺励∵キア螟懊↓莠コ髢薙′譛ャ逡ェ髫懷ョウ縺ョ蟇セ蠢懊↓霑ス繧上l繧九�**縺ィ縺�≧譛ャ譛ォ霆「蛟偵↑迥カ豕√′逕溘∪繧後∪縺吶�
|
|
|
|
---
|
|
|
|
### 隗」豎コ遲厄シ壹Ξ繝薙Η繝シ繧偵Ο繝シ繧ォ繝ォ繧ソ繝シ繝溘リ繝ォ��re-Commit�峨↓螳悟�蜑咲スョ
|
|
|
|
GitHub縺ェ縺ゥ縺ョCI/CD荳翫〒蜍穂ス懊☆繧九�繝�ヨ繧ょ━遘縺ァ縺吶′縲�**`git-air` 縺ッ繧ウ繝シ繝峨r `git commit` 縺吶k蜑阪↓縲√Ο繝シ繧ォ繝ォ遶ッ譛ォ荳翫〒蜍穂ス懊☆繧句ョ悟�縺ォ迢ャ遶九@縺溘檎ャャ荳芽�屮譟サ蠖ケ縲阪→縺励※險ュ險医&繧後※縺�∪縺吶�**
|
|
|
|
繝√Ε繝�ヨ螻・豁エ縺ョ繧ウ繝ウ繝�く繧ケ繝医r荳蛻�賜髯、縺励√∪繧九〒**縺ゅ↑縺溘�髫」縺ォ蠎ァ繧句哨縺ッ謔ェ縺�′逶ョ縺ョ驪ュ縺�す繝九い繧「繝シ繧ュ繝�け繝�**縺ョ繧医≧縺ォ縲∫エ皮イ九↑蟾ョ蛻�シ�git diff`�峨□縺代r蜴ウ縺励¥繝√ぉ繝�け縺励∪縺呻シ�
|
|
|
|
- 笞。 **Git繝阪う繝�ぅ繝悶↑讌オ荳翫�謫堺ス懈ァ**�壹>縺、繧ゅ�菴懈・ュ繝輔Ο繝シ繧貞エゥ縺輔★縲√ち繝シ繝溘リ繝ォ縺ァ `git air` 縺ィ蜿ゥ縺上□縺代〒蜊ウ蠎ァ縺ォ襍キ蜍輔�
|
|
- �ァ� **荳サ隕√Δ繝�Ν繧貞ョ悟�邯イ鄒�**��**Google Gemini 3.x縲、nthropic Claude縲』AI Grok縲.eepSeek縲_wen縲∵匱隴� GLM縲゜imi縲√Ο繝シ繧ォ繝ォOllama縲^penAI** 縺ェ縺ゥ繧定ィュ螳壹↑縺励〒蜊ウ蠎ァ縺ォ蛻�j譖ソ縺亥庄閭ス縲�
|
|
- �孱�� **繧ケ繝槭�繝医↑繝弱う繧コ髯、蜴サ**�啻go.sum` 繧� `package-lock.json`縲∬�蜍慕函謌舌&繧後◆ `*.pb.go` 繧定�蜍暮勁螟悶5oken豸郁イサ繧呈椛縺医∵晁�Ν繝シ繝励r髦イ縺弱∪縺吶�
|
|
- �識 **蜴ウ譬シ縺ェ繧キ繝九い繧ィ繝ウ繧ク繝九い蝓コ貅�**�壹♀荳冶セ槭d辟。鬧�哨縺ッ荳蛻�↑縺励ゆクヲ陦悟�逅��遶カ蜷医√ョ繝�ラ繝ュ繝�け縲ヾQL繧、繝ウ繧ク繧ァ繧ッ繧キ繝ァ繝ウ縲¨ULL繝昴う繝ウ繧ソ縲√Μ繧ス繝シ繧ケ繝ェ繝シ繧ッ繧呈欠鞫倥@縲∝�菴鍋噪縺ェ菫ョ豁」繧ウ繝シ繝峨r逶エ謗・謠千、コ縺励∪縺吶�
|
|
- �投 **Token豸郁イサ驥上→雋サ逕ィ縺ョ繝ェ繧「繝ォ繧ソ繧、繝�隕狗ゥ阪b繧�**�壼�蜃コ蜉婬oken謨ー繧呈ュ」遒コ縺ォ髮�ィ医@縲∝推遉セ譛譁ー縺ョ蜈ャ蠑乗侭驥題。ィ縺ォ蝓コ縺・縺�※螳溯。後さ繧ケ繝医r蜊ウ蠎ァ縺ォ險育ョ暦シ医Ο繝シ繧ォ繝ォ螳悟�繧ェ繝輔Λ繧、繝ウ繝「繝�Ν縺ッ辟。譁呵。ィ遉コ�峨�
|
|
- 笨ィ **AI 繧ウ繝溘ャ繝医Γ繝�そ繝シ繧ク閾ェ蜍慕函謌�**�壼、画峩蟾ョ蛻�°繧� Conventional Commits 貅匁侠縺ョ鬮伜刀雉ェ縺ェ繝。繝�そ繝シ繧ク繧堤函謌撰シ�**譌・譛ャ隱槭�闍ア隱槭�髻灘嵜隱槭�荳ュ蝗ス隱�**縺ォ閾ェ蜍暮←蠢懶シ峨�
|
|
- �搭 **繝√�繝�隕冗エ��隱ュ縺ソ霎シ縺ソ��.airules`��**�壹Μ繝昴ず繝医Μ逶エ荳九↓ `.airules` 繧帝�鄂ョ縺吶k縺�縺代〒縲√メ繝シ繝�蝗コ譛峨�繧「繝シ繧ュ繝�け繝√Ε隕冗エ�r譛蜆ェ蜈医〒驕ゥ逕ィ縲�
|
|
- �ェ� **繝ッ繝ウ繧ッ繝ェ繝�け縺ァ Pre-commit 繝輔ャ繧ッ蛹�**�壹さ繝槭Φ繝�1逋コ縺ァGit繝輔ャ繧ッ縺ィ縺励※逋サ骭イ縲ょ些髯コ縺ェ繧ウ繝シ繝峨�繧ウ繝溘ャ繝医r譛ェ辟カ縺ォ繝悶Ο繝�け縺励∪縺吶�
|
|
|
|
---
|
|
|
|
## �箕�� 繧ソ繝シ繝溘リ繝ォ螳溯。後う繝。繝シ繧ク
|
|
|
|
```text
|
|
$ git air
|
|
|
|
[git-air] 繧ウ繝シ繝峨Ξ繝薙Η繝シ荳ュ... (Engine: gemini / gemini-3.7-flash)
|
|
笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏
|
|
#### 螟画峩讎りヲ�
|
|
繝ヲ繝シ繧カ繝シ隱崎ィシ繝上Φ繝峨Λ繝シ縺ォ Redis 繧ュ繝」繝�す繝・螻、繧定ソス蜉�縺励,ontext 縺ョ繧ソ繧、繝�繧「繧ヲ繝井シ晄眺繧剃ソョ豁」縲�
|
|
|
|
#### 隧ウ邏ー繝ャ繝薙Η繝シ邨先棡
|
|
- [BLOCKER] internal/service/user.go:45 - 驥榊、ァ縺ェ繧サ繧ュ繝・繝ェ繝�ぅ�# 迚ケ螳壹�繝輔ぃ繧、繝ォ縺ョ縺ソ繧偵Ξ繝薙Η繝シ
|
|
git air internal/service/chat.go
|
|
|
|
# 荳譎ら噪縺ォ繝「繝�Ν繧Пrovider繧呈欠螳壹@縺ヲ螳溯。�
|
|
git air --provider deepseek --model deepseek-chat
|
|
```
|
|
|
|
---
|
|
|
|
### 3. AI 繧ウ繝溘ャ繝医Γ繝�そ繝シ繧ク閾ェ蜍慕函謌� (`git air msg`)
|
|
|
|
繧ウ繝溘ャ繝医Γ繝�そ繝シ繧ク縺ョ菴懈�縺ォ謔ゥ繧蠢�ヲ√�繧ゅ≧縺ゅj縺セ縺帙s縲Agit-air` 縺後せ繝��繧ク繝ウ繧ー縺輔l縺溷キョ蛻�r蛻�梵縺励,onventional Commits 貅匁侠縺ョ繝。繝�そ繝シ繧ク繧�**螟夊ィ隱櫁�蜍暮←蠢�**縺ァ逕滓�縺励∪縺呻シ�
|
|
|
|
```bash
|
|
# 1. 繧キ繧ケ繝�Β險隱槭r閾ェ蜍墓、懷�縺励※逕滓� & 蟇セ隧ア蝙九さ繝溘ャ繝�
|
|
git air msg
|
|
|
|
# 2. 闍ア隱槭〒逕滓��医が繝シ繝励Φ繧ス繝シ繧ケ繝サ蝗ス髫帙�繝ュ繧ク繧ァ繧ッ繝亥髄縺托シ�
|
|
git air msg -l en
|
|
|
|
# 3. 譌・譛ャ隱� / 髻灘嵜隱槭〒逕滓�
|
|
git air msg -l ja
|
|
git air msg -l ko
|
|
|
|
# 4. 遒コ隱阪↑縺励〒逶エ謗・ git commit 繧貞ョ溯。�
|
|
git air msg -c
|
|
```
|
|
|
|
---
|
|
|
|
### 4. 繝ッ繝ウ繧ソ繝�メ縺ァ Pre-commit 繝輔ャ繧ッ繧堤匳骭イ
|
|
|
|
Git 繝ェ繝昴ず繝医Μ逶エ荳九〒莉・荳九r螳溯。鯉シ�
|
|
```bash
|
|
git air hook install
|
|
```
|
|
- **繧ウ繝溘ャ繝郁�蜍輔ヶ繝ュ繝�け讖溯�**�壹Ξ繝薙Η繝シ縺ァ `[BLOCKER]` 驥榊、ァ谺�髯・繧� `[REJECT]` 蛻、螳壹′讀懷�縺輔l縺溷�エ蜷医~git-air` 縺ッ髱槭ぞ繝ュ縺ョ邨ゆコ�さ繝シ繝峨〒**繧ウ繝溘ャ繝茨シ�git commit`�峨r閾ェ蜍慕噪縺ォ荳ュ譁ュ繝サ繝悶Ο繝�け**縺励∪縺呻シ�
|
|
- **蜴ウ譬シ繝「繝シ繝� (`--strict`)**�啻[WARNING]` 隴ヲ蜻翫〒繧ゅさ繝溘ャ繝医r繝悶Ο繝�け縺励◆縺��エ蜷医� `git air --strict` 繧剃スソ逕ィ��
|
|
- **荳譎ら噪縺ェ繝悶Ο繝�け隗」髯、**�夂キ頑・縺ァ繧ウ繝溘ャ繝医r蠑キ蛻カ縺励◆縺��エ蜷医�縲;it 讓呎コ悶� `git commit --no-verify` 縺セ縺溘� `git air --no-block` 繧剃サ倅ク弱@縺セ縺吶�
|
|
|
|
繝輔ャ繧ッ繧定ァ」髯、縺吶k蝣エ蜷茨シ�
|
|
```bash
|
|
git air hook uninstall
|
|
```
|
|
|
|
---
|
|
|
|
## 笞呻ク� 險ュ螳壹�蜆ェ蜈磯��ス�
|
|
|
|
1. **繧ウ繝槭Φ繝峨Λ繧、繝ウ蠑墓焚** (`--key`, `--model`, `--provider`, `--prompt`, `--lang`, `--price-input`, `--price-output`, `--strict`, `--no-block`)
|
|
2. **迺ー蠅�、画焚** (`GIT_AIR_API_KEY`, `GIT_AIR_PROVIDER`, `GIT_AIR_MODEL`, `GIT_AIR_COMMIT_LANG`)
|
|
3. **繝励Ο繧ク繧ァ繧ッ繝亥句挨險ュ螳�** (繝ェ繝昴ず繝医Μ逶エ荳九� `./config.yaml` 縺セ縺溘� `./.git-air.yaml`)
|
|
4. **繧ー繝ュ繝シ繝舌Ν險ュ螳�** (`~/.git-air/config.yaml`)
|
|
|
|
### `config.yaml` 險ュ螳壹ヵ繧。繧、繝ォ萓具シ�
|
|
```yaml
|
|
# 繝励Ο繝舌う繝繝シ: gemini, claude, grok, deepseek, qwen, zhipu, moonshot, siliconflow, ollama, openai, custom
|
|
provider: "gemini"
|
|
api_key: "YOUR_API_KEY_HERE"
|
|
model: "gemini-3.7-flash"
|
|
|
|
# 繧ォ繧ケ繧ソ繝� API 繧ィ繝ウ繝峨�繧、繝ウ繝� (莉サ諢�)
|
|
# base_url: "https://api.deepseek.com/v1"
|
|
|
|
# 繧ォ繧ケ繧ソ繝� System Prompt (莉サ諢�)
|
|
# custom_prompt: ""
|
|
|
|
# 繧ォ繧ケ繧ソ繝� Token 譁咎≡險ュ螳� (莉サ諢上∝腰菴�: 邀ウ繝峨Ν / 1M Tokens)
|
|
# price_input: 0.75
|
|
# price_output: 3.75
|
|
|
|
# AI 繧ウ繝溘ャ繝医Γ繝�そ繝シ繧ク險隱櫁ィュ螳� (莉サ諢�: auto, zh, en, ja, ko)
|
|
# commit_lang: "auto"
|
|
```LLM縺ョ繧ィ繝ウ繝峨�繧、繝ウ繝医→謗ィ螂ィ繝「繝�Ν繧呈ィ呎コ悶�繝ェ繧サ繝�ヨ縺励※縺�∪縺吶A--provider` 繧呈欠螳壹☆繧九□縺代〒邁。蜊倥↓蛻�j譖ソ縺医i繧後∪縺呻シ�
|
|
|
|
```bash
|
|
# 1. Google Gemini (謗ィ螂ィ: 鬮倬溘�菴弱さ繧ケ繝�)
|
|
git air config set --provider gemini --key "YOUR_KEY"
|
|
|
|
# 2. Anthropic Claude (Claude-3.7 / 3.5 Sonnet)
|
|
git air config set --provider claude --key "YOUR_KEY" --model anthropic/claude-3.7-sonnet
|
|
|
|
# 3. xAI Grok (Grok-2 / Grok-3)
|
|
git air config set --provider grok --key "YOUR_KEY" --model grok-2-latest
|
|
|
|
# 4. DeepSeek (鬮伜コヲ縺ェ謗ィ隲悶�諤晁�Δ繝�Ν)
|
|
git air config set --provider deepseek --key "YOUR_KEY" --model deepseek-chat
|
|
|
|
# 5. SiliconFlow (DeepSeek-V3 鬮倬溘�繧ケ繝�ぅ繝ウ繧ー)
|
|
git air config set --provider siliconflow --key "YOUR_KEY" --model deepseek-ai/DeepSeek-V3
|
|
|
|
# 6. 騾夂セゥ蜊�撫 (Qwen / Alibaba Cloud)
|
|
git air config set --provider qwen --key "YOUR_KEY" --model qwen-plus
|
|
|
|
# 7. 譎コ隴� AI (GLM-4)
|
|
git air config set --provider zhipu --key "YOUR_KEY" --model glm-4-plus
|
|
|
|
# 8. Moonshot AI (Kimi)
|
|
git air config set --provider moonshot --key "YOUR_KEY"
|
|
|
|
# 9. Groq (雜�ォ倬滓耳隲�)
|
|
git air config set --provider groq --key "YOUR_KEY" --model llama-3.3-70b-versatile
|
|
|
|
# 10. OpenRouter (繝槭Ν繝√Δ繝�Ν邨ア蜷医ご繝シ繝医え繧ァ繧、)
|
|
git air config set --provider openrouter --key "YOUR_KEY"
|
|
|
|
# 11. 繝ュ繝シ繧ォ繝ォ螳悟�繧ェ繝輔Λ繧、繝ウ繝サ繝励Λ繧、繝舌す繝シ驥崎ヲ� (Ollama)
|
|
git air config set --provider ollama --model qwen2.5-coder
|
|
|
|
# 12. OpenAI 蜈ャ蠑� (GPT-4o / o3-mini)
|
|
git air config set --provider openai --key "YOUR_KEY" --model gpt-4o-mini
|
|
|
|
# 13. 繧ォ繧ケ繧ソ繝� Token 譁咎≡險ュ螳� (莉サ諢擾シ夂オ�∩霎シ縺ソ譁咎≡陦ィ繧剃ク頑嶌縺阪∝腰菴�: 邀ウ繝峨Ν/1M Tokens)
|
|
git air config set --price-input 0.75 --price-output 3.75
|
|
```
|
|
|
|
迴セ蝨ィ縺ョ險ュ螳壹r遒コ隱搾シ医き繧ケ繧ソ繝�譁咎≡繧��繧ケ繧ッ蛹訪ey繧貞性繧�会シ�
|
|
```bash
|
|
git air config get
|
|
```
|
|
|
|
---
|
|
|
|
### 2. 繧医¥菴ソ縺�Ξ繝薙Η繝シ繧ウ繝槭Φ繝�
|
|
|
|
```bash
|
|
# 迴セ蝨ィ繧ケ繝��繧ク繝ウ繧ー縺輔l縺滂シ�it add貂医∩�牙、画峩繧偵Ξ繝薙Η繝シ�医ョ繝輔か繝ォ繝茨シ�
|
|
git air
|
|
|
|
# 逶エ蜑阪�繧ウ繝溘ャ繝亥�螳ケ繧偵Ξ繝薙Η繝シ
|
|
git air HEAD~1
|
|
|
|
# 繝悶Λ繝ウ繝�俣縺ョ蟾ョ蛻�r繝ャ繝薙Η繝シ
|
|
git air main..feature-agent
|
|
|
|
# 迚ケ螳壹�繝輔ぃ繧、繝ォ縺ョ縺ソ繧偵Ξ繝薙Η繝シ
|
|
git air internal/service/chat.go
|
|
|
|
# 荳譎ら噪縺ォ繝「繝�Ν繧Пrovider繧呈欠螳壹@縺ヲ螳溯。�
|
|
git air --provider deepseek --model deepseek-chat
|
|
```
|
|
|
|
---
|
|
|
|
### 3. 繝ッ繝ウ繧ソ繝�メ縺ァ Pre-commit 繝輔ャ繧ッ繧堤匳骭イ
|
|
|
|
Git 繝ェ繝昴ず繝医Μ逶エ荳九〒莉・荳九r螳溯。鯉シ�
|
|
```bash
|
|
git air hook install
|
|
```
|
|
- **繧ウ繝溘ャ繝郁�蜍輔ヶ繝ュ繝�け讖溯�**�壹Ξ繝薙Η繝シ縺ァ `[BLOCKER]` 驥榊、ァ谺�髯・繧� `[REJECT]` 蛻、螳壹′讀懷�縺輔l縺溷�エ蜷医~git-air` 縺ッ髱槭ぞ繝ュ縺ョ邨ゆコ�さ繝シ繝峨〒**繧ウ繝溘ャ繝茨シ�git commit`�峨r閾ェ蜍慕噪縺ォ荳ュ譁ュ繝サ繝悶Ο繝�け**縺励∪縺呻シ�
|
|
- **蜴ウ譬シ繝「繝シ繝� (`--strict`)**�啻[WARNING]` 隴ヲ蜻翫〒繧ゅさ繝溘ャ繝医r繝悶Ο繝�け縺励◆縺��エ蜷医� `git air --strict` 繧剃スソ逕ィ��
|
|
- **荳譎ら噪縺ェ繝悶Ο繝�け隗」髯、**�夂キ頑・縺ァ繧ウ繝溘ャ繝医r蠑キ蛻カ縺励◆縺��エ蜷医�縲;it 讓呎コ悶� `git commit --no-verify` 縺セ縺溘� `git air --no-block` 繧剃サ倅ク弱@縺セ縺吶�
|
|
|
|
繝輔ャ繧ッ繧定ァ」髯、縺吶k蝣エ蜷茨シ�
|
|
```bash
|
|
git air hook uninstall
|
|
```
|
|
|
|
---
|
|
|
|
## 笞呻ク� 險ュ螳壹�蜆ェ蜈磯��ス�
|
|
|
|
1. **繧ウ繝槭Φ繝峨Λ繧、繝ウ蠑墓焚** (`--key`, `--model`, `--provider`, `--prompt`, `--price-input`, `--price-output`, `--strict`, `--no-block`)
|
|
2. **迺ー蠅�、画焚** (`GIT_AIR_API_KEY`, `GIT_AIR_PROVIDER`, `GIT_AIR_MODEL`)
|
|
3. **繝励Ο繧ク繧ァ繧ッ繝亥句挨險ュ螳�** (繝ェ繝昴ず繝医Μ逶エ荳九� `./config.yaml` 縺セ縺溘� `./.git-air.yaml`)
|
|
4. **繧ー繝ュ繝シ繝舌Ν險ュ螳�** (`~/.git-air/config.yaml`)
|
|
|
|
### `config.yaml` 險ュ螳壹ヵ繧。繧、繝ォ萓具シ�
|
|
```yaml
|
|
# 繝励Ο繝舌う繝繝シ: gemini, claude, grok, deepseek, qwen, zhipu, moonshot, siliconflow, ollama, openai, custom
|
|
provider: "gemini"
|
|
api_key: "YOUR_API_KEY_HERE"
|
|
model: "gemini-3.7-flash"
|
|
|
|
# 繧ォ繧ケ繧ソ繝� API 繧ィ繝ウ繝峨�繧、繝ウ繝� (莉サ諢�)
|
|
# base_url: "https://api.deepseek.com/v1"
|
|
|
|
# 繧ォ繧ケ繧ソ繝� System Prompt (莉サ諢�)
|
|
# custom_prompt: ""
|
|
|
|
# 繧ォ繧ケ繧ソ繝� Token 譁咎≡險ュ螳� (莉サ諢上∝腰菴�: 邀ウ繝峨Ν / 1M Tokens)
|
|
# price_input: 0.75
|
|
# price_output: 3.75
|
|
```
|
|
|
|
---
|
|
|
|
## �搭 繝√�繝�隕冗エ��繧ォ繧ケ繧ソ繝槭う繧コ��.airules`��
|
|
|
|
繝ェ繝昴ず繝医Μ縺ョ繝ォ繝シ繝医ョ繧」繝ャ繧ッ繝医Μ縺ォ `.airules` 繝輔ぃ繧、繝ォ繧剃ス懈�縺吶k縺ィ縲、I 縺ッ縺昴�繝ォ繝シ繝ォ繧呈怙蜆ェ蜈井コ矩��→縺励※驕ゥ逕ィ縺励∪縺呻シ�
|
|
|
|
```markdown
|
|
# 繝√�繝�蜈ア騾夐幕逋コ繝ォ繝シ繝ォ
|
|
1. 縺吶∋縺ヲ縺ョ SQL 蜃ヲ逅�� DAO 螻、縺ォ髮�エ�@縲∵枚蟄怜�邨仙粋縺ォ繧医k逕� SQL 縺ッ遖∵ュ「縺ィ縺吶k��
|
|
2. 荳ヲ陦悟�逅�〒蜈ア譛牙、画焚繧呈桶縺��エ蜷医�縲《ync.RWMutex 縺セ縺溘� sync/atomic 繧剃スソ逕ィ縺吶k縺薙→��
|
|
3. 繧ェ繝シ繝励Φ縺励◆繝ェ繧ス繝シ繧ケ��B rows縲?TTP 繝ャ繧ケ繝昴Φ繧ケ縲√ヵ繧。繧、繝ォ�峨� defer Close() 縺ァ遒コ螳溘↓隗」謾セ縺吶k縺薙→��
|
|
4. error 繧偵い繝ウ繝繝シ繧ケ繧ウ繧「�� = err�峨〒辟。譚。莉カ縺ォ辟。隕悶☆繧九%縺ィ繧堤ヲ∵ュ「縺吶k縲�
|
|
```
|
|
|
|
---
|
|
|
|
## �孱�� 繧ォ繧ケ繧ソ繝�髯、螟冶ィュ螳夲シ�.airignore`��
|
|
|
|
邨�∩霎シ縺ソ縺ョ閾ェ蜍暮勁螟厄シ医Ο繝�け繝輔ぃ繧、繝ォ繧�ヰ繧、繝翫Μ�峨↓蜉�縺医√Μ繝昴ず繝医Μ逶エ荳九↓ `.airignore` 繧帝�鄂ョ縺吶k縺薙→縺ァ縲∽ササ諢上�繝輔ぃ繧、繝ォ繧�ョ繧」繝ャ繧ッ繝医Μ繧但I繝ャ繝薙Η繝シ縺九i髯、螟悶〒縺阪∪縺呻シ�
|
|
|
|
```gitignore
|
|
# 繝峨く繝・繝。繝ウ繝医d險ュ險域嶌繧帝勁螟�
|
|
docs/
|
|
*.md
|
|
|
|
# 繝�せ繝医Δ繝�け繧�ム繝溘�繝��繧ソ繧帝勁螟�
|
|
tests/mock/
|
|
testdata/
|
|
|
|
# 讖溷ッ�ィュ螳壹ヵ繧。繧、繝ォ繧帝勁螟�
|
|
*.env
|
|
secrets.yaml
|
|
```
|
|
|
|
---
|
|
|
|
## �塘 繝ゥ繧、繧サ繝ウ繧ケ
|
|
|
|
譛ャ繝励Ο繧ク繧ァ繧ッ繝医� [MIT 繝ゥ繧、繧サ繝ウ繧ケ](LICENSE) 縺ョ繧ゅ→縺ァ蜈ャ髢九&繧後※縺�∪縺吶�ssue 繧� Pull Request 繧ょ、ァ豁楢ソ弱〒縺呻シ�
|