惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
人人都是产品经理
人人都是产品经理
Engineering at Meta
Engineering at Meta
小众软件
小众软件
I
InfoQ
有赞技术团队
有赞技术团队
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Martin Fowler
Martin Fowler
月光博客
月光博客
雷峰网
雷峰网
aimingoo的专栏
aimingoo的专栏
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
SegmentFault 最新的问题
The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
V
Visual Studio Blog
博客园 - 叶小钗
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
GbyAI
GbyAI
P
Proofpoint News Feed
Apple Machine Learning Research
Apple Machine Learning Research

Lobsters

CIFSwitch: a non-universal Linux local root vulnerability RIPE NCC session fixation: poaching logins with an Atlas probe GNOME 2.20 but its Web Components Agentic Search for Context Engineering – Leonie Monigatti Garnix is shutting down [not OC] akashina.tngl.sh/jjc Concerning Emacs (and Jazz) Nitpicking the shell history scene in ‘Tron: Legacy’ What's cooking on SourceHut? Q2 2026 The tenth OpenPGP email summit Package managers that package package managers Clojure on Fennel part three: parsing WordPress at 23 Finding Miscompiles for Fun, Not Profit GitHub - creusot-rs/creusot: Creusot helps you prove your Rust code is correct. Announcing Rust 1.96.0 | Rust Blog A Love Letter to Neovim sqlite AGENTS.md Am I a Bad Friend? CSS vs. JavaScript • Josh W. Comeau Erlang Ecosystem Foundation - Supporting the BEAM community A brief note about slot access cost in Common Lisp Keyboard latency probe Rethinking the GNOME clipboard issues Back to the Building Blocks’ Building Blocks Tech Notes: Theseus: translating win32 to wasm Fast is better than slow Content-addressed Rust builds (or, what kache actually caches) Intent to Prototype: Embedding API Canada’s Bill C-22 and the security cost of collecting more data
sem
rohanucla · 2026-06-07 · via Lobsters

Know what changed.

Semantic understanding on top of Git.
Diff, blame, impact, log. Functions, not lines.

copied $ brew install sem-cli

Same commit. Different lens.

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]

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

3 entities changed across 1 file

AI agents are 2.3x more accurate when given sem output vs raw line diffs. See the benchmark.

Six commands. One binary.

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

sem diff

What changed? Entity-level diffs with rename detection, structural hashing, and word-level inline highlights.

   function  validateToken    [added]
   function  authenticateUser [modified]
   function  legacyAuth       [deleted]

sem blame

Who changed it? Per-entity blame showing the last commit that touched each function, class, or method.

   render_inline_diff  a1a6fbf  Rohan  04-03
   format_terminal     a1a6fbf  Rohan  04-03

sem impact

What breaks? Cross-file dependency graph shows every entity that depends on a given function, plus affected tests.

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

sem log

How did it evolve? Git history for a single entity. See every commit that touched a specific function.

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

sem entities

What's under a path? Lists every function, class, method, and type with line ranges.

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

sem context

Smart context for AI. Token-budgeted context window: the entity, its dependencies, and dependents. Fits in any LLM prompt.

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

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

Your stack. Covered.

26 languages. 5 data formats. One binary.

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 typical diff

26 languages

0 config needed

4,000+ downloads

Try it. 10 seconds.

$ brew install sem-cli
$ sem setup
 Created wrapper script
 Set git config --global diff.external = sem
 Pre-commit hook installed

Done! Running git diff in any repo will now use sem.
  To revert, run: sem unsetup

One command. Every git diff becomes a sem diff. No config files.
Also: cargo install --git https://github.com/Ataraxy-Labs/sem sem-cli