Skip to content

FEAT: ChatGPT·Google 로그인으로 쓰기 — 외부 에이전트(ACP) 지원 - #55

Merged
RosieOh merged 4 commits into
mainfrom
feat/acp-agents
Sep 29, 2026
Merged

RosieOh merged 4 commits into
mainfrom
feat/acp-agents

Conversation

@RosieOh

@RosieOh RosieOh commented Sep 29, 2026

Copy link
Copy Markdown
Contributor

무엇을

ChatGPT 구독이나 Google 계정으로 Lantern을 쓰게 합니다(#54). 회사들은 다른 앱이 구독 로그인 토큰을 쓰는 것을 허용하지 않으므로(Anthropic은 2026-02 약관으로 금지, OpenAI는 공식 방법 없음), 각 회사의 공식 CLI를 Agent Client Protocol(ACP)로 부리고 로그인은 그 CLI가 직접 합니다. Zed 등이 쓰는 방식입니다. Lantern은 토큰을 만지지 않습니다.

어떻게

백엔드 (acp.rs, 줄 단위 JSON-RPC 2.0 over stdio, 작업마다 에이전트 프로세스 하나)

  • 내장: Gemini CLI(gemini --acp), Codex(codex-acp). config.toml의 [acp.<이름>]로 덮어쓰거나 다른 ACP 에이전트를 더함
  • session/update → 기존 agent 이벤트(글, 도구 호출·결과). 채팅·발자취·지도를 그대로 씀
  • session/request_permission → 기존 승인 카드. 수정이면 diff를 만들어 영향 반경까지 그대로. auto_approve·allowed_commands 설정도 존중
  • fs/read_text_file, fs/write_text_file → 프로젝트(격리 작업이면 작업 공간) 안만. 비밀 파일 읽기는 묻고, 쓰기는 원본을 되돌리기 체크포인트로 남기며 권한 요청 없이 쓰려 하면 승인을 받음. 터미널은 넘기지 않음
  • 로그인: session/new·session/prompt가 -32000이면 auth_required 이벤트(에이전트가 알려 준 방법). acp_authenticate 명령으로 에이전트가 브라우저 로그인을 진행
  • 맥락 엔진: 질문마다 Lantern 맥락을 붙이고('본 코드' 카드 그대로), 앱을 MCP 서버(lantern-app --mcp <폴더>)로 넘김
  • 취소는 session/cancel, 작업을 닫거나 프로젝트를 바꾸면 프로세스를 끔
  • 제한 모드에서는 켜지지 않음 (외부 에이전트는 명령을 실행할 수 있음)
  • agent.rs의 승인·체크포인트 저장을 공유하도록 꺼냄 (동작 변화 없음)

화면: 에이전트 선택에 'Codex (외부)', 'Gemini CLI (외부)' (설치 안 됐으면 설명에 설치 명령), 로그인 카드(로그인 → 다시 보내기), 첫 실행 화면 안내, 영어 번역

확인

  • 단위 테스트, clippy, 타입 검사, 번역 누락 0
  • E2E 12/12: 새 시나리오 — 가짜 ACP 에이전트로 로그인 카드 → 로그인 → 읽기 요청 → 승인 카드(영향 반경) → 적용 → 프로젝트 밖 쓰기 거절 → 발자취
  • lantern-app --mcp 단독: initialize → tools/list(4개) → get_context가 코드를 찾음
  • 실제 CLI (Gemini CLI 0.61, codex-acp 0.16)를 앱에 연결:
    • Gemini CLI(로그인 전): 로그인 카드에 'Log in with Google' 등 실제 방법이 뜸
    • Codex(이 PC는 ChatGPT로 로그인되어 있었음): Lantern 맥락을 받아 답을 시작하고, 명령 실행 권한을 Lantern 승인 카드로 요청함

한계

  • Claude 구독은 약관상 이렇게 쓸 수 없어 넣지 않음 (API 키로)
  • 앱을 다시 켜면 외부 에이전트와의 대화는 새로 시작 (session/load는 다음에)
  • 편집기에서 저장하지 않은 내용은 에이전트가 보지 못함 (디스크 기준)
  • 구독 사용량은 Lantern 비용 미터에 잡히지 않음

Closes #54

ChatGPT·Google 구독 로그인은 다른 앱이 토큰을 쓸 수 없어서, Codex·Gemini CLI 같은 공식 CLI를 Agent Client Protocol로 부리고 로그인은 그 CLI가 직접 하게 함. 에이전트의 진행은 기존 agent 이벤트로 바꾸고, 권한 요청은 승인 카드로, 파일 읽기·쓰기는 프로젝트 안에서만 하며 원본을 되돌리기 체크포인트로 남김. 로그인이 필요하면 에이전트가 알려 준 방법을 카드로 띄움. 질문마다 Lantern 맥락을 붙이고 앱을 MCP 서버(--mcp)로 넘김. 신뢰한 폴더에서만 켜짐.
외부 에이전트가 로그인을 요구하면 채팅에 로그인 카드를 띄우고, 로그인이 끝나면 같은 질문을 다시 보낼 수 있게 함. 환경변수로만 되는 방법은 버튼 대신 안내로 보임. 첫 실행 화면에 ChatGPT 구독·Google 계정으로 쓰는 방법을 안내함.
실제 Gemini CLI·Codex와 같은 순서로 움직이는 가짜 에이전트로, 로그인 카드 → 로그인 → 읽기 요청 → 승인 카드(영향 반경) → 적용 → 프로젝트 밖 쓰기 거절까지 확인함.
외부 에이전트 설치·로그인 방법과, Claude 구독은 약관상 이렇게 쓸 수 없다는 점을 README 두 벌에 적음.

Closes #54
@RosieOh RosieOh added type: feat 새로운 기능 area: agent 에이전트·모델·도구 (app/src-tauri) labels Sep 29, 2026
@RosieOh
RosieOh merged commit 961eb64 into main Sep 29, 2026
3 checks passed
@RosieOh
RosieOh deleted the feat/acp-agents branch September 29, 2026 04:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: agent 에이전트·모델·도구 (app/src-tauri) type: feat 새로운 기능

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ChatGPT·Google 로그인으로 쓰기: 외부 에이전트(ACP) 지원

1 participant