项目总延期?需求乱插队?程序员如何做好项目管理

85d1092393523809844aa6128e28c06a.gif

ab7bd9963dd614bb9b9310260f465d90.gif

👉腾小云导读

程序员对工作量评估不准确?日常临时问题打乱排期?怎么让大家对需求的理解一致?如何既保证开发效率又保证质量?项目管理是「把事情做对」的重要能力之一。知识型工作者包括程序员,在工作中都不知不觉中扮演着「非职业项目经理」的角色。具备项目管理能力,对程序员职业发展、个人生活都有重大价值。本文详细分析程序员如何进行进度管理、质量管理和风险管理。

👉看目录

1 为什么开发者需要懂项目管理

    1.1 项目管理是“通过别人做成事情”的能力

    1.2 项目管理能输出个人影响力

    1.3 项目管理对个人生活也有价值

2 开发者在项目管理中会遇到哪些问题

    2.1 开发者的痛点

    2.2 怎么衡量项目管理的“好/坏”?

    2.3 开发者需要哪些能力

3 开发者怎么做好项目管理

    3.1 如何做好进度管理

    3.2 如何做好质量管理

    3.3 如何做好风险管理

4 总结

本文由腾讯MoonWebTeam团队的赖文辉、蔡卓伦、刘冬、陈长吉协作完成

‍ ‍

01

 为什么开发者需要懂项目管理

“动机”有时比“行动”更重要。了解一个事物的价值,能让事情做的更好。学习项目管理能带来什么好处呢?《项目管理精华》一书将项目管理视为「21 世纪独有的工作」,作者认为每一名知识型工作者都在工作中不知不觉中扮演着「非职业项目经理」的角色。开发者其实就是典型的知识型工作者。总体来说项目管理对开发者的职业发展和个人生活均有着很大的价值。

   1.1 项目管理是「通过别人做成事情」的能力

古往今来,如何驱动一个人做成一件事情,一直都是一个人稀缺的能力。

汉高祖刘邦有一句经典名言:“夫运筹策帷帐之中,决胜于千里之外,吾不如子房(张良)。镇国家,抚百姓,给馈饟,不绝粮道,吾不如萧何。连百万之军,战必胜,攻必取,吾不如韩信。此三者,皆人杰也,吾能用之,此吾所以取天下也。”正是刘邦具备协调张良、萧何、韩信三人协同工作的能力,才使得其能夺取天下,建立大汉王朝。

反观刘邦的对手项羽,当初凭着个人英雄主义,势力一度增加。但势力增大、地盘扩大后,面对纷繁复杂的战争形势,他没能协调好手下的将领,没做到知人善用。最终落得“至今思项羽,不肯过江东”的下场。

856958b3f93246d8e6b3a0469af0aa69.png

而项目管理正是使他人协同做成一件事情,达成目标的能力。试想一下,拥有这样能力的人,在哪个团队会不受欢迎?而且这样的能力并不会随着年龄而降低,反而越老越吃香。

   1.2 项目管理能输出个人影响力

项目管理中很多做事情的方法都很符合「为人处事」之道,例如学会及时同步信息的能力。将各类信息及时且高效的以合理的渠道同步给对应的角色,就很容易成为别人眼中「靠谱的人」。

《微权力下的项目管理》一书讲到项目经理往往需要有个人魅力去影响他人做事,进而达成目标。项目管理能提升与各类干系人打交道的能力,进而提升一个人在组织内的个人影响力。

3e219eae87b6e26475f4f42d512dd95f.jpeg

   1.3 项目管理对个人生活也有价值

其实生活中很多事情都符合宽泛的项目的定义。举个例子,房屋装修就是非常典型的项目:

装修工期长,涉及各种材料购置。一次性购置材料会阻碍工人干活,分批购置,又怕丢三落四忙不开;等师傅进场再买,又担心延误工期。除此之外,装修还需要与各类工种打交道,要合理安排各工种工作排序、工期管理。在装修中,能不能少花点钱,就看一个人“成本管理“做得怎么样;能不能快点住进新房子取决于一个人的“进度管理”;而能不能住的安心,就要看“质量管理”有没有做好。

生活中处处是项目,掌握项目管理的能力,对于个人生活大有裨益。

02

 开发者在项目管理中有会遇到哪些问题

说了这么多好处,大家一定很关心开发者在工作中怎样做好项目管理。在讲怎样做好之前,我们先探讨一下在项目管理中有什么痛点,再分析下在开发项目中哪些部分涉及项目管理以及如何衡量项目管理成功与否,最终目的是提炼出开发者需要的项目管理能力。

   2.1 开发者的痛点

作者在写文章之前调研了身边部分开发者同事在项目管理上的痛点,总结起来主要包括以下几类问题:

  •   工作量评估问题:工作量评估不准确。

  • 进度问题:日常杂事或者临时问题打乱排期。

  • 外部依赖问题:设计/后台等外部资源延期/需求变更,怎么推动解决?

  • 沟通问题:如何让大家对需求的理解保持一致?

  • 效率和质量平衡问题:怎么既保证开发效率又保证质量?

  • ...


   2.2 怎么衡量项目管理的好与坏

也许大家都做过项目管理,但是怎样知道做的好不好?为了回答这个问题,作者咨询了几位做项目经理的同事,他们讲述了很多要素。综合来看,以下三个要素是都有提到的:进度、质量以及成本。这三要素最终会影响到项目的目标。

ccc5f362ed814a4d06d7d5a6739dd0d4.png

  • 进度是否符合预期?

这个很容易理解和衡量。你是不是按时完成了项目中每个里程碑阶段的任务?你是不是按照预期的时间交付了项目中所规划的功能点?延期往往也是项目中最容易出现的风险。

  • 质量是否达标?

项目的质量是最为重要的要素。直接关系到各个利益相关者,直接影响项目目标的达成。作为开发工程师,质量是否达标也关系到个人及团队的技术口碑。

  • 成本是否

    可控?

你是否设法在预算范围内交付某个项目?这个预算究竟是高还是低?和平均线偏差多少?对于开发人员而言,可以关注投入的机器资源及人力成本是否合理。

   2.3 开发者需要哪些能力

在大家关注的边界里,基于衡量好坏的标准并以解决实际痛点为目标,可以提炼出我们需要的能力模型:进度管理、质量管理、风险管理。由于成本管理不是痛点,所以此处不提。下文我们展开讲述。

fba5a311247a72877970e43ff5f0ee4f.png


03

 开发者怎样做好项目管理

以下将从进度管理、质量管理、风险管理三项展开阐述如何做好项目管理。

   3.1 如何做好进度管理

如何合理地利用资源、按时完成项目是做好项目管理最基本的要求。大多数失败的项目是由于不合理的进度规划导致的。所以做好进度管理是做好项目管理的关键。接下来将详细地介绍进度管理基本的概念和内容,以及做好项目管理的基本流程和思路。

剖析在做进度管理中的重难点,主要从评估工作量、依赖管理、意外事项的处理三个方面进行分析。下面我们展开介绍。

  3.1.1 如何做好工作量的评估

做好工作量评估是做好进度管理最关键的一步,合理地对需求进行分析和拆分,明确各个阶段具体的事项,再根据日常的工作经验,对各事项所花费的时间加以估算,才能将整个大的需求的工作量评估得更加准确。

  • 需求详细方案设计

做好工作量评估的第一步,是做好详细需求方案的设计。一份完整的需求方案设计包括:概要设计、详细设计、监控、容灾等内容。前期有详细的方案设计,才能对项目整体上有更好的把控,同时也有助于任务拆解等工作。

在做完需求详细设计方案后,再通过有开发经验的工作人员评审。一般经验丰富的开发人员能够通过设计方案发现背后的风险,能够及时将架构设计的不合理、兼容性未考虑等问题提前暴露出来,同时也能更加明确工作量。理论上来说,在完成需求方案评审后,后续的改动很少,整体的工作时长更加可控。

这里需要重点关注的是,如果开发周期大于一个月,建议分成多个需求迭代,以降低迭代周期,小步快跑。

  • 合理拆解,明确职责

