gsd-core 配置读取修复解析config-get --default true如何消除 Nyquist 校验开关的 stderr 噪音与空变量回退【免费下载链接】gsd-coreGit. Ship. Done - Core项目地址: https://gitcode.com/gh_mirrors/ge/gsd-core本文以 gsd-core 仓库中归档变更集 .changeset/archived/138-nyquist-config-get-default.md 为核心解析一次针对工作流配置读取的精细化修复在 validate-phase 与 audit-milestone 两个工作流中config-get workflow.nyquist_validation调用显式携带--default true从根本上消除了配置键缺失时产生的 stderr 噪音与脆弱的空变量回退。读完本文你将理解config-get的--default语义、workflow.nyquist_validation开关的完整配置面以及 gsd-core 中处理可选配置读取的系统性约定。一、变更记录一条归档 changeset 的完整内容该归档文件正文极其精简完整内容如下--- type: Fixed pr: 138 --- config-get workflow.nyquist_validation calls in validate-phase and audit-milestone now include --default true, preventing stderr noise and fragile empty-variable fallback when the key is absent.可以拆解出三层信息变更对象validate-phase与audit-milestone两个工作流中对config-get workflow.nyquist_validation的调用变更动作调用中追加参数--default true变更动机当配置键key缺失时原有调用会产生 stderr 噪音并退化为脆弱的空变量回退fragile empty-variable fallback。虽然正文只有一句话但它指向的是一套真实的配置读取机制。下面逐层展开仓库证据。二、背景workflow.nyquist_validation是什么workflow.nyquist_validation是 gsd-core 的 Nyquist 验证validation coverage audit功能总开关。在 capabilities/nyquist/capability.json 中对该能力有精确定义{ id: nyquist, role: feature, version: 1.14.0, title: Nyquist validation, description: Validation coverage audit that maps executed work back to tests and manual-only evidence., engines: { gsd: 1.6.0 }, config: { workflow.nyquist_validation: { type: boolean, default: true, description: Enable Nyquist validation coverage auditing. } } }它在能力体系中作为feature角色注册默认开启default: true并关联validate-phase技能与gsd-nyquist-auditor代理。其核心职责是将已执行的工作映射回测试与仅手工验证证据输出VALIDATION.md供后续审计。配置默认值与类型同样沉淀在 docs/CONFIGURATION.md 的配置参考表中配置键类型默认值说明workflow.nyquist_validationbooleantrueplan-phase 研究阶段的测试覆盖映射Test coverage mapping during plan-phase research该开关属于验证类门禁gates按照 docs/adr/3128-adaptive-runtime-evidence.md 的默认分组描述research、plan_check、verifier、nyquist_validation、security_enforcement这类验证门禁默认开启而auto_advance、cross_ai_execution等代理自主性选项默认关闭。功能需求层面docs/features/nyquist-validation.md 中的 REQ-NYQ-06 要求系统必须能通过workflow.nyquist_validation: false禁用该能力——例如在测试基础设施尚不是重点的快速原型阶段docs/USER-GUIDE.md 建议在/gsd-settings中将其关闭。三、问题剖析配置键缺失时的两种故障形态既然默认值是true为什么工作流还要调用config-get读取它因为默认值文档化了不代表键一定存在于每份配置文件中。gsd-core 的配置读取基于显式键查找语义如果某项目的.planning/config.json早于引入nyquist_validation键的版本生成该键就根本不存在。此时config-get会以非零退出码报Key not found把错误信息写入 stderr。这在仓库中有清晰的同类先例。关于workflow.human_verify_mode的说明文档 gsd-core/references/planner-human-verify-mode.md 明确指出workflow.human_verify_modeisabsent fromSCHEMA_DEFAULTSinsrc/config.cts, soquery config-get workflow.human_verify_modeexits non-zero withKey not foundon any project whoseconfig.jsonpredates #3309 — it does not resolve the documentedend-of-phasedefault. Every consumer must therefore pass--default end-of-phaseexplicitly.即文档默认值 ≠ 运行时可解析的默认值。SCHEMA_DEFAULTS位于 src/config.cts中没有的键config-get不会主动返回文档声明的默认值而是直接失败。这正是本 changeset 修复的问题背景。缺失键带来的两种故障形态stderr 噪音config-get将Key not found写入 stderr污染工作流的标准错误输出在 Agent 工作流日志中这类噪音会干扰对真实告警的辨别。空变量回退fragile empty-variable fallback工作流脚本往往写成VAR$(gsd_run query config-get ... 2/dev/null || echo ...)即失败时回退到某个值。若回退分支处理不当——例如2/dev/null || true静默吞掉错误后变量为空——后续if [ $VAR true ]这类比较就会命中空串分支得到与文档默认值不一致的行为且极难排查。四、解法核心config-get的--default参数语义修复的关键在于config-get支持--default value参数。其底层实现位于 gsd-core/bin/gsd-tools.cjs 的参数解析段// --default value: for config-get, return this value instead of erroring // when the key is absent. Allows workflows to express optional config reads // without defensive 2/dev/null || true boilerplate (#1893). const defaultIdx args.indexOf(--default); let defaultValue undefined; if (defaultIdx ! -1) { defaultValue args[defaultIdx 1]; if (defaultValue undefined) defaultValue ; args.splice(defaultIdx, 2); }源码注释直接点明了设计动机关联 issue #1893语义当键缺失时config-get返回--default指定的值而不是报错退出目的让工作流表达可选配置读取时不必再写防御性的2/dev/null || true样板代码。换言之--default把读取可选配置从命令失败 外部回退改成了命令成功 内建回退从根上消除了 stderr 噪音与空变量陷阱。该参数可与--raw直接输出原始值、--pick选取字段等选项自由组合例如仓库中常见的调用形态gsd_run query config-get workflow.human_verify_mode --default end-of-phase --raw对应到本修复即gsd_run query config-get workflow.nyquist_validation --default true --raw当配置文件中不存在workflow.nyquist_validation键时该命令直接输出true与文档化默认值一致退出码为 0stderr 干净无噪音。五、修复落地validate-phase 与 audit-milestone 中的实际调用本次变更覆盖两个工作流二者正是 Nyquist 验证体系的前后端validate-phasegsd-core/workflows/validate-phase.md执行阶段验证负责生成/对账VALIDATION.md并派发gsd-nyquist-auditor子代理审计验证覆盖◆ Spawning nyquist auditor...通常耗时 1~5 分钟。它需要读取workflow.nyquist_validation判断是否执行 Nyquist 映射步骤。audit-milestonegsd-core/workflows/audit-milestone.md里程碑审计逐阶段检查*-VALIDATION.md的 frontmatter 状态机status: validated、nyquist_compliant、wave_0_complete汇总出COMPLIANT / PARTIAL / NOT-VALIDATED判定并输出审计 YAML 的nyquist: { compliant_phases, partial_phases, not_validated_phases, missing_phases, overall }区块。它读取开关决定是否将 Nyquist 维度纳入审计。对这两个工作流而言开关键的缺失不是异常而是老项目配置的自然状态。改动前老项目触发Key not found噪音与空变量回退改动后--default true让读取结果永远与文档默认值一致。这一修复并非孤立特例。从 gsd-core/workflows/validate-phase.md 第 20 行可以看到同工作流中既有的同类调用模式RESPONSE_LANGUAGE$(gsd_run query config-get response_language --raw --default 2/dev/null || echo )说明--default在仓库中是处理可选配置读取的既定惯例本次只是把nyquist_validation读取纳入同一约定。六、仓库中的同类实践一套系统性约定--default参数在整个工作流体系中被广泛采用可作为读者排查同类问题的索引gsd-core/references/checkpoints.mdconfig-get workflow.human_verify_mode --default end-of-phase --raw#3309 同类问题gsd-core/workflows/audit-fix.mdconfig-get workflow.test_command --default --rawgsd-core/workflows/cleanup.mdconfig-get response_language --raw --default gsd-core/workflows/code-review.mdconfig-get workflow.code_review_depth_overrides --default []复合类型默认值gsd-core/workflows/complete-milestone.mdconfig-get response_language --raw --default gsd-core/workflows/diagnose-issues.mdconfig-get runtime --default claude --rawgsd-core/workflows/execute-phase/steps/regression-gate-run.md 等执行门禁config-get workflow.build_command --default --raw从中可以归纳出 gsd-core 的配置读取规范可选配置必须显式声明默认值凡读取可能缺失的键一律带--default值类型与文档默认值保持一致布尔用true/false字符串用数组用[]优先内建回退避免外部回退--default使命令成功返回替代2/dev/null || echo ...的失败回退模式与config-set配合形成闭环当读取结果显示开关被禁用时工作流可调用config-set workflow.nyquist_validation false参见 gsd-core/workflows/plan-phase.md 与 gsd-core/workflows/settings.md 的配置能力矩阵持久化变更。此外健康诊断规则 gsd-core/workflows/health.md 中的 W008 提示也与此相关当config.json缺少workflow.nyquist_validation键时给出警告defaults to enabled but agents may skip并提供addNyquistKey修复动作写入workflow.nyquist_validation: true。这说明键缺失是官方认可的现实状态也反向印证了--default true修复的合理性。七、总结一次小修复背后的工程原则回到这条归档 changeset它虽然只有一句话却浓缩了 gsd-core 配置体系的三条工程原则显式优于隐式文档默认值必须通过--default显式表达在读取端避免文档说 true、运行时却是空串的认知裂缝成功语义优于失败回退可选配置读取应当成功返回而不是让调用方处理失败后再补救——这既消除 stderr 噪音也消除空变量分支修复要落在消费点validate-phase 与 audit-milestone 是所有验证证据的汇聚点在这两个消费点统一读取语义比在配置侧强制写键更稳妥老项目配置不应被迫迁移。对工作流脚本开发者而言这条修复是一个可直接复用的模式任何读取可能不存在的配置键的地方都应该像gsd_run query config-get workflow.nyquist_validation --default true --raw这样显式给出默认值——它同时解决了可读性、噪音与脆弱回退三个问题。【免费下载链接】gsd-coreGit. Ship. Done - Core项目地址: https://gitcode.com/gh_mirrors/ge/gsd-core创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
spotDL 音频格式速查:6 种格式怎么选 spotDL 音频格式速查:6 种格式怎么选 【免费下载链接】spotify-downloader Download your Spotify playlists and songs along with album art and metadata (from YouTube if a match is found). 项目地址: https://gitcode.com/GitHub_Trending/sp/spotify-down… · 2026/9/24 16:58:44
Linux 下 Redis Cluster 安装与部署 Linux 下 Redis Cluster 安装与部署
一、环境信息系统主机密码内存端口CentOS-7192.168.4.81jxbd816G主:7001,备:7002CentOS-7192.168.4.82jxbd826G主:7001,备:7002CentOS-7192.168.4.85jxbd856G主… · 2026/9/24 17:27:20
【股票交易】第 49 章 移动平均线与趋势跟踪 回到目录文章目录49.1 移动平均线是什么简单移动平均线:不断更新的价格平均数股价下跌,均线为什么仍然上涨指数移动平均线 :给近期价格更高权重49.2 移动平均线有什么用途为趋势观察提供一致的参照周期选择决定观察尺度衡量价格偏离近期平均水… · 2026/9/24 17:27:07
lu,震惊分析实验系统、震惊实验视频分析系统 震惊反射系统用于分析动物受到突发强刺激后的应激行为,单台计算机可管控 1‑5 个震惊反应箱。除噪声刺激外,还可叠加光、电、气流组合刺激,刺激间隔技术参数1、重量传感器量程:1‑2kg 2、系统架构:主控制器搭配装置控制… · 2026/9/24 17:27:07
2026 大幅面数码印刷设备行业观察:国产压电写真机技术演进与设备选型参考 本文面向广告加工、图文印刷行业从业者,梳理 2026 大幅面数码印刷设备的技术现状,包含压电写真、UV 打印技术拆解,以及工厂设备选型参考。
摘要:随着个性化小批量订单持续释放需求,国内大幅面数码印刷设备行业保持稳步… · 2026/9/24 17:27:07
用思维赚钱14:求财与财富观的境界 天下熙熙皆为利来,天下攘攘皆为利往。在这个世界上,芸芸众生,追求经济利益或者说求财,在一定程度上,可以说具有普遍性。追求权色名利,就一般意义上讲,并没有天然的是非对错,都是可以… · 2026/9/24 17:27:07
双向RNN 如果不加特别说明,RNN的计算一般是从左到右的,即第t步的特征计算只能“看到”的信息,但从语义理解的角度来看,有时只看前边时间步的信息是不够的。我们来看下边的例子。南京市 长江 大桥 是 一个 工程 奇迹。
南京 市长 江大桥 是… · 2026/9/24 17:27:07
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44