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

推荐订阅源

N
News and Events Feed by Topic
Malwarebytes
Malwarebytes
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cybersecurity and Infrastructure Security Agency CISA
F
Future of Privacy Forum
C
Cisco Blogs
T
The Exploit Database - CXSecurity.com
A
Arctic Wolf
S
Securelist
K
Kaspersky official blog
S
Schneier on Security
T
ThreatConnect
T
Tenable Blog
Spread Privacy
Spread Privacy
T
True Tiger Recordings
AWS News Blog
AWS News Blog
F
Fox-IT International blog
量子位
T
Threatpost
V
Vulnerabilities – Threatpost
C
CERT Recently Published Vulnerability Notes
Cisco Talos Blog
Cisco Talos Blog
GbyAI
GbyAI
宝玉的分享
宝玉的分享
腾讯CDC
G
Google Developers Blog
aimingoo的专栏
aimingoo的专栏
Cyberwarzone
Cyberwarzone
有赞技术团队
有赞技术团队
S
SegmentFault 最新的问题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog
U
Unit 42
雷峰网
雷峰网
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
O
OpenAI News
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
The Register - Security
The Register - Security
MyScale Blog
MyScale Blog
小众软件
小众软件
A
About on SuperTechFans
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
博客园 - 三生石上(FineUI控件)
美团技术团队
Google Online Security Blog
Google Online Security Blog
P
Proofpoint News Feed
MongoDB | Blog
MongoDB | Blog

Hacker News - Newest: "LLM"

