必需品 n. 维持一个高效且安全的黑客环境所需的东西。“一壶酒,一条面包,一台配备8MB内存的20兆赫80386计算机,以及一个支持完整UNIX系统(包括源代码)、X窗口、EMACS和通过‘blazer’连接到友好的互联网网站的UUCP的300MB磁盘,还有你。”
—— 雷蒙德,E.S. 和 斯蒂尔,G.L.(编辑),《行话文件》[1991]
https://magic-cookie.co.uk/jargon/mit_jargon.htm#x817
返回首页
最新
我开发了一个桌面应用程序(使用PyQt6,适用于Windows),该应用程序在三阶段管道中协调多个人工智能模型:
第一阶段 – 一个云端大语言模型(Claude/GPT/Gemini)将提示分解为结构化的子任务
第二阶段 – 本地Ollama模型处理每个子任务(免费、私密,运行在您的GPU上)
第三阶段 – 云端大语言模型将结果整合成一个连贯的最终答案
动机:云端API在推理和结构方面表现出色,但需要付费。本地Ollama模型是免费的,但有时不够一致。这个管道让您可以在各自最强的地方使用它们。
还包括:
- FastAPI + React网页用户界面(可通过局域网/移动设备访问)
- SQLite聊天记录
- 基于ChromaDB的RAG
- Discord webhook通知
技术栈:Python、PyQt6、FastAPI、React、Ollama、Anthropic/OpenAI/Google API。MIT许可证。
Engram为AI编码代理提供了跨会话的持久记忆。在前五天内,npm安装量达到了2500次。
问题是:每次Claude Code或Cursor会话都是从零开始。你需要重新解释你的架构、约定和过去的决策。虽然CLAUDE.md有所帮助,但它是手动的,无法扩展。
Engram作为一个原生的MCP服务器运行。只需一条命令即可安装,使用SQLite作为后端,无需基础设施。
记忆分为三个层次:
1. 显式记忆:你告诉它要记住的内容
2. 隐式记忆:从你的工作方式中提取的行为模式(低信心,随着时间的推移得到强化)
3. 综合记忆:在整合过程中生成的元观察
关键的架构选择是:在读取时进行智能处理,而不是在写入时。大多数记忆系统在接收时提取和分类。Engram广泛存储数据,并在你查询时投入计算,因为那时你才真正知道什么是重要的。这就是它在LOCOMO(arXiv:2402.17753)中得分80%,而使用的令牌数量比全上下文检索少30倍的原因。
技术栈:TypeScript,SQLite + sqlite-vec,默认使用Gemini嵌入(任何兼容OpenAI的提供者都可以通过ENGRAM_LLM_BASE_URL使用)。没有外部依赖。
安装命令:npm install -g engram-sdk && engram init
与Mem0、Zep/Graphiti、Letta/MemGPT的比较: [https://www.engram.fyi/compare](https://www.engram.fyi/compare)
GitHub地址: [https://github.com/tstockham96/engram](https://github.com/tstockham96/engram)
我从来不听我的语音备忘录。手机上有数百条录音,全都闲置着。<p>我开发了一个Telegram机器人,可以将这些录音转录成文字(使用AssemblyAI,支持说话者标签,任何语言)——然后接入了Claude Agent SDK,这样你就可以在之后与文件进行对话。<p>Claude Agent SDK为你的机器人提供了与Claude Code相同的工具——读取、全局搜索、文本搜索——可以自主运行在你存储的转录文本上。你可以问“我的经理对截止日期说了什么?”它会生成一个代理,浏览你的文件,读取相关内容并给出答案。这不是关键词搜索,而是一个真正的代理在你的数据上进行推理。<p>自托管,使用你自己的API密钥,MIT许可。可以在任何支持Docker的环境中运行。
一个小脚本,用于在所有用户名旁边显示账户年龄和声望,这样你无需点击进入某人的个人资料就能获取这些信息。这个脚本是用 Opus 4.6 编写的,虽然有点乱,但可以正常工作 :) 在 Firefox 上使用 Tampermonkey。
我认为这与“Show HN”标签有关,因为这篇帖子是解释性的,整个代码库中讨论的这个小故事用例都在仓库中,并且可以自由使用。(如果你使用了,我会很高兴!)
在这篇帖子中,正如我在提交的标题中试图表达的那样,我概述了我的探索之旅,当我决心让GitHub风格的Markdown以我选择的颜色、样式和对齐方式显示我的文本时,我发现,除了使用带有预定义语法高亮的围栏块外,无法做到这一点是一种众所周知的情况,这种情况通常会得到“按预期工作”的回应,因为,嗯,GitHub不希望他们的仓库看起来像MySpace或Geocities,或者通过允许任意的HTML/CSS样式而带来安全风险。确实,我“应该”使用GitHub Pages通过Jekyll从我的Markdown构建一个页面,这是一种控制自己仓库中文档样式的支持方式,但那样有什么乐趣呢?
链接的帖子记录了我找到的解决方法,这成为了一个输出目标格式,而这个格式是我ASCII线条艺术图表工具从未有人要求过的。我想这里的一些人可能会欣赏我在一个我可能根本不应该在意并且应该继续前进的问题上“浪费时间以便你们不必”的技术解决方案的文档。
您的代理并不了解您的代码库。它了解的是代码,而不是背后的决策。<p>为什么您选择了队列而不是直接写入数据库。为什么那个模块没有外部依赖。为什么重试逻辑在客户端而不是服务器上。这些背景知识只存在于您的脑海中。一旦会话结束,这些信息就消失了。<p>EmCogni Code 解决了这个问题。一个 Go 二进制文件。本地 MCP 服务器。您在做决策时进行注释:<p>#示例 1
emcogni note payments --type decision "通过队列异步处理——直接写入在负载下导致超时峰值"<p>#示例 2
emcogni note payments --type invariant "绝不要在线调用外部 API——始终入队"<p>任何与 MCP 兼容的代理(如 Claude、Cursor、Copilot)在处理文件之前,都会通过 get_context 工具自动获取这些上下文。EmCogni 还可以通过 propose_context 工具建议上下文的补充。<p>在 emcogni.com 上,个人或本地使用是免费的。<p>即将推出团队/管理层级——在工程师和代理之间共享上下文,建立组织级知识库。等待名单在同一链接开放。<p>想知道其他人是如何处理这个问题的。CLAUDE.md 文件?自定义 RAG?还是每次会话都重新解释?