🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

自动研究循环 EveGoodEvening/dsh-autoresearch

DeepSeek Harnessv0.1.6
EveGoodEvening62 天前有提交已提供中文文档扫描:含敏感能力

在隔离工作区自动迭代实验并保留更优结果

29/100
综合分
1
GitHub 星标
563
npm 周下载
—/5
用户评分

数据截至 2026/9/20 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-autoresearch
npm 源 · dsh-autoresearch 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · security
装得上吗
静态安装检查通过
未做真实安装
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 62 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-autoresearch @ 0.1.6
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/23 13:47:08

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 67 处,展示前 54 条)
  • 读取本地文件
    lib/evaluator-artifacts.js:21
    const info = lstatSync(directory);
  • 写入本地文件
    lib/evaluator-artifacts.js:59
    writeFileSync(fd, bytes);
  • 读取本地文件
    lib/evaluator-artifacts.js:72
    const info = lstatSync(this.parent.path);
  • 读取本地文件
    lib/evaluator-artifacts.js:79
    const canonical = statSync(this.parent.path);
  • 读取本地文件
    lib/evaluator-artifacts.js:85
    const before = lstatSync(path);
  • 读取本地文件
    lib/evaluator-artifacts.js:93
    const bytes = readFileSync(fd);
  • 读取本地文件
    lib/evaluator-artifacts.js:94
    const after = lstatSync(path);
  • 读取本地文件
    lib/evaluator.js:54
    const stat = boundaryFilesystemRead(() => statSync(canonical));
  • 读取本地文件
    lib/evaluator.js:349
    const stat = boundaryFilesystemRead(() => statSync(canonical));
  • 读取本地文件
    lib/evaluator.js:375
    const stat = boundaryFilesystemRead(() => statSync(canonical));
  • 读取本地文件
    lib/evaluator.js:383
    const stat = boundaryFilesystemRead(() => statSync(canonical));
  • 读取本地文件
    lib/evaluator.js:398
    const bytes = boundaryFilesystemRead(() => readFileSync(fd));
  • 读取本地文件
    lib/evaluator.js:435
    if (boundaryFilesystemRead(() => lstatSync(current)).isSymbolicLink())
  • 读取本地文件
    lib/git.js:96
    const [canonicalParent, canonicalRequested] = await Promise.all([realpath(rawParent), realpath(rawRequested)]);
  • 读取本地文件
    lib/git.js:97
    const [parentFacts, requestedFacts] = await Promise.all([stat(canonicalParent), stat(canonicalRequested)]);
  • 读取本地文件
    lib/git.js:117
    const callerCwd = await realpath(resolve(requestedPath));
  • 读取本地文件
    lib/git.js:121
    const gitCommonDir = await realpath(isAbsolute(commonRaw) ? commonRaw : resolve(callerCwd, commonRaw));
  • 读取本地文件
    lib/git.js:289
    const [canonicalWorktree, canonicalCaller, canonicalRepository] = await Promise.all([realpath(resolve(identity.worktree)), realpath(resolve(discovery.
  • 读取本地文件
    lib/git.js:292
    const before = await stat(canonicalWorktree);
  • 删除本地文件递归
    lib/git.js:330
    await rm(directory, { recursive: true, force: true });
  • 删除本地文件递归
    lib/git.js:412
    await rm(directory, { recursive: true, force: true });
  • 删除本地文件递归
    lib/git.js:813
    await rm(directory, { recursive: true, force: true });
  • 读取本地文件
    lib/recovery.js:532
    const before = lstatSync(path);
  • 读取本地文件
    lib/recovery.js:547
    return readFileSync(fd);
  • 写入本地文件
    lib/tracker.js:75
    chmodSync(safePath, 0o600);
  • 删除本地文件递归
    lib/tracker.js:115
    const tracker = new DurableTracker(safePath, database, layout, () => rmSync(snapshotRoot, { recursive: true, force: true }));
  • 删除本地文件递归
    lib/tracker.js:125
    rmSync(snapshotRoot, { recursive: true, force: true });
  • 写入本地文件
    lib/tracker.js:588
    writeFileSync(descriptor, body, { encoding: 'utf8' });
  • 写入本地文件
    lib/tracker.js:594
    renameSync(temporary, destination);
  • 写入本地文件
    lib/tracker.js:595
    chmodSync(destination, 0o600);
  • 删除本地文件
    lib/tracker.js:606
    unlinkSync(temporary);
  • 读取本地文件
    lib/tracker.js:992
    const bytes = readFileSync(fd);
  • 读取本地文件
    lib/tracker.js:1027
    bytes = readFileSync(fd);
  • 读取本地文件
    lib/tracker.js:1037
    const beforeDelete = lstatSync(artifact.path);
  • 删除本地文件
    lib/tracker.js:1040
    unlinkSync(artifact.path);
  • 读取本地文件
    lib/tracker.js:1055
    const beforeDelete = lstatSync(path);
  • 删除本地文件
    lib/tracker.js:1058
    unlinkSync(path);
  • 读取本地文件
    lib/tracker.js:1075
    const info = lstatSync(current);
  • 删除本地文件
    lib/tracker.js:1078
    rmdirSync(current);
  • 读取本地文件
    lib/tracker.js:1097
    return lstatSync(path);
  • 写入本地文件
    lib/tracker.js:1232
    writeFileSync(snapshotPath, bytes, { mode: 0o400, flag: 'wx' });
  • 执行外部命令来自配置/变量
    lib/tracker.js:1262
    const result = spawnSync(process.execPath, ['-e', SQLITE_BACKUP_PROGRAM, path, snapshotPath, String(TRACKER_BUSY_TIMEOUT_MS)], {
  • 读取本地文件
    lib/retention.js:30
    for (const entry of readdirSync(runs.root, { withFileTypes: true })) {
  • 读取本地文件
    lib/retention.js:124
    lstatSync(path);
  • 写入本地文件
    lib/state-layout.js:12
    mkdirSync(absolute, { recursive: true, mode: 0o700 });
  • 读取本地文件
    lib/state-layout.js:13
    const info = lstatSync(absolute);
  • 写入本地文件
    lib/state-layout.js:20
    chmodSync(absolute, 0o700);
  • 读取本地文件
    lib/state-layout.js:26
    const info = lstatSync(absolute);
  • 写入本地文件
    lib/state-layout.js:40
    mkdirSync(destination, { mode: 0o700 });
  • 写入本地文件
    lib/state-layout.js:42
    chmodSync(destination, 0o700);
  • 写入本地文件
    lib/state-layout.js:62
    mkdirSync(destination, { mode: 0o700 });
  • 写入本地文件
    lib/state-layout.js:94
    chmodSync(path, 0o600);
  • 读取本地文件
    lib/state-layout.js:125
    const info = lstatSync(path);
  • 读取本地文件
    lib/state-layout.js:136
    lstatSync(path);
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/cordis-plugin-group@deepseek-ai/cordis-plugin-hmr@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-presets@deepseek-ai/dsh-anonymous-user-id@deepseek-ai/dsh-app-boot@deepseek-ai/dsh-atomic-write
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 隔离工作区迭代实验
  • 保留更优结果

README

由 DeepSeek 最新模型翻译生成
dsh-autoresearch 面向 DeepSeek Harness 的有界、指标驱动的自动研究插件。 dsh-autoresearch 为 DeepSeek Harness agent 提供单一工具 —— autoresearch —— 它在隔离的 Git worktree 内运行一个基线优先、有界的保留/拒绝优化循环。 该设计灵感来自 Karpathy 的 autoresearch:一种提议 → 编辑 → 运行 → 度量 → 保留/回退的搜索,其中编码 agent 提出候选方案,而固定的机械指标作为事实来源。受信任的 Host 配置选择评估器;Host 代码负责评估、指标决策、持久化、取消和恢复。提议模型不能提交评估器命令、指标定义、数据集权威或评估器环境。 - 单一标量指标。 针对已度量基线的严格 minimize / maximize 改进;没有隐藏的平局决胜规则或单独的复杂度评分。 - Host 选择的评估器。 新运行通过 evaluator_id 指定一个部署注册;不可变的 argv、指标、环境、评估器文件和数据集身份会被持久化,并在基线、候选和恢复时重新校验。 - 狭窄的可变表面。 只有 mutable_globs 路径可以更改;已注册的评估器和本地数据集文件即使在宽泛的 glob 下也保持受保护。 - 持久化的 SQLite 证据。
展开完整文档(README 剩余 1 节)
dsh-autoresearch

面向 DeepSeek Harness 的有界、指标驱动的自动研究插件。

dsh-autoresearch 为 DeepSeek Harness agent 提供单一工具 —— autoresearch —— 它在隔离的 Git worktree 内运行一个基线优先、有界的保留/拒绝优化循环。

该设计灵感来自 Karpathy 的 autoresearch:一种提议 → 编辑 → 运行 → 度量 → 保留/回退的搜索,其中编码 agent 提出候选方案,而固定的机械指标作为事实来源。受信任的 Host 配置选择评估器;Host 代码负责评估、指标决策、持久化、取消和恢复。提议模型不能提交评估器命令、指标定义、数据集权威或评估器环境。

- 单一标量指标。 针对已度量基线的严格 minimize / maximize 改进;没有隐藏的平局决胜规则或单独的复杂度评分。
- Host 选择的评估器。 新运行通过 evaluator_id 指定一个部署注册;不可变的 argv、指标、环境、评估器文件和数据集身份会被持久化,并在基线、候选和恢复时重新校验。
- 狭窄的可变表面。 只有 mutable_globs 路径可以更改;已注册的评估器和本地数据集文件即使在宽泛的 glob 下也保持受保护。
- 持久化的 SQLite 证据。 每次运行、实验、尝试和有界产物记录都经过状态转换检查并绑定哈希。
- 默认后台作业。 运行是 dsh-jobs 后台作业;使用通用作业工具检查或停止它们。
- 故障关闭式恢复。 恢复会在变更或生成评估器之前,协调持久化的 Host 证据。

要求

- Node.js ^22.19.0 || >=24.0.0(使用 node:sqlite)
- pnpm 11.7.0
- DeepSeek Harness 0.1.1-rc.2;此开发者预览集成会针对每个受支持的 DSH 版本重新测试并重新固定。
- Host 必须提供 agents、jobs、subprocess、systemPrompt 和 tools。后台模式还要求调用 Agent 挂载 dsh-tool-jobs;Web standard Agent 预设以及 base/headless 组合都会这样做。不需要 Host 全局的 job_ 工具。

自动接管因 Host 异常死亡而遗留的控制器声明,需要 Linux /proc//stat 启动令牌证据。正常受管执行并未声明仅限 Linux,但在非 Linux 系统上,过期声明会保守地保持阻塞;仅凭租约到期并不能证明其所有者已死亡。

安装

通过 DSH 的 profile 插件管理器安装已发布的包:

dsh plugin --profile add dsh-autoresearch
dsh --profile --dump-config

dsh plugin 会将包规格转发给所选 profile 内的 pnpm,然后将声明了 dsh.bundle 的已安装包添加到该 profile 的有序 bundle 列表中。单纯的 pnpm add 不会执行该 DSH 协调。
对于从当前检出进行类似发布的安装,请构建并安装由 pnpm pack 生成的产物(文件名由 package.json 派生):

pnpm install --frozen-lockfile
TARBALL=$(pnpm pack --silent)
dsh plugin --profile add "./$TARBALL"
dsh --profile --dump-config

对于本地开发,改为安装指向已构建检出的链接:

pnpm install --frozen-lockfile
pnpm run build
dsh plugin --profile add .
dsh --profile --dump-config

DSH 会将诸如 . 和 pnpm pack 输出的路径等相对文件系统规格锚定到你调用 dsh 时所在的目录。配置转储应包含 id: autoresearch 和 name: dsh-autoresearch。

该包附带一个 Cordis 补丁行(cordis.patch.yml),通过 package.json 中的 dsh.bundle.patch 声明。DeepSeek Harness 的树外功能以可选加入的 bundle 形式发布:稳定补丁会插入一个普通的 Cordis 插件行,其配置会被整体替换,而非深度合并,因此你想要的每个默认值都必须在补丁行中显式声明。

工作原理

┌─────────────┐ proposal ┌──────────────────┐ evaluator id ┌──────────────────┐
│ proposal │ ─────────► │ AutoresearchRun │ ─────────────► │ Host registration│
│ agent │ ◄───────── │ Controller │ ◄───────────── │ + managed argv │
└─────────────┘ memory └────────┬─────────┘ metric └──────────────────┘
│ persist
▼
┌──────────────────┐
│ DurableTracker │ SQLite; current schema authority:
└──────────────────┘ TRACKER_SCHEMA_VERSION in src/tracker.ts

1. 基线。 控制器检出不可变的起始提交,解析 Host 注册,为已注册的本地评估器/数据集文件派生哈希,并测量基线。无基线 → baseline-blocked。
2. 提议。 一个被委派的提议 agent(继承的工具:read、write、edit、glob、grep)仅编辑 mutable_globs,并提交一条有界的、不受信任的注解。后续的提议提示会收到有界的研究记忆:截断的子假设/摘要,加上 Host 派生的提交、变更路径/差异统计、指标、决策和失败事实——而非完整日志或补丁。仅精确配置的机密值会被脱敏;所有子注解仍必须被视为可能敏感的不可信数据。
3. 评估。 检出候选提交,并通过托管的 ctx.subprocess 提供程序运行已注册的无 shell argv。对于每次尝试,不可变的注册以及运行创建时的评估器/本地数据集清单会在提供程序启动前后立即重新验证。
4. 决定。 配置的标量指标相对于当前最佳值严格改进 → accept;否则 reject。constraints 是不可变的、哈希绑定的提案指导。它们不是 Host 强制执行的简单性标准、复杂度字段、权威报告字段或接受平局决胜项。将所需的简单性编码到受信任的评估器/目标或可变路径策略中。
5. 继续或停止。 已证实的静默候选超时、非零退出、信号、输出限制失败、指标协议失败或提供程序生成失败会被记录,消耗该候选序号,恢复已接受的工作树,并允许下一个有界候选。基线失败、取消、不确定的进程状态、策略/来源/注册违规、持久化或 Git 矛盾以及耗尽的恢复重跑会停止或阻止运行。
6. 持久化与重放。 每次转换都会写入 SQLite 跟踪器。取消会记录并重放取消前的精确运行状态(lastState)和规范谱系;恢复不会推断替代的起始状态。

运行时权威位于 AutoresearchRunController(src/controller.ts);它组合了现有的 agents、jobs、subprocess、systemPrompt 和 tools 服务——没有单独的工作流引擎或子代理服务。

信任与隔离边界

Host 选择的评估器注册和受管理的 DSH 子进程提供程序是受信任的。插件管理精确的 argv、封闭的评估器环境、有界的 stdout/stderr 捕获、每次尝试的墙钟超时、取消、进程树终止和静默检查。它不使用单独的 DSH 沙箱接缝,也不提供针对恶意代码的文件系统、进程、同 UID、权限或网络隔离。隔离的 Git 工作树保护仓库状态;它不是操作系统安全边界。

不要基于此插件的强度运行恶意的评估器或候选代码。需要该属性的部署必须单独选择并验证外部沙箱或只读执行提供程序。对该更广泛威胁模型的一手支持需要明确的产品变更,定义并测试沙箱/部署契约。

超时是安全看门狗,不是固定步数、轮次、CPU/GPU 时间、FLOPs 或精确的公平计算预算。可比较的计算方法属于受信任的评估器,并通过用于基线、候选和恢复的冻结注册保持一致。

autoresearch 工具

由 src/index.ts 中的 apply() 注册。默认作为后台作业运行;设置 mode: 'foreground' 以阻塞调用者直到完成。

| 参数 | 必需 | 描述 |
| repository | 否 | 仓库或 cwd;默认为发起代理的 cwd。 |
| objective | 是 | 不可变的优化目标。 |
| mutable_globs | 是 | 提案代理可以编辑的窄相对路径/glob。 |
| run_tag | 新运行 | 全新的 Git 安全排除标签;与 evaluator_id 一起为必填项,恢复运行时禁止使用。 |
| evaluator_id | 新运行 | 宿主提供的评估器注册 ID;与 run_tag 一起为必填项,恢复运行时禁止使用。 |
| resume_run_id | 恢复 | 持久化运行 ID;与 run_tag 和 evaluator_id 互斥。存储的注册信息和策略仍为权威来源。 |
| constraints | 否 | 不可变的、哈希绑定的建议性提案指导;不是接受规则。 |
| timeout_ms | 否 | 每次尝试的挂钟看门狗,受部署策略约束。 |
| max_experiments | 否 | 该运行的不可变候选上限;基线单独计算。 |
| target | 否 | 有限停止阈值。 |
| mode | 否 | 仅执行分派:background(默认)或 foreground;恢复运行时可以更改。 |

评估器命令、参数、cwd、环境、指标名称/方向、评估器文件以及数据集注册均属于 evaluatorRegistrations 下的部署配置;它们有意不出现在工具输入中。新运行会在恰好起始提交处冻结规范化注册信息,并对其隔离工作树中的本地文件进行哈希。本地数据集声明仓库文件;外部数据集提供算法限定的不可变摘要。如果当前宿主注册信息、持久化指纹或冻结字节不一致,恢复会在生成前以失败关闭方式终止。

输出 是带判别标签的 JSON:background(运行 + 作业已启动)、background-start-failed 或 foreground(完整运行结果)。运行结果包含 status、counts、best、artifacts 和阻塞项 evidence。

规范运行 JSON 的验证独立于 maxResultChars;该设置仅适用于渲染后和后台作业的呈现。

配置

Config 模式(src/config.ts)在部署时加载。默认值(也在 cordis.patch.yml 中):

| 键 | 默认值 | 含义 |
| gitExecutable | git | Git 二进制文件。 |
| stateRoot | dsh-autoresearch | 跟踪器 + 工作树状态目录。 |
| branchPrefix | autoresearch/ | 运行分支前缀(必须以 / 结尾)。 |
| defaultMaxExperiments | 20 | 默认候选上限;基线单独计算。 |
| maxExperiments | 100 | 配置的部署最大候选上限(随附默认值,并非通用代码常量)。 |
| maxHandoffChars | 16384 | 序列化有界研究记忆交接的最大值。 |
| defaultTimeoutMs | 900000 | 每次尝试 15 分钟挂钟看门狗。 |
| maxTimeoutMs | 3600000 | 每次尝试配置的最大看门狗。 |
| terminationGraceMs | 5000 | 终止评估器进程树前的宽限期。 |
| maxActiveRunsPerRepository | 1 | 每个仓库的并发运行上限。 |
| maxStdoutBytes / maxStderrBytes | 1048576 | 评估器输出捕获限制。 |
| maxResultChars | 16384 | 渲染工具和后台作业呈现限制;规范运行结果不受影响。 |
| artifactRetentionDays | 30 | 产物字节保留窗口,对安全终态运行惰性执行。 |
| retainFailedArtifacts | true | 如果为 false,在安全终态结算时清除失败尝试的字节。 |
| retainWorktrees | true | 保留终态工作树;false 启用终态清理。 |
| cleanupWorktreesOnSuccess | false | 在 retainWorktrees: false 时,将清理限制为 target-reached / budget-limited。 |
| exportTsv | true | 每次运行导出一个 TSV 摘要。 |
| evaluatorRegistrations | [] | 宿主拥有的评估器、指标、环境、冻结文件和数据集契约,可通过 evaluator_id 选择。 |
| tsvRetentionDays | 30 | TSV 保留窗口,从导出文件的 mtime 起算。 |

运行是有界的。随附默认值为 20 个候选实验,随附部署最大值为 100;每个可安全继续的候选失败消耗一个序号。基线是独立的,目标、取消、阻塞条件或候选上限耗尽都可能提前停止。没有无限模式或自动运行链;操作员可以显式启动另一次运行。

保留是仓库本地的且惰性的:每次控制器启动都会清扫没有活跃控制器所有者的安全终态运行,并且每次安全终态结算都会对当前运行应用相同策略。修剪会移除产物字节,但保留 SQLite 产物标识、大小、哈希和结果元数据,以便终态重放保持确定性。retainWorktrees: false 会移除每个安全终态工作树,除非 cleanupWorktreesOnSuccess: true 将移除范围缩小到成功的终态状态。

项目布局

src/
index.ts Plugin entry: registers the autoresearch tool + direct-human guidance
controller.ts AutoresearchRunController — sole owner of the run state machine config.ts Config schema, defaults, run-policy normalization types.ts Tool parameters, output schema, durable state types evaluator.ts Shell-free evaluator boundary, provenance freezing, final-line JSON metric git.ts Worktree/lock/claim/commit reconciliation, candidate validation tracker.ts DurableTracker — SQLite; TRACKER_SCHEMA_VERSION is authoritative recovery.ts Crash-safe run reconciliation from durable state agent.ts Delegated proposal agent + autoresearch_report tool render.ts Tool result rendering with bounded truncation invariant.ts Package invariant companion (dsh-invariants) state-layout.ts SQLite state layout retention.ts Lazy artifact/TSV retention sweeps and current-run pruning evaluator-artifacts.ts Evaluator stdout/stderr artifact capture

旧版运行在 Host-registration 契约之前创建的运行会作为历史证据保留,绝不会被自动转换或重新解释为满足当前 Host-registration 契约。普通的 SQLite tracker schema 迁移在保留期间或其他可写维护期间仍可能发生;这些迁移不会创建评估器注册,也不会授予恢复权限。遗留的终端运行仍可检查,并有资格进行正常的保留处理。尝试恢复遗留的非终端运行会以 legacy-evaluator-policy-unsupported 失败关闭;请检查其 tracker/artifacts,根据操作员策略保留或归档它们,然后如果实验应继续,则使用 run_tag 和 Host 提供的 evaluator_id 显式启动新的运行。

开发

pnpm install
pnpm run typecheck # tsc --noEmit
pnpm run test # vitest run
pnpm run test:coverage # vitest run --coverage
pnpm run build # tsc -p tsconfig.json → lib/
pnpm run check # typecheck + test + build
pnpm run release:smoke # packed-artifact release verification

发布验证会在检出目录之外运行打包产物:检查 allowlist,在不使用本地链接的情况下安装,导入生成的 ESM/声明,安装/转储真实的命名 dsh profile,并启动实际的 Web profile 足够长时间以获取其 HTML 界面。集成测试套件另外通过 Web standard Agent preset 执行 autoresearch,并使用 owner 作用域的 job_ 控件。

许可证

MIT © 2026 EveGoodEvening
预览分享卡片长什么样 ↓EveGoodEvening/dsh-autoresearch
分享 · DeepSeek Harness Hub
EveGoodEvening/dsh-autoresearch

在隔离工作区自动迭代实验并保留更优结果

这是你的仓库?认领条目

回到顶部