sem:一种语义粒度的新型代码理解原语工具

Lobsters Hottest 工具

摘要

sem 是一款基于 Git 的 CLI 工具,能够提供代码变更的语义理解,支持跨 26 种语言的实体级别差异分析、代码追溯、影响分析等功能。其目标是改进代码审查和 AI 辅助开发。

<p><a href="https://lobste.rs/s/j8kqth/sem_new_code_understanding_primitive">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/07/03 22:28

# sem 来源:https://ataraxy-labs.github.io/sem/ ## 了解哪些发生了变化。 基于 Git 的语义理解。差异、追溯、影响、日志。面向函数,而非行。 复制$brew install sem\-cli ## 相同提交,不同视角。 左侧:Git 展示的内容。右侧:实际发生的变化。 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 [新增] │ ∆ function authenticateUser [已修改] │ ⊖ function legacyAuth [已删除] │ └──────────────────────────────────── 1 个文件中有 3 个实体发生变化 `` AI 代理在 sem 输出下的准确性是原始行差异的 **2.3 倍**。查看基准测试。(https://ataraxy-labs.github.io/sem/agents.html) ## 六个命令,单个二进制文件。 适用于所有 Git 仓库,无需配置,无需插件。 `sem diff` 发生了什么变化?实体级差异,支持重命名检测、结构哈希和单词级内联高亮。 `` │ ⊕ function validateToken [新增] │ ∆ function authenticateUser [已修改] │ ⊖ function legacyAuth [已删除] `` `sem blame` 谁修改了它?按实体追溯,显示每个函数、类或方法的最后修改提交。 `` │ ⊕ render_inline_diff a1a6fbf Rohan 04-03 │ ⊕ format_terminal a1a6fbf Rohan 04-03 `` `sem impact` 哪些会受影响?跨文件依赖图,展示依赖于某个给定函数的所有实体,以及受影响的测试。 `` ⊕ function authenticateUser → 依赖: db.findUser, rateLimiter ← 被使用于: loginRoute, authMiddleware ! 42 个实体被传递影响 `` `sem log` 它是如何演变的?单个实体的 Git 历史。查看修改特定函数的每一次提交。 `` │ ae576ab Rohan 02-05 新增 │ a105183 Rohan 02-08 已修改(逻辑) │ a1a6fbf Rohan 04-03 已修改(逻辑) `` `sem entities` 路径下包含什么?列出每个函数、类、方法及类型,并附带行号范围。 `` entities: src/auth/login.ts function validateToken (L12:24) function authenticateUser (L26:45) interface AuthConfig (L47:52) `` `sem context` 适用于 AI 的智能上下文。受 token 预算限制的上下文窗口:包含目标实体、其依赖项以及被依赖项。适配任意 LLM 提示。 `` 上下文 for authenticateUser (预算:8000) 目标: ~705 tokens 依赖项: ~256 tokens 被依赖项: ~812 tokens `` 所有命令都支持 `\-\-json` 输出,便于机器读取。完整参考文档。(https://ataraxy-labs.github.io/sem/details.html) ## 覆盖你的技术栈。 26 种语言,5 种数据格式,单个二进制文件。 TypeScript JavaScript Python Go Rust Java C C++ C# Ruby PHP Swift Kotlin Elixir Bash HCL Fortran Vue Svelte XML ERB Dart Perl OCaml Scala Zig JSON YAML TOML CSV Markdown 8ms典型差异 26种语言 0需要配置 4,000+下载量 ## 立即体验,只需 10 秒。 `` $ brew install sem-cli $ sem setup ✓ 已创建包装脚本 ✓ 已设置 git config --global diff.external = sem ✓ 已安装预提交钩子 完成!从现在开始,在任何仓库中运行 git diff 都会使用 sem。 若要恢复,请运行:sem unsetup `` 一条命令,每次 `git diff` 都会变成 `sem diff`。无需配置文件。另外:cargo install \-\-git https://github\.com/Ataraxy\-Labs/sem sem\-cli

相似文章

@aigclink: 面向Agent的一个代码搜索工具:Semble,用自然语言查代码库返回精准代码片段,比grep+read节省98% token消耗 方法是让Agent用自然语言直接定位到最相关的几行代码,不用瞎猜关键词,不用读整文件 速度上,索引一个普通…

X AI KOLs Timeline

Semble是一个面向Agent的代码搜索工具,支持自然语言查询,能精准返回语义完整的代码片段,比传统grep+read方式节省98% token消耗,具有智能分块、双路检索和代码感知重排序等特性。