在完成需求方案详细设计后,对任务进行合理拆解。怎样拆解才是合理的?首先我们详细介绍下4个拆解的原则。

2218d0f51071eaead2fc99216fc9061a.png

原则

含义

两天原则

拆解之后的单个任务不能太长。太长的话,就会存在工作量评估不准确、整体项目难以把控的问题。同时也不利于工作的合理分配,不能更好地利用人力资源。如果时间太短,就会导致工作交付的频率过快,开发者的工作之间也会存在着一定的耦合。拆解的粒度太小,会增加一定的沟通成本,得不偿失。

最好工作拆解的粒度为一至两天。

成果作为导向原则

任务拆解应该以可交互的结果作为导向,并且一定要有输出。这个输出应该是完整的,不然这个拆解就拆解得不够透彻,或者说不算一个任务。

责任到人原则

拆解之后的任务项,有且只能有一个负责人。即使许多人都可能在其上工作,也只能由一个人负责,其他人只能是参与者。

任务分层原则

任务拆解的过程也是一个解耦的过程,避免多个任务之间有耦合。拆解的过程应该是自上向下的,从一个大的任务,按照其特性进行任务拆解,不断地拆解成子任务,直到拆解到一至两天的工作量,并且是一个可交付的工作项。

下面我们详细了解下如何进行任务拆解。以正常迭代一个 h5 项目的功能为例,一共有四个大的功能模块,三个开发人员。那么我们需要:

事项

解析

自顶向下,逐层拆解

通过 WBS 的工具,对项目进行拆解。为保证任务拆解之后的完整性,应将整体的项目自上向下,逐层拆解。这有利于排查项目开发的各个阶段是否有遗漏。按照项目的研发流程进行拆解任务,再将各个任务进一步细分到所需时间为两天。

落实负责人,确认拆解是否合理

将每个任务落实到该任务负责人,负责人能够从自己的角度出发,进一步思考该任务的拆解是否合理,同时也能够明确自己所负责的任务需要和谁对接,更能够了解联调的成本。

总体复盘,确认有无遗漏任务

最后大家根据开发经验,梳理整体流程有无遗漏,如单元测试,埋点开发,联调,代码的 mr 等。

46570f533134c132317ee48bc57766c7.png

  • 估算工作,知晓预期

在对任务进行拆解后,下一步是对任务进行工作量评估。这个过程在项目管理中,也是一个非常棘手的事情。工作量评估不准确,就会直接导致该任务项出现问题。评估的时间偏多,会存在着资源浪费的问题;评估的时间偏少,将直接造成当前任务延期完成,同时阻塞后面模块的开发,损失更大。

接下来介绍两种工作量估算方式,一种是自上而下的估算方式,一种是自下而上的估算方式。

估算模式

解析

自上而下

自上而下的估算方式是以项目总体为估算对象。这对于有类似项目经验的工程师来说较容易评估。方法是将工作结构从头部向尾部依次分配、传递工作量,直到到达WBS 的最底层。其特点是:

  • 项目初期信息不足,只能初步分解工作结构,很难将最基本的工作详细内容列出来。

  • 估算的精度较差。

  • 估算的工作量小,速度快。

自下而上

自下而上的估算方式是,先估算各个工作项的工作量,再自下而上的将各个工作量进行汇总,算出总的工作量。其特点是:

  • 估算的精度高。

  • 估算的成本较大。

  • 缺少子工作项之间的工作量估算。

  3.1.2 如何做好依赖管理

因为外部依赖而导致项目延期的情况在工作中屡见不鲜,常见的诸如:

  • 准备开始开发了,发现设计稿还未就绪。

  • 准备联调的时候,发现我们上下游的技术团队的接口还未就绪。

  • 可以联调的时候,因为上下游的链条很长,出现推诿甩锅。

...

4576d779dbec0b5f07d8fbc42bffe82b.png

以下是一些针对外部依赖问题的解决方法。

解决方法

解析

明确责任人和交付时间,避免模糊

这是第一步。当一个事情出现多个负责人的时候,责任的边界就会模糊,就容易互相推诿的情况,这就是责任分散效应。三个和尚没水喝的故事就是一个典型案例。

因此对于每个依赖项,我们需要明确其责任人,并沟通明确每个人对应依赖的交付时间,把责任人和交付时间提前确定清楚,可以减少很多争议和推诿。当项目涉及很多团队的时候,可以使用资源依赖列表,当遇到问题时,可以快速查找负责人及其应当交付的时间点。

例子:云游 XX 活动的资源依赖列表

2dfb8173ca7e6e4043b161c511dd0404.png

形成信息对齐机制

确定了接口负责人后,如果不及时进行信息对齐,也会出现跑偏的情况。

反面案例:

A 项目依赖外部的 sdk的 某个升级版。在最初的对齐方案中,sdk 方承诺不会修改原有的接口调用方式。而实际联调中才发现不仅接口调用方式发生了巨大变化,还有部分被依赖的接口直接在新版本中移除,导致A方需要花费大量时间进行兼容。如果提前对齐而不是等到联调阶段才介入,就能规避上述问题。

关于信息对齐方式,有以下几种:

  • 不定期的非正式沟通

在里程碑等关键节点通过面对面、电话、企业微信等方式进行信息对齐。对齐内容包括:开发进度、依赖事项进展、技术方案变更等,对于一些关键性的结论,最好有文字落地以用于回溯。

  • 定期的例会机制

如定期晨会机制。在会议上对齐项目进度,可以提前发现可能存在的风险。记录会议纪要并通过群消息/文档/邮件的形式通知到项目的相关干系人。

  • 项目 owner 机制

应当确定一个项目 owner,对项目整体负责,把关整体节奏,负责组织会议。把相关信息进行整合,并同步给项目的相关干系人。

求同存异,达成共识‍‍

作为项目组的成员,大家的核心目标应是一致的,就是让这个项目能够如期保质上线。但在实际执行中,各个依赖方因为各自的问题,会出现一些偏差。只要能核心目标是一致的,相关的问题就可以通过沟通解决。

案例:春节活动需求变更 PK

作为最重要的传统节日,很多业务团队都会针对春节这个时间节点运营、上线活动,作者曾经遇到过在临近提测时,活动仍在被提需要大量变更的情况(运营人员要叠加功能,设计人员则提出更多特效的要求),开发人员如果接受了大量变更,不仅意味着不断加班,更可怕的是会由此带来很大的质量风险,一旦出现严重问题,会得不偿失。

最后只能是开发人员联合测试人员,跟运营和设计进行了沟通,研发侧认可变更对于提升活动效果有作用,同时也对变更可能带来的延期,以及影响线上质量等风险进行了全面分析评估。双方基于共同的目标做出了协商和让步(既保证活动效果,同时也保证活动正常安全上线)。

情感账户,软性推动

当项目依赖某个外部团队的人员支持,而这个事情并不是对方当前工作范围内的,并不是对方第一优先级的工作,该怎么办?

大部分情况,有些开发者会在沟通未果的情况下,通过上升到leader去推动事情落地,这是一种解决方案。更优的方案是建立相关依赖方的“情感账户”,借助“情感账户”去软性推动。

大家都知道银行账户就是把钱存进去,作为储蓄,以备不时之需。“情感账户”里储蓄的是人际关系中不可或缺的信任。经营好「情感账户」,也是经营好一个人与合作伙伴的信任关系。

在日常工作中多吃亏,让自己的「情感账户」适当“存储”。例如自己曾经抽出休息时间帮助合作伙伴解决问题,当需要对方协助的时候,相信也能得到积极的响应,这也是常说的“吃亏是福"。

  3.1.3 如何处理意外事项

排期后进入开发,还是会存在各种事情影响项目的进展。例如:插入一些高优的需求,或者说发生一些不可控的因素如疫情等等导致人力不足,从而影响项目的进展。下面我们详细介绍几种情况及其处理方式。

1. 需求的变更

在设计详细需求方案中,如果考虑得不够周全,开发过程中就会产生需求变更。

