avatar
文章
113
标签
76
分类
0
首页
标签
归档
个人网页
首页
标签
归档

个人网页

Execution 与闭环——从执行到知识的回流
发表于2026-07-20
Specification 写好了。AI 知道改哪里、怎么改、不能动什么、需要测什么。接下来就是把这份精确的描述,变成可运行的代码 这就是 Execution。在整个链路中: 12Knowledge → Context → Decision → Specification → Execution 收集 筛选 判断 翻译 执行 它是最后一环——前面五环的全部投入,在这一环兑现 但 Execution 有一个独特之处:它是整个链路中 AI 最擅长的一环,却也是整个链路中最依赖上游质量的一环 如果 Specification 准确完整,Execution 是高效的、机械的、几乎不需要人工干预的。如果 Specification 有遗漏或歧义,AI 会忠实地把问题变成 bug。如果 Specification 约束过多,AI 被捆住手脚,发挥不出它在实现细节上的优势 Execution 的上限,是 Specification 的质量。而 Specification 的上限,是 Decision 的质量。以此类推。整个链路是一条质...
Specification——把决策翻译给 AI
发表于2026-07-20
上一篇文章讨论了 Decision——在信息不完整的情况下,如何做出最好的工程决策。 但决策做出来之后,问题还没完。决策是在人脑子里完成的——带着判断、权衡、以及对系统上下文的理解。而下一环 Execution,是由 AI 来执行的——AI 需要精确、完整、无歧义的输入 人脑子里的决策,和 AI 需要的输入,是两种不同的东西。二者之间存在一个翻译鸿沟 在整个链路中: 12Knowledge → Context → Decision → Specification → Execution 收集 筛选 判断 翻译 执行 Specification 就是这个翻译层。它回答的问题是:如何把工程决策,变成 AI 可以精确执行、不会误解的描述? 先划清边界:这不是什么 在讨论 Specification 是什么之前,有必要先说明它不是什么。因为「Specification」这个词在软件开发里有很重的历史包袱,容易被理解成已有的概念 不是需求文档。 需求文档(PRD,产品需求文档;SRS,软件需求规格说明)描述的是「系统应该做什么...
工程决策——在不确定中做最好的选择
发表于2026-07-20
经过了上一篇关于 Context 的讨论,一个自然的问题是:上下文构建完成之后呢? 上一篇文章的结论是,Context 构建永远不可能完美——五重约束互相冲突,完备性和最小性无法兼得。这意味着一个让人不太舒服的现实:工程决策,永远是在信息不完整的情况下做的 这听起来是个缺陷。但这正是「工程判断力」之所以存在的原因。如果每次决策之前信息都是完备的,那就不需要判断力了——按规则执行就行 在整个 AI Native 软件开发的链路中: 1Knowledge → Context → Decision → Specification → Execution Decision 是第三环。它是整个链路的价值兑现点——前面收集 Knowledge、构建 Context,全部是为了支撑这一环。如果 Decision 的判断质量低,上游的一切投入都白费了 更重要的是,Decision 可能是整个链路中最需要人的一环 四种决策 回到第一篇里提过的四个核心问题。它们其实对应了四种不同类型的工程决策: 1234改哪里 → Location Decision (定位决策)怎么改 → Appr...
从知识到任务上下文
发表于2026-07-19
上一篇文章把软件开发中的知识拆成了六个层次:代码、业务逻辑、架构设计、历史决策、需求、基础知识 拆完之后,一个很自然的问题就摆在了面前:六层知识浩瀚如海,但一次具体的开发任务——比如「在退款流程里加一个超 30 天拒退的校验」——只需要其中的极少一部分。剩下的全是噪音,不仅没用,还会干扰判断 怎么从知识的海洋中,捞出刚好需要的那一滴? 这就是 Context 要解决的问题。在整个 AI Native 软件开发的链路中: 1Knowledge → Context → Decision → Specification → Execution Context 是第二环,承接 Knowledge,支撑 Decision。但我越来越觉得,它可能是整个链路中最难的一环 不是因为其他环节简单,而是因为这一环要解决的问题,本质上没有一个完美解 一个看似简单的问题 先别急着讨论理论。回到上一篇那个退款场景: 任务:在退款流程中增加一个校验——超过 30 天的订单不支持退款。 这个需求只有一句话。但为了正确地实现它,你需要知道: 退款的主流程在哪里?(代码) 退款之后有哪些异步链路——MQ...
软件开发中的「知识」到底是什么?
发表于2026-07-19
上一篇文章讨论了一个观点:软件开发真正管理的对象,也许从来都不是代码,而是知识。AI 的出现没有让知识变重要——它只是让我们不得不正视这个一直存在的事实 但文章写完之后,一个更基础的问题一直在我脑子里转: 当我们说「知识」的时候,到底在指什么? 代码算知识吗?业务逻辑呢?架构设计呢?那些只存在于老员工脑子里的历史决策呢?这些看起来完全不相关的东西,为什么都叫「知识」? 这篇文章把这个问题拆开来看 一个更完整的视角 在进入正题之前,我想先给出一个整体框架。这其实是我后续一系列思考的基础: 我认为 AI Native 软件开发的核心链路是这样的: 1Knowledge → Context → Decision → Specification → Execution 每一环回答一个不同的问题: 环节 核心问题 产出 Knowledge 系统中存在哪些信息? 全部知识空间 Context 当前任务需要哪些信息? 完备且最小的信息子集 Decision 基于这些信息,做什么选择? 工程决策 Specification 决策如何转化为可执行的描述? 精确的变更规格...
软件开发真正管理的是代码,还是知识?
发表于2026-07-19
最近一段时间,一个感受变得非常清晰:AI 写代码的速度,已经远超过去了 一个 CRUD 接口、一个 Controller、一个 SQL,甚至一整个功能模块,AI 都能够很快完成 但是,在真正的业务项目里,我花费时间最多的,却越来越不是写代码 而是: 不知道应该改哪里; 不知道为什么这里要这样设计; 不知道有没有类似实现; 不知道修改之后会影响哪些地方; 不知道这个看起来无关的模块为什么会一起坏掉。 举一个很常见的例子,一个需求只是:修改退款流程中的某一个逻辑。看起来只是改一个 Service,结果上线测试之后,却发现: 积分没有发放; 优惠券状态异常; 消息通知没有发送。 最后检查代码才发现:退款流程后面还有 MQ Event 定时任务 另外几个系统的监听逻辑 这些依赖关系,并没有直接写在你修改的代码里 困难的地方,从来都不是:怎么写代码,而是:如何理解这个系统 复杂性的真正来源 前段时间重新阅读 John Ousterhout 的《A Philosophy of Software Design》时,有一个观点让我印象很深,作者认为: 软件真正的复杂性,并不来自代...
决策与实现:AI 时代的研发流程重构思考
发表于2026-07-13
最近几个月,我开始越来越多地使用 AI 参与日常开发,起初我以为变化最大的会是 Coding 但真正用了一段时间后,我发现最大的变化其实发生在研发流程——一个我们过去习以为常、现在却开始处处「别扭」的地方 一、旧流程为什么开始别扭 一个让我一直觉得别扭的问题 我们团队的研发流程和大多数技术团队差不多: 1需求评审 -> 技术方案设计 -> 技术方案评审 -> 开发 -> 测试 -> 上线 过去,这套流程跑得很顺,但在引入 AI 之后,我们很自然地开始让 AI 根据需求直接生成 Spec(实现规范)进行开发。这时不出意外的话,很快就遇到了一个尴尬的情况~ 就是 AI 生成的 Spec 非常的详细,详细到了包含 DTO、数据库字段、SQL、Mapper、API、Migration、Unit Test,甚至每个字段的命名和类型 这时候,当我们拿着这份 Spec 去评审时,就会有些奇怪…,因为评审会上,大家真正关心的问题是: 整体业务流程是否合理? 服务之间如何交互? 数据应该归属于哪个系统? 为什么用 MQ 而不是 RPC? 为什么新增一张表,而不是...
改代码这件事,为什么总是比想象中难
发表于2026-06-14
我们开发的每一个需求,基本 80% 的时间在搞清楚该改什么,只有 20% 在写代码。这不是能力原因,更是在于软件的复杂度 一个似曾相识的场景 比如接到需求:结算单状态机增加一个「部分退款」中间状态 在梳理了 SettlementService、SettlementController、SettlementStateMachine 后,改动范围很清楚——加一个枚举值,改三条状态流转路径。改动量很小,代码 review 也顺利通过。 结果上线第二天,告警来了:对账报表里部分退款的结算单被重复计入 问题出在一个没人知道的类——ReconciliationReportBuilder。它内部有一个 switch-case 遍历结算单状态来决定归入哪个科目,新增的枚举值走到了 default 分支,被当成「已结算」处理了 这个类的存在,在改代码的时候可能完全不知道。甚至不知道「我应该知道它的存在」 如果你在接手业务需求的时候也踩过类似的坑,这篇文章就是写给你的 复杂度不是代码行数多,而是「改起来费劲」 先澄清一个常见的误解:复杂度 ≠ 功能多、代码量大。 一个 50 万行的系统,如果你...
为什么AI编程助手需要CodeGraph,而不只是grep和LSP
发表于2026-05-26
AI 编程助手已经越来越常见。很多人会用 Claude Code、Cursor、Codex CLI 这类工具来读代码、改代码、解释架构、定位 bug。 但 AI 经常会遇到一个问题,尤其是项目比较大的时候:它并不是真的掌握了整个代码库的结构,而是在不断搜索文件、读取文件、猜测关系。 比如你问:这个请求最后是怎么走到数据库查询的? 如果没有更好的索引,AI 可能会从 route 开始搜索,打开几个 controller,再继续找 service、model、query builder。过程中它会消耗很多 token 和工具调用,而且一旦漏掉某个框架约定或隐式调用,结论就可能不完整。 而 CodeGraph 要解决的,就是这个问题。它为代码库建立一个本地的代码知识图谱,让 AI 编程助手可以直接查询代码结构,而不是每次都从零开始翻文件。 CodeGraph 是什么 CodeGraph 是一个面向 AI 编程助手的本地代码智能工具。 它会扫描项目,解析代码里的函数、类、方法、组件、路由、导入关系和调用关系,并把这些信息保存到本地 SQLite 数据库中。之后,AI agent 可以通...
从superpower看多Agent编排:用Prompt协议实现可控协作
发表于2026-05-16
最近在读 Superpowers 里的一个 skill:subagent-driven-development。 这个 skill 很有意思。它并不是教 agent 如何写某一种代码,而是在设计一种开发流程(开发+review):当我们已经有一个实现计划,并且计划里的任务相对独立时,主 agent 不再亲自完成所有工作,而是把每个任务派发给新的 subAgent,再通过两阶段 review 来控制质量。 它的核心思想可以用一句话概括: 每个任务派一个新的 subAgent + 两阶段审查 = 可控、高质量、低上下文污染的开发流程。 也就是说,它真正关注的不是「让更多 agent 干活」,而是「如何让多个 agent 在明确边界内协作」。 一、 它解决的不是编码问题,而是协作控制问题 在 SKILL.md 里,开头就定义了这个 skill 的执行方式: 123Execute plan by dispatching fresh subagent per task,with two-stage review after each:spec compliance review fi...
123…12
avatar
郑行码迹
学习笔记
文章
113
标签
76
分类
0
Follow Me
最新文章
codemode:让 Agent 学会写代码调工具2026-10-16
别让 AI 替你理解代码2026-08-09
用 Herdr 让 AI Agent 互相派活:打破多 Agent 协作的上下文孤岛2026-08-09
AI 时代,集成测试会是后端自测困境的解法吗?2026-08-06
知识复利:让 AI 维护一个会自己生长的知识库2026-08-04
标签
代码评审 正则表达式 工程实践 restTemplate gpt elasticsearch 技术债 cursor gson git diff template netty 状态机 软件工程 pytorch trae 事务 工具 异常重试 mcp javascript redis guice word jsonpath maven https llm spel dubbo python tomcat langchain jsonata 拦截器 spring json 聚会分账小程序 interceptor
归档
  • 十月 2026 1
  • 八月 2026 5
  • 七月 2026 11
  • 六月 2026 1
  • 五月 2026 2
  • 四月 2026 1
  • 二月 2026 3
  • 一月 2026 4
网站信息
文章数目 :
113
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2019 - 2026 By 郑行码迹
黑ICP备19000073号-1