Cloudflare 把给 AI 智能体用的浏览器开源了,叫 Kitesurf
它不跑 Chromium,直接跑在 Cloudflare Workers 上,解析 HTML、跑页面 JS、截屏都能干,还支持 Chrome DevTools 协议,Puppeteer 接上就能用
它把标签页、主题、扩展这些给人用的东西全砍了,只盯智能体关心的指标,截图、提 HTML 这类活儿 CPU 和内存都比 Chromium 省得多,并发能开更多会话
仓库是 cloudflare/kitesurf,Apache 2.0 协议,刚开源就已经 837 个 star
本地跑也不麻烦,pnpm run dev 就能起,跑在 8787 端口;不过部署到 Cloudflare 上要 Workers 付费套餐
显示更多
让 Claude Code 跑一会儿额度就见底,翻回去一看,大头根本不是你说的话,是它自己 grep 出来的几百行结果、一整坨日志、重复的 JSON,每一轮都原样塞回给模型。
Headroom 管的就是这块。它在本地把工具输出、日志、文件、RAG 片段先压一遍,再发给模型。
现在 7.9 万多星,今天在 GitHub Python 日榜上,10 号刚发 v0.44.0。
README 里我觉得比较有用的:
1. 不用改代码,headroom wrap claude 一条命令就把 Claude Code 套上,Codex、Aider、OpenCode、Kimi CLI 也能这么接,不想用了 headroom unwrap 撤掉
2. 官方实测四个 agent 场景省了 21% 到 57% 的输入 token,重复的 JSON 和日志能压掉九成以上
3. 压掉的原文都缓存在本机,模型需要细节时自己调 headroom_retrieve 取回来
4. 还能压输出:开 HEADROOM_OUTPUT_SHAPER=1,让模型少说"好的,我来……"这类开场白,默认是关的
压缩在本机跑,内容不会发出去。uv tool install --python 3.13 "headroom-ai[all]" 就能装,Apache-2.0,Cursor 得手动配。
大段正文、本来就很密的输出基本压不动,省多少看你的流量有多啰嗦,跑一下 headroom savings 就知道了。
显示更多
窝趣!Obsidian 的 CEO 把自己用的知识库模板放到 GitHub 上了。
想用 Obsidian 搭建个人知识库,但不知道怎么分类、怎么组织笔记的朋友,可以先看看他的模板。
除了知识库模板,Obsidian 官方和 CEO Steph Ango(kepano)还分享了几个相关项目,我整理了 7 个:
1、40 Questions:年度复盘问题
kepano 整理的一份问题清单,用来回顾自己过去一年或一个阶段的生活。
不知道年度复盘从哪里开始的朋友,可以挑几个问题,结合自己的日记和笔记来回答。
2、Minimal:Obsidian 主题
一个简洁、可自定义的 Obsidian 主题。喜欢干净一点的笔记界面,可以在 Obsidian 的主题市场里搜索 Minimal。
3、obsidian-sample-plugin:官方插件模板
如果你用 Obsidian 的时候,发现现有插件满足不了自己的需求,可以拿这个官方模板作为起点,尝试开发一个自己的插件。
也可以把仓库交给 Codex,让它先帮你解释项目结构和开发步骤。
4、kepano-obsidian:个人知识库模板
Obsidian 的 CEO 把自己使用的 Vault 模板放到了 GitHub 上。里面展示了他组织笔记和资料的方式,可以下载下来研究,再根据自己的需求修改。
注意,这是公开的模板,不是他完整的私人知识库。
5、Flexoki:写作和编程配色
kepano 为写作和代码设计的一套配色。如果你想调整 Obsidian、编辑器或者自己网站的颜色,可以参考这套方案。
6、obsidian-releases:插件和主题目录
这里维护了 Obsidian 的社区插件目录、主题目录和公开版本信息。
想找插件、研究社区都有哪些工具,可以从这里入手。仓库本身不包含 Obsidian 的源代码。
7、JSON Canvas:开放式画布格式
Obsidian 的 Canvas 可以用来把笔记、图片和想法放到一张画布上。
JSON Canvas 是用于保存这些画布数据的开放文件格式。对想研究画布工具,或者希望了解画布数据怎么存储的朋友,可以看看这个项目。
如果你是刚开始用 Obsidian,我建议先看知识库模板和 Minimal 主题:先把笔记写起来,用一段时间之后,再根据自己的需求调整分类和插件。
显示更多
建议收藏,用到时照着做。做完你能让 DeepSeek 自己决定“要不要调用你写的函数”,并把结果用人话讲回来。
AI 能查天气、查订单,是它自己去查的吗?DeepSeek 官方一句话拆台:模型本身不执行任何函数
这是 DeepSeek 官方 API 文档里 Tool Calls(工具调用)一页。先说结论:
官方原话是,函数要由你自己提供,模型本身不执行具体函数。它只负责说“我想调这个函数、参数是这些”,真正去跑的是你的代码。
先说清词。
工具调用(Tool Calls),是让模型能用外部工具的功能,比如查天气、查数据库。
函数(function),是你自己写好的一段代码,模型只会“点名”它。
tool_call_id(工具调用编号),是模型每次点名时附带的一个号码,你回传结果时要带上它,模型才知道你在回答哪一次。
strict 模式(严格模式,Beta 测试版),是让模型点名时严格按你定义的格式填参数。
一个真实例子:官方示例问“杭州天气怎么样”,模型返回的是 get_weather 这个函数和参数 location 等于杭州,你的代码去查到“24℃”,再交给模型,模型才说“杭州现在 24 度”。
先把话说全:
官方示例用的是非思考模式,请求里加 extra_body 把 thinking 的 type 设成 disabled。
官方写明:从 DeepSeek-V3.2 开始,思考模式下也能用工具调用,细节看官方 Thinking Mode 一页。
官方写明:Chat Completion 接口不支持在对话中间插入不是模型生成的工具调用,要插的话请改用 Anthropic API 或 Responses API。
strict 模式目前是 Beta,要用测试版地址。
一、先看懂整个流程
官方给的执行流程是四步:用户问杭州天气;模型返回要调用 get_weather,参数是杭州;你的代码真的去调用 get_weather,把结果交给模型;模型用自然语言回答“杭州现在 24 度”。
二、照官方示例做一遍
第一步:去 DeepSeek 开放平台拿一个 API key,电脑装好 Python 和 openai 库。
第二步:创建客户端,base_url 写 DeepSeek 官方接口地址(官方文档第一屏就有),api_key 填你的。
第三步:写 tools 清单。每个工具包含 type 等于 function,再写 name(函数名)、description(描述,告诉模型什么时候用)、parameters(参数)。官方示例的函数叫 get_weather,描述是“获取某地天气,用户须先提供地点”,参数 location 是字符串,并且在 required 里。
第四步:发第一次请求,model 官方示例写 deepseek-flash,把 messages 和 tools 一起传,并加上 thinking 关闭的设置。
第五步:从返回里取 tool_calls 的第一项,先把模型这条消息原样追加进 messages。
第六步:你的代码去执行函数,再追加一条 role 是 tool 的消息,带上刚才的 tool_call_id,content 写结果,官方示例写的是 24℃。
第七步:再发一次请求,这次模型就会用自然语言回答。
三、想要更稳:strict 严格模式
第八步:base_url 改成官方文档里写明的 beta 版接口地址(就是原地址后面加 /beta)。
第九步:每个 function 都加上 strict 等于 true。
第十步:服务器会检查你的 JSON Schema(结构说明),格式不合规或用了不支持的类型,会直接返回错误信息。
官方支持的类型是:object、string、number、integer、boolean、array、enum、anyOf,另外 $ref 和 $def 可以复用和做递归。
四、strict 的硬规矩
对象里所有属性都必须写进 required,并且 additionalProperties 必须设成 false。
字符串可以用 pattern(正则)和 format,官方列出的格式有 email、hostname、ipv4、ipv6、uuid,但不支持 minLength 和 maxLength。
数字支持 const、default、minimum、maximum、exclusiveMinimum、exclusiveMaximum、multipleOf。
数组不支持 minItems 和 maxItems。
五、看到什么算成功
第一次返回的是函数点名,不是答案;第二次返回的才是自然语言答案,内容里有你的函数结果。
六、卡住怎么办
strict 报错:先检查是不是漏写 required 或忘了 additionalProperties 设 false,再检查有没有用到 minLength、maxItems 这类官方不支持的写法。
结论:工具调用不是模型替你干活,而是模型“点名”、你的代码“动手”。想让点名更准,就用 strict。把这条复制链接发给他,下次他说 AI 查不到东西,先让他确认函数是不是自己写了。
你卡在第几步?评论区告诉我。同系列前几篇在我主页。
收藏版:5 步速查
一、tools 里写清函数名、描述、参数
二、第一次请求拿到 tool_calls
三、自己执行函数,回传 role 为 tool 的消息并带 tool_call_id
四、第二次请求拿到自然语言答案
五、想更稳就用 beta 地址加 strict 等于 true
常见坑 3 条
一、以为模型会自己执行函数,其实要你的代码去跑。
二、回传结果忘了带 tool_call_id。
三、strict 里漏了 required 或 additionalProperties 设成 false。
复制即用提示词:我想让模型调用一个叫 你的函数名 的函数,它需要这些参数:写参数。请帮我写出符合 DeepSeek Tool Calls 格式的 tools 清单,每个参数都写 description,并改成 strict 模式需要的写法。
S1哥观点:这篇最狠的地方,是官方把话挑明了:模型不执行函数,只负责点名。很多人以为 AI 在后台自己动手,其实动手的永远是你的代码。
真正的信号是:工具调用的难点不在模型,在你把函数描述写得多清楚。就像派活给新人,说明写得含糊,他再聪明也会点错人。
你现在想让 DeepSeek 调用的是什么,查数据还是发消息?评论区告诉我。
今天送:DeepSeek 工具调用速查卡,评论区第一条直接拿。
参考:DeepSeek 官方 API 文档 Tool Calls(S1哥 整理)
显示更多
Agent 最缺的不是更大的上下文窗口,而是理解整个代码库的能力:当一个项目有数万文件、跨模块调用和海量文档时,为什么还要让 AI 一遍遍 Grep、Read、重新理解整个工程?
📦 项目档案
项目:Graphify-Labs/graphify GitHub Stars:⭐ 147299 技术栈:Python + Tree-sitter + NetworkX + Leiden 核心定位:将代码、文档、SQL Schema、PDF、图片及音视频转换成可查询、可追溯的知识图谱,让 AI Agent 从「搜索文件」升级为「理解工程关系」。
GitHub:
🛠️ 一、底层架构:不是传统 RAG,而是图结构知识引擎
Graphify 最值得研究的地方,是它没有走传统向量检索路线。
传统 RAG 通常需要经历: 文件切分 → Embedding → 向量入库 → 相似度检索 → 上下文拼接。
Graphify 直接构建 Graph。
底层采用 NetworkX 图数据结构,以 Node 和 Edge 表达工程实体及其关系。
整个处理链路可以概括为:
detect() → extract() → build() → cluster() → analyze() → report() → export()
每个阶段职责独立,通过 Python Dict 和 NetworkX Graph 传递数据。
这意味着它不只是索引代码,而是在构建整个项目的结构化关系网络。
🛠️ 二、Tree-sitter AST:让代码解析摆脱 LLM 依赖
这是最有工程价值的设计。
Graphify 使用 Tree-sitter AST 解析约40种编程语言,提取:
• Classes:类定义及结构。 • Functions:函数与方法。 • Imports:模块依赖关系。 • Call Graph:跨文件函数调用。 • SQL:表、视图、外键及 JOIN 关系。
其中33种语言使用 Tree-sitter Grammar,另外7种使用内置解析器。
关键在于:代码结构提取完全在本地完成,不需要调用 LLM,也不需要把代码上传到云端。
对于大型代码库,这种确定性解析比单纯依赖模型阅读文件更容易复现和追踪。
🛠️ 三、EXTRACTED / INFERRED:让每条知识关系都有证据
很多知识图谱最大的隐患是:模型推断出来的关系,很容易被误认为真实事实。
Graphify 给关系增加了置信度标签:
• EXTRACTED:源码中明确存在的关系,例如 import、函数调用。 • INFERRED:通过上下文、命名和调用关系推断出来的连接。 • AMBIGUOUS:存在不确定性的关系,需要人工复核。
INFERRED 关系还会附带 0.0—1.0 的 confidence_score。
这套机制非常重要。
它实际上把知识图谱从一个简单的关联网络,变成了一个能够区分事实、推断与不确定性的工程知识系统。
🛠️ 四、Leiden + SHA256 Cache:解决规模与重复计算
Graphify 使用 Leiden 社区发现算法,根据节点之间的连接密度,将复杂工程拆分成不同功能子系统。
例如,一个大型后端项目,可以自动识别认证、数据库、路由、权限等不同社区。
同时,SHA256 内容哈希缓存会记录文件指纹。
文件没有变化,就跳过重复提取;只有新增或修改的文件才重新处理。
音视频还可以通过本地 faster-whisper 转录,再进入统一知识图谱。
这让增量更新不必每次重新扫描整个工程。
五、真正解决了什么工程问题?
想象一个场景:
你接手一个陌生的微服务项目,需要搞清楚:
用户认证最终连接了哪些数据库模块?
修改某个核心函数会影响哪些下游组件?
某个架构决策为什么会存在?
两个看似无关的模块究竟有什么隐藏依赖?
传统方式:Grep、Read、跳转、反复询问 Agent,消耗大量上下文。
Graphify:直接执行 query、path、explain。
它还能生成三个核心产物:
• graph.json:完整知识图谱,可供后续查询。 • GRAPH_REPORT.md:核心节点、社区及关键关系分析。 • graph.html:可交互的可视化图谱。
甚至支持 Mermaid 调用链导出、Markdown Wiki 和 Obsidian 知识库。
最重要的设计思想是:
不要让 AI 每次都重新阅读整个世界,而是提前把世界组织成它能够理解和遍历的结构。
这才是 AI Coding 从上下文堆砌走向工程知识管理的重要一步。
对于大型 Monorepo、遗留系统维护、跨模块依赖分析,以及需要长期理解代码库的 Agent,这套架构尤其值得研究。
🔗 GitHub 开源地址:
显示更多
让 WorkBuddy 直接调度本地 ComfyUI,调用 H3 批量生成视频。
大致流程:
1. WorkBuddy 生成分镜和提示词。
2. 通过脚本调用 ComfyUI API。
3. 加载预设 H3 Workflow JSON。
4. 提交生成任务,轮询任务状态。
5. 自动收集视频、日志和失败任务。
6. 使用 FFmpeg 拼接、转码、导出。
整个过程几乎零费用,完全适合新手入门。
显示更多
😱卧槽,这20 个仓库组成了一个动效工作室!?!
给 Opus 5.2 用的 20 个工具和 Agent Skills ⬇️
节奏、变形、绑定、物理、粒子。
01 Remotion Skills → 给 Agent 做视频的指引
02 Anime.js → 时间线和交错动画
03 Motion → 布局过渡
04 React Spring → 弹簧物理
05 Motion Canvas → 动画讲解
06 Manim → 把数学动起来
07 mo.js → 爆发和形状特效
08 Flubber → 平滑的形状变形
09 KUTE.js → SVG 补间
10 AnimXYZ → CSS 编排
11 Lottie Web → 矢量动画播放
12 Rive Runtime → 可交互的状态机
13 Inochi2D → 2D 木偶动画
14 OpenToonz → 手绘动画
15 Synfig → 矢量补间
16 Blender → 绑定和角色动画
17 Three.js → 会动的 3D 场景
18 Godot → 游戏动画系统
19 Matter.js → 2D 刚体物理
20 tsParticles → 粒子动画
想法 → 关键帧 → 运动 → 打磨 → 渲染。
去做点值得看的东西吧 ↓
显示更多
Grok Bot 小镇上线几天,被认领了 9000 多次,人一多就有人嫌复制 Prompt 麻烦。
所以这两天给小镇接了 MCP,用一个 5 分钟的视频,带你看完这次更新👇
视频里讲了这些:
1️⃣ MCP 是什么:AI 连外部服务的插头,Codex、Claude Code、Cursor、Grok Bot 都能接
2️⃣ 用花名册 Bot 招一个「小镇联络官」,一句话找周报 Bot、查小镇最火的 5 个 Bot(总管 1165 次、杂活哥 922 次……)
3️⃣ grok-town 上架 MCP 官方目录,几分钟就被别的平台自动连、被安全扫描拿假回调试探
4️⃣ 每个 Bot 有了独立页面,链接直接分享
5️⃣ 投稿让 Bot 自己填:有 MCP 一键同步,没 MCP 就让它吐 JSON、自动填表
全部免费,接入说明
📚 知识站:
显示更多
“Grape jelly. Smooth, smooth peanut butter.”
PB&Js have helped fuel Cooper Flagg to average 25+ PPG in his last 10 🍇
Win streaks collide as Coop and the Mavs battle LaMelo Ball and the Wolves at 8pm/et on NBA TV!
显示更多
JSN is nearing double digits 👀