处理方式:

  • ‍判断需求变更的大小,如果是样式修改等简单变更,半小时能解决的小问题,可以协助快速调整;如果工作量在 0.5 天以上,并且需要依赖第三方接口,则需要将整体的需求重新评估,重新梳理排期,并同步给干系人。 

  • 先保证核心的业务流程不变,高收益的工作量优先处理,保证正常的上线时间,后续有余力再对其它功能点进行迭代优化。‍

2. 高优需求插入

在业务的开发过程中,可能存在被高优需求插入的情况,如果被高优需求插入,直接带来的影响是延后当前的工作完成时间。

处理方式:

评估高优需求的工作量,以及影响当前项目的程度。

如果在 0.5 天以内,没有被依赖的下游时,再评估对排期影响不大的情况下是否可以快速响应。并第一时间反馈风险,确保各干系人都有一个心理预期;如果大于 0.5 天的需求,则建议反馈给项目干系人来安排其他人来解决。

3. 不可抗力的因素

不可抗力在项目的开发过程中也是不可避免的。如开发人员有急事需要请假,又或者因为疫情导致办公效率低下,从而影响项目的进展。

处理方式:

  • 如果是一些身体原因导致办公效率低下。在不影响整体项目交付的情况下,适当的延长完成项目的时间;若影响到整体项目交付的时间,则应该暴露该风险,进行项目计划调整。

  • 如果完全不能投入开发,应该尽早的将此事向上级报备,由上级进行统一的人力调整,交由其他人投入开发。‍

4. 内部依赖延后

内部依赖延后影响到项目的进展也是项目开发中经常发生的事情。最好的做法是依赖前置。如果在规定的时间,没办法进行交付产物,则会给项目带来延期风险。

处理方式:

  • 将自身的业务流程做好,依赖部分通过模拟的方式解决。

  • 将联调的时间后移,先开发其他的功能模块。

  • 如果已经是最后联调阶段,则需要再次调整交付的时间,同时将该风险同步给相关的干系人。

  3.2 如何做好质量管理

质量管理的价值就是保证项目质量以达成项目目标,降低因为产品质量问题带来的损失。

  3.2.1 通过流程规范提高质量

研发流程是一个精细的过程。需要通过建立执行规范来实现工作标准化和程序化,确保产出质量稳定和高团队工作效率,降低人为因素导致的质量问题。

1. 制定研发流程规范

制定流程有时会让人反感,觉得降低了研发效率。但规范的流程可以大大提升项目的质量,好的流程都是在实践中不断总结出来的,是项目的最佳实践。

当然流程也不是一成不变的,它需要根据我们的具体情况不断调整优化,才能适应当下的需要。另外应当尽量将流程变成 CICD 的约束,通过系统来约束、控制,减少其对人的依赖。

具体到研发团队介入一般可分为需求评审、方案设计、需求开发、测试验收、发布上线、项目复盘六个步骤。这里提供之前所在前端研发团队的研发流程图用以参考:

91193ee8f33c2d4f8951eac3c44db802.png

2. 严格执行Code Review

code review 的好处不仅仅是能够大大提高代码质量,减少代码 bug,还能从心理上(自己写的代码要给别人审核)让自己更认真严谨些。另外 CR 交流也非常有利于提升团队的工程素养,可以针对性补强开发者的知识盲区,纠正不良习惯。

3. 制定发布checklist

每次发版上线都应当是如履薄冰。为了保证上线顺利,发布完善的 checklist可大大规避低级错误,减少不必要的事故。

发布 checklist 一般可以分为服务、机器、流程三部分,通过日常工作中累计容易出错的地方,将其整理收集起来,持续完善。

这里提供一份参考案例:

阶段

事项

是否通过

提测前

根据前期编写的测试用例进行整体自测


根据埋点文档验证埋点,确保埋点中的事件和维度不多报、不漏报、不错报、不重复报、报的时机正确


根据设计稿叠图并截图(2+测试机),确保无视觉问题


确保分支的代码 CR 通过


确保代码已发布到测试环境,并确认页面能够正常访问


确保创建了提测单,提测单包含测试用例地址、测试范围、测试入口和二维码、终端环境、埋点文档地址


确保需求单状态扭转到增量测试中


bug修复后

涉及到功能、逻辑、埋点、样式和交互变更:重新走本次需求逻辑部分的自测、涉及样式的叠图、CR 和发布测试环境流程,确保全流程无误


确保bug单状态扭转到已处理,并通知测试同学验证,保证在 1D 之内扭转到已关闭


确保需求单状态扭转到待发布


发布前

确保产品体验、设计走查、测试都通过


确保所有代码(功能+bug 修复)都已经通过 CR,合入 master


确保正式环境配置文件中的配置都是正式环境的配置


如图片有新增和修改,确保图片已经进行过压缩


确认接口监控的数据正常,业务错误码屏蔽正常,不误报


上线前和产品运营确认线上配置是否正确,涉及运营资源是否到位


和后台、终端确认好发布顺序,并确保按照约定顺序发布


确保在群里进行发布周知,提交的发布审批通过才能进行发布


发布后

待 CDN 生效后,用非公司 wifi 访问页面,确保页面正常,同时确保所有的资源都是正式的 CDN 地址


关注告警群消息,关注告警监控平台流量监控是否有较大波动,JS 报错、接口错误率是否有上涨,关注是否有告警


发布出现问题,及时在群里周知并回滚,通知leader,并寻求团队成员协助定位排查


发布外网后需要留守至少 30 分钟


确保需求单状态扭转到已交付和已接受


很多时候不起眼的清单发挥着非常重要的作用。例如飞机起飞前的检查清单、手术前后的检查清单,都守护了无数的生命。更多清单相关内容推荐一本书叫作《清单革命》。

  3.2.2 管理变更影响

变更是程序异常的主要原因。在需求设计阶段提前对变更进行评估、规划,可以确保在对程序最小负面影响的情况下实施这些变更。同时在团队内进行有效的协商和沟通,可以确保所有的变更都具有可追溯性。下面分别介绍下如何通过详细设计评审技术方案和通过架构设计上隔离变更。

  • 通过详细设计评审技术方案

编写技术文档对部分工程师来说是反感的事情,但好的项目质量一定是设计出来的,而不是测试出来的。

所以在正式编码前,详细思考、设计整体方案并编写成技术文档在组内评审,是规避质量风险非常好用的方法,也是非常好的开发习惯。它可大大减少编码阶段的质量风险。

以之前笔者团队为例,我们还整理了团队详细文档模板,把大家做详细设计需要考虑的点都囊括了进去,避免大家遗漏。如性能设计、监控日志设计、安全风险设计、用例设计、容灾设计等,既是模板也是详细设计的 checkList。

  • 通过架构设计上隔离变更

许多开发者在职业生涯中最害怕的莫过于修改老代码,有些老代码读起来云山雾罩,完全搞不懂业务逻辑和代码关系、也不明白这块代码为什么这么写、那块代码是什么意思。使得大家战战兢兢、寸步难行。

与之相反的「好代码」一般都遵循软件工程概念中的高内聚低耦合原则,模块之间相互隔离。常见的隔离方式如下:

隔离方式

解析

分层架构

分层架构的一个重要原则是每层只能与其下方的层发生依赖。由于各层间松散的耦合关系,使得开发者可以专注于本层的设计,而不必关心其他层的设计或本次变更会影响到其它层,只需保持本层的接口稳定。大型系统中推荐使用 DDD (领域驱动设计),将系统拆分成展现层、应用层、领域层、基础设施层。

组件化设计

组件化可以比喻为积木。其工作方式信奉独立、完整、自由组合。目标就是尽可能把设计与开发中的元素独立化,使它具备完整的局部功能,再通过自由组合来构成整个产品。

特性开关

目前最为常用的隔离方式还是特性开关。这种方式隔离较为彻底,如果某种场景不需要该特性,直接关闭开关即可,缺点在于代码中可能会存在许多开关逻辑。

资源隔离

从物理上隔离变更导致的影响,通常使将其以服务、静态资源、网络、内存、进程等方式进行隔离,通过使变更带来的影响在可控范围内,隔离其对其他资源的影响。

  3.2.3 功能回归的能力
功能回归能力是指:通过自动化的回归测试,寻找原始设计中没有预料到的错误。这里需要考虑到2件事:
第一,有效的测试是设计出来的。