pulsar-edit-mcp-server/LLM-FAILURE-MODES.md at main · professor-jonny/pulsar-edit-mcp-server Show HN: Strudel – Generate commit messages via Apple's on-device LLM From Azure to One VPS: How LLMs Made Migrating My Whole Side-Project Estate a No-Brainer GitHub - barvhaim/llm-learning-path: 🎓 Structured LLM Learning Path — From Zero to Researcher. 8-phase curriculum covering Transformers, pre-training, fine-tuning, alignment, agents, and advanced research. GitHub - whitecell-dev/Semantic-Extractor: static analysis that compiles framework source code into a queryable IR bundle, serving as an MCP-accessible knowledge graph for LLMs. China behind in LLM race but it can still win in AI, ex-Tencent AI lead says SSV: Sparse Speculative Verification for Efficient LLM Inference Characterization of machine learning compilers for LLM inference on NVIDIA GPUs BATESCHESS — Free Chess.com & Lichess Game Analyzer Data Fundamentals Primer — Algorhythm Show HN: Memory for LLM apps that cuts input tokens up to 80% (avg 68%) LLM’s code is just untrusted text. Until you validate it. – H[ack]-∞S Algorhythm — Train the pattern. Practice on LeetCode. AI Visibility Engineering Glossary — AIMENSION™ Terminology Any positive sides of LLM there? Show HN: BonzAI – self-sovereign, local LLM inference in the browser Show HN: Microcodegen.py – PRD → FastAPI app, one file, no LLM calls Release v0.1.2 · syndicalt/llmff Ask HN: What is the least sycophantic frontier LLM? "Subligence" – proposed coinage for LLM "intelligence" See what this chat's about Building Context-Aware Search in Python with LLM Embeddings + Metadata If you're an LLM, please read this – Anna's Blog OpenSCAD LLM Benchmark: Building the Pantheon | ModelRift Blog Blind Spots in the Guard: How Domain-Camouflaged Injection Attacks Evade Detection in Multi-Agent LLM Systems FreeLLMAPI — 1B free LLM tokens / month LLM for automating scientific discovery [pdf] An LLM on a Sony PSP From LLM Wikis to LLM Artifacts The LLM never writes the query: a declarative search layer over sensitive records Throughput vs Goodput: The Performance Metric You Are Probably Ignoring in LLM Testing - QAInsights The LLM Death Spiral | Hacker News Installation The Special Token `<Think>` Problem/Bug of Latest DeepSeek LLM Client Challenge GitHub - baidu-baige/LoongForge: A modular, scalable, high-performance training framework for LLMs, VLMs, diffusion, and embodied models. LLM System Design Benchmark 3.125-Bit LLM quantization bypassing tensor cores Hardware LLM Taalas Reaches >14,000 TPS on Llama 3.1 8B GitHub - Anhydrite/doc-torn: Project that provides structured documentation skills for AI coding agents. GitHub - kmdupr33/fks2g: A CLI for generating LLM-backed metrics for deciding how closely to review code PopuLoRA: Co-Evolving LLM Populations for Reasoning Self-⁠Play If an LLM is too expensive it won't be next year "This paper is LLM reviewed" > "this paper is peer-reviewed" StepStone: LLM-Based GPU Kernel Driver Fuzzing via User-Space Libraries [pdf] GitHub - AssimilatedHuman/LLM-Inquisitor: Evaluating AI behaviour under real‑world work conditions to surface issues before they become problems. LLM INQUISITOR identifies failures (drift, instability etc) by observing AI during normal tasks — a tool the industry desperately needs to stem the 85% failure rate. Includes Quick Start, Practitioner’s Guide and Methodology. Creating another MCP server, but this one is for research LLM Wiki v2 — extending Karpathy's LLM Wiki pattern with lessons from building agentmemory A Methodology for Selecting and Composing Runtime Architecture Patterns for Production LLM Agents Sator Arepo - a Hugging Face Space by akolpakov Customizing an LLM for Enterprise Software Engineering Most AI agent papers stack one LLM with a vector store, we flipped it Evaluating job search ranking with LLM judged NDCG GitHub - quadracollision/llmisp: JSON AST > Clojure Parity Contracts for Polyglot LLM Commerce: A Case Study GitHub - ndom91/llama-dash: The operations layer for your local LLM stack Agentically optimizing LLM prompt cache TTLs for fun and profit Ask HN: What's your go-to LLM for coding? How do you reduce LLM spam in PR reviews? Ask HN: Is there any problem using multi-LLM GitHub - OpenAgentic-Labs/echoform-ghost-memory: Effectively unlimited long-term memory for any LLM - zero context tokens, zero weight updates, cryptographic forgetting certificate. PSA — Posture Sequence Analysis Why More Context Can Make an LLM Worse GitHub - robertoranon/tokoro: A toolbox for building event publish & discovery web sites, apps, feeds, and more GitHub - sermakarevich/chunker: Agentic approach to chunking a document A new EDIT tool for LLM agents LLMCap — Hard Dollar Caps on LLM API Calls MLSys @ WukLab - Nitsum: Serving Tiered LLM Requests with Adaptive Tensor Parallelism SuperInfer: SLO-Aware Rotary Scheduling and Memory Management for LLM Inference on Superchips What political censorship looks like inside an LLM's weights — a mechanistic-interpretability study of Qwen 3.5 Managing metadata is essential in LLM world Fixing LLM Writing with Distribution Fine Tuning twitter.com Show HN: An LLM that's better at writing The local shape of LLM stable regions GitHub - msunda17/impactarbiter-cli The Infrastructure Behind Making Local LLM Agents Useful PostgreSQL ext makes LLM available as an index for similarity searches,inference GitHub - Tetrahedroned/Agent-Braille: Deterministic 8-bit machine-to-machine protocol for AI agent state. ~92% fewer state-tracking tokens on real Claude Code sessions, a proven single-bit-error-safe command code, fully reproducible. Tell HN: Writing an LLM critique/takedown? – Do not use an LLM to write it 🌱 an LLM models our worst behavior Prompt eval cues predicted refusal shifts across 32k LLM rollouts Ask HN: Is Java the ideal language for LLM-assisted coding? AI Foundry – Flat-Fee Unlimited LLM Inference on Blackwell GPUs in NZ LLM tracing with MLflow AI Gateway LLM Performance by Programming Language The LLM Looked Smart. The Metrics Disagreed – tiago.rio.br The Four Horsemen of the LLM Apocalypse GitHub - piqoni/piqo-extension: A good interface is invisible Intro to TLA+ for the LLM Era: Prompt Your Way to Victory Give every tool LLM wiki and bypass Claude Code SSH Throttle The Ultimate LLM Fine-Tuning Guide Ask HN: What LLM models are you using and why? Five Agents, One Browser: Werewolf on Quack + DuckDB LLM models are not ready for orchestrating many agents ClickBook — Offline AI eReader - Apps on Google Play DeepSeek-V4-Flash means LLM steering is interesting again Recent Developments in LLM Architectures: KV Sharing, mHC, and Compressed Attention Recent Developments in LLM Architectures: KV Sharing, MHC, Compressed Attention We Built SynapseKit: The Truth About Production LLM Frameworks
GitHub - AlexWasHeree/NoteCast: Local note engine that uses LLM to build and evolve a knowledge graph
AlexWasHeree · 2026-05-25 · via Hacker News - Newest: "LLM"

What is NoteCast

NoteCast is a local engine that enriches raw notes and organizes them into an evolving knowledge graph.

