news 2026/10/17 17:47:42

AI原生工程实战:从DevOps到智能化交付的演进

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI原生工程实战:从DevOps到智能化交付的演进

1. 背景与核心概念

最近在技术社区和团队内部讨论中,有一个话题被反复提起:当 AI 开始写代码、修 Bug、甚至参与架构决策时,我们过去熟悉的 DevOps 流程和敏捷开发方法论,是不是也要跟着升级换代了?有人把这种变化称为 “DevOps 2.0”,也有人直接提出了 “Agile 3.0” 的说法。

先别急着争论名词定义,我们先把现象摆出来。

过去十年,DevOps 的核心目标是打通开发与运维之间的壁垒,让代码交付更频繁、更可靠。它的抓手是自动化流水线、基础设施即代码、监控告警体系。而敏捷开发则强调小步快跑、迭代反馈、拥抱变化,它的落地工具通常是 Scrum 看板、用户故事、每日站会。

但现在,AI 代码助手可以自动生成单元测试,AI 运维机器人可以分析日志并给出根因建议,AI 需求分析工具甚至能把用户反馈转化为初步的用户故事。这些变化带来的不是某一个环节的效率提升,而是整条软件开发价值链的重构。

AI-Native Engineering,直译过来是 “AI 原生工程”,它指的并不是“在工程流程中用一下 AI 工具”,而是指工程体系在设计之初就把 AI 能力当作与代码、配置、基础设施并列的一等公民。传统流程是 “人写代码 → 工具跑流水线 → 人看监控”,AI 原生的流程会变成 “人定义意图 → AI 生成代码与测试 → 自动验证与部署 → AI 分析运行数据 → 反馈给下一步决策”。

从这个角度看,把它称为 DevOps 2.0 是贴切的。因为 DevOps 1.0 解决的是人和流程的协作问题,DevOps 2.0 要解决的是人和 AI、AI 和系统的协作问题。至于 Agile 3.0,这个说法目前还没有统一公认的定义,但确实有部分团队在尝试用 AI 实现动态迭代规划、自动生成验收标准、智能风险预警,把敏捷从一种团队协作模式推向一种数据驱动的自适应系统。

作为开发者,我们不需要急着站队,关键在于理解底层变化:AI 不只是给程序员配了一个副驾驶,而是在逐步改变软件的定义方式、交付方式和运维方式。这篇文章会从概念拆解、工具链选型、核心原理、完整实战、常见坑位和工程建议几个角度,系统梳理 AI 原生工程到底长什么样,以及它和 DevOps、敏捷方法论的演进关系。

2. 环境准备与工具链概览

在进入实战之前,先梳理一下 AI 原生工程落地时需要用到的环境与工具。这个技术领域目前还在快速发展,很多工具的名字和版本迭代都很快,所以这里不写死某个具体版本号,重点是把能力边界和选型思路讲清楚。

2.1 基础运行环境

无论是尝试 AI 代码生成还是 AI 运维分析,你至少需要准备以下几类基础环境:

  • 操作系统:macOS、Linux、Windows 都可以,但涉及容器和云原生工具时,Linux 服务器的体验最顺畅。
  • 编程语言运行时:Python 3.8+ 是当前 AI 生态最常用的语言环境;如果你主要做后端服务,Java 17+ 或 Go 1.20+ 也很常见。
  • 容器环境:Docker 基本属于标配,用于隔离 AI 模型环境、运行流水线任务。
  • 版本管理:Git,配合 GitHub / GitLab / Gitea 等平台使用。
  • CI/CD 引擎:Jenkins、GitHub Actions、GitLab CI 或云厂商的 DevOps 产品都可以,核心要支持自定义执行脚本和调用外部 API。

2.2 AI 相关工具套件

AI 原生工程并不是只依赖某一个“大模型全家桶”,它通常由以下四类工具协作完成:

能力类型常见工具或平台用途说明
代码生成与补全GitHub Copilot、通义灵码、Codeium 等根据注释和函数签名生成代码块、单元测试、SQL 语句
代码审查与静态分析SonarQube 结合 AI 插件、Codacy发现代码异味、安全漏洞,并给出修复建议
AI 运维与日志分析自建 StackAI 组件、云厂商日志服务接入大模型自动摘要告警日志,输出根因假设和处置建议
AI 工作流编排LangChain、LlamaIndex、自建 Pipeline把大模型调用与定时任务、事件触发、外部系统对接起来

