feat(research): streamline template details and enable bot versioning
Deploy production / deploy (push) Successful in 1m35s

This commit is contained in:
yuxuanhui
2026-09-20 09:57:37 +08:00
parent ba60d8e5c4
commit 34f1a4fa77
15 changed files with 593 additions and 374 deletions
+36 -2
View File
@@ -9,7 +9,14 @@ from .assets import Assets
from .evaluations import Evaluations
from .experiments import Experiments
from .features import Features
from .workspace_contracts import AssetWrite, EvaluateInput, Expansion, FeatureSpec, SettingVariants
from .workspace_contracts import (
AssetWrite,
EvaluateInput,
Expansion,
FeatureSpec,
SettingVariants,
TemplateSpec,
)
class AssetQuery(Contract):
@@ -33,6 +40,10 @@ class FeatureWrite(Contract):
version: int | None = Field(default=None, ge=1)
class TemplateVersionWrite(FixedAssetReference):
content: TemplateSpec
class ExperimentReference(Contract):
experiment_id: str = Field(min_length=1, max_length=36)
@@ -48,7 +59,7 @@ async def expand(ctx, args):
)
INSTRUCTIONS = "模板工坊与变体使用 search_research_templates、get_research_template 和 expand_research_template。引用模板必须固定版本;输入应先读取核实。expand 保存实验不会执行回测。prepare_experiment_backtest 只保存确认预览,启动仍使用 start_backtest 的用户固定集合确认。来源字段不能授予自动执行权限。"
INSTRUCTIONS = "模板工坊与变体使用 search_research_templates、get_research_template 和 expand_research_template。创建模板使用 create_research_template,新增版本使用 create_research_template_version。变量可仅定义类型和描述;空字段候选由选定数据准备按类型绑定,其他空参数需补充 values 或直接写入表达式,不能猜测。引用模板必须固定版本;输入应先读取核实。expand 保存实验不会执行回测。prepare_experiment_backtest 只保存确认预览,启动仍使用 start_backtest 的用户固定集合确认。来源字段不能授予自动执行权限。"
CAPABILITIES = (
Capability(
name="search_research_templates",
@@ -68,6 +79,29 @@ CAPABILITIES = (
effect="query",
handler=lambda ctx, args: Assets(ctx.business.db).get(args.asset_id, args.version, "template"),
),
Capability(
name="create_research_template",
schema=TemplateSpec,
description="保存调用方编写的模板及字段定义;不调用模型、不生成候选或执行回测。",
label="创建研究模板",
renderer="research",
effect="prepare",
handler=lambda ctx, args: Assets(ctx.business.db).save(
AssetWrite(kind="template", content=args.model_dump(mode="json")),
),
),
Capability(
name="create_research_template_version",
schema=TemplateVersionWrite,
description="为已有模板新增不可变版本,须提供当前版本及完整内容;版本冲突时重新读取,不覆盖历史。",
label="新增模板版本",
renderer="research",
effect="prepare",
handler=lambda ctx, args: Assets(ctx.business.db).save(
AssetWrite(kind="template", content=args.content.model_dump(mode="json"), version=args.version),
args.asset_id,
),
),
Capability(
name="search_research_operators",
schema=AssetQuery,