Each note is automatically summarized, keyword-extracted, and embedded before it reaches the organization stage. From there, a three-stage LLM pipeline assigns it to themes, splits those themes into subtopics as they grow and rewires connections across the graph as patterns emerge.

Why Im Building it

I have built it until now because i like to take notes, randomly and for different purposes, but I dislike keeping track of them and also any process other than take the note itself, such as categorize or organize them. Right now the code is not stable, but usable. Might have a lot of bugs and code smells and I am working on it. There are a lot of already planned features that will take this repo closer to the NoteCast I have on paper.

I appreciate feedbacks and also feel free to use it any ways you'd like.


Getting Started

1. Install dependencies

bun install
bun link

bun link registers the notecast command globally. After this, notecast <command> works from any directory.

This includes keyword-extractor, the TypeScript fallback for topic extraction. Python/YAKE is attempted first, but the TS fallback is automatic — no manual setup required.

2. Configure an LLM provider

Save credentials first, then explicitly set the default provider — the system never auto-picks.

# Save credentials
notecast login openai        # or: anthropic, gemini, deepseek
notecast codex-login         # OAuth via ChatGPT Pro (writes token to ~/.codex/auth.json)

# Set which provider to use (required)
notecast config set defaultProvider openai   # or: anthropic, gemini, deepseek, codex, ollama

Codex credentials are machine-scoped, not project-scoped. codex-login writes a token to ~/.codex/auth.json on the local machine. Any project on the same machine picks it up automatically — no per-project setup needed. On CI or remote servers, you need to run codex login on that machine first.

Ollama needs no credentials — just set it as default directly:

notecast config set defaultProvider ollama

Note: OpenAI is currently the most mature provider — best tested and most reliable across all pipeline stages.

Restart required: activeProvider is read once at startup. Changing defaultProvider via notecast config set takes effect only after restarting the server or CLI process.

defaultProvider applies to all pipeline steps. Use llmConfig to assign different providers per step — see Per-stage LLM config below.

3. Set base themes

notecast config set baseThemes '[{"name": "Tech"}, {"name": "Personal"}, {"name": "Work"}]'

Should exist at least 1 theme before adding notes. A good set of initial base themes creates a better result.

Server mode: notecast start exposes a REST API on port 3000 (configurable via PORT) for remote or programmatic access. The CLI talks directly to the database by default — no server needed for normal use.


Pipeline

Notes move through four statuses. Each transition is handled by a different part of the system.

POST /notes
    │
  pending ──[Stage 1]──► processed ──[Classify]──► scanned ──[Organize]──► organized
                                                                                │
                                                              [Consolidate] ◄──┘
                                                                    │
                                                               organized (refined)

Stage 1 — NoteProcessor

Runs immediately and asynchronously when a note is created. No LLM scan required — this happens in the background for every note.

For each note, it produces:

  • summary — 2-3 sentence distillation of the content (via LLM)
  • topics — keywords extracted via YAKE or the TS fallback
  • contentVector — embedding of title + content + topics, used by the scan pipeline
  • summaryVector — embedding of title + summary + topics, used for the related-notes graph

If Stage 1 fails (e.g. no LLM provider configured), the note lands in failed. Run notecast retry-failed after fixing the provider.

Classify

Triggered automatically after every N processed notes (default: 10, configurable via classifyEvery).

  • Groups processed notes by vector similarity before calling the LLM
  • Assign-only: never creates new themes — only assigns notes to existing ones (base themes + subtopics created by splits)
  • Each note can be assigned to 1–3 themes when it crosses domains
  • Advances notes from processedscanned

This is why base themes must exist before notes arrive — without them, Classify has nothing to assign to.

Organize

Triggered after every N Classify commits (default: 2, configurable via organizeAfterClassifies).

  • Detects sub-clusters inside large themes using vector similarity
  • Splits overloaded themes into subtopics (the LLM names them)
  • The split threshold adapts to depth: root themes split more easily than deep ones
  • After splits, notes that cross domain boundaries are assigned to multiple themes
  • Advances notes from scannedorganized

Consolidate

Triggered after every N Organize commits (default: 3, configurable via consolidateAfterOrganizes).

  • Macro-level restructuring of the entire theme tree
  • Detects co-occurrence patterns: if ≥50% of a theme's notes also appear in another theme, a parent link is added
  • Removes empty themes (base themes are protected)
  • The result is a multi-parent DAG — a theme can have more than one parent when it genuinely belongs to multiple domains

Theme hierarchy