这里需要注意,选择平台时重点关注的不是“它支持多少个模型”,而是它是否具备版本化、权限控制、审计日志和沙箱机制。因为 AI 生成的代码可能存在漏洞或不合规的依赖,工程平台必须允许我们对 AI 的产出进行隔离验证后才能合并进主线。

2.3 数据与模型环境

AI 原生的另一大基础设施是 Feature Store(特征平台)和 Model Registry(模型注册中心)。Feature Store 用于管理特征数据的计算、存储和分发,它保证训练和推理时使用的特征一致。Model Registry 则负责管理模型版本、标签、发布状态和回滚记录。

如果你们的团队只是从“用 AI 辅助开发”开始起步,暂时不想引入如此重的数据平台,那么至少要保证训练数据和验证数据的可追溯性。简单来说,就是你的模型输入、输出和参数必须存下来,否则出了问题没法复盘。

3. 核心原理拆解:AI 原生工程是围绕哪些底层逻辑展开的

很多团队尝试引入 AI 时最容易犯的错误,是把 AI 当成一个“黑盒插件”,在原有流程上生硬地加一步“让 AI 生成代码”。这种方式通常跑不了多久就会失败,因为 AI 的输出质量不稳定,而且不受传统规则引擎的约束。AI 原生工程之所以被称为“原生”,是因为它的核心流程和基础设施都围绕 AI 的特性重新设计过。

3.1 从“编码”到“意图定义”

在传统开发模式下,程序员通过代码向计算机精确表达逻辑。而在 AI 原生工程中,程序员的一部分工作变成了向 AI 描述意图:函数要做什么、边界条件是什么、输入输出格式长什么样。这其实就是 Prompt Engineering 在工程流程中的正式化。

举个例子。如果你用传统方式写一个函数,你会一行一行地实现它。如果你用 AI 方式,你会先写函数签名和注释描述,再让模型生成函数体。这时候,函数签名和注释的质量直接决定了生成过程的质量。所以 AI 原生工程的第一步是建立一套“意图描述规范”,包括输入输出字段、异常处理要求、性能约束和依赖限制。

这种转变并不等于程序员变得不重要,反而对程序员的抽象能力提出了更高要求。你得能判断 AI 生成的结果是否符合原始意图,能识别那些看起来正确但不完全符合预期的边界情况。

3.2 以“验证”为中心的 AI 流程

AI 生成的代码不一定正确,这一点每一位尝试过 AI 编程助手的人都有体会。因此,AI 原生工程的核心并不在于 “生成” 这一步,而在于 “验证” 这一环。

你说得没错,在传统 DevOps 中也有自动化测试、静态检查这些步骤。但不同的是,传统步骤的输入是人工写的明确逻辑,而 AI 步骤的输入是概率性的生成结果。这就注定了验证环节必须更早介入。AI 原生工程里常用的做法是:

  • 为每次 AI 生成结果自动绑定一个隔离环境,在里面跑单元测试。
  • 引入 AI 生成的测试代码,和被测代码一起进入代码审查流程,双重把关。
  • 对 AI 输出的代码强制进行依赖漏洞扫描和许可证合规检查。
  • 把过程指标,如生成通过率、首次通过率、修复耗时,纳入效能度量体系。

换句话说,AI 增加了代码产出的 “生成速度”,但并没有减少验证的必要性。它只是把验证变成了流程的主线。

3.3 基础设施即智能体脚手架

传统基础设施即代码(IaC)管理的是服务器、网络和中间件。AI 原生工程在这个基础上多了一层“智能体脚手架”,它管的是 AI 模型、向量数据库、推理服务、API Key、限流策略和缓存策略。

这里的关键是服务化设计。AI 模型不能被当作单体进程直接嵌入业务应用,否则模型升级、算力扩展和容灾都会非常痛苦。AI 原生工程中,模型是独立部署的推理服务,业务系统通过 API 调用推理服务,推理服务内部再做模型版本路由、输入输出 token 限制、超时处理。

这种设计有一个额外的好处:它可以对不同来源的 AI 能力做统一抽象。例如代码生成、日志摘要、测试生成、需求分析,这些能力可以由不同厂商的模型提供,但工程平台的内部接口只暴露给上层一套标准协议。这样底层模型可以随时切换,不会把业务锁死在某一家供应商上。