测试左移的意思就是说尽可能地在前期规避质量问题,以提高效率。大家都知道越早发现问题,修复 bug 的成本越低。例如在设计阶段发现 bug 只需要改写流程图,编码阶段只需要修改代码,测试阶段需要重新走 git 合并 mr 流程,要是到了上线后才发现问题将直接影响是线上用户,那么其修复成本和前面的这些相比可能会没有上限。

  • 设计阶段:做详尽的需求分析和测试用例设计,好尽早发现不合理的地方,尽早暴露问题,以便团队能更早的在需求评审阶段识别并修复缺陷。

  • 编码阶段:研发可以依照测试用例自行编写单元测试、接口测试来验证核心逻辑是否正确。尽可能确保所有代码被测试到,所有的业务流程都能被测试用例覆盖到。

第二, 接入自动化测试平台。

DevOps 工具是目前最适合做测试的集成管理平台,从需求提交到产品迭代,从产品设计到代码构建、测试管理、持续集成,整个流程贯穿软件行业生命周期。在平台的基础上将各环节的数据收集、沉淀成量化指标。如在代码构建阶段的流水线集成代码规范检测、代码质量检测、单元测试、安全性校验等工具,能够产出代码重复率、单测覆盖率、安全问题数、页面性能等有效衡量项目代码质量的数据指标。

  3.2.4 发现问题和定位问题的能力
研发阶段要尽量保证质量,不出现 BUG。上线后需要确保一旦出现问题,能快速通过告警发现,并快速定位找到原因,从而最大限度降低对现网的影响。下面我们将介绍如何利用监控告警发现问题、规范日志快速定位问题和利用智能化监控平台。
第一,利用监控告警发现问题。

在需要监控告警前,开发者需要先定义需要关注哪些问题?笔者主要涉及前端工作,这里提下前端团队一般需要关注的问题:

类型

指标

案例

脚本问题

页面js错误、接口错误、页面白屏、资源加载错误 等

页面 JS 错误 xx is not defined

性能问题

首屏耗时、首屏可见耗时、接口平均耗时、接口成功率 等

检测到近 5 分钟领取礼包接口接口成功率下降触发告警

业务问题

流量下跌、核心链路转化率下跌、特定业务错误上升

云游戏用户排队耗时提高导致用户流失,需要额外开启设备

然后再跟进对应指标配置所对应的告警策略。

第二,规范日志快速定位问题。

线上项目的程序出问题,程序本身不会说话只会安安静静的挂机。但导致这一现象出现一般就是业务代码写得有问题。

如何让程序能够「说话」,并准确的说出有价值的信息,这就是日志的核心价值。日志要解决的问题是:程序是不是按预期执行?用户在系统上干了什么?程序有没有执行错误?问题是谁造成的?合理日志的要素如下:

合理日志的要素

解析

日志时间

日志作为事件的表述,事件发生的时间是一定要具备的。

日志级别

应该根据日志的重要性或严重程度划分等级,常用的日志级别有:DEBUG、INFO、WARN、ERROR,只有合理定义日志级别,才能避免日志混乱。日志级别也是日志告警的关键条件。

业务标识

用来区分日志属于哪块业务,因为日志都是跟业务相关联的,通过该部分内容便于按业务进行日志归类聚合。

日志内容

根据不同的日志等级,在日志内容上会有不同的侧重点,尽量描述清楚。

异常堆栈

堆栈异常信息有助于程序异常的排查定位,但这部分信息的记录输出,对系统性能有一定的影响,应该酌情考虑,如果记录异常信息足够定位异常,就不要打印整个堆栈。一般是 ERROR 打印异常堆栈,WARN 不打印,还有就是通过日志框架打印,避免用 printStackTrace 方法打印。

追踪 ID

对于单次用户行为需要一个唯一的ID 贯穿全链路日志,方便对用户行为进行追踪,错误信息也能够查询到用户行为的上下文,方便定位日志。

日志记录的时机如下:

日志记录的时机

解析

程序流程

记录程序的流转分支,在关键代码逻辑的执行前后进行相应的日志输出,有助于代码调试。但要避免不必要的日志输出,比如一般只在循环体前后记录日志,而不在循环体内重复记录,过多的日志反而会影响阅读。

远程调用

远程调用也属于程序流程的一部分,但第三方远程调用的日志信息级别,应该与一般的调试日志区别对待,因为涉及到外部系统的交互,在出入口处记录请求响应的信息,这相当重要。

系统初始化

系统初始化需要依赖一些关键配置参数,这些参数决定系统的启动状态,应该把这些系统初始化信息记录起来。

核心业务操作

系统用户进行核心业务操作的行为,也应该进行记录,便于进行操作审计。

可预期的异常

这类异常应该有效记录起来,通过警告方式反馈给相关人员加以关注,避免频繁发生,最终演化为不可控的错误。

预期外的错误

这类异常发生时,要有详尽记录,并通知相关人员介入处理,并预留时间作出响应,因为这种错误已经影响系统的正常使用。

第三,智能化监控平台。

每次排查告警问题对程序员而言都是体力活,都想能够轻松,快速的查看日志,更进一步还有监控平台能够直接告诉问题是什么、怎么解决。近年来就产生出一些智能数据分析平台,利用大数据技术及机器学习技术对 IT 基础架构及应用系统所产生的海量日志进行实时分析。

能实现大量的日志模式发现并进行聚类,将大量的日志原文转化为少量的日志模式,并反应相应模式在日志原文中的占比,这大大减少了人工筛选时间,帮助运维人员更快的定位到故障原因。

如果更进一步,那就是在发生告警的时候其可以提供一张监控大盘、影响范围、触发异常用户的全链路日志。信息密度的提高能够协助我们快速感知服务的整体状况、评估风险等级,全链路日志也能辅助开发者更快捷的定位问题,提高告警信息触达的效率和质量。

  3.3 如何做好风险管理

如果用一句话来形容风险,应该是这样的:

风险如鬼魅在深渊潜藏,它可能出现在项目中任何一个环节,在未来的某个时刻出现,对开发者负责的项目产生破坏性的影响。

下面我们分别聊一聊风险管理管的是什么,以及在实际项目中我们要注意哪些。

  3.3.1 风险管理管的是啥
  • 风险的本质

风险的本质是一种不确定性带来的损失。项目风险实质上是项目的三要素:进度、成本、质量中,一个或多个受到了影响,最终影响了整体项目目标的达成。

4d5232ef197a97b265a0aab0fddfb780.png

  • 风险的特征和构成要素

风险具备以下特征:

日志记录的时机

解析

客观性

风险是客观存在的,不以人的意志为转移,项目中存在风险是常态

不确定性

风险是否造成损失,以及损失的程度,是不确定的

可观测

单一风险存在不确定性,但是总体来讲是有规律的,有办法预测的

可变性

风险会随着应对措施的进行而消失,不会一层不变

而风险的构成则包含三要素:风险因素、风险事故、损失。

340196ec72a41f1ac4e34e7f2ade45d3.png

风险因素会引发风险事故,风险事故会进一步带来损失。

例如:小 A 是某个紧急项目的研发负责人之一,项目既定的时间是 2022 年 1 月 1 日上线,此时正值解除疫情防控,身边越来越多的同事感染,小A所在项目组的研发成员也陆续感染,最后项目不得不延期。

可以想想:对于小 A 所在的项目组,风险因素,风险事故,损失是什么?

  • 风险管理怎么做

风险管理从流程上主要做四件事:风险识别、评估、应对和沟通。下面展开介绍。

风险识别:

核心是找出可能产生风险的“风险因素”,识别分析这些“风险因素”究竟有哪些特征,可能会影响项目的哪些方面。例如上述小 A 的例子,风险因素就是疫情的放开带来的感染风险,其特征就是会导致成员患病无法工作,影响就是项目的延期。

风险识别方法

解析

头脑风暴法

一些人聚集起来,进行头脑风暴,通过彼此的沟通交流,想法、建议、意见进行碰撞,一起发现问题。

专家调查法

