Sem:一种用于代码理解的新型原语——并非 LSP,而是基于 Git 之上的实体。
Sem: New primitive for code understanding – not LSPs, but entities on top of Git

原始链接: https://ataraxy-labs.github.io/sem/

```diff --- 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() / 1000) { + 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** 是一款全新的开发者工具,它超越了传统的逐行分析,通过将代码库解析为函数、类和方法等实体的依赖图来进行工作。 通过跨文件映射这些实体,与传统的语言服务器协议(LSP)相比,Sem 能够以更细粒度的方式理解代码变更。虽然 LSP 提供了深度的类型感知,但 Sem 利用 Tree-sitter 实现了速度优势和跨语言的一致性,使其成为 AI 代理的通用工具。 该项目不仅限于追踪修改,还引发了关于开发者如何“塑造”代码以改善 AI 辅助工作流效果的讨论。用户正在探索是否可以通过清晰的文档、具描述性的签名和定义明确的逻辑分支来构建代码,从而提供更好的信号,引导 Claude Code 等 AI 工具生成更高质量、更具行为导向的输出,而非依赖薄弱的样板式单元测试。最终,Sem 旨在将重心从文本差异对比转移到基于实体的软件演进理解上。
相关文章

原文
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 
+    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]);
-}
联系我们 contact @ memedata.com