实验目标

我们不先问“怎样把 a-stock-strategy 改造成 DSH 项目”,而问一个更可验证的问题:

DSH 能否在不侵入量化核心的前提下,可靠完成一项多轮策略研究,并且比人工操作或轻量 loop 更省力?

因此 PoC 必须可撤回。移除 DSH 后,原有 CLI、Web 工作台、异步任务和报告仍然能够独立运行。

选一个真正需要循环的任务

测试任务可以是:比较固定科创 50 ETF 与动态横截面排名策略,在两组滑点、两种持有期和指定数据集上的表现,遇到无效实验时解释原因,并给出基于报告的研究摘要。

这个任务同时包含计划、校验、多个异步作业、轮询、比较和异常处理,足以测试 Harness;但搜索空间有限,不会让模型无限追加实验。

只开放七个窄工具

list_datasets()                 列出可用数据及时间范围
list_strategies()               列出策略和参数契约
validate_experiment(request)    校验但不执行
run_backtest(request)           创建异步任务,返回 job_id
get_job_status(job_id)          查询状态和失败原因
compare_runs(run_ids)           生成确定性比较结果
read_report(run_id)             读取报告与 provenance

第一版不开放 shell、任意文件写入、数据下载、源码修改和动态 Python 执行。Harness 通过 HTTP、MCP 或受控 CLI adapter 使用这些工具;工具内部仍调用现有 DatasetRepository、strategy registry、validate_requestJobManager 和报告模块。

一次完整运行

用户提出研究目标
  ↓
Agent 查询数据集与策略契约
  ↓
生成有上限的实验计划
  ↓
逐项 validate_experiment
  ↓
向用户展示成本与参数,等待批准
  ↓
run_backtest → job_id
  ↓
轮询状态;失败时读取结构化原因
  ↓
compare_runs + read_report
  ↓
引用 run_id、数据 hash 和指标生成结论
  ↓
达到预算或回答目标后终止

模型可以决定调用顺序和是否需要在预算内补做实验,但不能修改工具返回值。最终文字中的每个量化结论都应指向具体 run_id 和报告字段。

把护栏放在业务边界

系统提示不能承担全部安全责任。真正的限制必须由工具和应用层执行:

  • validate_experiment 限制策略、参数范围、数据集和实验数量;
  • run_backtest 只接受通过 schema 校验的请求,并使用幂等键防止重复提交;
  • 并发数、时间、token 和实验总数都有硬预算;
  • 有副作用的动作在执行前要求明确批准;
  • 报告由确定性引擎生成,模型只有读取权限;
  • 取消后要等待 worker 收敛,不能只把 Session 标记为停止。

明确禁止模型修改历史数据、重写回测结果、绕过校验、连接券商或自动下单。这个 PoC 是研究编排实验,不是交易 Agent。

避免两套状态互相争夺

DSH 的 Session event 记录模型看到什么、为什么调用工具以及用户批准了什么;a-stock-strategy 的任务库记录 job 状态、输入 hash、冻结代码和报告路径。两边通过 job_id / run_id 关联,但不复制对方的权威状态。

恢复时,Harness 重新读取任务状态,而不是重放 run_backtest。若同一个幂等键已经存在,应用层返回原 job。这样即使模型请求重试,也不会重复启动昂贵实验。

如何做对照实验

至少比较三组实现:

  1. 人工使用现有工作台;
  2. 一个针对该任务编写的轻量 loop;
  3. DSH 加同一组工具。

使用相同任务集和失败注入,例如非法参数、缺失数据、worker 中断、模型超时和重复请求。记录:

  • 任务完成率与结果引用正确率;
  • 非法实验被拦截的比例;
  • 需要人工干预的次数;
  • 中断后的恢复成功率和重复任务数;
  • 工具调用数、token、延迟和机器成本;
  • 实现代码量、升级负担和排障时间。

Harness 的价值不能用“回答看起来更聪明”衡量。只有它在恢复、审计、扩展或维护上持续胜过轻量方案,才值得保留。

分阶段实施

第一阶段只做只读 Agent:列数据、读历史报告、解释比较结果。第二阶段开放 validate_experiment,让模型提出但不能执行。第三阶段才在人工批准后启动有上限的回测。每一阶段都可以独立停止。

如果 DSH API 变化过快、状态排查更困难,或真正需要的只是一次报告摘要,就撤掉 adapter,保留原系统。可撤回不是悲观设计,而是让技术选择接受证据检验。

最终判定

这个实验值得做,但不应现在就被称为“集成方案”。它验证的是 DSH 作为外层研究 Harness 的能力边界。量化核心继续提供可复现事实,DSH 负责把一个开放目标拆成受控动作。

只有当多轮自主决策确实成为产品需求,而且测试数据证明通用 Harness 优于简单实现,才进入更深的工程结合。