由相关领域的专家组成风险小组,通过征求专家的意见,然后开发团队综合汇总整理,再反馈给专家,再次征求专家的意见,反复进行 4~5 轮,最终专家们的意见会趋于一致,达成共识。

情景分析法

识别关键影响因素,基于该因素可能发生的场景,进行场景内容的分析,进而发现风险可能造成的后果。

核对表法

将项目范围、目标、成本、质量要求、进度、类似项目成功或失败的原因等列在一张表上,进行一一核对。这种方法可以识别到进度风险、成本风险、质量风险等。

流程图法

需要建立项目的全链路流程图以及各子域流程图,这些流程图可以涵盖项目的整体流程以及分支细节。通过将实际情况与流程图一一对比,便可识别风险。

上述小 A 的例子属于进度风险,通过「核对表法」是比较容易识别到疫情防控开放这个风险因素的。

风险评估:

对已识别出来的风险因素,进行系统分析和研究,评估其带来风险的概率,造成损失的范围和程度。

风险评估一般有“定性分析”和“定量分析”两种:

  • 定性分析:根据风险的重要程度和发生概率等指标对风险因素进行排序。

  • 定量分析:将体现风险特征的指标量化,以强化对风险因素的认知。

定量分析包括“蒙特卡洛法”、“敏感分析法”、“决策树”、“影响图”等,都是非常专业的分析方法。实际上,作为非专业项目经理的技术人员,一般通过定性分析就可以对风险进行评估了。

如上述小A的例子如果不采取措施,疫情防控的解除带来的延期风险会随着时间推移不断接近严重度100%。

风险应对:

在评估完风险的概率和损失范围之后,就可以为风险应对提供参考依据了。

风险应对主要以下几种方法:

方法

说明

例子

规避风险

消除风险因素进而规避风险的产生

1、  改变项目目标包含的范围

2、  投入更多的成本(人力、资金)

转移风险

将风险转移给第三方

购买保险

减轻风险

降低风险发生的概率或受影响程度

1、  将鸡蛋放在不同篮子

2、  兜底策略

接受风险

对即将发生的风险,不采取措施

/

如上述小A的例子,从“规避风险”的角度,我们可以投入更多的备份人力,或者调整项目目标(如调整上线时间)。从减轻风险的角度,我们可以实施分散办公(居家办公),减少项目组成员被“一锅端”的风险。从接受风险的角度,如果项目因为疫情带来的延期是可以接受的,也可以不采纳任何措施。

风险沟通:

这也是最重要的,当风险出现时,及时的跟项目干系人做好沟通,以调整项目干系人的预期。

  3.3.2 实际项目我们要关注哪些风险

以上是项目管理中,针对风险管理的基本手段。作为开发人员,大家日常参与的项目,又有哪些会遇到的风险呢?如何更好的应对呢?接下来我们介绍完几个最长出现的风险后,分别为各位分享性能风险、安全风险和容灾性风险的应对措施。

1、最常出现的风险

从风险的本质出发,最常遇到的风险:

风险

解析

进度方面的风险

因为外部依赖、需求变更或者高优需求插入,带来项目延期风险。这里在进度管理章节,已经重点介绍了如何管理依赖,如何跟产品人员沟通需求变更,以及如何管理好自身的排期。

质量方面的风险

主要是在项目研发环节中会产生质量问题,如自测不充分导致提测期间 bug 数过多,在质量管理一节中也介绍了对应的解决方案。

成本方面的风险

降本增效是最近两年的主题,大家对成本的关注越来越多。成本也是一项重要风险,特别是大项目,但因为不是开发通点,本文不展开讨论。

除了“进度管理”、“质量管理”中提到的解决方法。“进度风险”、“质量风险”,通过前文提到“风险识别”=>"风险评估"=>"风险规避"=>"风险沟通"这些通用的方法论也是可以解决的。

除了“进度风险”和“质量风险”,研发人员,还有一些特定的风险因素需要关注。

2. 性能风险

性能是非常容易被忽视的风险。研发人员可能忙碌于功能的实现,保障项目正常上线,往往非常容易忽视项目中可能存在的性能问题。

从风险发现的角度,开发者可以通过「性能检查清单」,梳理出可能带来性能风险的因素,并在项目开发过程中规避化解。

从风险评估的角度出发,项目性能低下可能会直接带来项目转化率的下跌。例如一个支付页面如果没有做好弱网支持,在弱网打开慢,就会带来的支付转化率不高的问题,进而影响收入。

从风险应对的角度来说,针对核心页面(例如上述提到的支付页面),需要采取措施规避风险。非核心页面(例如一个不重要的介绍页),可以采取一定措施减轻风险或者是接受风险(从成本角度出发,针对性能做优化可能需要花费更多时间)。

3. 安全风险

安全是互联网永恒的话题。在当下互联网环境中,安全风险可以分为“合规化”带来的法务风险,以及系统实现漏洞带来的风险。

  • 合规化风险

是因为不符合相关的法律法规导致的政策风险,如 app 因为实现疏忽使某些场景未满足某个保法。

从风险识别的角度出发,可以通过“专家调查法”来发现,通过请求公司的法务,对相关项目规划进行法务风险评估,并根据法务人员提供的建议进行调整。

  • 系统实现漏洞风险

这则是因为技术实现的漏洞导致的风险。例如:活动没有做好防刷,导致奖品被刷;页面没有做好脚本过滤被 xss 注入攻击。

以风险识别的角度来说,可以采用「流程法」,对每个环节可能带来的安全风险进行梳理,如:

  • 在“开发测试阶段”,确认工程是否在流水线中接入“代码扫描工具”;

  • 在“上线阶段”,确认服务是否接入”安全扫描“工具进行扫描;

  • 在“运营配置阶段”,确认相关运营系统的配置是否经过审查测试

可以采用「核对表法」,整理常见的安全措施,并在项目研发阶段对照核对:

  • 涉及数据查询修改,必须有登录态校验。

  • 涉及数据修改,必须要有 token 校验,避免 CSRF 攻击。

  • 所有输入都需要白名单校验,包括从 URL 获取数据、从 cookie 获取数据、从表单获取数据等,避免 SQL 注入、XSS 攻击等。

  • 涉及福利相关,必须有黑产打击策略。

  • 是否有严格的用户权限校验。

  • 涉及外部对接时,必须包含加密或验签环节。

  • 还存在哪些安全隐患?

  • 是否考虑防安全扫描。

针对一些重点项目(比如量级庞大的春节活动),也可以采用「专家调查法」,提交相关的技术方案给到业务安全的人员进行审查,以发现系统设计存在的潜在安全漏洞。

从风险评估的角度出发,与安全相关的风险往往是无法忽视的,是第一优先级需要解决的,因此风险应对手段,往往是需要采取对应措施来规避风险。

4. 容灾性风险

缺失针对系统运行异常情况的处理,也是一种潜在风险。从风险识别的角度,同样也可以使用「核对表法」来核对潜在的异常情况是否都有对应的处理措施:

服务可用性相关的核对表:

  • 系统即将面临的最大流量是多少?

  • 需要提前多久跟运维沟通扩容?

  • 系统各个环节能承受的流量压力,哪些环节需要扩容?

  • 如果流量陡增、服务过载时,系统有没有做兜底降级方案?

  • 有没有做多地部署,规避单点风险?

  • ..

    .

逻辑实现相关的核对表:

  • 数据结构是否变更,如果变更是否考虑老数据兼容?

  • 边界条件是否。

  • 运行环境可能存在的兼容性问题?

    (前端经常遇到)

  • ....

从风险评估的角度出发,需要根据服务/页面的重要性,采取对应的风险应对措施:

一些核心场景(如支付场景),相关服务/页面一旦出现问题就是直接的经济损失,因此就需要采取措施规避风险。

一些对用户感知不是很明显的场景,则可以采纳兜底降级的方案。例如信息流场景下,在面对突增流量冲击时,推荐系统所能承受的流量压力要远远低于接入服务的承受范围,这个时候,接入服务就需要保护推荐服务,通过返回兜底数据,减少流量对推荐系统冲击。

04

 总结