3.4 RAG:把知识库接入工程链路

很多人认为大模型只靠训练参数来记忆知识,实际上在工程实践中,直接用大模型处理企业内部代码库和运维手册效果并不好,模型容易产生幻觉,而且无法感知最新的规范和设计文档。RAG(Retrieval-Augmented Generation,检索增强生成)就是为了解决这类问题出现的。

RAG 的基本流程不算复杂:把企业内部文档、代码结构、历史运维问题切片后存入向量数据库;每当 AI 需要回答工程问题或生成代码时,先检索相关片段作为上下文提示,再交给大模型生成输出。

这个机制对 AI 原生工程的意义非常大。它让 AI 的回答不依赖模型的截止训练时间,而是从企业内部最新的知识中获取事实依据。例如,当 AI 生成数据库迁移脚本时,它会优先检索团队维护的 DDL 变更规范,从而减少 Microsoft 特化的风险,减少同类操作在曾经的故障中出现过的严重事故。

当然,RAG 也需要工程化建设。切片粒度、向量检索相关度阈值、引用溯源展示、知识更新策略都是要设计好的环节。否则检索到过时或错误的内容,反而会误导 AI 与工程师。

4. 完整实战案例:搭建一个 AI 自动验证与反馈闭环

下面我们用一个小而完整的项目,串起 AI 原生工程最核心的流程。这个项目的场景是:开发人员提交一段 Python 代码,触发流水线自动生成单元测试、执行测试、分析测试结果并生成修复建议。整个过程体现了一个微缩版的 AI 快速验证与反馈闭环,这正是 DevOps 2.0 乃至更未来的敏捷形态在工程侧的缩影。

4.1 创建项目结构

示例项目的目录结构如下:

ai-native-demo/ ├── src/ │ └── src/order_validator.py ├── tests/ │ └── tests/test_order_validator.py ├── workflows/ │ ├── ai_reviewer.py │ └── ai_orchestrator.py ├── prompts/ │ └── test_generator.txt ├── requirements.txt └── README.md
  • src/order_validator.py:被测的业务代码。
  • tests/test_order_validator.py:由 AI 生成的测试代码。
  • workflows/:承载集成 AI 能力的工程逻辑。
  • prompts/:存放提示词模板,方便版本化管理。

4.2 编写被测函数

为了演示方便,我们写一个简单的订单校验器,它主要功能是校验订单金额和状态是否合法。文件路径为src/order_validator.py。

# 文件路径:ai-native-demo/src/src/order_validator.py class OrderValidator: """核心订单校验器:金额必须大于 0,状态必须是合法状态之一。""" VALID_STATUS = {"pending", "paid", "shipped"} def validate(self, order: dict) -> dict: """ 校验订单。 参数 order: 形如 {"id": "A001", "amount": 100.5, "status": "paid"}。 返回结果包含 success 和 reason 两个字段。 """ if not isinstance(order, dict): return {"success": False, "reason": "order must be a dict"} order_id = order.get("id") amount = order.get("amount") status = order.get("status") if not order_id: return {"success": False, "reason": "missing order id"} if not isinstance(amount, (int, float)) or amount <= 0: return {"success": False, "reason": "invalid order amount"} if status not in self.VALID_STATUS: return {"success": False, "reason": "invalid order status"} return {"success": True, "reason": "ok"}

这段代码逻辑很简单,但它有一个边界点需要测试:金额为字符串类型时应报错,状态为PENDING(大小写不一致)时应报错。这些边界情况非常适合用于检验 AI 生成测试代码是否真正理解需求,而不是仅仅跑通主流程。

4.3 编写提示词模板

提示词文件路径为prompts/test_generator.txt。

你是一名资深的 Python 测试工程师。请根据下面的业务代码生成 pytest 单元测试。 要求: 1. 测试文件要用 import pytest 和 from src.order_validator import OrderValidator。 2. 覆盖正常流程、边界情况、异常输入。 3. 每个测试函数有明确的 docstring,说明它验证的场景。 4. 只输出测试代码,不要输出额外解释。 5. 测试代码需要能在 pytest 7.0+ 环境运行。 被测代码: {code}

我们在这里使用占位符{code},运行时会把order_validator.py的内容填充进去。这种提示词模板逐步积累,是团队知识资产的一部分。

