实验目标
我们不先问“怎样把 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_request、JobManager 和报告模块。
一次完整运行
用户提出研究目标
↓
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。这样即使模型请求重试,也不会重复启动昂贵实验。
如何做对照实验
至少比较三组实现:
- 人工使用现有工作台;
- 一个针对该任务编写的轻量 loop;
- DSH 加同一组工具。
使用相同任务集和失败注入,例如非法参数、缺失数据、worker 中断、模型超时和重复请求。记录:
- 任务完成率与结果引用正确率;
- 非法实验被拦截的比例;
- 需要人工干预的次数;
- 中断后的恢复成功率和重复任务数;
- 工具调用数、token、延迟和机器成本;
- 实现代码量、升级负担和排障时间。
Harness 的价值不能用“回答看起来更聪明”衡量。只有它在恢复、审计、扩展或维护上持续胜过轻量方案,才值得保留。
分阶段实施
第一阶段只做只读 Agent:列数据、读历史报告、解释比较结果。第二阶段开放 validate_experiment,让模型提出但不能执行。第三阶段才在人工批准后启动有上限的回测。每一阶段都可以独立停止。
如果 DSH API 变化过快、状态排查更困难,或真正需要的只是一次报告摘要,就撤掉 adapter,保留原系统。可撤回不是悲观设计,而是让技术选择接受证据检验。
最终判定
这个实验值得做,但不应现在就被称为“集成方案”。它验证的是 DSH 作为外层研究 Harness 的能力边界。量化核心继续提供可复现事实,DSH 负责把一个开放目标拆成受控动作。
只有当多轮自主决策确实成为产品需求,而且测试数据证明通用 Harness 优于简单实现,才进入更深的工程结合。