# 发布说明 v0.7.1（代码审查整改）

[← 返回 README](../README.zh.md) ｜ 相关：[审查记录](../code-review/review-feat-adapt-dsh-0.2.0-rc.2.zh.md) ·
[v0.7.0 发布说明](v0.7.0.md) ·
[dsh 0.2.0-rc.2 适配记录](../design/adaptation-dsh-0.2.0-rc.2.md)

**发布日期**：2026-09-30 ｜ **区间**：`v0.7.0 → v0.7.1`
**宿主**：dsh `0.2.0` 线（从 `0.2.0-rc.2` 起），与 v0.7.0 相同；纯补丁版，配置口径与装载语义不变。

v0.7.1 只落地 [feat/adapt-dsh-0.2.0-rc.2 代码审查](../code-review/review-feat-adapt-dsh-0.2.0-rc.2.zh.md)
的意见：一处可靠性修复、一处死代码清理、两条回归测试，以及不改变语义的小重构。

---

## 亮点速览

| 主题 | 一句话 |
|---|---|
| 后台任务失败可见 | 所有不 await 的入队统一走 `schedule()`，失败记一条 warn（原先完全静默） |
| 死导出 | 删除无人引用的 `DEFAULT_MAX_INSTRUCTION_BYTES`，避免与上游默认漂移 |
| 回归测试 | 覆盖 `agent/created`（`source: "resume"`）事件路径与「连接字段变更必拆连接」的装载计划 |
| 小重构 | 抽 `enqueueDiag()`、放宽 `enqueue()` 签名；配置指纹的 `stat` 并发发起 |

---

## 变更明细

- **后台入队（审查 S1 / Sonar S9383）**：构造函数的 `agent/created`、`agent/disposed`
  与插件热更补扫三处，加上文件事件 `kick`、宽限卸载 timer、`kickSweep`，全部改走新的
  `schedule()`——`enqueue()` 的返回值不再被丢弃，失败会记一条
  `项目 MCP 后台任务失败：<原因>`。此前这类失败被链路完全吞掉：对账没跑成，日志里
  什么也看不到。诊断落盘（fiber settle 后的 `active` / `failed`）仍走独立的
  `enqueueDiag()`：同样排回对账链，但按最佳努力静默失败。
- **死代码（审查 B1）**：删掉 `DEFAULT_MAX_INSTRUCTION_BYTES`。「缺省不写键、让官方
  默认值生效」的口径由字段注释与四处输出（官方配置 / 受管行 / view / JSON 条目）的
  测试固定，不需要再在本地留一份 32768。
- **回归测试（审查 B2、B3）**：新增两条用例——
  `agent/created` 带 `source: "resume"` 时补扫并挂载会话项目，且对被自己项目行遮蔽的
  全局实例应用 deny（项目侧压制展开成精确工具名）；`planProjectChanges` 在
  `maxInstructionBytes` 这类连接字段变化时产出 unmount → mount，而 `tools` 变化不拆连接。
- **小重构（审查 S7503、S9381、S9382）**：`enqueue()` 签名放宽为 `() => T | Promise<T>`，
  `serverView()` / `snapshot()` 去掉只为满足签名的 `async`；`trackMount` 的 fiber settle
  回调改调 `enqueueDiag()`，消掉嵌套 Promise；配置指纹的逐文件 `stat` 改 `Promise.all`
  并发发起（签名仍按排序后的路径逐条拼接，结果与串行一致）。

## 验证

`tsc --noEmit` 通过；六套测试全绿（model 33 / mcp-file 7 / json-file 13 /
json-write 6 / registry 48 / cli 21，registry 比 v0.7.0 多两条新用例）。