Sem: 코드 이해를 위한 새로운 원시 개념 – LSP가 아니라 Git 위의 엔티티

발행: (2026년 6월 7일 AM 05:03 GMT+9)
4 분 소요

Source: Hacker News

무엇이 바뀌었는지 알아보세요.

Semantic understanding on top of Git.

Diff, blame, impact, log. Functions, not lines.

복사됨
$ brew install sem-cli

~/project

같은 커밋. 다른 시각.

Left: what git shows you. Right: what actually happened.

git diff

diff --git a/src/auth/login.ts b/src/auth/login.ts
index 4a2b1c0..8f3d2e1 100644
--- a/src/auth/login.ts
+++ b/src/auth/login.ts
@@ -12,6 +12,18 @@
+export function validateToken(token: string) {
+  const decoded = jwt.verify(token, SECRET);
+  if (!decoded.exp || decoded.exp < Date.now()) {
+    throw new TokenExpiredError();
+  }
+  return decoded;
+}
+
@@ -24,8 +36,10 @@
 export async function authenticateUser(
-  const user = await db.findUser(email);
-  if (!user) return null;
+  const user = await db.findUser(email);
+  if (!user) throw new UserNotFoundError();
+  await rateLimiter.check(email);
@@ -45,12 +59,0 @@
-export function legacyAuth(user, pass) {
-  return db.query('SELECT * FROM users
-    WHERE email = ? AND password = ?',
-    [user, pass]);
-}
            
sem diff

┌─ src/auth/login.ts ────────────────

│  ⊕ function  validateToken    [added]
│  ∆ function  authenticateUser [modified]
│  ⊖ function  legacyAuth       [deleted]

└────────────────────────────────────

1개의 파일에서 3개의 엔티티가 변경되었습니다.

AI 에이전트는 raw 라인 diff보다 sem 출력이 주어졌을 때 2.3배 더 정확합니다.
벤치마크 보기.

여섯 개 명령. 하나의 바이너리.

Everything works in any Git repo. No config. No plugins.

sem diff

무엇이 바뀌었나요? 엔티티 수준 diff와 이름 변경 감지, 구조 해싱, 단어 수준 인라인 하이라이트.

│  ⊕ function  validateToken    [added]
│  ∆ function  authenticateUser [modified]
│  ⊖ function  legacyAuth       [deleted]

sem blame

누가 변경했나요? 각 함수, 클래스, 메서드를 마지막으로 수정한 커밋을 보여주는 엔티티별 blame.

│  ⊕ render_inline_diff  a1a6fbf  Rohan  04-03
│  ⊕ format_terminal     a1a6fbf  Rohan  04-03

sem impact

무엇이 깨지나요? 파일 간 의존성 그래프가 특정 함수에 의존하는 모든 엔티티와 영향을 받은 테스트를 보여줍니다.

⊕ function authenticateUser
  → depends on:  db.findUser, rateLimiter
  ← used by:    loginRoute, authMiddleware
  ! 42 entities transitively affected

sem log

어떻게 진화했나요? 단일 엔티티에 대한 Git 히스토리. 특정 함수에 영향을 준 모든 커밋을 확인하세요.

│  ae576ab  Rohan  02-05  added
│  a105183  Rohan  02-08  modified (logic)
│  a1a6fbf  Rohan  04-03  modified (logic)

sem entities

경로 아래에는 무엇이 있나요? 모든 함수, 클래스, 메서드, 타입을 라인 범위와 함께 나열합니다.

entities: src/auth/login.ts
  function validateToken     (L12:24)
  function authenticateUser  (L26:45)
  interface AuthConfig       (L47:52)

sem context

AI를 위한 스마트 컨텍스트. 토큰 예산이 제한된 컨텍스트 윈도우: 엔티티와 그 의존성 및 의존자를 포함합니다. 모든 LLM 프롬프트에 맞습니다.

context for authenticateUser (budget: 8000)
  target:          ~705 tokens
  dependencies:    ~256 tokens
  dependents:      ~812 tokens

All commands support --json for machine-readable output.
Full reference.

당신의 스택. 모두 지원.

26개 언어. 5개 데이터 포맷. 하나의 바이너리.

  • TypeScript
  • JavaScript
  • Python
  • Go
0 조회
Back to Blog

관련 글

더 보기 »

OpenAI, SEC에 S‑1 초안 제출

We recently submitted a confidential S-1. We expect it to leak so we’re just announcing it. We have not decided on timing yet; it may be a while because there a...