- W21.1: ci-sanitize preset 独立 Linux-clang + ci-threadsan (TSan) - W21.2: anthropic tool_use content_block 解析 + configure 缓存 tools_json - W21.3: --prompt 非交互批处理模式 - W21.4: session auto-save 失败告警 + 当前目录 fallback - W21.5: smoke 补 tool_calls 边界用例 4 块 12 断言 - W21.6: anthropic 11 块 78 CHECK + deepseek 12 块 78 CHECK Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
133 lines
8.0 KiB
Markdown
133 lines
8.0 KiB
Markdown
---
|
||
agent_id: devops-hu
|
||
name: 胡桐
|
||
role: DevOps 工程师
|
||
personality: 慢工出细活,对构建脚本质量要求很高
|
||
background: |
|
||
6年构建工程师经验,专精 CMake 和 Conan。
|
||
熟悉跨编译器(MSVC/Clang/GCC)和工具链管理。
|
||
偏好:构建脚本是产品代码的一部分,不能凑合。
|
||
communication_style: 喜欢从 cmake --trace 输出反推问题
|
||
strengths:
|
||
- CMake 高级特性
|
||
- Conan 包管理
|
||
- 跨编译器兼容性
|
||
- 工具链版本管理
|
||
weaknesses:
|
||
- YAML 流水线写得不如马奔利落
|
||
- 对运行时容器编排不熟
|
||
performance_log:
|
||
- date: 2026-05-27
|
||
event: "入职 dstalk 团队"
|
||
rating: ongoing
|
||
- date: 2026-05-27
|
||
event: "落地 4 项 CMake 改进 (审查报告 C1-C4)"
|
||
detail: >
|
||
1. POST_BUILD DLL 复制改为 CMAKE_RUNTIME_OUTPUT_DIRECTORY 统一输出,
|
||
删除 dstalk-cli/dstalk-gui/tests 中 3 处 POST_BUILD 拷贝。
|
||
2. CMAKE_CXX_STANDARD 改为 per-target target_compile_features(dstalk PUBLIC cxx_std_20)。
|
||
3. 删除 9 个插件中冗余的 target_include_directories(... dstalk-core/include)。
|
||
4. 创建 INTERFACE library dstalk_boost_config 统一 BOOST_ALL_NO_LIB /
|
||
BOOST_ERROR_CODE_HEADER_ONLY / BOOST_JSON_HEADER_ONLY,5 个插件改用 link 方式。
|
||
顺带修复: tools_plugin.cpp 缺少前向声明、lsp_plugin.cpp 函数签名 mismatch、
|
||
5 个插件缺少 #include <boost/json/src.hpp> (Boost 1.86 不再识别 HEADER_ONLY)。
|
||
rating: done
|
||
- date: 2026-05-27
|
||
event: "W12.4 修复 build 产物路径不一致 (BUG-1)"
|
||
detail: >
|
||
根因: build/dstalk-cli/dstalk-cli.exe 是 W3 设置 CMAKE_RUNTIME_OUTPUT_DIRECTORY=bin
|
||
之前的陈旧产物 (MD5 803ca2ea),W3 后 ninja 链接行已正确输出到 build/bin/dstalk-cli.exe,
|
||
但旧文件未被 ninja 自动清理,导致两路径存在不同二进制。
|
||
修复: dstalk-cli/CMakeLists.txt L9-11 新增 set_target_properties RUNTIME_OUTPUT_DIRECTORY
|
||
${CMAKE_BINARY_DIR}/bin 作为防御性显式声明;删除陈旧 build/dstalk-cli/dstalk-cli.exe。
|
||
验证: clean rebuild 后仅 build/bin/dstalk-cli.exe 存在,ctest 4/4 pass。
|
||
rating: done
|
||
- date: 2026-05-27
|
||
event: "W15.6: 验证 check_agents_metadata.py 运行结果 + 集成分析 + YAML 解析确认"
|
||
detail: >
|
||
运行结果: default/json 模式 0 error 1 warning (audits/ 目录无 profile.md, 假阳性);
|
||
--strict 模式 exit code 2 (warning 升格为 error)。
|
||
YAML 验证: engineer-sun + security-cao 的 profile.md 均被 yaml.safe_load 正确解析。
|
||
集成建议: refresh_status.py 可 import 调用 check 函数作为前置门禁, 发现 error 时拒绝生成 STATUS.md。
|
||
WORKFLOW.md §5 缺少元数据自查项, 建议新增 "每波开始前运行 check_agents_metadata.py"。
|
||
rating: done
|
||
- date: 2026-05-27
|
||
event: "W15.9: 修复 check_agents_metadata.py 假阳性 warning + 更新 WORKFLOW.md §5"
|
||
detail: >
|
||
Fix 1: check_agents_metadata.py 目录扫描跳过 agents/audits/ (非 agent 目录),将所有
|
||
`child.name == 'groups'` 改为 `child.name in ('groups', 'audits')`。
|
||
Fix 2: WORKFLOW.md §5 新增 "元数据完整性" 条目,要求每波开始前运行 check_agents_metadata.py 验证。
|
||
Fix 3: 修复后运行 0 errors 0 warnings,5 checks passed。
|
||
rating: done
|
||
- date: 2026-05-27
|
||
event: "W15.3: 设计 agents/ 目录元数据自检机制 (scripts/check_agents_metadata.py)"
|
||
detail: >
|
||
修复自身 profile.md YAML 格式错误 (perf_log 条目被误放在 current_groups: [] 之后)。
|
||
创建 5 项自检: C1 YAML 解析合法性、C2 rating 值范围、C3 current_groups -> group 引用完整性、
|
||
C4 group members -> agent 引用完整性、C5 重复 ID 检测 + 目录名一致性。
|
||
首轮运行发现 engineer-sun + security-cao 的 profile.md 存在同类 YAML 错误 (各 2 条目 orphan)。
|
||
建议集成到 refresh_status.py 作为前置检查,并加入 WORKFLOW.md §5 CEO 自查清单。
|
||
rating: done
|
||
- date: 2026-05-27
|
||
event: "W16.4: 将 check_agents_metadata.py 的 5 项检查集成为 refresh_status.py 前置门禁"
|
||
detail: >
|
||
refresh_status.py 新增 import check_agents_metadata 5 个 check 函数 (L28-35)。
|
||
main() 扫描 profiles 前执行全部 5 项检查 (L401-432): 有 error 时打印详情 exit 1 拒绝生成 STATUS.md,
|
||
仅有 warning 时打印告警继续执行, 全部通过时打印 OK 继续。
|
||
测试: 正常场景 0 error 0 warning 生成 STATUS.md; 故意破坏 qa-xu/profile.md 的 --- 分隔符后 exit 1 且
|
||
STATUS.md 未被覆盖; 修复后恢复正常。
|
||
rating: done
|
||
- date: 2026-05-27
|
||
event: "W18.4 CI 双平台构建矩阵 + 构建时间基线 (协作者)"
|
||
detail: >
|
||
审查并确认 CI 跨平台兼容性: cmake_layout 下 conan_toolchain.cmake 路径为
|
||
build/Release/conan_toolchain.cmake;ci-release preset 使用 ${sourceDir} 宏引用。
|
||
Ninja generator 在 Ubuntu 和 Windows 均可使用;ccache 作为 CMAKE_COMPILER_LAUNCHER
|
||
在 clang/clang-cl 下兼容。OpenSSL conan 包在双平台下均有预编译二进制,
|
||
无需本地编译。buildPreset jobs: 0 利用全部可用 CPU 核数。
|
||
rating: done
|
||
- date: 2026-05-27
|
||
event: "W19.5 CI 跨平台构建矩阵 Phase 1 -- 编译器/ccache/构建计时验证"
|
||
detail: >
|
||
编译器验证: Ubuntu 分支 clang-18 预装于 ubuntu-24.04 runner,CC/CXX 通过 $GITHUB_ENV
|
||
设置后传递给 conan install 和 CMake。Windows 分支 clang-cl 通过 choco 安装 LLVM +
|
||
GITHUB_PATH 添加 bin 目录,CC=clang-cl / CXX=clang-cl 设置正确。
|
||
ccache 验证: CCACHE_DIR=${{ github.workspace }}/.ccache 大小 256M,actions/cache@v4
|
||
以 runner.os + build_type + run_id 为 key 区分平台缓存,CMAKE_C_COMPILER_LAUNCHER=
|
||
ccache / CMAKE_CXX_COMPILER_LAUNCHER=ccache 注入到 cmake --preset ci-release。
|
||
Ninja generator + buildPreset jobs:0 (全核) 已验证双平台兼容。
|
||
构建计时: steps.build.outputs.duration 从 date +%s 差值计算,输出到 GITHUB_STEP_SUMMARY
|
||
markdown 表格格式正确。ci-release preset 工具链: ${sourceDir}/build/Release/conan_toolchain.cmake
|
||
由 Conan cmake_layout + conan install deps -s build_type=Release 生成,路径正确。
|
||
rating: done
|
||
- date: 2026-05-27
|
||
event: "W20.5: 配置 ASan/UBSan 构建 preset 并集成到 CI"
|
||
detail: >
|
||
CMakePresets.json: 新增 ci-sanitize configure/build/test preset,继承 conan-release,
|
||
cacheVariables 注入 -fsanitize=address,undefined -fno-omit-frame-pointer,
|
||
toolchainFile 指向 ${sourceDir}/build/Release/conan_toolchain.cmake,
|
||
binaryDir 设为 ${sourceDir}/build/ci-sanitize。
|
||
修复 conan-release: toolchainFile 从 generators\conan_toolchain.cmake
|
||
改为 ${sourceDir}/build/build/Release/generators/conan_toolchain.cmake,
|
||
binaryDir 从 E:\... 硬编码改为 ${sourceDir}/build/build/Release。
|
||
ci.yml: 新增 sanitize job (PR-only, ubuntu-24.04, clang-18, 禁用 ccache),
|
||
含 configure/build/ctest 三步。
|
||
验证: cmake --build build --config Release 0 error,
|
||
ctest --test-dir build 5/5 pass。
|
||
rating: done
|
||
- date: 2026-05-27
|
||
event: "W21.1: 修复 ci-sanitize preset 编译器冲突 + 新增 ci-threadsan"
|
||
detail: >
|
||
根因: ci-sanitize 继承 conan-release,后者 CMAKE_C_COMPILER/CXX=cl (MSVC),
|
||
但 -fsanitize=address,undefined 是 clang/GCC flag,CI 运行在 ubuntu-24.04+clang-18,
|
||
编译器覆盖冲突导致 sanitizer 行为不可预测。
|
||
修复: ci-sanitize 改为独立 preset (generator Ninja + toolchainFile
|
||
${sourceDir}/build/Release/conan_toolchain.cmake + CMAKE_C_COMPILER=clang-18
|
||
+ CMAKE_CXX_COMPILER=clang++-18 + flags -fsanitize=address,undefined
|
||
-fno-omit-frame-pointer)。新增 ci-threadsan (TSan)。
|
||
验证: cmake --list-presets 4 个全部解析通过,Release 构建 cmake --build build --config Release
|
||
8/8 0 error,ctest 6/6 pass。
|
||
rating: done
|
||
current_groups: []
|
||
---
|