[{"content":"","date":"8 August 2026","externalUrl":null,"permalink":"/","section":"111","summary":"","title":"111","type":"page"},{"content":"","date":"8 August 2026","externalUrl":null,"permalink":"/tags/agent/","section":"Tags","summary":"","title":"Agent","type":"tags"},{"content":"","date":"8 August 2026","externalUrl":null,"permalink":"/tags/ai/","section":"Tags","summary":"","title":"AI","type":"tags"},{"content":"","date":"8 August 2026","externalUrl":null,"permalink":"/posts/","section":"Blog","summary":"","title":"Blog","type":"posts"},{"content":"","date":"8 August 2026","externalUrl":null,"permalink":"/tags/mcp/","section":"Tags","summary":"","title":"MCP","type":"tags"},{"content":"","date":"8 August 2026","externalUrl":null,"permalink":"/tags/skill/","section":"Tags","summary":"","title":"Skill","type":"tags"},{"content":"","date":"8 August 2026","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"最近看到HITSZ OSA （811633021) 内关于Agent的一些讨论，想到去年杨植麟的一次访谈，觉得值得汇总，结合自己的一些实践做一次分享。\n一、让 AI 写代码时的两条原则 # 用自然语言让 AI 生成代码进入生产级项目，有两条原则应当重视。\n第一，多考虑业务和流程的状态机。 把主要精力从「怎么写代码」转移到「系统状态如何变化」上：先定义清楚有哪些状态、什么事件会触发状态之间的转移，再让 AI 去填充具体实现。状态机是人和 AI 都能精确理解的描述方式，它把 AI 的生成能力限制在明确的业务规则之内，生成的东西才既快又可靠。\n第二，约定好协作方式，用类型系统传递语义；抽象设计好，实现就不必操心。 这是使用代码的方式进行设计意图的表述\n类型系统是业务含义的载体。订单状态不该是一个普通字符串，而应是「待支付、已支付、已发货」这样的枚举类型。当几十个 AI 生成的文件拼在一起时，类型就是它们之间的契约，接口才不会对不上。 人的工作到定义接口、状态、转移规则和错误码为止；函数体、边界情况、胶水逻辑可以交给 AI。「不管实现」不是偷懒，而是把注意力集中在「定义正确的类型和语义」上，验证手段是类型检查和端到端测试，而不是逐行读代码。 有一个自然的推论，将合适的设计意图转换为编译器和AI能够读懂的语义，并可以据此设计良好的测试，进行大范围重构和迭代开发。\n二、外部能力的三种接入方式 # agent 调用外部能力，有三种方式值得区分：\nskill（Function Calling） 使用渐进式加载的方式接入Agent，将一系列工具的说明和参数格式提前告诉模型，模型决定调用、参数，然后加载相应的markdown进入上下文，输出一条结构化的调用指令。\nMCP Server 持久化存在于Agent上下文中。MCP 定义了模型与工具的统一接口，工具按标准封装一次成为 MCP Server，任何支持 MCP 的应用都能直接使用。它解决的是各自为政的问题。\n*skill 和 MCP Server两者在上下文占用存在不对称，技能可以按需加载，先给简短说明，需要时才读入完整内容，这天然缓解了 MCP 的上下文膨胀，这是因为MCP 的工具描述通常是常驻上下文的。\nCode Act（Bash/Python等） 规范的 SDK 相比 MCP 的侵入更小，功能更全，但是对于应用开放程度有要求。顺序调用两者都能做，并行操作直接写代码天然可表达，且目前主流模型接入 Agent 随手写几十行脚本并不困难。\n对于模型而言，这三种方式并没有本质的不同，都是以token的方式进行编码解码，输出结构化的调用指令。对于Agent而言，针对具体需求，函数调用与skill最直接，如agent-browser、superpowers；调用某个成熟垂直领域应用，MCP 的标准化才有价值，如ida-pro-mcp；而简单终端可解决问题或无泛用性的应用需求，可以直接让AI写上几十行的代码随用随走，无上下文占用，对话独立，进程独立。\n三、技能是对 AI 能力的逆向工程 # 杨植麟在访谈中提到：Skill是对 AI 能力的一种逆向工程，reasoning和Agent分别是提升尝试轮数与尝试深度的工具。\n模型训练完成后具备许多没有被明确发掘的潜能。技能的作用，是通过设计好的流程、约定和示例，提升一次尝试可以被验证是否正确的范围——让一个缸中之脑能够脱离空想，在实践中检验和发展真理（逃）。\n杨植麟给出了两个判断：\n正向集成优于逆向工程。 如果技能所激发的能力能在训练阶段被直接内化进模型，效果会比外挂技能更好。逆向工程是训练之外的次优解，尽管是目前最现实的解。 存在长尾效应。 足够通用的能力，厂商会在训练中完成，技能会被模型本体取代；较为小众的领域能力，通用训练覆盖不到，就需要合适的技能设计或 MCP 封装来补齐。技能生态的长期价值在长尾，不在头部。 笔者认为的一个边界条件：「通用能力会被训练吸收」只对静态知识成立。训练截止时间之后的新信息，以及企业内部的私有系统，训练在原理上就接触不到。\n四、一个推广：MCP 是对应用能力的逆向工程 # 「逆向工程」这个视角可以从模型一侧平移到应用一侧：技能逆向的是模型训练，写 MCP 本质上是对应用能力的逆向工程，同样服从长尾规律。\n足够通用的能力，开发者会自己完成正向集成——官方 API、官方插件、官方 MCP Server 一应俱全，不需要第三方代劳。 较为小众的能力，没有官方动力提供对 agent 友好的接口，就需要有人单独做应用能力的逆向：弄清它的数据模型和操作流程，封装成 MCP Server，把它接入 agent 的世界。第二节提到的 ida-pro-mcp 就是典型——逆向工程工具本身没有官方的 agent 接口，社区把它的能力逆向封装出来，才让它进入了 agent 的工具箱。 五、一些思考 # 笔者认为，或许模型最大的价值在于，可以通过与人的互动激发其能力，帮助更多人找到并实现自我价值，并顺路探索许多知识的边界。\n","date":"8 August 2026","externalUrl":null,"permalink":"/posts/skill-reverse-engineering/","section":"Blog","summary":"从两条 AI 辅助编程的原则、函数调用与 MCP 的分工出发，讨论「写技能是对 AI 能力的逆向工程」这一观点，并把它推广到 MCP 上：两者都服从长尾规律。","title":"技能是对 AI 能力的逆向工程","type":"posts"},{"content":"A CS undergrad at HITSZ. I enjoy wrestling with hard problems — a habit from years of math competitions — and I believe the right tools can free people from tedious legacy workflows, so that more attention goes to creative problems and less to repetitive ones.\nTech Stack # Hand-written: C · Python · Java · Verilog · Arch Linux · Git\nAI-assisted: Go · React · Rust\nInterests # Kubernetes, TypeScript, cloud-native tooling — currently learning streaming-native architectures \u0026amp; goroutine orchestration in Go.\nContact # GitHub only: github.com/0702hjj — issues \u0026amp; discussions welcome.\n","externalUrl":null,"permalink":"/about/","section":"111","summary":"","title":"About","type":"page"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"}]