Skip to content

회사 간 크루·스킬 공유(전역 라이브러리) 제안 #178

Description

@allpeaceclinic-max

회사 간 크루·스킬 공유(전역 라이브러리) 제안

배경

여러 비영리 단체의 이사·운영을 겸하는 1인 사용자입니다. 단체마다 이사회·행사·강의·문서작업이 반복되는데, 하는 일의 종류(역할)는 단체를 가로질러 같고, 자료와 정책은 단체별로 엄격히 분리되어야 합니다. 단체 간 비공개 자료가 섞이면 안 되는 게 운영상 의무에 가깝습니다.

즉 제 구조는 역할 × 단체의 2차원 격자입니다.

  • 가로줄(역할): 이사회 서기, 강의, 행사, 글쓰기 — 모든 단체에서 동일
  • 세로줄(단체): 기억·자료·정책은 서로 섞이면 안 됨

Argo로 이걸 구성하려니 어느 쪽으로 놓아도 한쪽이 무너집니다.

현재 구조에서 막히는 지점

① 회사 하나에 단체를 프로젝트로 두는 경우 — 격리가 안 됩니다

  • src/chat.mjs:203 — "너의 회사 기억은 ${wsRoot}/vault 폴더 전체다" → 크루별 기억 스코프가 없음
  • src/chat.mjs:294지정 작업 폴더: ${workRoots.join(' · ')} → 등록된 작업 폴더가 모든 크루에게 공통 주입
  • src/capabilities.mjs — capabilities가 wsId(회사) 단위 → 정책도 분리 불가
  • src/persona.mjs — 크루 카드 필드가 name·slug·role·team 뿐이라 담당 범위를 지정할 자리가 없음
  • vault/projects/vaultDocs()(src/memory.mjs)의 스캔 대상이 아니라 기억으로 동작하지 않음

결과적으로 A단체 문서를 작성하는 크루의 프롬프트에 B·C단체 폴더가 함께 들어갑니다.

② 회사를 단체별로 나누는 경우 — 역할 공유가 끊깁니다

  • src/workspace.mjs:47skills: join(root, 'skills') (root = 회사 폴더)
  • 크루 카드도 agents/로 회사 폴더 하위

그래서 같은 "이사회 서기" 크루를 회사 수만큼 복사해야 하고, 한쪽에서 다듬은 개선이 다른 쪽으로 전파되지 않습니다. 시간이 지나면 같은 역할의 카드가 회사마다 조금씩 달라집니다.

제안

전역 라이브러리 폴더를 두고, 로딩 시 회사 것과 합쳐서 읽어주세요.

<ARGO_ROOT>/
├─ shared/
│   ├─ agents/    ← 공용 크루 카드
│   └─ skills/    ← 공용 스킬
├─ co-aaaa/  (A단체)  agents/ skills/ vault/ capabilities.json
└─ co-bbbb/  (B단체)  agents/ skills/ vault/ capabilities.json
  • 크루·스킬 목록 = shared/ + 회사 로컬을 합집합으로
  • 같은 slug가 양쪽에 있으면 회사 로컬 우선(회사별 커스터마이즈 여지)
  • UI에서는 공용/로컬을 구분 표시(예: 배지)해 주면 충분합니다

이 제안이 Argo 정체성을 건드리지 않는 이유

기억(vault/)과 정책(capabilities.json)은 그대로 회사 단위로 둡니다. "회사 = 하나의 기억"은 유지되고, 공유되는 것은 일하는 방식의 정의(크루 카드·스킬)뿐입니다. 자료 격리는 회사 분리가 이미 완벽히 해주고 있어서, 제게 필요한 건 그 위에 얹는 역할 공유 하나입니다.

검토했던 대안

  • 심링크로 skills/ 공유sync/export가 심링크를 제외하도록 설계돼 있어(문서상 의도된 보안 정책) 안정적으로 쓰기 어렵다고 판단했습니다
  • 회사 생성 시 다른 회사에서 복사 — 구현은 쉽겠지만 복사 시점 이후 갈라지는 문제는 그대로입니다
  • 회사 내 프로젝트별 기억·정책 분리 — 이쪽이 더 근본적이지만 "회사 = 하나의 기억"이라는 제품 정체성을 흔들 것 같아 제안에서 뺐습니다

덧붙임 (있으면 좋은 정도)

MAX_WORK_ROOTS = 8(src/workroots.mjs:32)인데, 단체 수가 5~6이고 개인 프로젝트 폴더까지 더하면 상한에 근접합니다. 주석에 "필요가 실증되면 올린다"고 되어 있어 사례로 남깁니다.


소스를 읽고 쓴 제안이라 구현 사정과 안 맞는 부분이 있을 수 있습니다. 방향만 참고해 주셔도 감사하겠습니다. 좋은 제품 만들어 주셔서 고맙습니다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions