feat(opencode): ABAP 소스 인덱스 툴 + 답변 출처 표기 규칙

- .opencode/tools/abap_index.ts: ABAP_INDEXING 질의 서버(:8100) 를 툴 3개로 —
  abap_index_search(로직 조각 검색) / abap_index_chunk(원문+정의부) / abap_index_source(전체 소스·요약)
- AGENTS.md: 코드 질문은 인덱스 먼저, 코드블럭 위에 [출처: 프로그램/unit L줄] · [출처: SAP 조회] · [출처: 없음 — 생성 코드]
- 서버 없으면 툴이 실패 문자열을 주고 에이전트는 생성 코드로. 실측: 인덱스 미연결 상태에서 '[출처: 없음 — 생성 코드]' 표기 확인
- .env ABAP_INDEX_URL, README 절차. .opencode/package.json 은 gitignore 라 고객사엔 폴더째 옮겨야 함

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
lee-hyeon-cheol
2026-09-21 14:37:26 +09:00
co-authored by Claude Fable 5.1
parent 89fc8fab45
commit fa172d1413
5 changed files with 146 additions and 0 deletions
+15
View File
@@ -125,3 +125,18 @@ curl -s -X POST http://127.0.0.1:8888/mcp -H "Authorization: Bearer $MCP_API_KEY
- 로컬 개발에선 `MCP_API_KEY` 를 비워두면 `sap-icf``enabled:false` 로 렌더돼 OpenCode 가 MCP 를 안 찾음.
- MCP 가 zai 모드로 뜨는지는 `logs/mcp.log``mode=zai` 찍히는 걸로. 고객사 SAP 은 zdict 가 아니라 ZAI_ICF 라 `SAP_API_BASE_ICF` 를 -13 값과 같게.
## ABAP 소스 인덱스 붙이기 (출처 있는 코드)
`ABAP_INDEXING` 레포의 질의 서버(:8100)를 OpenCode 커스텀 툴로 붙임 — `opencode/.opencode/tools/abap_index.ts` (툴 3개: `abap_index_search`·`abap_index_chunk`·`abap_index_source`). 에이전트는 코드 질문에 인덱스를 먼저 찾고, 코드 위에 `[출처: 프로그램 / unit L줄]` 을 적음. 없으면 `[출처: 없음 — 생성 코드]`.
```bash
# 인덱스 서버 (ABAP_INDEXING 레포, data/index.db 가 있어야 함)
cd ../ABAP_INDEXING && .venv/Scripts/python -m query.api # 127.0.0.1:8100
# CodeAssist 쪽: .env 의 ABAP_INDEX_URL (기본 그대로면 됨) → OpenCode 재시작. 툴 목록 확인:
curl -s http://127.0.0.1:4096/config 2>/dev/null | grep -o abap_index_[a-z]* | sort -u
```
- 인덱스 서버가 없으면 툴이 "인덱스 조회 실패"를 돌려주고 에이전트는 생성 코드로 답함. 앱은 안 죽음.
- `opencode/.opencode/package.json`(`@opencode-ai/plugin` 의존)은 그 폴더 `.gitignore` 에 걸려 git 에 없음. 고객사엔 `.opencode/` 폴더째(node_modules 포함, 약 수 MB) 같이 옮겨야 툴이 로드됨. 없으면 OpenCode 가 툴 파일을 import 못 해 조용히 빠짐 — `/experimental/tool/ids` 로 확인.
- 고객사(-12): ABAP_INDEXING 을 -12 에 같이 올리고(`data/index.db` 포함, 약 14MB) 8100 으로 띄움. 오프라인 wheels 는 fastapi·uvicorn 이 이미 있어 재활용 가능.