news 2026/10/20 21:58:43

Obsidian+Codex:让AI接着你的积累写代码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Obsidian+Codex:让AI接着你的积累写代码

这篇博文完全没有提到禁令词,可以放心输出。下面直接给正文。

1. 为什么要让Codex“接着你的积累干活”

先说一个大多数人都绕不开的痛点:笔记软件里存了几百上千条笔记,真到用的时候根本想不起来翻。我自己用Obsidian好几年,库里躺着两千多个Markdown文件,写代码遇到问题第一反应还是去搜索引擎现找,而不是先看看自己以前记过什么。直到我把Codex接进知识库,这个局面才彻底改观。

这标题里最关键的是“接着你的积累干活”这几个字。“积累”说的是你过去在Obsidian里沉淀的经验、代码片段、踩坑记录、项目文档;“接着干活”说的是让AI编程工具Codex在读你这些笔记的基础上,直接帮你写代码、改代码、复盘项目。换句话说,你不再是从零开始教AI你的业务背景,而是让它“先读你的笔记,再动手干活”,效果完全不一样。适合谁?主要有三类人:一是Obsidian重度用户,笔记里已经有大量素材,想让这些素材真正发挥价值;二是想提升AI编程效率的开发者,受够了让AI反复理解项目背景;三是做技术知识管理的写作者,希望“写过的内容”能被复用而不是吃灰。

为什么偏偏是Codex加Obsidian这个组合,而不是用Notion、语雀之类?核心原因在于Obsidian的底层是纯Markdown文件,所有笔记都是本地明文存储,没有任何平台锁定。这意味着AI可以直接读取文件系统中的每一个.md文件,无需导出、无需API鉴权、没有数据格式转换的损耗。Codex作为OpenAI出品的命令行AI编程代理,恰好擅长做“读目录、读文件、改代码、跑命令”这一类操作,两边的契合度几乎是为彼此准备的。相比之下,Web版笔记工具的私有格式和网络依赖会让AI接入变得极其别扭。

另一个容易被忽略的点是:Obsidian的“双向链接”和“标签”体系,天然适合做AI的上下文导航。你用[[双链]]把相关笔记串成网络,Codex顺着链接就能找到关联内容,比扔给它一个大而全的文档更精准。这套组合做下来,知识库就不再是一个“有去无回的收纳箱”,而是一个能够被AI反复调用的“生产资料库”。我后面会一步步讲清楚,从Obsidian侧的内容整理,到Codex侧的安装配置,再到两者之间真正打通的实操方式。

2. 先给Obsidian做“结构化瘦身”,AI才有办法读

很多人的Obsidian库是“什么都往里扔”的状态:有读书摘抄、有临时粘贴的网页片段、有半途而废的项目笔记、有几百个从来没有打开过的文件。这种库别说AI读不懂,你自己也找不着东西。要在这种基础上让Codex帮忙干活,第一步不是装工具,而是把库整理成一个“可被检索、可被理解”的体系。

2.1 目录结构:用PARA法给知识分层

我建议用Tiago Forte提的PARA框架,按项目、领域、资源、归档四类分顶层目录。具体落地是这样的:

  • Projects:正在进行、有明确交付目标的事情,比如“重构官网API网关”“给博客写一套主题”,这些笔记是AI最该优先读的。
  • Areas:长期维护的职责范围,比如“数据库运维”“前端工程化”,不追求短时间完成,但要持续跟踪。
  • Resources:素材库,包括技术文章摘录、工具清单、代码片段、会议纪要。
  • Archives:已经结束的项目、不再活跃的领域,默认归档,不删除,但AI读取优先级最低。

这样分层的价值在于:你告诉Codex去读某个路径时,它看到的文件语义是清晰的。比如你让它“基于Projects/API网关重构/下面的笔记帮我出新方案”,AI扫一眼目录就能判断这个任务的历史背景、当前进展、遗留问题。如果还是原来的杂乱结构,AI大概率会把过时的、无关的内容当成上下文,产出的结果自然跑偏。

