docs: AI 사용 구조 1차 개선#306
Conversation
ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (31)
📝 WalkthroughPR 요약: AI 에이전트 사용 구조 1차 개선개요이 PR은 Keepiluv iOS 저장소의 에이전트 워크플로우를 정규화하고, 아키텍처 가이드라인을 재정립하며, Pi/Claude Code 기반 자동화를 도입합니다. 이슈 핵심 변경사항1. Navigation 패턴 개선 (TCA State 관리)
영향도: 상태 추적 명확화, 테스트 용이성 향상, 라우트 배열 중심의 현대적 패턴 2. Canonical Architecture Guidelines (신규 추가)AGENTS.md (309줄): 교차 에이전트 baseline document
docs/Reference/ProjectRules.md (205줄): 팀 구현 규칙 canonical reference
docs/Architecture/Overview.md 강화:
docs/Guides/NetworkGuide.md 업데이트:
3. Pi 승인 게이트 및 안전 정책.pi/extensions/twix-gate.ts (341줄, 新):
4. Pi 에이전트 스킬 (Skill) 정의Canonical 구현 (
Thin Link ( 5. Claude Code 실행 인터페이스 (Scripts/)Scripts/run-claude-implementation.sh (68줄):
Scripts/smoke-test-claude-handoff.sh (128줄):
6. 문서 정리 및 레거시 제거신규/개편:
제거:
아키텍처 영향도
사용자 영향도
검증 상태
다음 단계
개요AI 에이전트 사용 효율성 및 아키텍처 규칙의 일관성을 위한 1차 개선으로, 스킬 정의, 도구 호출 제어 정책, 핸드오프 실행 인프라, 아키텍처 가이드 문서를 통합적으로 정의합니다. 기존 산재된 문서와 부정확한 내용을 정리하고, canonical 규칙 문서를 중심으로 각 에이전트 환경별 진입점을 구성합니다. 변경 사항에이전트 기본 정책 및 문서 인프라
스킬 정책 및 규칙 (canonical)
스킬 진입점 (Claude/Codex 호환)
도구 호출 제어 정책
핸드오프 실행 인프라
아키텍처 규칙 및 기술 가이드
예상 코드 리뷰 노력🎯 4 (복잡함) | ⏱️ ~60분 복잡도 분석:
제안 레이블
제안 검토자
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
|
@coderabbitai summary |
✅ Actions performedSummary regeneration triggered. |
jihun32
left a comment
There was a problem hiding this comment.
👍👍👍👍👍👍
코멘트 몇개 남긴거 확인만 해주고
pi가 뭔지 감이 잘 안오는데 코덱스 클로드 중복 줄이고 싱크 맞추기 위해 있는건가? 참고했던 레퍼런스 있으면 공유해줘~
|
|
||
| 현재 단계에서는 테스트/Testing 타겟 추가를 필수로 보지 않습니다. | ||
|
|
||
| > Unresolved: `TestDependencyKey`를 Interface에 두는 현재 패턴은 Testing 모듈 분리 원칙과 충돌할 가능성이 있습니다. 새 패턴을 도입하거나 기존 패턴을 변경하기 전에는 owner 확인이 필요합니다. |
There was a problem hiding this comment.
이거 맞말이고 내가 설계를 잘못해서 Interface Client가 TestDependencyKey를 따르고, mock용 previewValue도 Interface에 구현되어 있는게 잘못된 구조 같음
기존 Interface에 struct dependency 구조들 아래처럼 바꾸고 previewValue를 Testing에서 구현해서 exampleApp에서 주입하는 식으로 바꾸는게 아키텍처상 맞을 거 같음
public struct GoalClient {
public var fetchGoals: () async throws -> [Goal]
public init(
fetchGoals: @escaping () async throws -> [Goal]
) {
self.fetchGoals = fetchGoals
}
}
public extension GoalClient {
static let unimplemented = Self(
fetchGoals: {
assertionFailure("GoalClient.fetchGoals is unimplemented. Override with
withDependencies.")
return []
}
)
}
private enum GoalClientKey: DependencyKey {
static let liveValue: GoalClient = .unimplemented
}
public extension DependencyValues {
var goalClient: GoalClient {
get { self[GoalClientKey.self] }
set { self[GoalClientKey.self] = newValue }
}
}위 처럼 바꿀 시 기존에 App단에서 자동으로 주입되던 liveValue가 자동 주입이 안돼서 직접 명시해줘야 하는 트레이드오프가 있지만 MFA 구조를 명확히 따른다고 생각함
이렇게 바꾸는거에 대해서 어떻게 생각해? 괜찮다 싶으면 QA 다 반영하고 내가 새로 이슈 파서 리팩터링 할게
There was a problem hiding this comment.
굿굿
해야겠다고 생각든게 좀 있긴 하더라고
하네스가 제대로 없는 상태에서 AI로 구현을 많이 하다보니까 안티패턴들이 많이 섞인거 같아서 나중에 구조 쭉 정리해보게
There was a problem hiding this comment.
200줄 이내로 작성하는게 좋다던데 한번 agent한테 피드백 맡겨보고 줄이면 좋을듯?
There was a problem hiding this comment.
review Flow가 review-twix -> fix-review(반영할 거 있을 시) -> fianl-review
이렇게 하면 되는거야?
There was a problem hiding this comment.
너가 handoff 스킬 사용해서 프롬프트 작성하면 그거에 맞게
review-twix, fix-review, final-review, docs-refactor 알아서 스킬 동작 하는거야?
구현은 handoff 스킬 사용해서 계획 프롬프트로 제시하면 pi가 클로드한테 구현 위임하는건가?
handoff 스킬 에서만 프롬프트를 작성할건지 궁금쓰
There was a problem hiding this comment.
pi는 일단 plan 모드가 없어서 plan 스킬을 만들어뒀고
plan 스킬로 받아온다음에, handoff로 클로드한테 맞기고, 리뷰까지 끝내는 orchestartion을 한번 해보고싶었어
실제로 해봤을때 /skill:handoff-twix [프롬프트] 이렇게 보내면 스킬 전부 동작하더라고
There was a problem hiding this comment.
오오 codex까지 스킬 다 만들어줬네 ㅋㅋㅋㅋ
센스 굿
There was a problem hiding this comment.
pi는 테스트로 써보는거라 버릴 수도 있을거 같아서...ㅋㅋ 글고 그냥 문서니까 여기저기서 다 쓸수있는게 좋은듯
|
@jihun32 pi 간단한 설명은 이거 보면 될듯 약간 에이전트계의 vscode?? https://www.youtube.com/watch?v=PzqRRYHHpbw |
🔗 관련 이슈
📙 작업 내역
💬 추가 설명 or 리뷰 포인트 (선택)
리뷰 포인트:
AI 스킬이나 extension 외에 레거시 문서 정리도 포함되어 있는데, 이건 한번 검토해주면 좋겠어 @jihun32
위 리뷰 포인트로 찍은 부분까진 AI가 만들어준 문서인데, 만든김에 바로 시켜봤음