W20: Tool Calling 闭环 + Stream+Tools + 回归测试 + session auto-save + ASan CI (W20.1-W20.6)
- W20.1: CLI tool_calls→execute→result→re-call 循环(5轮上限) - W20.2: deepseek 流式 tool_calls 增量解析(configure 缓存,无 ABI break) - W20.3: plugin_loader 回归测试 5 块 32 断言(路径/原子性/mock 日志) - W20.4: plugin_loader ABI 契约校验(name/version/on_init 字段验证) - W20.5: ASan/UBSan CMake preset + CI sanitizer job(PR-only Linux) - W20.6: session auto-save(on_shutdown 写 %APPDATA%/dstalk/session.json) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
64
.github/workflows/ci.yml
vendored
64
.github/workflows/ci.yml
vendored
@@ -160,3 +160,67 @@ jobs:
|
||||
echo "|----------|----------|-----------|" >> $GITHUB_STEP_SUMMARY
|
||||
echo "| ${{ matrix.os }} | ${{ (runner.os == 'Linux' && 'clang-18') || 'clang-cl' }} | ${DURATION}s |" >> $GITHUB_STEP_SUMMARY
|
||||
echo "CI build: ${{ matrix.os }} / ${{ (runner.os == 'Linux' && 'clang-18') || 'clang-cl' }} wall time ${DURATION}s"
|
||||
|
||||
# ── Sanitizer (PR-only, Linux clang-18, no ccache) ───────
|
||||
sanitize:
|
||||
name: Sanitizer (ASan+UBSan) / ubuntu-24.04
|
||||
if: github.event_name == 'pull_request'
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
steps:
|
||||
# ── 1. 源码检出 ──────────────────────────────────────
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
# ── 2. 工具链 (clang-18) ─────────────────────────────
|
||||
- name: Install toolchain (Ubuntu)
|
||||
run: |
|
||||
sudo apt-get update -qq
|
||||
sudo apt-get install -y -qq clang-18 ninja-build
|
||||
echo "CC=clang-18" >> $GITHUB_ENV
|
||||
echo "CXX=clang++-18" >> $GITHUB_ENV
|
||||
|
||||
# ── 3. Python + Conan ─────────────────────────────────
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.12'
|
||||
|
||||
- name: Install Conan
|
||||
run: pip install conan
|
||||
|
||||
# ── 4. Conan 依赖缓存 ─────────────────────────────────
|
||||
- name: Cache Conan
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.conan2
|
||||
~/.conan2/p
|
||||
key: ${{ runner.os }}-conan-Release-${{ hashFiles('deps/conanfile.txt') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-conan-Release-
|
||||
${{ runner.os }}-conan-
|
||||
|
||||
# ── 5. Conan 依赖安装 ─────────────────────────────────
|
||||
- name: Install Conan dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
conan profile detect --force
|
||||
conan install deps --build=missing -s build_type=Release
|
||||
|
||||
# ── 6. CMake 配置 ─────────────────────────────────────
|
||||
- name: Configure CMake (Sanitizer)
|
||||
shell: bash
|
||||
run: cmake --preset ci-sanitize
|
||||
|
||||
# ── 7. 构建 ───────────────────────────────────────────
|
||||
- name: Build (Sanitizer)
|
||||
shell: bash
|
||||
run: cmake --build --preset ci-sanitize
|
||||
|
||||
# ── 8. 测试 ──────────────────────────────────────────
|
||||
- name: Test (Sanitizer)
|
||||
shell: bash
|
||||
run: ctest --preset ci-sanitize --output-on-failure
|
||||
|
||||
Reference in New Issue
Block a user