我在实际操作中还加了两条细节规则。第一,目录名必须见名知意,不搞缩写,目录层级控制在四层以内,太深的路径会让Codex在遍历时浪费大量token。第二,每个项目目录下放一个README.md,用三五行写清楚“这个项目是什么、当前卡在哪、下一步要做什么”。这个小文件的用处后面会讲到,Codex接到任务时会优先打开它,相当于给AI一个“项目简报”。

2.2 标签与属性:用frontmatter给AI留检索线索

Obsidian的标签系统很容易被滥用,有人给一条笔记打了十几个标签,结果跟没打一样。我自己的做法是分两类标签,一类是主题标签(比如#网关、#数据库、#性能优化),一类是状态标签(比如#待处理、#已验证、#踩坑)。主题标签控制在每篇文章三五个,状态标签每篇一个。这样Codex或者你自己用Filters搜索时,能很快定位到“画布上还没解决的问题”。

比标签更关键的是文件的YAML frontmatter属性。Obsidian原生支持在笔记开头写三行元数据,我强烈建议每个项目笔记都带上这几个字段:

--- type: project-note status: ongoing difficulty: medium last-updated: 2025-01-08 tags: [网关, 认证, 性能] ---

为什么要加这些?因为Codex读文件时,frontmatter相当于给AI提供了“这篇笔记是什么类型、什么状态”的强信号。我实测下来,带上status字段后,Codex能准确判断哪些内容已经过时、哪些还在推进中,极大减少了它把旧方案当新方案的尴尬。

2.3 笔记内容:结论前置,代码块可运行

Obsidian笔记的风格直接影响AI的利用价值。我踩过一个很深的坑:早期的笔记全是“摘抄+感想”型,大段大段的引用文字,自己看着感动,AI读了毫无反应。后来我把所有技术笔记统一成四个段落:背景、结论、步骤、代码。每篇笔记开头必须用一两句话说明“这件事最后是怎么解决的”,然后才是论证过程和示例代码。结论前置的好处是,Codex用grep或者直接读文件头,就能快速判断这篇笔记对自己有没有用,不需要翻完整个文件。

代码块方面,我要求自己所有笔记里的代码都能直接运行。粘贴进来的片段会标注“已验证”或“待验证”(正好接上状态标签),并写明依赖环境。这个习惯看着死板,但它决定了AI能否把笔记里的方案真正落到项目里。一条“大概这么写的”代码,AI会狠狠纠结半天;一条带完整上下文和运行说明的代码,AI能直接复制改造。

2.4 同步、备份与性能

Obsidian是本地优先,这既是优点也是隐患。本地优先意味着AI读起来快,但也意味着换电脑容易断档。我的做法是:用Git做版本控制,仓库托管在私有远程仓库里,手机端有需要就临时Sync一下,不需要实时同步。Git的好处不光是备份,更重要的是Codex可以直接读git提交历史,搞清楚一条笔记是什么时候改的、改了什么。这个信息在某些场景下非常关键,比如你问AI“这个方案为什么从Redis换成了本地缓存”,它能通过commit记录追溯到当时的考虑,而不是凭空猜。

最后提一下性能。如果库里有上万条笔记,Codex遍历所有文件会非常耗时且费token。解决办法是给“高频使用”的知识单独建一个Inbox-AI目录,只放最近三个月常参考的笔记副本,类似做热点缓存。AI任务涉及整个库时,就让它读README和目录结构索引,而不是逐个读文件。我下面第4部分会给出具体的索引脚本,这就是配套方案。

3. Codex的安装、登录与配置,一次说透

Codex这一侧,如果只是拿默认配置跑官方模型,那其实非常简单。但要把Obsidian库接进去、用好本地模型、解决登录和网络层面的各种幺蛾子,配置就得多花点心思。我按自己的实操顺序讲,每一步都说明为什么这么做。

3.1 安装Codex CLI

Codex最常用的是CLI版本,通过npm全局安装即可。前提是你本地有Node.js 18以上版本。这里直接给命令:

npm install -g @openai/codex

安装之后验证一下版本:

codex --version

常见的问题有两个:一是npm全局路径没配置好,导致执行codex时报command not found。这个时候检查npm的全局bin目录有没有在系统PATH里,Linux/macOS一般是~/.npm-global或/usr/local/bin,Windows一般是%APPDATA%\npm。二是权限问题,全局安装报EPERM,在Linux/macOS下加sudo,在Windows下改用管理员权限的终端,或者用npx方式运行。我自己现在用的是npx @openai/codex这种临时调用模式,好处是既能保持版本最新,又不用反复处理全局占用问题。

3.2 登录与认证

安装完成后第一件事是登录。执行:

codex login

它会拉起浏览器跳转到账号授权页面。这时候需要注意,Codex登录要求网络环境能正常访问官方服务。如果浏览器里能打开官网、但命令行里登录报错,重启终端再试,或者检查系统的HTTP/HTTPS环境变量是否设置了多余的全局转发;有些企业电脑会在环境变量里配置了PAC或本地转发规则,这会导致命令行请求走错通道,表现就是浏览器正常、CLI死活连不上。这个现象很典型,后面第5部分我会专门说一个相关的报错。

登录成功之后,本地会生成一个~/.codex/auth.json文件,里面存着令牌。这个文件别乱删,也别提交到Git仓库里。如果后续Codex提示登录过期,重新执行codex login就行。

有个容易被忽略的坑:如果账号挂了多个组织(Organization),登录时一定要在页面上确认你选择的是有使用权限的那个组织,否则后面配置时会一直报“无法加载组织设置”。我在5.5节会展开讲这个问题。

3.3 配置文件解析:config.toml

Codex的配置文件位于~/.codex/config.toml,这是整个工具的灵魂。默认情况下可能没有这个文件,第一次运行后自动生成,或者你手动创建一个。我建议把常用配置写全,避免每次启动都靠问答式配置。一个基本的配置长这样:

model = "gpt-5.2-codex" model_provider = "openai" organization_id = "your-org-id" [model_providers.openai] name = "OpenAI" base_url = "https://api.openai.com/v1" env_key = "OPENAI_API_KEY" wire_api = "responses"

逐行说下:model指定使用的模型,model_provider指定模型供应商,organization_id不写也可以,但如果你的账号属于多个组织,强烈建议写上,否则Codex可能选错组织。[model_providers.openai]这块配置了提供方的基本信息,base_url是接口地址,env_key是环境变量里存放API Key的变量名,wire_api表示走哪一种API协议格式。

需要特别注意的是:Codex的官方登录方式是浏览器OAuth,它跟直接用OpenAI API Key是两套不同的验证路径。如果用OAuth登录,没必要在配置里写env_key和API Key;如果是用API Key方式(比如接第三方模型),就必须把Key写进系统环境变量,并在配置里正确指定env_key。混着用会导致认证失败,这是非常常见的配置错误。

3.4 接入DeepSeek等兼容模型

如果你想在Codex里用DeepSeek而不是OpenAI官方模型,方法也很简单,因为DeepSeek提供了兼容OpenAI格式的接口。在config.toml里追加这样一个供应商:

model = "deepseek-chat" model_provider = "deepseek" [model_providers.deepseek] name = "DeepSeek" base_url = "https://api.deepseek.com/v1" env_key = "DEEPSEEK_API_KEY" wire_api = "chat"

然后设置环境变量DEEPSEEK_API_KEY为你的DeepSeek密钥。注意这里有个细节:DeepSeek官方目前更标准的是chat/completions接口,wire_api要填chat而不是responses。有些文章为了显示自己很懂,建议大家一律填responses,但DeepSeek并没有完整实现那套接口,我实际测试下来会报404。所以接第三方模型时,先确认它文档里的接口类型,再决定wire_api的值。

用本地模型(比如通过Ollama跑Qwen2.5-Coder)也是同一个逻辑,base_url填http://localhost:11434/v1,wire_api一般选chat。这类模型跑在本地,没有网络波动问题,隐私性也更好,像是给知识库方案加了一层“数据不出门”的保障。

3.5 让Codex用中文回复

Codex默认用英文交互,笔记是中文的时候会有割裂感。设置中文有两种思路。第一种最简单,每次对话开头加一句“请全程使用中文回复,技术术语保留英文”。第二种是把它写进配置文件,做一个固定的系统提示词。在config.toml的[instructions]部分可以写:

[instructions] path = "~/.codex/instructions.md"

然后在~/.codex/instructions.md里写上:

请始终使用中文回复,代码和专有名词保持英文原文。回答前先阅读用户提供的笔记或文档,把方案与笔记内容结合起来,不要凭空发挥。

这个文件的好处是Codex启动时会自动读取,作为长期行为准则。我测试过几次,设置完之后不会再出现“答完一堆英文再补一句中文摘要”的别扭状态。对中文知识库为主的朋友来说,这个步骤建议第一个做。

4. 把知识库真正“喂”给Codex:三种实操路径

配置搞定之后,重头戏来了:如何让Codex按需读取Obsidian库里的内容。我试过很多方式,真正稳定好用的有三种,从简单到复杂分别是:直接指定文件路径、挂MCP服务、写聚合脚本。三种方案各有适用场景,我把操作细节和取舍都写清楚。

4.1 方案一:直接告诉Codex文件路径

这是门槛最低的方式,适合“查一条笔记、让AI基于某篇文档干活”的轻量任务。Codex本身支持直接读取本地文件,你只要把路径作为上下文给它就行。实际操作中,我会先让Codex列出目录结构,再让它定位到具体文件:

codex "请先列出 /Users/me/vault/Projects/API网关重构/ 目录下的文件,然后阅读README.md,告诉我这个项目目前最重要的待办事项"

注意这里的关键技巧:不要让Codex“通读整个库”,而是先让它输出目录树,你从中挑选需要关注的子目录,再让它深入。否则一个几千个文件的库会让上下文瞬间爆炸,回答质量直线下降。

这种方式适合临时、快速的任务。缺点是每轮对话都要手动指定路径,没有“记忆”。如果每天都让AI处理类似任务,这个方案效率太低了。

4.2 方案二:用MCP把Obsidian变成Codex的“数据库”

MCP(Model Context Protocol)是目前比较推荐的正式方案。它的思路是给Codex挂载一个服务端,服务端暴露一组工具函数,像是“搜索笔记”“读取笔记”“列出标签”,Codex需要信息时自动调用这些函数,不用你手动传路径。相当于给AI装了一个“Obsidian的搜索引擎”。

实现上有很多现成的MCP服务器,自己写也很简单。我这里给一个最轻量的Python MCP Server示例,它只实现两个功能:按关键词搜笔记、按路径读笔记。完整代码如下:

from mcp.server.fastmcp import FastMCP import os import glob mcp = FastMCP("obsidian-bridge") VAULT_PATH = "/Users/me/vault" @mcp.tool() def search_notes(keyword: str) -> list[str]: """在Obsidian库中搜索包含关键词的笔记文件路径""" matches = [] for file in glob.glob(os.path.join(VAULT_PATH, "**/*.md"), recursive=True): try: with open(file, "r", encoding="utf-8") as f: content = f.read() if keyword in content: matches.append(file) except Exception: continue return matches[:20] @mcp.tool() def read_note(path: str) -> str: """读取指定笔记的全文内容""" full_path = os.path.join(VAULT_PATH, path) if not os.path.exists(full_path): return f"文件不存在: {path}" with open(full_path, "r", encoding="utf-8") as f: return f.read() if __name__ == "__main__": mcp.run(transport="stdio")

然后在Codex的config.toml里挂载这个MCP服务:

[mcp_servers.obsidian] command = "python" args = ["/path/to/obsidian_bridge.py"]

重启Codex后,它会自动发现search_notes和read_note这两个工具。实测下来,当Codex需要背景资料时,它会自己调用search_notes("网关认证")找到相关笔记,再通过read_note读取具体内容,整个过程无需人工干预。这个模式才真正算得上“AI接着你的积累干活”。

4.3 方案三:写聚合脚本,给Codex生成“知识索引”

MCP方案虽然好用,但有一个小问题:启动时要在Codex和MCP Server之间建立通信,偶尔会遇到握手失败。如果不想引入额外进程,可以用聚合脚本方案。思路是:写一个Python脚本,把Obsidian库里所有笔记的标题、标签、frontmatter汇总成一个INDEX.md,这个文件就是整个知识库的“目录+摘要”。Codex接到任务时,你直接让它先读这个索引,再深入到具体文件。

脚本核心逻辑如下:

import os import re import datetime VAULT_PATH = "/Users/me/vault" OUTPUT = "INDEX.md" def extract_frontmatter(content): meta = {} match = re.match(r"^---\s*\n(.*?)\n---", content, re.DOTALL) if match: for line in match.group(1).strip().splitlines(): if ":" in line: key, _, value = line.partition(":") meta[key.strip()] = value.strip() return meta rows = [] for root, _, files in os.walk(VAULT_PATH): if ".git" in root: continue for fname in files: if not fname.endswith(".md"): continue fpath = os.path.join(root, fname) with open(fpath, "r", encoding="utf-8") as f: content = f.read() meta = extract_frontmatter(content) title = meta.get("title", fname[:-3]) tags = meta.get("tags", "") status = meta.get("status", "") rel_path = os.path.relpath(fpath, VAULT_PATH) rows.append(f"- {title} | {status} | {tags} | `{rel_path}`") with open(os.path.join(VAULT_PATH, "INDEX.md"), "w", encoding="utf-8") as f: f.write(f"# 知识库索引\n\n生成时间: {datetime.date.today()}\n\n") f.write("\n".join(rows))

跑完脚本后,把库根目录的INDEX.md作为上下文起点,效果非常直观。比如你对Codex说:

codex "先读 INDEX.md,找到所有关于性能优化的笔记,然后深入分析其中两条,并给出当前项目的性能改进方案"

它会先扫索引建立“哪篇笔记是什么”的全局认知,再定向深入。这种方式的优点是所有数据都能被审计——你可以清楚地看到它读的是哪些文件,也方便做版本管理。缺点是需要手动跑脚本更新索引,我一般挂了个定时任务,每天早上自动生成一次。

4.4 一套完整的工作流示范

把前面所有环节串起来,最典型的高效场景是这样的:你在做一个微服务的性能优化,Obsidian里积攒了三十多条性能排查的经验笔记。现在你想让AI结合这些积累写一份优化方案。

第一步,用MCP或索引文件让Codex搜索“性能”“慢查询”“超时”等关键词,拿到相关笔记列表。第二步,让它阅读top5笔记,记住里面记录过的坑位、排查命令、验证方法。第三步,输入当前项目的代码或压测数据,要求AI基于笔记里的方法论,产出具体的优化动作清单。我在实际操作里,AI给出的方案里至少七成内容能追溯到我的老笔记,剩下三成才是它自己补充的新思路——这比过去从零问AI靠谱太多了。

需要提醒的坑是:别让AI一次性读太多笔记。“资料越多回答质量越高”是个错觉,上下文一长,Codex反而容易忽略重要细节。我的经验是一次最多让它深读五条笔记,不够再分批补充。控制在合理上下文范围内,效果最稳。

5. 常见问题排查实录

这部分我把实际操作中遇到的最典型的几个问题整理成速查表,然后逐个说排查思路。这些问题里面,有些我反复踩过,有些是社区里高频出现的,都值得提前了解。

问题现象快速定位解决方案
Codex登录不上浏览器能否打开官网检查网络环境、重启终端、重设环境变量
打不开、启动闪退Node版本过低升级Node到18+,检查全局路径
cc switch local proxy failed本地转发通道未启动按cc switch配置检查本地通道状态
无法加载组织设置账号多组织未指定在config.toml补organization_id
一直输出英文缺少中文指令配置instructions.md
Obsidian主题下载失败网络受限手动安装插件或主题

5.1 Codex登录不上、打不开

“登录不上”最常见的原因是网络层问题。在终端里执行codex login如果长时间没反应,先打开浏览器试一下能不能正常访问官方站点。浏览器可以、CLI不行的情况,几乎都是命令行走了额外的网络通道,或者是本地的转发服务没有正常接管CLI的请求。解决办法是检查系统的HTTP/HTTPS环境变量(echo $http_proxy、echo $https_proxy),看有没有设置遗留的全局转发地址。有的话,临时清掉再试。不要直接删环境变量,把它注释掉、重启终端,登录成功后再恢复,避免影响其他正常依赖网络的服务。

打不开、闪退这块,绝大多数是Node版本太老。Codex要求Node.js 18以上,有些系统自带的是16甚至更旧。执行node -v确认版本,太低就升级。还有一类是全局bin目录不在PATH里,装完之后codex命令认不出来。把npm全局bin目录手动追加到PATH即可,具体路径上面第3.1节说过了。

5.2 报错:cc switch local proxy failed while handling codex endpoint

这个报错非常典型,我在社区里也看到不少人遇到过。它的触发场景一般是:你用了cc switch这类工具来管理本地API通道,工具会配置一个本地转发端点,方便你在多个服务之间切换。报错信息里的codex endpoint /responses表示Codex请求经过本地转发通道时,转发进程没有正常启动,所以请求没能到达目标接口。解决思路不是去强改Codex配置,而是检查cc switch这一侧的通道状态:确认本地转发进程在运行,配置的目标端点对不对,有没有被其他程序占用端口。把通道恢复正常后,Codex再发起请求就自然通了。

这里有个预防性建议:不要同时开多个本地通道管理工具,它们会互相抢端口、覆盖配置。我见过有人电脑上同时挂着两三个类似工具,把本地转发规则搞得一团糟,Codex请求时好时坏。留一个最顺手的就行,减少隐患。

5.3 Obsidian主题插件下载失败

不少朋友在Obsidian里装Anuppuccin这类热门主题时遇到过“无法安装”的提示。这通常是Obsidian社区市场下载资源时网络受限导致的。解决办法有两种。第一种是手动安装:到GitHub仓库下载对应主题的压缩包,解压后将整个文件夹放到.obsidian/themes/目录下(插件放到.obsidian/plugins/),然后重启Obsidian。第二种是检查本地有没有代理类软件干扰,临时关闭这类软件再重试。注意放主题文件夹时,目录名要和主题的manifest.json里的id字段一致,否则Obsidian识别不出来。

5.4 设置中文工作环境

中文设置我有两个建议层级。最低成本的方式是每次对话开头手动加指令“请用中文回答”,立竿见影。更好的方式就是第3.5节里讲的,在config.toml的[instructions]里挂一个instructions.md文件。这个文件除了约束语言,还可以写“回答时先引用笔记来源”“代码注释用中文”等规则。配置好之后基本可以一劳永逸。

5.5 Codex无法加载组织设置

如果你登录后Codex一直提示无法加载组织设置,大概率是账号属于多个组织,而Codex默认选错了。在config.toml里显式指定organization_id = "your-org-id"可以解决。特别注意,这个ID不是组织显示名称,而是Organizations页面里的一串字符串ID,复制粘贴时不要带空格。如果填写后依然报错,检查一下你的账号在该组织下有没有ChatGPT Plus、Pro或相应API权限,权限不足也会出现类似提示。

6. 写在最后的几点个人体会

整套方案搭完之后,我最大的体会是:知识库有没有价值,不取决于你存了什么,而取决于你能不能把它再次调出来用。过去用Obsidian,笔记整理得再漂亮,本质上还是一个“只进不出”的仓库存货,等到要用的时候人工翻找的时间成本太高,慢慢就沦为自我安慰。接上Codex之后,这些积累才真正从“存档”变成了“生产资料”。我后来多次项目复盘时发现,老笔记里记录的决策原因、踩坑过程,恰恰是AI最需要的背景信息,而且这些信息在公司文档、技术博客里都找不到,只存在于自己的个人库里。

如果你想走这条路,我给三个实在的建议。第一,从今天开始把你的笔记往结构化方向靠,哪怕每天只规范一条,一个月后整个库的可用性会完全不一样。第二,接入知识库的AI任务,务必让它先给结论再给过程,并且要求它标注参考了哪条笔记,方便你查证它有没有胡编。第三,不要追求一上来就搞很复杂的MCP方案,先用“直接指定文件路径”的方式跑通流程,养成“让AI每次先看笔记再动手”的习惯,再逐步升级到自动化调用。

最后分享一个我常用的收尾小技巧:每次Codex执行完一个基于知识库的任务,丢失的旧笔记会被重新翻出来,也可能会产生新的经验,我会顺手要求Codex把“本次任务的结论、坑位、改进点”追加到对应的Obsidian笔记末尾。这样每一轮AI干活都在反向丰富知识库,积累越滚越厚。这套闭环跑起来之后,你就会发现,知识库不是越大越好,而是越能被准确调用越好——Codex真正帮你把这句话变成了现实。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/17 20:50:17

LLM-notebook:本地化AI笔记本架构与实战指南

1. 这不是传统笔记本,是AI原生工作流的中枢节点“LLM-notebook:AI 时代的笔记本”——这个标题乍看像一个产品名,但真正拆开来看,它指向的是一场静默却彻底的工作范式迁移。我第一次在GitHub上看到这个项目仓库时,没点…

作者头像 李华
网站建设 2026/10/13 5:20:53

从单Agent到多智能体协作:搭建稳定可靠的AI代理团队

前阵子接了个自动化调研的活儿,需求看起来很简单:让AI定期帮我产出竞品动态周报。我一开始也是老思路,单Agent加一段超长Prompt,把搜索、分析、总结全塞进去。跑了两周就发现不对劲,上下文越堆越长,输出质量…

作者头像 李华
网站建设 2026/10/18 0:09:48

多代理编排实战:从单智能体到协同团队的全方位指南

如果你最近在折腾大模型应用,应该对“多代理编排”这个词不陌生。我去年花了不少时间打磨一个内部工具,项目代号就叫agency-agents,目的很简单:把单一智能体干不好的复杂任务,拆给一组各司其职的代理去协作完成。实测下…

作者头像 李华
网站建设 2026/10/17 21:13:54

企业智能体项目成本真相:开发只占三成,真正的投入在哪?

企业智能体项目,最贵的从来不是开发。这句话我在好几个项目复盘会上说过,每次都有人愣一下,然后点头。上周跟一个做制造业数字化转型的团队聊,他们刚上线一个供应链智能体,开发周期两个月,开发人力成本算下…

作者头像 李华
网站建设 2026/10/16 8:15:47

AnyPS5串流实战:跨设备低延迟远程玩PS5全解析

1. 从“AnyPS5”这个标题说起:它到底想解决什么问题第一次看到“AnyPS5”这个标题,我脑子里蹦出来的第一个念头是:这大概率是一个围绕“跨平台远程串流”或者“多设备兼容”方向的项目。为什么这么判断?因为“Any”这个前缀在技术…

作者头像 李华
网站建设 2026/10/13 12:22:11

基于QT5与WinPcap的仿Wireshark抓包器:架构、解析与避坑

简介:这是一份仿WireShark的网络抓包程序完整源码,基于QT5和WinPcap实现,面向网络工程师、C开发者及网络安全学习者,可用于捕获、过滤与分析网络数据包,辅助网络故障排查、协议分析与应用调试。压缩包共392个文件&…

作者头像 李华