4.4 编写 AI 调用编排脚本

接下来写一个 Python 脚本,负责调用大模型服务生成测试代码。文件路径为workflows/ai_reviewer.py。

# 文件路径:ai-native-demo/workflows/ai_reviewer.py import os import openai # 以 OpenAI 兼容接口为例,可替换为任一兼容服务 CODE_PATH = "src/src/order_validator.py" PROMPT_PATH = "prompts/test_generator.txt" TEST_OUTPUT_PATH = "tests/test_order_validator.py" def read_file(path: str) -> str: with open(path, "r", encoding="utf-8") as f: return f.read() def generate_tests() -> str: code = read_file(CODE_PATH) prompt_template = read_file(PROMPT_PATH) prompt = prompt_template.replace("{code}", code) client = openai.OpenAI( api_key=os.environ.get("LLM_API_KEY"), base_url=os.environ.get("LLM_BASE_URL"), ) resp = client.chat.completions.create( model=os.environ.get("LLM_MODEL", "gpt-4o-mini"), messages=[ {"role": "system", "content": "你是一位严谨的测试工程师。"}, {"role": "user", "content": prompt}, ], temperature=0.2, ) return resp.choices[0].message.content def save_tests(content: str) -> None: os.makedirs(os.path.dirname(TEST_OUTPUT_PATH), exist_ok=True) with open(TEST_OUTPUT_PATH, "w", encoding="utf-8") as f: f.write(content) if __name__ == "__main__": test_code = generate_tests() save_tests(test_code) print("AI 生成测试完成,写入:", TEST_OUTPUT_PATH)

脚本里的关键点有几个:

  • 模型调用使用temperature=0.2,降低随机性,让输出更稳定。
  • 业务代码从本地文件读取并填充提示词,保证提示词模板可以单独维护。
  • 输出直接写入tests/test_order_validator.py,随后由 CI 运行测试。

需要提醒的是,这里的openai客户端仅仅是一个比较常见的调用方式,很多国产模型平台也提供 OpenAI 兼容接口,只需要修改base_url和api_key即可,不需要改核心逻辑。

4.5 编写验证与修复建议工作流

生成测试之后,我们需要执行这些测试,并根据执行结果决定是否要继续生成修复建议。下面这个脚本模拟了完整的反馈闭环。文件路径为workflows/ai_orchestrator.py。

# 文件路径:ai-native-demo/workflows/ai_orchestrator.py import subprocess import os def run_tests(): """ 运行 pytest,返回 (通过标志, 输出日志)。 """ result = subprocess.run( ["python", "-m", "pytest", "tests/test_order_validator.py", "-v"], capture_output=True, text=True, ) passed = result.returncode == 0 return passed, result.stdout + result.stderr def generate_fix_suggestion(test_log: str, code_snippet: str) -> str: """ 调用 AI 模型,根据测试失败的日志和代码片段,生成修复建议。 这里主要展示流程,实际接入模型的能力取决于你的平台支持。 """ prompt = f""" 测试运行失败或存在不稳定的情况。请分析下面的测试日志和业务代码,输出修复建议。 日志: {test_log} 代码: {code_snippet} 要求: 1. 明确指出引发测试失败的根因。 2. 给出最小改动建议。 3. 如果与代码无关,给出排查思路。 """ # 伪代码:在实际项目中替换为真实模型调用 # client = create_llm_client() # result = client.chat(..., prompt=prompt) placeholder = "建议检查鉴权逻辑和金额字段的类型判断,重点关注 amount <= 0 的边界。" return placeholder if __name__ == "__main__": passed, log = run_tests() if passed: print("✅ 所有测试通过,AI 生成的测试代码可信,可以继续后续发布流程。") else: print("❌ 测试失败,正在请求 AI 生成修复建议...") code = open("src/src/order_validator.py", encoding="utf-8").read() suggestion = generate_fix_suggestion(log, code) print("AI 修复建议:") print(suggestion)

这个工作流虽然简化了很多细节,但它清楚表达出 AI 原生工程的一个关键治理模式:AI 生成的代码可以进入流水线,但它必须被测试覆盖并得到明确的通过或失败信号,而且失败时可以由 AI 给出下一步建议,而不是直接卡住整个流程。

4.6 运行与验证

