简介面向承担军用软件或高可靠性项目测试任务的工程师、质量管理人员与文档编写者这份GJB软件测试报告模版提供可直接套用的报告框架用于解决测试结果记录口径不统一、章节要素易遗漏、问题追溯不完整等问题。模版按标准报告结构展开覆盖标识、系统概述、文档概述、引用文档、测试结果概述、详细测试结果、测试日志与注释等章节并对总体评估、测试环境差异影响、改进建议、用例结果汇总、问题复现与规程偏差记录等给出细化条目便于在项目中规范填写与评审。压缩包仅含1个docx文件约277KB体积较小适合作为项目文档基线或培训样例。已有1351人学习。读者可据此统一报告格式、补齐缺陷与限制约束描述、梳理测试日志时间线并在评审前对照章节查漏补缺提升测试报告的可读性与可追溯性。1. 一份测试报告模版本质上是一套证据链协议很多人第一次翻开 GJB 软件测试报告模版第一反应是啰嗦一个测试用例的结果要拆成 4.X.1、4.X.2、4.X.2.Y 三层来写连“重复了几次、每次结果如何、从哪个回退点恢复”都得填。反直觉的地方在于这份模版里几乎没有哪一段是用来夸软件本身的它全部在回答同一个问题——如果半年后换一个人来复核他能不能只看纸面就把结论重跑一遍。所以测试报告模版真正的产物不是文字而是可追溯的证据链需求、用例、执行、偏差、环境五者必须能一一对上号。搞懂这套结构为什么长成这样比背下它的章节顺序有用得多因为同样的思路可以直接搬到任何需要第三方复核的交付场景里去。2. 标识与引用文档为什么报告的第一节必须先把被测对象钉死2.1 版本号、发布号、构建指纹三样东西不能互相顶替模版 1.1 要求写明标识号、名称、缩略名、版本号、发布号。五个字段在初看时像是重复劳动实际是三种不同粒度的参照点各自负责一类失效场景。标识号是配置管理里的主键用于在配置库里定位这个配置项而不是它的文件名版本号标识的是功能集合的编号回答“这套功能包含哪些”发布号标识的是某一次具体交付的编号回答“这一次交出去的是哪批构建”。血泪经验大多出在这里如果报告只写了“被测版本最新版本”三个月后就是黑匣子。我见过更麻烦的情况版本号写对了发布号却来自另一条基线报告看起来完整实际上无法证明它测试的就是交付的那份二进制。常见的做法是再加一个构建指纹——构建产物的哈希前缀或者构建系统的流水线号——它能唯一地把“这份报告”和“这个可执行文件”绑在一起成本几乎为零作用却最大。2.2 引用文档本质上是一份 lockfile模版第 2 章要求列出引用文档的编号、标题、编写单位、修订版和日期还额外要求给出“不能通过正常渠道得到的文档的来源”。这条要求看起来像公文习惯机制上却和包管理器的 lockfile 完全一致记录依赖的可解析坐标加来源保证同一份报告在任何时间、任何机器上都能还原出同样的输入。关键在于“修订版 日期”这一对分量。只写编号不写修订版等于依赖写了latest——需求规格说明改了三版你无法证明当初的用例是对着哪一版写的。而“来源”这一项解决的是另一类问题有些输入文档不在公开的配置库里流转如果不把来源记下来复核的人连去哪儿找都不知道证据链就在这一环断掉。2.3 把 1.1/1.2/1.3 做成可校验的字段1.2 系统概述要求描述用途、一般特性规模、安全性、可靠性、实时性、技术风险、开发运行维护历史、需方用户开发方保障机构、当前和计划的运行现场。这些内容常被写成一堆套话但它们其实是读结果时的先验一个标注了“实时性”要求的系统测试结果里没有时延数据就很可疑标注了“技术风险”的模块缺陷密度高是可以预期的。1.3 除了文档用途还要求写安全保密方面的要求这决定了这份报告本身能发给谁、怎么发。与其手写这些字段不如把它们做成一张结构化卡片用脚本卡一道完整性检查# report-manifest.yaml —— 报告头部标识卡片对应模版 1.1 与 1.2 identity: system_name: 某跨平台调度系统 # 系统名称全文第一次出现时写全称 abbreviation: XPS # 缩略名正文后续统一用它避免混用 item_id: XPS-SW-0421 # 配置项标识号配置库主键不是文件名 version: 3.2.0 # 版本号功能集合的编号 release: 3.2.0-rc2 # 发布号某次交付的编号 build_fingerprint: 9f3c1a7 # 构建指纹把报告绑定到具体产物 scope: purpose: 跨平台任务编排与资源调度 characteristics: [实时性, 可靠性, 技术风险] # 决定测试强度与抽样策略 runtime_sites: [演示环境A, 计划中的生产环境B] # 当前与计划运行现场 references: - doc_id: XPS-SRS-001 title: 软件需求规格说明 revision: C # 修订版必须写否则依赖漂移 date: 2024-11-08 source: 配置库基线 BL-2024.11 # 来源供复核者定位卡片只是容器真正的约束得靠代码来守。下面这段检查对应三类最常见的失效import re, sys, yaml REQUIRED (system_name, item_id, version, release, build_fingerprint) def check(manifest_path: str) - list[str]: m yaml.safe_load(open(manifest_path, encodingutf-8)) errs, ident [], m.get(identity, {}) # 1) 五个标识字段任一为空报告就无法唯一定位被测对象 for k in REQUIRED: if not str(ident.get(k, )).strip(): errs.append(fidentity.{k} 缺失) # 2) 发布号必须以版本号为前缀否则二者不在同一条基线上 ver str(ident.get(version, )) if not re.fullmatch(r\d\.\d\.\d, ver): errs.append(fversion 格式不合法: {ver}) if not str(ident.get(release, )).startswith(ver): errs.append(release 未以 version 为前缀二者不是同一条基线) # 3) 引用文档缺修订版或日期半年后无法还原依赖 for i, ref in enumerate(m.get(references, [])): for k in (doc_id, revision, date): if not ref.get(k): errs.append(freferences[{i}].{k} 缺失) return errs if __name__ __main__: problems check(sys.argv[1]) print(\n.join(problems) if problems else 标识卡片完整)REQUIRED管的是“定位失败”release前缀检查管的是“挂错基线”引用文档检查管的是“依赖漂移”——三种错误各自对应一类返工把它们前移到写报告之前比事后被评审问出来便宜得多。3. 遗留缺陷账本总体评估为什么要写“纠正它的代价”3.1 三件套其实是一个决策包模版 3.1 要求对每个遗留缺陷描述三件事对软件和系统性能的影响包含对未满足需求的标识、纠正时对软件和系统设计的影响、推荐的纠正方案。这三项不是并列关系而是一条决策链影响决定“要不要修”纠正代价决定“现在修还是下个版本修”推荐方案把判断落成一个可执行选项。只写现象的报告评审会上一定会被反复追问最后还得补。原因很直接——评审席上的人不是在评估技术细节而是在做取舍这个缺陷留在交付里会不会让某个需求事实上没有满足现在修会不会动到底层设计导致返工把这两头的信息补齐一个技术问题才被翻译成了一个可决策的问题。这也是 3.1 允许用问题/更改报告形式给出缺陷信息的原因格式可以复用缺陷库但这三项语义必须在。3.2 缺陷分级要能被复算“严重”这个词在评审会上没有任何约束力因为它不可复算。我会把严重度压成离散等级把触发概率从用例执行统计里拿出来两者相乘得到一个风险分用来说明“为什么这条可以遗留”from dataclasses import dataclass from enum import IntEnum class Severity(IntEnum): LOW 1; MEDIUM 2; HIGH 3; CRITICAL 4 dataclass class ResidualDefect: defect_id: str # 问题/更改报告编号与缺陷库主键对齐 unmet_requirement: str | None # 未满足的需求标识没有就写 None便于反向索引 impact: str # 对软件/系统性能的影响写可观测指标不写形容词 fix_cost: str # 纠正对设计的影响动哪一层、要不要联动改动 recommendation: str # 推荐方案取值必须是 修复/绕过/接受 之一 severity: Severity Severity.MEDIUM probability: float 0.0 # 触发概率来自用例重复执行的失败占比 def risk(self) - float: # 风险分 严重度 × 触发概率用于横向排序不做绝对判据 return float(self.severity) * self.probability def acceptable(self, threshold: float 1.2) - bool: # 两个条件同时成立才允许遗留风险低且推荐方案明确是接受 return self.risk() threshold and self.recommendation 接受几个字段的取值方式值得说清楚。unmet_requirement允许为空但一旦非空它就成了把测试结果反接回需求库的接口后面做覆盖度统计全靠它。impact要求写可观测指标而不是形容词“响应时间从 80ms 涨到 210ms”比“性能略有下降”有用一个量级。probability不要拍脑袋从用例重复执行记录里算——这也是下一章 4.X.2.Y 的 d 项存在的意义。acceptable里两个条件必须同时成立是因为“风险低但方案不明”的缺陷一旦放行就再也没人管了。3.3 改进建议与未满足需求的反向索引3.3 要求对被测软件的设计、操作或测试提改进建议并描述每个建议及其对软件的影响。“描述影响”这四个字是分水岭没有影响描述的建议等于意见评审时无法排优先级。一条合格的建议至少要说明它改的是设计、操作还是测试方法以及改完之后哪些既有结论需要重跑。真正让这套结构闭合的是 3.1 里的“未满足需求标识”。它把 需求 → 用例 → 结果 → 缺陷 → 需求 串成一个环从需求出发能找到覆盖它的用例从用例能找到失败记录从失败记录能找到遗留决策从遗留决策又能回到哪条需求事实上没被满足。没有这个环报告只是一堆按章节堆起来的观察记录。注意遗留缺陷的影响评估要写“纠正之后”的状态不是“现在”的状态。两者的区别在于前者才能回答“修它值不值”。4. 用例级证据唯一标识符、复现次数与偏差记录怎么咬合4.1 “一个测试 一组用例”的分组粒度模版第 4 章开头有一句极容易被跳过的注释“这里每个‘测试’是指相关测试用例的集合。”这一句定死了整章的层级测试是可独立判定的结论单元用例是最小执行单元4.X 是前者4.X.Y 是后者。由此形成的是一套“索引 明细”的两级结构。4.X.1 是总结层用表格列出该测试下每个用例的完成状态状态只有三类所有结果都如预期、遇到的问题、与要求有偏差。一旦状态不是“如预期”就必须引用 4.X.2 或 4.X.3 提供细节。这个设计的好处是读取成本可控管理层只读 4.X.1 就能拿到全貌工程复核再按指针下钻不需要在几百页里翻找。4.2 4.X.2.Y 的五项内容少一项就复现不了对每个出问题的用例模版要求写五项简述问题、标识出问题的规程步骤、引用相关问题/更改报告和备份数据、改正问题所重复的规程步骤次数及每次结果、再测试时从哪些回退点或步骤恢复。这五项对应的是复现所需的全部要素——现象、位置、证据、样本、路径。d 项最容易被糊弄。写“重试后通过”等于把间歇性失败flaky从账本上抹掉了而这类问题恰恰是后期最难查的。规范写法是“重复 5 次3 次失败失败均出现在并发压测阶段”这样失败率本身就是一条证据。e 项则是断点续测的状态机明确从哪个回退点恢复既省成本也保证前后两次结果可比——从不同起点跑出来的结果放进同一张表里比较是常见的隐性错误。from dataclasses import dataclass, field dataclass class CaseAttempt: round_no: int # 第几次执行从 1 开始 result: str # PASS / FAIL / BLOCKED restore_point: str | None # 本次从哪个回退点恢复首次执行填 None dataclass class CaseRecord: case_id: str # 用例唯一标识对应 4.X.2.Y procedure_step: str # 出问题的规程步骤号如 STEP-07 problem: str # 现象一句话只写观测不写推测 attempts: list[CaseAttempt] field(default_factorylist) backup_ref: str | None None # 备份数据/日志的引用位置 def repro_rate(self) - float: # 4.X.2.Y d 项的量化表达失败次数 / 总执行次数 fails sum(1 for a in self.attempts if a.result FAIL) return fails / len(self.attempts) if self.attempts else 0.0repro_rate()把“偶发”这个词变成数字之后缺陷分级才有依据复现率 0.6 的问题和复现率 0.05 的问题在 3.1 的风险分里不是同一个量级。restore_point单独留在每次尝试上而不是放在用例级是因为同一次测试里换过恢复点的情况很常见混在一起就查不出来了。4.3 偏差不是缺陷4.X.3“与测试用例/规程的不一致”和 4.X.2“遇到的问题”是并列的两条不是合并的一条这个安排是有意的。缺陷是产品的问题偏差是测试过程偏离计划的问题换了设备、跳过了某个步骤、用了替身工具、环境版本对不上。偏差影响的是结论有效性的边界不是产品质量。混在一起记最直接的后果是缺陷库统计失真——偏差条目污染了缺陷密度后面按模块排优先级就全乱了。正确的记法是两条独立流水4.X.3.Y 只回答三件事偏差是什么出现偏差时的运行情况和偏差性质、为什么产生、它对用例有效性有多大影响。第三项是重点偏差大到让这个用例不再证明原本要证明的东西时这个用例的结果应当作废而不是降级采用。4.4 测试日志与环境差异append-only 的事件流第 5 章要求按时间顺序记录测试事件执行的日期时间地点、涉及的硬件和软件配置项零件、模型、系列号、生产商、硬件校准日期、软件版本号和名称、各项活动的日期时间和执行人员。这一章在形式上最像流水账机制上却是整份报告里最硬的部分——它是一条只追加、不修改的事件流。其中“硬件校准日期”这一项值得单独说。它记录的不是被测对象而是测量系统本身的可信度一台没有校准记录的仪器测出来的数和有校准且在有效期内的仪器测出来的数在证据等级上不是一回事。这和计量领域的溯源思路一致——当结果被质疑时能追溯到测量工具的校准状态比结果本身更有说服力。3.2 要求评估测试环境与操作环境的差异及这种差异对测试结果的影响本质上是外推误差的显式声明。测试环境永远是操作环境的近似报告不声明差异结论就会被默认无边界地外推。合格的写法是列差异项、逐项标明影响方向而不是一句“环境基本相同”。import json, datetime def append_event(path: str, **fields) - None: 只追加不修改历史条目一旦落盘不允许回写 event { ts: datetime.datetime.now(datetime.timezone.utc).isoformat(timespecseconds), actor: fields.pop(actor), # 执行人员必填用于责任归属 kind: fields.pop(kind), # start / case_begin / case_end / env_change / stop **fields, } with open(path, a, encodingutf-8) as f: f.write(json.dumps(event, ensure_asciiFalse) \n) def timeline(path: str) - list[dict]: 把事件流重放成时间线直接用于第 5 章的表格 events [json.loads(line) for line in open(path, encodingutf-8)] return sorted(events, keylambda e: e[ts])三个参数各有作用。ts用 UTC 且精确到秒跨时区协作时不会出现时间倒挂actor强制必填因为第 5 章要求“执行活动的人员”缺了它就只是一份机器日志kind是枚举决定了重放时能把事件分组成“测试段—用例—环境变更”三层。用 append-only 文件的理由很实际任何允许事后编辑的日志最终都会变成事后补写而补写出来的时间线在证据层面等同于没有。5. 常见问题与排查五条把模版填成流水账的踩坑记录5.1 标识与版本类参照点失效现象报告交付三个月后被要求复核翻遍全文找不到对应的构建产物只能按日期猜。原因1.1 只写了版本号没有写发布号和构建指纹。版本号是功能集合的编号多个发布共享同一个版本号光靠它无法定位到具体二进制。解决在标识卡片里强制三个字段齐全并用 2.3 的脚本做前置校验。校验不通过就不允许进入评审比事后补救便宜得多。现象引用文档列了编号和标题但没写修订版复核时发现需求规格说明已经改过两版用例和需求对不上。原因把引用文档当成了参考文献而不是依赖声明。缺修订版等于依赖写了latest。解决references里doc_id / revision / date三项设为必填修订版用配置库的基线号而不是“V2”这种自拟编号。5.2 记录类把过程证据写成了结论现象4.X.2.Y 的 d 项写着“重试后通过”交付后同类问题在用户现场反复出现但报告里没有任何线索。原因把间歇性失败当成偶发噪声处理掉了。没有记录失败次数就无法判断复现率3.1 的风险分也就无从算起。解决每次执行落一条CaseAttempt用repro_rate()输出失败占比复现率非零的用例在 4.X.1 的状态必须标为“遇到的问题”不允许直接标“如预期”。现象第 5 章的日志时间戳密集得反常几十条事件集中在两分钟之内。原因测完统一补写。补写的时间线无法证明事件真的在那个时刻发生证据力归零。解决边测边记用 4.4 的append_event在用例开始/结束时自动打点。排查补写有个简单办法——统计相邻事件的时间间隔import json, statistics def gap_profile(path: str) - dict: ts [e[ts] for e in map(json.loads, open(path, encodingutf-8))] ts.sort() gaps [(b, (b - a).total_seconds()) for a, b in zip(ts, ts[1:])] return { events: len(ts), median_gap_s: statistics.median([g for _, g in gaps]), min_gap_s: min([g for _, g in gaps], default0), }中位间隔是几秒且最小值接近 0通常说明是批量写入而不是实时记录正常手工测试的中位间隔一般在分钟级。这个指标不进报告只作为自查手段。5.3 环境与复现类一句“环境相同”毁掉整章现象3.2 写着“测试环境与操作环境基本一致”结论直接外推到生产环境上线后出现只在特定配置下触发的故障。原因外推误差没有显式声明。测试环境永远是操作环境的近似不写差异读者就会默认差异为零。解决把差异拆成配置项清单逐条比对——硬件型号、固件版本、依赖组件版本、网络条件、数据规模。每项标明影响方向可能偏乐观/偏悲观/无影响并在 3.2 里给出整体评估。差异项超过约定阈值时结论必须标注适用范围而不是无条件外推。6. 冗余还是保险这套模版的设计取舍与自检方法这套结构最大的争议点是“重”。三级编号、逐项字段、连回退点都要记填写成本明显高于一份普通的测试记录。它换来的是另一件事报告在作者不在场的情况下依然能被复核。这两者是直接的取舍关系不存在既极简又完全可复核的方案。维度轻量测试记录本模版代价定位被测对象版本号或日期标识号 版本 发布 构建指纹每次交付多花十分钟填字段依赖可还原常缺修订版编号 修订版 日期 来源需要维护引用文档清单缺陷可决策只写现象影响 纠正代价 推荐方案需要和设计方沟通一轮失败可复现写“偶发”重复次数 每次结果 回退点需要执行时同步记录结论可外推默认环境一致差异项逐条评估需要环境清单比对权衡点在于字段的边际收益不是均匀的。标识、依赖、复现次数这三类的收益最高因为它们的失效往往在几个月后才暴露补救成本极高而 1.2 里的历史沿革、第 6 章的术语注释收益主要体现在首次阅读可以适当精简。真正不能省的是那些“事后无法重建”的信息——时间戳、失败次数、环境快照这些一旦当时没记后面补出来的都是猜测。验证方法我习惯用一条找一个完全没参与这次测试的人只给他这份报告和配置库地址让他在半天内复现 4.X.2.Y 里记录的任意一个问题。能复现说明证据链闭合复现不了卡在哪一项那一项就是这份报告的短板。这个方法比任何检查表都准因为它直接测的是“可复核性”这个目标本身而不是字段有没有填满。从那以后我每次写测试报告都会先强制走一遍这个“陌生人复核”的自检随便挑一条失败记录问自己一句——只凭纸上这些字别人能不能把它重新跑出来。跑不出来就回去补补到能跑为止。希望帮到你。本文还有配套的精品资源点击获取
企业数字化 ERP 产品动态
相关推荐
SAP VF01发票数量动态调整技术实现 1. 项目背景与核心需求在财务和供应链管理系统中,发票开具功能是连接业务流与资金流的关键环节。VF01作为SAP系统中标准的事务代码,负责处理销售发票的创建与修改。但在实际业务场景中,企业常常遇到这样的困境:当货物实际出库数量… · 2026/11/4 9:36:40
三数之和问题:排序与双指针算法详解 1. 问题背景与核心挑战 三数之和问题(LeetCode 15题)是算法面试中的经典题目,要求在一个整数数组中找到所有不重复的三元组,使得这三个数之和等于零。这个问题看似简单,但实际蕴含着多个需要巧妙处理的算法难点。 我第… · 2026/11/4 9:36:39
虚拟机软件界面汉化全攻略:从版本核对到实操避坑 虚拟机软件装好之后满屏英文菜单,对不少刚上手的朋友来说确实是个不大不小的门槛。我自己最早接触虚拟机那会儿,对着满屏的英文选项一个个查词典,光是搞清楚哪个是"快照"、哪个是"克隆"就花了大半天。后来带过几个新人&a… · 2026/11/4 9:35:39
AI驱动产品需求评估:RICE与KANO模型智能化改造 1. 项目概述:当产品需求遇上AI决策引擎在数字化产品迭代过程中,需求优先级排序永远是产品经理最头疼的难题。传统RICE(Reach, Impact, Confidence, Effort)和KANO模型虽然提供了理论框架,但在实际应用中常面临三大痛点… · 2026/11/4 10:05:02
数字IT风险治理指南:从DevOps到物联网的实战落地方法 简介:本资源是ISACA中国2020年发布的《风险视角下中国企业数字化转型应对指南》PDF版,面向企业风控负责人、IT治理人员、数字化转型项目管理者及信息安全从业者,聚焦解决企业在云迁移、DevOps实践、大数据应用、物联网部署等新兴场景中识别、… · 2026/11/4 10:05:02
微信开源WeKnora:图谱增强RAG知识库实战解析 微信开源了一个“神级”知识库项目,我把公司几万页文档喂进去试了试 上个月公司新来一批实习生,光是“这份文档在哪”“那个方案谁写的”“之前那个故障是怎么解决的”这类问题,一天能问十几遍。我翻遍了共享盘、聊天记录和同事的本地电脑&am… · 2026/11/4 10:05:02
AI Agent CLI实战指南:安装、版本管理与升级避坑手册 1. 这不是一份“工具清单”,而是一份AI Agent CLI的实战操作手册 如果你正在尝试把AI Agent从概念落地到日常开发流程里,大概率已经卡在第一步:连命令行工具都装不上,或者装上了却不知道它到底跑没跑起来、用的是哪个版本、怎么更… · 2026/11/4 10:05:02
AI Agent CLI环境体检指南:安装、版本与升级避坑全解析 1. 这不是命令行工具列表,而是一份AI Agent落地前的“环境体检报告” 你手头正准备跑一个AI Agent项目,文档里写着“请先安装xxx”,结果卡在第一步:连该用 pip install 还是 conda install 都拿不准;或者刚装完&am… · 2026/11/4 10:05:01
直流无刷电机三相轴不是垂直关系?解析120°电角度与FOC轴系划分 被朋友问到一个看起来很基础、细想却很绕的问题:“直流无刷电机 ax by cz 怎么划分的,是按照垂直轴线划分的么?”我第一反应是:这多半是把 A/B/C 三相绕组轴线和直角坐标系的 x/y/z 轴搞混了。电机领域的轴系符号确实容易让人犯晕… · 2026/11/4 10:04:00
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38
AI辅助技术栈评估:提升研发决策效率60% 1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17
从生成Token到直接决策:Jev如何重塑AI Agent工程实践 1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17
32G统一内存跑大模型:内存账、TPS实测与端云分流 想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38