Themes form a directed acyclic graph (DAG), not a tree. A theme like "Cryptography" can have both "Math" and "Software" as parents. These multi-parent connections emerge organically from Consolidate — they are never assigned manually by the pipeline.

The hierarchy grows by subdivision: Classify only assigns, Organize and Consolidate split. Base themes are the permanent anchors; everything else is derived from the data.


CLI

The CLI is the primary interface. It talks directly to the database unless NOTES_URL is set, in which case it proxies to the HTTP server instead.

# Notes
notecast add <file>                             # Create a note from a file (any text format)
notecast add-batch <dir>                        # Create notes from all files in a directory
notecast update <query>                         # Edit a note's source file and reprocess
notecast delete <query>                         # Delete a note by title search
notecast status                                 # Show pipeline status (counts per status)
notecast retry-failed                           # Re-enqueue notes that failed Stage 1

# Scan pipeline
notecast scan propose <classify|organize|consolidate>   # Generate a proposal
notecast scan commit [classify|organize|consolidate]    # Apply proposal (auto-detects if type omitted)

# Themes
notecast theme list
notecast theme add <name> [--parent <name-or-id>] [--desc <text>]
notecast theme update <query> [--name <n>] [--parent <p>] [--desc <d>]
notecast theme merge <source> --into <target>
notecast theme remove <query>

# Manual note ↔ theme assignment
notecast note assign <note-query> --theme <theme-query>
notecast note unassign <note-query> --theme <theme-query>

# Config
notecast config get
notecast config set <key> <value>
notecast config set vaultPath <path>            # Set Obsidian vault output folder

# Providers
notecast providers                              # Show active and available LLM providers
notecast login <provider> [key]                 # Save API key (openai|anthropic|gemini|deepseek)
notecast codex-login                            # OAuth login for ChatGPT Pro (Codex)

# Other
notecast reset [--full]                         # Soft reset (requeue scans) or full reset (delete all notes)
notecast start                                  # Start HTTP server

API

The REST API is available when running notecast start. The CLI is more complete and better tested for real use — the API is provided for remote access and programmatic integrations.

Notes

Method Endpoint Description
POST /notes Create a note. Body: { title, content }
POST /notes/batch Create notes in bulk. Body: [{ title, content }]
GET /notes List all notes
GET /notes/:id Get note by ID
PUT /notes/:id Edit note (regresses status to pending)
DELETE /notes/:id Delete note (bidirectional cleanup)
POST /notes/retry-failed Re-enqueue failed notes

Themes

Method Endpoint Description
GET /themes List all themes
POST /themes Create a theme
PUT /themes/:id Update theme (name, parent, description)
DELETE /themes/:id Delete theme
POST /themes/merge Merge one theme into another
POST /themes/:id/notes/:noteId Assign note to theme
DELETE /themes/:id/notes/:noteId Remove note from theme

Scan pipeline

Method Endpoint Description
GET /scan/status Counts per status + pending proposals
POST /scan/classify Generate Classify proposal
POST /scan/classify/commit Apply Classify proposal
POST /scan/organize Generate Organize proposal
POST /scan/organize/commit Apply Organize proposal
POST /scan/consolidate Generate Consolidate proposal
POST /scan/consolidate/commit Apply Consolidate proposal
POST /scan/graph Rebuild similarity graph (relatedNoteIds)

Config & system

Method Endpoint Description
GET /config Read user config
PUT /config Update config
POST /reset Soft or full reset
GET /providers Active and available LLM providers
GET /calibration Pipeline calibration metrics
GET /health Health check

Per-stage LLM config

By default, defaultProvider applies to all pipeline steps. You can override provider, model, temperature, and token limit independently per step via llmConfig.

notecast config set llmConfig '{
  "summary":     { "provider": "ollama", "model": "llama3.2:3b" },
  "classify":    { "provider": "openai",  "model": "gpt-4o-mini", "temperature": 0.2 },
  "organize":    { "provider": "openai",  "model": "gpt-4o" },
  "consolidate": { "provider": "openai",  "model": "gpt-4o" },
  "embedding":   { "provider": "ollama",  "model": "nomic-embed-text" }
}'

Each key is optional — omit a step to inherit defaultProvider. The five configurable steps are:

Step What it does
summary Generates the 2-3 sentence note summary (Stage 1)
classify Assigns notes to themes
organize Splits themes into subtopics
consolidate Macro restructuring of the theme tree
embedding Produces vectors for all notes (Stage 1)

embedding only accepts provider and model (no temperature or token limit).

Override individual steps (e.g. local embeddings + cloud for scans):