先在项目根目录创建一个虚拟环境并安装依赖:

cd ai-native-demo python -m venv venv source venv/bin/activate # Windows 下使用 venv\Scripts\activate pip install pytest openai python-dotenv

然后设置环境变量:

export LLM_API_KEY="你的密钥" export LLM_BASE_URL="https://your-llm-service-url" export LLM_MODEL="你的模型名称"

接着先后运行两个脚本:

python workflows/ai_reviewer.py python workflows/ai_orchestrator.py

第一种情况,如果 AI 生成的测试代码合理,那么流水线会输出所有测试通过的提示。第二种情况,如果测试失败,工作流会输出修复建议,供开发人员决策。这个例子虽然跑起来不会像生产系统那么庞大,但它把AI原生工程从“一句话概念”变成了“能看到的执行流”,这点非常重要。

5. 常见问题与排查思路

在 AI 原生工程实践落地过程中,最容易卡住团队的并不是模型效果,而是工程集成时的各种细节。下面把常见问题按 “现象-原因-方案” 的表格整理出来。

问题现象常见原因解决思路
AI 生成的代码能编译,但运行出现死循环或越界错误大模型对上下文边界建模能力有限,常常把复杂递归写成无限循环在生成提示词中要求补充递归出口条件;强制 AI 先输出单元测试再输出实现;开启静态分析工具进行控制流检查
流水线调用 AI 接口时频繁超时大模型推理速度慢,单次生成耗时 5-20 秒;部分平台并发限制严格设置较长但合理的超时参数(如 30 秒);把 AI 调用放到异步任务中,不阻塞主流水线;使用消息队列对生成请求排队;对模型结果做缓存
多次运行的结果不一致,测试一会通过一会失败模型输出具有随机性;上下文长度或前缀不一致影响生成结果固定 temperature 参数并趋于 0;在提示词中要求输出固定格式;保存每次生成的结果和输入提示词,便于溯源和复现
AI 会根据过时的内部规范生成代码,影响合规性知识库更新滞后,检索召回时命中了旧文档建立文档版本与知识库同步机制;在 RAG 检索结果中标记更新时间,供下游判断;对关键规则增加正则或脚本级硬校验
测试通过但业务仍然出错单元测试覆盖不足;AI 生成的测试与业务代码存在同源偏见引入独立评审人;设定最低覆盖率阈值;把 AI 生成测试和人工补充测试联合纳入质量门禁

这里要特别强调一个问题:AI 生成的单元测试通过,并不能代表输入输出设计是正确无误的。如果 AI 在理解需求时犯了相同的方向性错误,那么生成的实现和测试可能同时错过了某个边界。所以,在 AI 原生工程中,一定要有独立于 AI 生成链路之外的质量检查措施,最典型的就是人工代码评审和随机数据驱动的模糊测试。

如果团队在预研阶段没有现成的 RAG 组件,也可以先用简单的本地向量库脚本做尝试,或者把所有历史规范文档直接拼接进提示词,不过后者很快会遇到上下文长度限制。建议早期尽量从小规模知识切片开始,逐步扩充。

6. 最佳实践与工程建议

6.1 建立 AI 产出与人工验收的双人复核机制

AI 原生工程不是“全部交给 AI”,而是“人机共同负责”。在代码审查阶段,建议同时保留两条路径:

  • 资深工程师查看 AI 生成的代码逻辑,给出人工意见。
  • 自动测试套件和静态分析工具对代码进行机器校验。

如果可能,要求 AI 生成的代码必须带上测试用例一起提交,这样审查者可以通过测试用例快速理解 AI 意图,也更容易发现遗漏。

6.2 数据与模型要版本化、可回滚

AI 应用的基础设施同样遵循软件工程原则。模型文件、提示词模板、向量索引、测试种子数据都要版本化。尤其要注意提示词模板,它在生产环境中对输出质量的影响极大,必须像代码一样走 Git、Code Review、灰度发布流程。

另一方面,模型升级后,建议先在灰度环境中运行一段时间,对比新旧版本在同一批样本上的输出质量与耗时,度量的主要维度包括准确率、拒绝率、无响应率和危险操作率。一切正常后再全量切换。

6.3 用“测试先行”作为 AI 生成的质量度量

