从拼音输入法到coding agentsAi领域近几年的发展突飞迅猛日新月异。不断有新的名词、新的概念、新的技术出现。万变不离其宗懂得底层技术原理才能跟上ai时代的浪潮。一、从猜词游戏讲起猜词游戏你的语言直觉从何而来看到前面的关键词“一杯”我们的直觉会自动筛选符合生活经验的选项——咖啡而非一杯狗。而下面这个问题给出接在“正在”后面的词我们发现所有选项都是合理的。不过当上文再增加一个词在给定“股价/正在”的情况下就更倾向于选择“跳水”作为下一个词了。添加一个词会让答案更明确是因为更长的上下文提供了更多信息从而缩小了可能的选择范围。上下文信息越具体预测范围就越精确这是语言理解的基本规律。当我们在句子中逐步添加股价/正在这两个词时预测精度之所以提升本质上是因为模型开始关注更长的词序列关系。二、传统拼音输入法我们日常当中使用的拼音输入法也需要根据上一个词猜下一个词它也用到了语言模型。拼音输入法的基本原理拼音切分将用户输入的连续字母流如zhongyao正确分割为拼音单元“zhong”、“yao”。候选生成根据拼音-汉字映射表为每个拼音生成所有可能的汉字候选形成庞大的候选组合空间。概率排序使用语言模型计算每个候选汉字序列出现的概率选择概率最高的作为推荐结果。这是输入法最核心的部分。拼音zhong yao条件概率作用上文为“很”时P(“重要”|“很”) P(“中药”|“很”)“很中药”不通。上文为“吃”时P(“中药”|“吃”) P(“重要”|“吃”)“吃重要”荒谬。这就是n-gram条件概率的直接体现。马尔科夫假设一个词的出现概率仅依赖于其前n-1个词N-gram语言模型N-gram模型是一种基于马尔科夫链的统计语言模型。第N个词的出现只与前面N-1个词相关而与其它任何词都不相关整句的概率就是各个词出现概率的乘积。这些概率可以通过直接从语料中统计N个词同时出现的次数得到。常用的是二元的Bi-Gram和三元的Tri-Gram。N-gram作为统计语言模型其预测逻辑本质是通过统计语料库中固定长度词序列的共现频次计算条件概率例如下图当统计一杯后接不同词语的分布时若语料库中共有12个以一杯开头的词序列如一杯咖啡出现4次则咖啡的条件概率为4/12而未出现的组合如一杯/狗概率为零。该模型默认选择条件概率最大的词作为预测结果如本例优先输出咖啡但这种统计特性也意味着预测结果完全依赖于训练语料库的词频分布若更换为一杯水出现频次更高的语料环境模型预测结果将随之变为水。Bigram公式n-gram的n是否越大效果越好n过小模型会很健忘。n过大模型会陷入一个经典困境理论精度越高实际表现越差。我/喜欢/和/我的/狗/建军/在/晴天/的/清晨/去/海边__”后接“散步”N-gram模型的核心价值在于捕捉局部序列中的统计规律。这也是为什么现在的 GPT 等大模型要引入 Attention 机制——就是为了打破马尔可夫假设的长度限制让模型能在需要时回忆起很久之前的关键信息。三、大语言模型 Large language model LLM语言模型的进化Transformer 架构是一种基于自注意力机制Self-Attention的深度学习模型由 Google 团队在 2017 年的论文《Attention Is All You Need》中首次提出。Transformer 彻底改变了自然语言处理NLP领域并成为现代大语言模型如GPT、BERT等的核心基础。GPT 的实现原理可以用一句话表述通过输入一段文本GPT 模型会预测出最可能出现的下一个字token。列出随后可能出现的词及其出现的“概率”按“概率”从高到低排列有了这个带有概率的词列表我们就会从这些词中选择一个词Transformer算法特点算法时间复杂度O(N^2)无状态的自回归transformer算法流程Attention 打破了马尔科夫假设的长度限制.N-gram 只看前 N-1 个词Attention 可以看全文并加权关注关键词这才是质变上下文窗口千问系列模型上下文窗口 : https://bailian.console.aliyun.com/cn-beijing?spm5176.29597918.J__Xz0dtrgG-8e2H7vxPlPy.19.f995133coUFXxkutm_contentse_1021228063gclidEAIaIQobChMI6Le4v5fIjwMVKBJ7Bx1xgzlPEAAYASAAEgIHP_D_BwEtabdoc#/doc/?typemodelurl3026903上下文窗口是大模型的核心资源。大模型相关的应用的很多设计都是围绕着这个上下文窗口进行的。中间文件/btw /compact /clearsubagentclaude.md/agents.md不建议超过200行skill.md不建议超过500行LLM APIGPT 模型给行业带来的影响后来者多多少少都会参考它的 API 设计。此外还有一个很重要的原因它几乎成了行业的事实标准现在很多项目选择提供兼容 OpenAI API。deepseek api : https://api-docs.deepseek.com/zh-cn/api/create-chat-completioncurl-L-XPOSThttps://api.deepseek.com/chat/completions\-HContent-Type: application/json\-HAccept: application/json\-HAuthorization: Bearer TOKEN\--data-raw{ messages: [ { content: You are a helpful assistant, role: system }, { content: Hi, role: user } ], model: deepseek-chat, thinking: { type: disabled }, frequency_penalty: 0, max_tokens: 4096, presence_penalty: 0, response_format: { type: text }, stop: null, stream: false, stream_options: null, temperature: 1, top_p: 1, tools: null, tool_choice: none, logprobs: false, top_logprobs: null }大模型编程接口的路径是 /chat/completions 。这个接口起的名字叫聊天补全。补全这个名字刚好也呼应了我们前面讲的 GPT 的工作原理。anthropic api: https://platform.claude.com/docs/en/api/messages/createmessages大模型的短期记忆多轮对话的实现https://api-docs.deepseek.com/zh-cn/guides/multi_round_chat: https://api-docs.deepseek.com/zh-cn/guides/multi_round_chat温度提示词用户提示词系统提示词注意力稀释效应大模型的局限无状态无法调用工具大模型的推理能力确实很强但它本质上是一个离线、纯文本、无状态的概率模型。无法进行工具调用。目前所有的 Agent 架构设计无论是 Claude Code, LangGraph 还是 OpenClaw 等本质上都是在给模型“打补丁”因为模型记不住所以写外部文件模型记忆容量有限所以我们做上下文压缩因为模型易跑偏所以我们做 Todo 列表四、Ai AgentAi agent和大模型的关系: 大模型是大脑, ai agent的是大模型的手和脚。大模型仅负责推理、决策调用什么工具。而agent的负责执行大模型的决策即调用什么工具。agent英语原意是代理人的意思。Agentic loop 智能体循环Agent的核心运行流程传统的 LLM 应用是“一问一答“发送 prompt拿回 response完成。但 Coding Agent 面对的问题远不止一次 API 调用能解决 — 它需要先读代码、理解结构、修改文件、运行测试、检查结果然后可能还要修修补补。这个“循环往复直到完成“的过程就是 Agentic Loop — Agent 的心跳。单纯的推理如思维链如同一位扶手椅上的哲学家——他依据已有知识进行严密的逻辑推演但如果前提有误结论便全盘皆错。单纯的行动则像一只无头苍蝇——盲目地尝试所有按钮只求侥幸对一个。ReAct(ReasonAct模式下的Agent如同一位边想边做的探险家。看图规划。他看着地图说道“前面可能是沼泽我应该找根棍子探路。”采取行动。他伸出棍子戳了戳地面。观察反馈。他看了看棍子说道“棍子陷下去了果然是沼泽。”调整策略。他收回棍子说道“需要绕路走。”ReAct模式打破了“先想完再做”的传统线性逻辑构建起“思考→行动→观察”的动态微循环。这种模式使Agent能够在与环境的交互中实时调整策略从而有效解决那些仅凭内部知识难以应对的复杂问题。Agent 大模型 工具 执行循环 记忆 目标分解核心执行流程是一个自我驱动的循环大模型如何知道调用什么工具这个循环让 Agent 变成了一个真正有目的的、自驱动的、能自我纠正的智能体。实例演示https://github.com/shareAI-lab/learn-claude-code 61k starsfromanthropicimportAnthropicfromdotenvimportload_dotenv load_dotenv(overrideTrue)ifos.getenv(ANTHROPIC_BASE_URL):os.environ.pop(ANTHROPIC_AUTH_TOKEN,None)clientAnthropic(base_urlos.getenv(ANTHROPIC_BASE_URL))MODELos.environ[MODEL_ID]SYSTEMfYou are a coding agent at{os.getcwd()}. Use bash to solve tasks. Act, dont explain.TOOLS[{name:bash,description:Run a shell command.,input_schema:{type:object,properties:{command:{type:string}},required:[command],},}]defrun_bash(command:str)-str:dangerous[rm -rf /,sudo,shutdown,reboot, /dev/]ifany(dincommandfordindangerous):returnError: Dangerous command blockedtry:rsubprocess.run(command,shellTrue,cwdos.getcwd(),capture_outputTrue,textTrue,timeout120)out(r.stdoutr.stderr).strip()returnout[:50000]ifoutelse(no output)exceptsubprocess.TimeoutExpired:returnError: Timeout (120s)except(FileNotFoundError,OSError)ase:returnfError:{e}# -- The core pattern: a while loop that calls tools until the model stops --defagent_loop(messages:list):whileTrue:responseclient.messages.create(modelMODEL,systemSYSTEM,messagesmessages,toolsTOOLS,max_tokens8000,)# Append assistant turnmessages.append({role:assistant,content:response.content})# If the model didnt call a tool, were doneifresponse.stop_reason!tool_use:return# Execute each tool call, collect resultsresults[]forblockinresponse.content:ifblock.typetool_use:print(f\033[33m${block.input[command]}\033[0m)outputrun_bash(block.input[command])print(output[:200])results.append({type:tool_result,tool_use_id:block.id,content:output})messages.append({role:user,content:results})if__name____main__:history[]whileTrue:try:queryinput(\033[36ms01 \033[0m)except(EOFError,KeyboardInterrupt):breakifquery.strip().lower()in(q,exit,):breakhistory.append({role:user,content:query})agent_loop(history)response_contenthistory[-1][content]ifisinstance(response_content,list):forblockinresponse_content:ifhasattr(block,text):print(block.text)print()实例演示杀死占用8080端口的进程请至钉钉文档查看附件《s01_agent_loop_4_roles_real.drawio》。ReAct模式控制反转IoC业务流程的控制权从“Go/Python 代码”完全转移到了“大模型的实时推理和规划”中。代码只提供物理定律如文件读写和编辑、沙箱执行等不干涉任务走向。退出循环的条件如何防止无限循环五、编码智能体查看claude code的上下文具体有哪些内容/context在实际项目中代码智能体如 Claude Code展现了 Agent 理论的威力。优势一自我学习代码库当你说 “帮我优化这个 API 的性能”Agent 会步骤1自动读取相关源代码 ↓ 使用 Read 工具读文件 ↓ 获取 src/api/handler.ts, src/service/db.ts 等 步骤2追踪函数调用链 ↓ 使用 LSP (Language Server Protocol) 的 goToDefinition ↓ 找出每个函数调用了哪些其他函数 ↓ 理解整个调用流程handler → service → repository → DB 步骤3查看 Git 历史和项目文档 ↓ git log 了解为什么这样实现 ↓ 阅读 CLAUDE.md、README 理解架构决策 ↓ 理解业务背景和约束 步骤4综合分析并给出方案 ↓ 瓶颈在这里可以通过缓存/异步/批量查询优化这意味着你不需要花 30 分钟给 Agent 讲解代码库。它学得比你讲得快。优势二迭代式自我修复代码写完后Agent 会1️⃣ 主动运行测试 bash(npm test) 2️⃣ 看到错误立即分析根因 ❌ Error: ReferenceError: cache is not defined → 意识到需要导入 cache 模块 3️⃣ 自动修改代码 修改 import 语句添加缺失的依赖 4️⃣ 重新运行测试 bash(npm test) 5️⃣ 看到新的错误继续迭代 ❌ Error: Type undefined is not assignable to type CacheConfig → 意识到需要初始化配置对象 6️⃣ 继续修改和测试 [重复直到所有测试通过]在这个过程中你不需要每次错误都指挥 Agent “试试这个”。它理解目标代码要通过测试会自己反复尝试。优势三多步骤任务的完整执行传统的代码生成 AI 只能处理单个文件。Agent 能处理跨多个文件的修改改了 A 文件后自动识别需要改 B 文件有依赖的任务先修改模型定义再修改 API 路由最后修改前端调用修改后的级联效应修改代码后更新配置、更新测试、更新文档每一步都能做出判断和调整为什么代码智能体这么强大概率预测 上下文理解 自我改进的完整闭环。拼音输入法 输入ni → 理解用户意图 → 预测你 → 用户反馈✓ 代码智能体 输入优化 API → 理解需求 → 分析代码 → 提出方案 → 编写代码 → 运行测试 → 看错误 → 自我修改 → 再次测试 → 验证成功 ✓两者的本质相同在海量可能性中基于上下文和数据规律做出最合适的决策。Agent 也会跑偏改了不该改的代码、也会幻觉编造不存在的 API、也会陷入死循环反复修同一个 bug六、ai时代不需要良好的架构了吗阿里巴巴内部访谈里一位工程师同事给AI 友好做了一个 5 维度归纳测试完备性、环境完备性、架构合理性无循环依赖、无跨服务隐式调用、端到端测试可执行性、文档充分性。这五个维度有一个共同本质——它们要求的不是能用是AI 友好。而我们今天大量的研发系统能用是因为人聪明不是因为它们 AI 友好。新瓶颈一旦看清给到的判断就很硬这个瓶颈不会自己消失需要人主动去拆。而拆它的工作有一个不显眼但至关重要的特性——复利。需要纠结模型是不是最好的吗参考资料https://zhuanlan.zhihu.com/p/27518495722https://zhuanlan.zhihu.com/p/338817680https://learn.shareai.run/zh/https://ccunpacked.dev/https://mp.weixin.qq.com/s/Xf3C60jCxR4ppMi4HuAnVAhttps://github.com/shareAI-lab/learn-claude-code