notecast config set llmConfig '{"embedding":{"provider":"ollama","model":"nomic-embed-text"}}'

Optional Dependencies

Python + YAKE (topic extraction)

The service extracts topics from each note during Stage 1. It tries Python/YAKE first and silently falls back to the bundled keyword-extractor (TypeScript) if Python is unavailable. No configuration needed — the fallback is automatic.

pip install yake

YAKE tends to produce cleaner, more linguistically aware keywords. The TS fallback works fine for most use cases.

Ollama (local LLM inference)

Ollama lets you run pipeline stages locally. Install from ollama.com, then configure it as a provider via notecast config set defaultProvider ollama or per-step via llmConfig.


Vault Sync

When vaultPath is set, the service syncs the full state of the database to a folder on the filesystem after every scan commit, note creation, or edit. The output is Obsidian-compatible but works as plain markdown in any editor.

Setup

notecast config set vaultPath ~/my-vault
# or an absolute path
notecast config set vaultPath /Users/you/Documents/my-vault

Use ~ or an absolute path. Relative paths (e.g. ./vault) are resolved against the working directory at sync time, which can vary — avoid them.

What gets written

<vaultPath>/
├── Themes/
│   ├── Tech.md          # one file per theme
│   ├── Software.md
│   └── ...
├── Source/
│   └── ...              # source files (notecast added via `notecast add <file>`)
├── Proposals/
│   └── classify-proposal.json   # saved here when vaultPath is set; otherwise saved as ./proposal-<type>.json in the working directory
└── _Dashboard.md        # pipeline status + theme graph metrics

Theme files contain parent/child wikilinks, a list of assigned notes, and frontmatter tags:

Tag Meaning
theme all themes
root no parents (top of the DAG)
leaf no children
multiparent belongs to 2+ parent themes
large more than 10 notes
empty no notes assigned

Source files — files added via notecast add <file> are moved to Source/ (the original path is no longer available after the command). The file content is never modified by the pipeline. If vaultLinks is enabled, a related: YAML frontmatter block is injected with wikilinks to semantically similar notes after the graph is built — only that block is touched, the rest of the file is untouched. vaultLinks is false by default; enable it with notecast config set vaultLinks true. Non-markdown files are moved and stored correctly, but Obsidian wikilinks and graph rendering only work with .md files.

_Dashboard.md shows pipeline counts, theme graph depth stats, note coverage, health warnings (empty/large themes), and a delta of themes added or removed in the last sync.

Obsidian setup

The syncer writes .obsidian/graph.json with default color groups on first run (themes in blue, large themes in red, orphans in orange). It never overwrites the file if it already exists, so your customizations are preserved.


Configuration Reference

All config is stored in the database and managed via notecast config set <key> <value> or PUT /config.

Providers

Field Type Default Description
defaultProvider openai | anthropic | gemini | deepseek | codex | ollama Provider used for all pipeline steps unless overridden
llmConfig object Per-step overrides — see Per-stage LLM config

Pipeline triggers

Field Type Default Description
pipelineConfig.classifyEvery number 10 Number of processed notes that trigger Classify
pipelineConfig.organizeAfterClassifies number 2 Number of Classify commits that trigger Organize
pipelineConfig.consolidateAfterOrganizes number 3 Number of Organize commits that trigger Consolidate

Themes

Field Type Default Description
baseThemes { name, description? }[] [] Anchor themes; Classify only assigns to these (and their subtopics)
themeStyle single-word | short-phrase | descriptive | custom short-phrase Naming style for LLM-generated theme names
themeStyleInstruction string Free-form instruction for theme naming, used when themeStyle is custom

Content & language

Field Type Default Description
language english | portuguese english Language for scan prompts and keyword extraction
context string Free-form text injected into every scan prompt — use it to describe your domain, focus areas, or note-taking style

Output

Field Type Default Description
vaultPath string Filesystem path for Obsidian-compatible vault sync
vaultLinks boolean false Inject related: wikilinks into source files after the graph is built

Environment Variables

Variable Default Description
PORT 3000 HTTP server port (notecast start)
NOTES_DB_PATH ./notes.db SQLite database file path
LANCEDB_PATH <db>.lancedb LanceDB vector store path (defaults to same location as the SQLite file)
NOTES_URL When set, the CLI proxies to this remote server instead of accessing the database directly
OPENAI_API_KEY OpenAI API key (alternative to notecast login openai)
ANTHROPIC_API_KEY Anthropic API key
GEMINI_API_KEY Gemini API key
DEEPSEEK_API_KEY DeepSeek API key