为什么开发也要懂项目管理?开发如何做好项目管理?相信各位读者已有一定感知。本文首先介绍了项目管理对大家在职业和生活中的价值,接着以项目管理中的痛点为切入点,整体介绍了项目管理中需要掌握的三大能力——进度管理、质量管理、风险管理。

其中进度管理包含工作量评估、依赖管理、处理意外事项等;质量管理包含流程规范建设、管理变更影响、提升功能回归能力、提升问题发现和定位效率等;风险管理包含风险管理的基础方法论,以及实际项目中容易忽视的性能风险、安全风险、容灾性风险等。

最后期望本文能帮助开发者提升项目管理技能,提升「把事做成」的能力,成为合作伙伴眼中「靠谱」的人。以上是本次分享的全部内容,欢迎各位开发者在评论区交流。如果你觉得内容有用, 欢迎分享、点赞、在看。感谢支持。

-End-

原创作者|赖文辉、蔡卓伦、刘冬、陈长吉

技术责编|赖文辉、蔡卓伦、刘冬、陈长吉

ce8695f3bebba49d926a4c4bbe5b3ef6.png

ebe636f47443963882faa0a8c9a3f53c.png

9523e97df905f13380f3f4b7f9b035a5.png

0df2709a6612546ec6e3b7ec50e3ec79.png

aab5c7c66d1313671723389293c25ee7.png

「变化」对程序员而言是个极大的挑战,这是万年老话题了。客户需求在变,老板要求在变,产品经理的需求也在变。有程序员表示,当我抱怨变化带来的加倍工作量,也许还会遭到吐槽:“你程序不怎么样啊,不能顺应我的变化。”🤒 面对变化,你有怎样的经验和方法呢?你有什么评估工作量的妙计?当变动发生,日常杂事和临时问题出现打乱排期,你怎么解决?可以做些什么来减少「变动」?

欢迎在评论区聊一聊你的看法。在3月24日前将你的评论记录截图,发送给腾讯云开发者公众号后台,可领取腾讯云「开发者春季限定红包封面」一个,数量有限先到先得😄。我们还将选取点赞量最高的1位朋友,送出腾讯QQ公仔1个。3月25日中午12点开奖。快邀请你的开发者朋友们一起来参与吧!

最近微信改版啦

很多开发者朋友反馈收不到我们更新的文章

大家可以关注并点亮星标

不再错过小云的知识速递🥹

ac80630c0cf1f53325b132323e340bb4.gif

8026d647b44231e6408020e5b13a5a93.gif‍

‍

相关推荐

大模型的Agent Skill功能,在LLM HTTP底层交互流中是怎么承载的?

网络文章文本的 skill,昨天我实现了之后也就开始好奇起 Skills 的底层原理了——相比起各种花里胡哨的 agrnt 应用,我一直以来都很对大模型在纯粹的 HTTP 交互层面是如何交互的更感兴趣。Skill 的全部"魔法"都发生在 system prompt 的措辞和 SKILL.md 文件的编写质量上——本质上是一种 prompt engineering + 文件系统的组合。但是各种天花乱坠的 skills,是如何在底层的 HTTP 中,与大模型——这个只会嘴遁的工具交互的呢?

QcloudCommunity的博客 402

万字入门AI Infra:深入理解大模型中的数学与Infra优化

关注腾讯云开发者,一手技术干货提前解锁👇AI Infra科普、入门或者进阶 ~~ 不到 5 万字,带你融会贯通理解大模型的数学、算法、硬件到系统工程。任何问题欢迎沟通交流。可怕,我竟然有点认同这句话。当然大概率是因为姚顺宇太懂AI了,而我则是因为无知者无畏。不过仔细想想,大模型推理中的数学逻辑确实不复杂,很多原理只需要高中数学知识就能看懂。但是为什么像 vLLM 这种推理系统这么复杂呢?本文将拆解大模型中几个核心操作(RMSNorm、Softmax、Causal Mask、Sampling)背后的数学与

QcloudCommunity的博客 1160

平平无奇的源码,竟藏着Agent的核心秘密?

System Prompt 是剧本,Skill 是剧本的扩展包,Agent Loop 是演员按剧本行动。欢迎留言,我们将邀请作者针对性回复你的评论,我们将选取1则优质的评论,送出腾讯云定制文件袋套装。,让 Agent 能主动"巡逻",而不只是被动等待用户消息。OpenClaw 的 System Prompt 分层结构。的"行为底线",任何 Skill 或用户命令都无法覆盖它。精华 2:Skill 的"按需加载"避免 token 浪费。精华 1:System Prompt 是"分层乐高积木"

QcloudCommunity的博客 424

QQ音乐Harness Engineering实践

一个看似简单的需求,背后可能牵动服务调用链、配置、灰度、埋点、错误码、接口契约和历史兼容性。当 AI 开始快速生成大量代码,真正的瓶颈就不再是"写不出来",而是"看不完、想不清、管不住"。在对话式编码阶段,一种典型的工作模式逐渐流行:开发者把需求丢给 AI,扫一眼输出"看起来对"就直接采纳,不审 diff、不追问逻辑、不验证边界。以音乐商业化业务为例,一个需求可能从 TAPD 单开始,经过需求评审、技术方案、服务影响面分析、IDL 契约变更、业务代码实现、测试验证、CR、灰度上线,最后才进入稳定运行。

QcloudCommunity的博客 713

从Prompt、Context到Harness,工程的三次进化与终局之战

同时,强制要求散落各处的决策记录(Slack、邮件、文档)全部迁移至代码仓库,确保 Agent 的唯一信息来源是可信的、版本受控的仓库。更坑爹的是,研究表明,当上下文过长时,模型会出现"中间遗忘(Lost in the Middle)"现象:它对开头和结尾的内容记忆较好,对中间大段内容的关注度大幅下降。这篇文章,我想带你完整走一遍这三次进化的逻辑:它们分别解决了什么问题,它们之间是什么关系,它们的边界在哪里,以及:当三者融合,AI 工程师的终极形态究竟是什么?大语言模型的本质,就是这位金鱼助理。

QcloudCommunity的博客 714

让Skill自己训练自己:8阶段Loop、3层评测、5维AND门控,从此实现自进化

所以每一轮改动都是有据可查的,不是「感觉这里可以优化」,而是「Case 41 挂了,因为 agent 把离职问题路由到了邮箱分类,但正确答案在通讯录,所以我改 root_index.md 加个易混淆提示」。但让我最后决定把它记录下来的,不是这的个「吸收」过程,而是它真的在替我探索我不想费脑力触达的边界,这看起来更像是一个机器智能应该有的样子。不准跨层,每轮只改一层的东西。但我经过这 19 轮之后觉得,更准确的描述是互补——你在明处看着,AI 在暗处替你试错,你看不见的那一半就是 AI 能贡献的地方。

QcloudCommunity的博客 1122

只加两行代码,为什么要两天?一文深度理解业务系统的复杂性

关注腾讯云开发者,一手技术干货提前解锁👇业务系统复杂性一直是令开发者头痛的问题。复杂的不是增加一个需求需要耗费多少时间,而是在增加一个需求后带来的蝴蝶效应:其它功能会不会受到影响、要如何去找到这些影响,最终如何实现系统正常运行......功能之间隐秘增加的耦合、不可避免的代码腐化在导致业务复杂性增加。大家都在说的软件开发提效到底在提什么?程序员日常工作中应该如何提升开发效率?敏捷开发、瀑布流式开发孰是孰非?欢迎阅读。业务背景与目标我依然非常清晰地记得某个时候,我所在团队 Leader 曾讲过一段话:“我担

QcloudCommunity的博客 710

从零设计生产级 Multi-Agent Harness:架构、评估、记忆、成本与 MCP 工具接入全拆解

在 AI Agent 领域,Multi-Agent Harness 指的是把多个 Agent 的能力、工具、状态、通信、编排、监控统一收束在一个运行时之内的框架。第三,Agent 路由。一个输入框,一个大模型,几个工具,一段写得很漂亮的 System Prompt,再配上一个炫酷的前端,看起来就像一个能干活的“数字员工”。Multi-Agent 完全不一样——它有计划、有中间步骤、有工具调用、有 Agent 协作、有重试、有反思、有最终合成。增加 Budget、权限、重试、压缩、轨迹评估、审计、回归测试。