AI 生成的代码不是拿来即用的,要让 AI 先生成测试,再根据测试反馈迭代实现。这里的“测试先行”与 TDD(测试驱动开发)理念一致,但驱动方变成了 AI。流程为:

  1. 编写需求描述和函数签名。
  2. 让 AI 生成单元测试。
  3. 让 AI 根据单元测试和需求描述生成实现。
  4. 跑测试,如果失败,携带着测试日志再向 AI 提问修复。
  5. 直到测试通过,再交给人工审查。

这种方式比“AI 一次生成完整代码”更容易驯服,因为它让错误发生在更早的节点,整个过程的调试成本明显降低。

6.4 为 AI 原生工程建一个面向反馈的基础设施

如果只是偶尔使用 AI 助手,不需要专门建设基础设施。但如果你希望团队把 AI 嵌入日常交付流程,那么建议提供一个内部统一入口,包含以下模块:

  • 模型路由与负载均衡,支持将请求分发到不同模型服务。
  • 租户隔离和 API Key 管理,确保不同项目权限分离。
  • 请求审计日志,记录用户、时间、输入输出摘要。
  • 结果反馈按钮,让工程师可以对 AI 输出进行点赞或点踩,为后续调优储备数据。
  • 熔断与降级开关,当外部大模型服务不可用或响应异常时,自动切换回传统规则引擎或人工操作模式。

特别是最后一项,很多团队容易忽略。AI 服务一旦成为关键路径,它的抖动就会直接威胁交付稳定性。给流水线增加降级机制,是工程平均无故障时间(MTTR)的守护者。

6.5 安全边界与生产变更流程

涉及 AI 模型生成的代码部署到生产环境时,安全要求比传统代码更高。

  • AI 生成的依赖必须经过版本锁定和 CVE 扫描,不能直接装进生产环境。
  • 对 AI 操作数据库或者执行写命令的场景,必须使用专门的只读账号,并在测试环境先行验证。
  • 任何 AI 生成的运维脚本,如果要连接生产服务器,必须经过人工审批,最好使用堡垒机执行。
  • 为 AI 设置“最小权限原则”并不等同于不信任 AI,恰恰相反,这是让 AI 在生产环境安全和可控地发挥作用的基础。

7. 总结与下一步学习方向

从 DevOps 1.0 到 DevOps 2.0,本质上是一次从“流程自动化”到“决策智能化”的跃迁。传统自动化只解决确定性任务,而 AI 原生工程正在试图把不确定性任务也纳入工程流水线,借助大模型和知识检索来辅助判断,再由验证机制兜底。Agile 3.0 是否成立先不去争辩,但有一点可以肯定——AI 已经进入需求分析、迭代规划和回顾改进等原本高度依赖人为沟通的领域。未来的敏捷,很可能具备动态规划与自动评估的能力。

现阶段如果你想真正把 AI 原生工程落地到团队,可以先从三个方向动手:

  1. 选择一条最频繁的 CI 流水线,接入 AI 生成测试用例并记录生成通过率数据。
  2. 建立一个小型特征库,把你团队的代码规范、历史故障文档和设计文档切片,测试基于 RAG 的辅助问答。
  3. 调研你正在使用的 DevOps 平台支持哪些 AI 插件,优先选择与现有看板、流水线、日志系统集成度高的工具。

真正值得投入的地方,不是用来展示“AI 能写代码”,而是建立起一套能让 AI 持续可用、持续可靠、持续得到反馈的工程机制。当你把 AI 的输出看作一个待验证的假设,而不是一个最终答案时,你的团队基本上就已经迈入了 AI 原生工程时代的门槛。

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

Claude Code 多模型随时切换:用 TaoToken 统一 Key 与环境变量配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

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

如何让 Claude Code 读取飞书私有文档:把 MCP endpoint 改到 TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/17 17:28:53

人工智能期末复习习题集:知识表示、归结推理与搜索策略精讲

简介&#xff1a;这份人工智能经典习题集及各章总结&#xff0c;面向高校学生与备考期末的学习者&#xff0c;帮助系统梳理人工智能理论体系并强化解题能力。资源以doc文档形式呈现&#xff0c;共1个文件&#xff0c;压缩包约2.19MB&#xff0c;内容按章节组织&#xff0c;涵盖…

作者头像 李华
网站建设 2026/10/17 17:25:22

Claude Code安装教程:用cc-switch管理API Key与Node.js环境

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华