QcloudCommunity的博客 706

拆完Hermes源码,我发现Agent的“自我进化“根本不需要训练模型

两个月 5.2 万 Star,Hermes Agent 用一个"LLM 审判官"机制实现了 Agent 的自我进化——不改模型权重,只改"怎么用模型"的策略。OpenClaw(社区昵称"龙虾"🦞)是 2025-2026 年最火的开源 Agent 框架,30 万+ Star,插件市场 ClawHub 里有数千个插件,能接入 Telegram、WhatsApp、Slack、飞书、企业微信——几乎是一个"个人 AI 操作系统"。Skill 是英语写的,Memory 是英语写的,审查 Prompt 也是英语写的。

QcloudCommunity的博客 905

AI Infra 其实没有多少新东西

传统 Infra 追求横向扩展,而 AI Infra 呈现 “AI 大型机”特性,是因为传统后台服务的可以容忍毫秒级延迟,但 AI 集群不行,GPU 的算力是 CPU 的数百倍,微秒级的延时等待也会造成很大的算力损耗,需要硬件的高度集成。在可预见的1-3年的未来,这样的专用硬件+网络的集中式架构很难发生比较大的改变。与之相似,模型推理的批处理就是将多个输入样本打包(batch),将原本串行的 N 次轻量的推理计算,合并为 1 次重量的计算,实现单位时间内处理更多的请求,提高了 GPU 利用率。

QcloudCommunity的博客 820

程序员越早想通这些越好

永远没有正确架构,你永远无法偿还完所有的技术债务,如同你永远不会设计出完美的界面,请避开完美主义的陷阱,永远没有完美的代码,能够满足当前需求,又为未来不管是自己还是他人留有扩展空间,就很好了。我们努力的方向就是将现实世界映射到有限的数据结构中,这就需要用户自定义类型,如果你的代码中包含类似 trader portfolio 这样的概念,你就可以使用他们的名称来建模,而不是使用基本数据类型复杂嵌套表述你的目的。从另一个角度看,代码里的注释都是补丁,是碎片化的,局部的注释很难推导模块整体的顺序及耦合关系。

QcloudCommunity的博客 464

RAG已死?不,是Grep回归了!

这样一来可以直接复用已有的计算缓存,只为新增的增量部分付全价,前面累积的大头按约 1/10 的缓存价计费。所以实际的工具组合方式是灵活的:Grep(默认模式)→ Read 是最常见的路径,但 Grep(content 模式)可以独立使用,LLM 也可以直接调 Read(如果已经知道文件路径),或者一次同时发起多个 Grep 并行搜索。它从零开始构建自己的对话历史,不继承主对话的消息,这意味着它搜索过程中产生的大量 grep 结果、代码片段都留在自己的 context 里,主对话只收到一段总结性的文本结论。

QcloudCommunity的博客 574

深入浅出Harness Engineerring之核心模式与理念

在智能体生命周期的关键节点(如会话开始、工具调用后)自动触发预设动作(如代码格式化),由系统确保关键流程被执行,不依赖可能被模型遗忘的指令。简单讲就是利用向量存储这个技术,来实现模糊检索,原理是:即使字面不同,但语义相近的文本,其向量在数学空间中的位置也很接近。根据命令类型、参数和影响,自动评估其风险等级(安全、有风险、危险),并采取自动执行、请求确认或直接拦截等不同策略。关键特性是可隔离、可重建、可扩展。不是一次判断就定终身,允许你改变、允许情况复杂,通过不断观察、思考、调整,越来越懂真实的你。

QcloudCommunity的博客 621

Harness Engineering实践心得:如何高效驾驭AI?

但如果这些经验被拆成一条条 Rule、一个个 Skill、一项项 Script 检查——"XAML 不能有中文"、"编译要用这个路径的 MSBuild"、"SVN 命令必须带认证参数"——AI 就能在秒级时间里"吸收"十年的踩坑经验。然后可以看到下方的图,我的PM会很顺利的调度其他agent分别负责不同的事项,遇到问题的时候也能准确的找到合适的agent。MCP 本质上是在扩展 AI 的"感知范围"——Rule 管"该怎么做",Skill 管"怎么操作",MCP 管"能看到什么、能碰到什么"。

QcloudCommunity的博客 838

从第一性原理思考 Agentic Engineering

需要注意的是,这一结论是有条件的:如果 AI 缺乏领域知识,过早介入反而可能引入 1.2 节所述的"似是而非"损耗——因此上下文供给(实践 1)是 AI 全链条参与的前提,而非结果。通过一个专门的自迭代 Skill 实现——当 AI 在协作过程中识别到自己被纠正(用户否定了 AI 的输出并给出了正确方向),它自动评估这个错误的根因,搜索现有的 Rules 和 Skills 中是否已有针对该类问题的处理规则。事实上,越是复杂的项目,工程师的认知负担越重(公理 3),AI 分担认知负担的潜在边际价值也越大。

QcloudCommunity的博客 756

万字干货!Harness Engineering如何工程化落地?

关注腾讯云开发者,一手技术干货提前解锁👇Harness Engineering 的概念已经火了有一阵了,全网很多文章基本都是在讲理念,讲为什么今天做 AI 开发,不能只靠一段提示词,也不能把模型当一个“更聪明的代码补全”。但与此同时,一个问题也在持续地发酵:这个问题特别重要。因为 Harness 这个词听上去很大,很像一个抽象的方法论,但它如果不能落到工程、目录、文档、脚本、工作流里,那它最后就只是一句漂亮的话。事实上,不同项目落地出来的 Harness,表面上可能完全不一样。有的项目是 CI 很强,有的

QcloudCommunity的博客 1161

全方位对比:Hermes VS OpenClaw

多账号矩阵运营 如果你的业务涉及同时管理多个社交媒体账号、多个平台的内容分发、多渠道的客户互动——OpenClaw是目前市场上的"无可替代的底座"。一个有专业背景的个人,现在可以快速构建一个垂直领域的AI助手:比如"财务分析Hermes"、"法律咨询Hermes"、"技术架构Hermes",直接通过微信提供服务,积累自己的专业IP。跨平台生态融合 如果你的工作流涉及飞书、Slack、Discord等多个平台的深度集成,需要这些平台之间的数据流转和联动——OpenClaw的生态支持是强大的。

QcloudCommunity的博客 1217

一文讲透:Harness Engineering即控制论!

而研发模式的升级我认为将会是一个飞跃的过程,之所以现在我们仍然需要需要参与编码,一个非常大的原因就是缺乏传感器和基建,仍然需要人来串流程,比如需要人来验证UI是否正确、需要人来告诉AI代码不符合代码规范,因此在有些场景我们仍然感觉 AI 完成的很吃力,但这不是 AI 能力不行,而是我们并没有为 AI 提供友好的环境……控制论中的突变理论介绍了矫枉过正和飞跃现象之间的矛盾,如果质变中经历的中间过渡态是不稳定的,那么他就是一个飞跃的过程,如果中间过渡态是稳定的,那么他就是一个渐变的过程。但是这些阶段要解决的。

QcloudCommunity的博客 1202

神级开源插件!一句话让QClaw变3D小镇,Agent工作可视化,赛博云监工

这个架构是翻了几次车才想通的—原有AI的实现机制是用 setTimeout 猜动画时长导致了幽灵 NPC、工位撞车、越改越崩,后面我停下来换了思路,推翻原有的架构,按照“意图+回传”的架构进行重构,之前的问题一次性全部解决。15 天,我和 AI 吵了 185 次架, 4.5 万行代码,开发了一款 QClaw / OpenClaw 的UGC游戏插件,这可能是人类跟 Agents 交互的新范式,插件已完全开源,有需要的欢迎自取~我天天用,用着用着我就在思考,Agent 产品现在的交互体验,基本都一个样。

QcloudCommunity的博客 1195

一文搞懂Hermes:新顶流Agent如何从经验中自我进化

Voyager 是一个能在 Minecraft 中自主探索、学习技能、无限积累能力的 AI Agent,它提出了 "Skill Library"(技能库)的概念——Agent 将成功的行为序列编码为可复用的技能函数,存储在一个持续增长的代码库中。如果 Skill 的名称和描述不够精准,或者用户的任务描述与 Skill 的触发条件有语义差距,Agent 可能会错过相关的 Skill。如果进程在写入过程中崩溃,目标文件要么是旧内容(还没被替换),要么是新内容(替换已完成),绝不会出现写了一半的损坏文件。

QcloudCommunity的博客 2629

自掏腰包一万元,拥抱AI这一年,我的工具、实践和思考

其实也很好理解,过往的每个领域(比如前端、后端、设计、测试等等)都主要是这个领域的从业者在为它添砖加瓦,但是大模型时代的 AI 应用领域却几乎是所有使用 AI 的人类一起在迭代,无分领域,无分文理,无分老少。因为每个时期的 AI 都有着不同的特点,很多时候当我费尽心思去钻研,自以为有点弄明白 AI 应该怎么玩的时候,基座模型和行业范式常常就会迎来颠覆式的变革,很多过往的经验都会倾覆,然后只能从头再来。过去一年多,被热议的 AI 范式大概是沿着四个阶段递进演化,每一个阶段其实都在解决前一个阶段的核心问题。

QcloudCommunity的博客 626

办公Agent的CI/CD时刻到来了

核心观点是:企业给员工配了一堆 AI 工具,试点跑了几百个,但真正拖慢 AI 转型速度的瓶颈不在模型能力,在"最后一公里":AI 输出和实际工作流之间的那道鸿沟。代码写完,打个 tar 包,开 FTP 传到服务器上,SSH 进去解压,改配置文件,重启服务,刷一下页面祈祷别 500。你复制,切窗口,粘贴到腾讯文档里,发现 Markdown 格式全乱了,手动调标题层级,代码块重新标记语言类型,表格散架了重排一遍。模型是越来越聪明了,但"生成"到"落地"之间那段路,还是你自己在走,一步一步,手动搬运。

QcloudCommunity的博客 607

4亿token买来5个教训:让6个AI Agent连写4天代码发生了什么?

Watchdog 检测到崩溃 → 启动诊断 Agent 分析原因 → 诊断 Agent 跑满 20 轮没搞定 → Watchdog 判定“已修复”,重启系统 → 重启的系统因为诊断 Agent 留下的环境变量被继承,连续 3 次拒绝启动 → 触发连续失败保护退出 → Watchdog 第 3 次巡检,发现进程和记录文件都没了,尝试手动重启,自己也停了。启动前我翻了论文、做了架构设计、写了监控+修复异常的脚本。这个发现让我的情绪从沮丧变成了兴奋——不是那种"终于修好了"的释然,是"我找到根因了"的快感。

QcloudCommunity的博客 583

赛博斗蛐蛐:9大模型决战三国志,天命在谁?

我猜是这样的,当Gemini面临决策的时候,一系列关键词比如 守城,劣势,粮草,三国等等,在语义层面的关联性中LLM发现了竖壁清野这个关键词概率非常高,所以以此为策略,然后再根据这个策略完美执行操作。MiMo 的外交是三方中最精明的。Kimi作为国产模型,也同样颠覆了我对他的看法,最后的比赛他甚至一度是优势者,存在很多夺冠的可能性,要知道他的对手可是claude和gemini,而他经常出兵慢,回过头来想想或许正是他的策略,毕竟中后期他的优势都来自于稳健的发展和较少的战斗频率(和claude比).

QcloudCommunity的博客 872

Claude Code是怎么知道你在骂他的?这 12 条发现值得关注

确实存在——5,500+ 行,集成了消息队列、工具装配、MCP 编排、会话状态、权限、分析、文件持久化和优雅关闭,基本上一个文件干了所有事。对抗虚假声明——"不要在输出显示失败时声称所有测试通过,不要压缩或简化失败的检查来制造绿色结果"。完整的 KAIROS 是一个持续驻留的守护进程,能感知你在不在电脑前、主动寻找有用的工作做,更像是住在终端里的全职同事。源码里藏着一个叫 "Buddy" 的电子宠物系统,完整度令人惊讶——这不是一个 TODO,而是一个从数值系统到 ASCII 动画都实现了的完整功能。

QcloudCommunity的博客 701

逆向深扒Claude Code源码,我发现了什么!?

Anthropic 内部用户获得更严格的质量控制 prompt、更好的验证机制(独立 Verification Agent)、以及针对 model 弱点的专门对策(如 Capybara v8 的 29-30% 错误声明率对策)。这不是代码混乱的标志——它是整个 Agent Loop 的心脏,所有的流式处理、工具调度、上下文压缩、子代理管理都在这个文件中协调。这种"胖核心"设计是刻意的:保持核心循环的原子性,避免分散到多个模块导致的协调复杂度。核心价值:Fork 代理的工具输出不会回到主代理的上下文窗口。

QcloudCommunity的博客 889

一文讲透如何构建Harness——六大组件全解析

本文将从"裸模型的四个硬伤"出发,逐一拆解 Harness 的六大组件——文件系统、Bash + 沙箱、记忆(AGENTS.md)、Web Search + MCP、上下文工程、编排 + Hooks——带你看清 AI Agent 真正的竞争壁垒,不在模型层,而在 Harness 层。如果你用过 Agent 做复杂任务,你一定有过这样的体验:一开始 Agent 的表现很好,但随着对话变长,它开始"变笨"——遗忘之前的约定,重复之前犯过的错误,甚至对同一个问题给出前后矛盾的回答。对于简单的问答场景,这无所谓。

QcloudCommunity的博客 760

Harness Engineering 来了,SDD 还有意义吗?

他们的解法是把「品味」编码进规则,然后用一个定期运行的「doc-gardening」Agent 自动扫描漂移、发起修复 PR——「技术债务就像一笔高息贷款,不断地以小额贷款的方式偿还,总比让债务不断累积要好」。代码仓库本地的、已版本化的工件,才是 Agent 所能看到的全部。在 Vibe Coding 模式下(即不做规划、随意向 AI 提需求的开发方式),大量设计决策、跨服务约定、「为什么不选另一个方案」的讨论,全部停留在一次性的 AI 对话里——下一个人,或者下一次 AI 会话,完全无从获取。

QcloudCommunity的博客 417

零废话!一文讲透从0构建AI Agent

每个工具都要写一套"定义→解析→执行"的胶水代码。上下文管理就是在"记住足够多"和"别超标"之间找平衡,常见策略包括滑动窗口、摘要压缩、RAG 检索增强。上下文窗口是 Agent 的"工作记忆",但它有硬性限制。LLM 负责"动脑"决策,代码负责"动手"执行。这是从"聊天机器人"进化到"Agent"的关键一步。每次调 API 都把完整对话历史发过去,LLM 本身是无状态的,"记忆"完全靠客户端的数组模拟。这样 Agent 一开始就知道自己"在哪里"、"手头有什么",不需要先花一轮工具调用去探索环境。

QcloudCommunity的博客 711

距离AI把小编我裁掉还有72小时

这是一个基于 OpenClaw 开源生态打造的本地化 AI Agent 助手,已于上周开启全量公测,无需复杂配置,三步即可上手,自带安全防护,支持微信直连绑定,内置多款优质国产大模型,现阶段也是完全免费使用,基本上前面提到过的痛点都可以靠它解决。对了,这里特别强调一点,上面的截图让产品同事汗流浃背,再三找我确认 QClaw 思考过程中优美的“草”字说法,不会是默认出现的吧?AI 好,AI 得学,但更重要的是,在你的工作和生活里,哪些东西是能结构化地被 AI 所接入的,不要死守着那些脏活累活不放。

QcloudCommunity的博客 673
上一篇: 于变革时代探寻破局之光 | LeaTech全球CTO领导力峰会圆满落幕
下一篇: 深耕视听领域的匠人,如何看多媒体技术未来? | 专访上海交大宋利
腾讯云开发者
腾讯云开发者 企业官方账号 企业官方账号
博客等级 码龄10年 6291粉丝 1962原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值