DeepSeek Harness Hub
← 返回列表

Gaochenyuen/dsh-scopus-searcher

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

dsh-scopus-searcher — 学术文献研究 Agent Presets搜索驱动 × 知识驱动

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/11 · 已提供中文文档

基于Scopus API驱动的Deepseek-Harness预设的深度文献研究智能体。

综合分
29.2
GitHub 分
29.2
用户评分
★ Stars
0
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add Gaochenyuen/dsh-scopus-searcher
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-scopus-searcher — 学术文献研究 Agent Presets(搜索驱动 × 知识驱动)

一个面向 DeepSeek Harness (dsh) 的插件包,内置两个 Agent 预设:
scopus-scholar(搜索驱动模式) — 由 Scopus 驱动的发现 + 由 OpenAlex 驱动的元数据/引用补全 + 论断 → 查证 → 下一步的推理循环;
scopus-knowledge(知识驱动模式) — 一个代码强制执行的研究流水线,通过纯粹的科学好奇心问题咨询一个独立的、无工具的科学顾问会话,对照文献查证每一条陈述,并循环直到答案就绪。

一个面向 DeepSeek Harness 的插件包,内置两个 Agent 预设:搜索驱动模式把模型变成能检索、提炼科学论断、双向查证并规划下一步调研的研究助手;知识驱动模式把调研流程从"提示词约定"升级为"代码强制的状态机流水线"——主 agent 与"科学顾问"人格以科学好奇心问答循环建立领域认知,再用文献检索逐条查证。

两个预设,两种研究范式

| | scopus-scholar · 搜索驱动模式 | scopus-knowledge · 知识驱动模式 |
|---|---|---|
| 选单显示 | 搜索驱动模式 | 知识驱动模式 |
| 适用任务 | 找文献、综述、文献调研 | 模型训练层面已有深厚积累的实质性科学问题(机制、为什么、领域现状) |
| 驱动方式 | persona 方法论文本 | 代码级流水线状态机(knowledge-pipeline 插件) |
| 核心循环 | 检索 → 综合 → 论断 → 双向查证 → 下一步 | 好奇心提问 → 顾问解答 → 文献查证 → 凝练 → 3–5 新问题 → 搜索子loop → loop 回答 → 报告/下一 loop |
| 科学顾问 | — | 流水线用 agents.create() 建立的独立极简模式会话(代码注入顾问人格、提示词+guard 双重禁工具、同一会话多轮连续咨询、无时限无 token 上限、每 60 秒存活心跳、解答自动存档、连续失败自动降级) |
| 检索能力 | Scopus raw query + OpenAlex | 同左(SEARCH 子loop 复用搜索驱动方法论) |

两个预设共享同一套检索工具链与技能包(scopus-search 技能随各自 preset 分发),互不依赖。

技术路线

1. 组合架构:一个 npm 包,两个预设,一份检索工具链

dsh-scopus-searcher/             # npm 包(声明 dsh.bundle,可 dsh plugin add 一键安装)
├── package.json                 # dsh.bundle.patch 声明 + 包元信息
├── cordis.patch.yml             # bundle patch:宿主插件行(安装预设)+ 只读预设根注册
├── lib/
│   └── install.cjs              # 宿主插件:启动时把两个预设复制进预设根目录
├── agent-presets/
│   ├── scopus-scholar/          # 预设一:搜索驱动模式
│   │   ├── agent.cordis.yml     # persona(检索→论断→双向查证闭环)+ 工具行 + 技能挂载
│   │   ├── preset.yml
│   │   └── skills/scopus-search/    # scopus.py / run_scopus.sh / scopus_search.py / openalex_tool.py
│   └── scopus-knowledge/        # 预设二:知识驱动模式
│       ├── agent.cordis.yml     # persona + 工具行 + 流水线插件行(isolate realm 组)
│       ├── preset.yml
│       ├── lib/knowledge-pipeline.cjs   # ★ 代码级流水线状态机(随 preset 分发)
│       └── skills/
│           ├── SKILL.md         # scopus-search:技能根本身即技能,检索工具与 SKILL.md 同级
│           ├── scopus.py / run_scopus.sh / scopus_search.py / openalex_tool.py
│           └── knowledge-advisor/SKILL.md  # 流水线操作手册:协议工具、提问纪律、查证协议
├── .gitignore
├── LICENSE                      # MIT
└── README.md

- agent.cordis.yml 通过 skill-filesystem 的 customSkillDirs(baseUrl 表达式)把技能目录挂到 preset 自身,preset 走到哪,技能跟到哪;
- 流水线插件以预设相对路径(./lib/knowledge-pipeline.cjs)作为行名加载——loader 以组合文件目录为 baseUrl 解析相对行,因此流水线代码随 preset 分发、随 preset 卸载,不需要第二个 npm 包。

2. 检索工具链:四条流水线,各司其职(两预设共用)

| 组件 | 职责 | 解决的实战问题 |
|------|------|----------------|
| scopus.py | Scopus Search / Abstract / REF API 封装,CLI 与可导入函数双接口 | 基础检索、摘要抓取 |
| run_scopus.sh | 在同一条 bash 命令内从 shell profile 加载 SCOPUS_API_KEY(不回显、不落盘),并设置 NO_PROXY 规避代理 TLS 劫持 | Harness 凭据清洗:名字含 KEY/PASSWORD/SECRET/TOKEN 的环境变量会被剥离,.bashrc 里的 key 默认到不了 agent 的 shell |
| scopus_search.py | raw query 直传:引号短语、TITLE("...") 精确标题、OR 组、PUBYEAR 年份界全部保留语义;--out 落盘防长输出截断 | Scopus TITLE-ABS-KEY 对短语松散匹配,CLI -k 拼接会丢掉引号,检索结果被严重污染 |
| openalex_tool.py | work / enrich / trace 三个子命令:批量补作者+引用数+出版年、从 abstract_inverted_index 重建完整摘要、cited_by/references 双向分页引文追踪 | Scopus 检索结果缺作者字段、无引用数、摘要截断、REF 引用列表 40 条硬上限 |

3. 双源分工:Scopus 发现,OpenAlex 补全

flowchart LR
subgraph Scopus
direction TB
S1["发现论文raw query 短语精确检索"]
S2["摘要 / EID / DOI"]
end
subgraph OpenAlex
direction TB
O1["作者 / 引用数 / 出版年补全"]
O2["完整摘要重建"]
O3["引文网络双向追踪不受 40 条上限"]
end
Scopus --> OpenAlex

4. 搜索驱动模式:检索只是第一步,论断必须查证

flowchart LR
A[研究问题] --> B[PLAN概念/同义词/作者/年份]
B --> C[SEARCH短语精确 + 多角度并行]
C --> D[SYNTHESIZE区分'证明'与'声称']
D --> E[CLAIM论断 + 证据链 + 置信度]
E --> F1[VERIFY·理论分析第一性原理/假设/可观测推论]
E --> F2[VERIFY·进一步检索对立假设/新引文/综述/相邻领域]
F1 --> G[CONCLUDE更新置信度]
F2 --> G
G --> H[下一步搜索与分析计划]
H -. 迭代 .-> B

persona 强制每个论断走双向查证:既用自身领域知识做理论检验,又设计针对性检索去证实或证伪;每条论断都要求挂证据链(论文/DOI/数据点)和置信度。

5. 知识驱动模式:代码强制的流水线,不是提示词约定

知识驱动模式的 loop 由 preset 自带的 knowledge-pipeline 插件在运行时强制执行——阶段流转、门禁、存档都是代码行为,模型只是每个阶段内的执行者:

flowchart LR
A[用户问题] --> B[THINK思考主问题→提炼科学好奇心]
B --> C[consult_advisor咨询科学顾问·独立会话·纯模型知识·无工具]
C --> D["VERIFY文献查证每条 statement查事实而非引用格式"]
D --> E[submit_verification]
E --> F[SYNTHESIZE理顺逻辑→初步正确理解]
F --> G[propose_next_questions3–5 个新问题]
G --> H["SEARCH 子loop搜索驱动方法论逐题检索"]
H --> I[submit_loop_answer本 loop 最终回答]
I --> J{DECIDE}
J -- 信息已充分 --> K[REPORT撰写最终输出报告]
J -- 仍需调查 --> L[新好奇心问题]
L -. 下一 loop .-> C

代码层面的实现(agent-presets/scopus-knowledge/lib/knowledge-pipeline.cjs):

- 状态机:THINK → VERIFY → SYNTHESIZE → SEARCH → DECIDE → REPORT,loop 上限 12;会话开始时自动建立,状态每一步渲染进系统提示(动态 prompt section);
- 协议工具:loop_status / consult_advisor / submit_verification / propose_next_questions(3–5 强制) / submit_loop_answer / declare_ready_report / pipeline_override——乱序或不合 schema 的提交被拒绝并给出理由(契约拒绝);
- 硬门禁(scoped tools.guard):THINK 阶段禁止检索工具(bash/web_search/subagent 等),必须先咨询顾问;顾问会话在自己的作用域里另有一道 guard,任何工具调用都会被拒绝;
- 科学顾问 = 独立会话(极简模式预设 + 代码注入人格):consult_advisor 用 agents.create() 建立一个根会话,组合 minimal(极简模式)预设,并在创建时的 setup 里用代码注入顾问 persona(同名 section shadow 掉预设人格、complete: true 使其成为完整系统提示);人格明令禁止调用任何工具,作用于顾问自身 scope 的 guard 再兜底拒绝。顾问会话贯穿整个研究过程:多次咨询就是同一会话里的连续多轮对话,它记得此前讲过的内容,可以直接追问、要求补充(多轮连续咨询)。整段解答在返回模型前由代码原样存档到 ${DSH_HOME:-~/.dsh}/.scopus-scholar/advisor/;
- 无时限、无输出上限,改为存活心跳监测:不再设置咨询超时,也不再设置 maxTokens——推理模型可以按需要充分思考。流水线轮询顾问会话,每 60 秒做一次健康检查(agent 是否仍在注册表、本轮是否已开始、会话事件是否在推进),并把心跳行写入存档目录的 pipeline.log;只有三种情况判失败:回合结束却没有文字回答(立即失败并带 finish 原因)、顾问 agent 被释放、或连续 N 次检查(默认 10 次 ≈ 10 分钟)完全没有新事件——都在 60 秒粒度上可见,而不是死等到超时。模型路由取部署默认 agentDefaultModel.currentSelection()(必定可路由,且不锁定 reasoning effort / 输出上限);
- 连续失败自动降级(不会死锁):连续 2 次咨询失败后流水线停用顾问(本会话),原因写入存档 pipeline.log;THINK 自动推进到 SYNTHESIZE——主 agent 用自身知识凝练 3–5 个问题,由 SEARCH 子loop 照常文献查证,最终报告如实披露“科学顾问不可用”;单次失败只返回原因,主 agent 可随时在同一顾问会话里重试;
- 子代理纪律(代码强制):只有真正的根 agent(会话 delegationDepth 0)持有流水线状态——被委派的子代理没有自己的 loop、不会被 idle-nudge 驱动、不能咨询自己的顾问;运行时拒绝子代理调用流水线协议工具、再启动子代理/工作流,以及写报告类文件(报告/…report…/…final…);子代理的系统提示注入“素材挖掘者”角色段:只检索、收集素材、整理关系,笔记写入 materials/ 或在最终回复中给出;
- 报告门槛(代码强制):流水线跟踪全部子代理的工作状态,declare_ready_report 在仍有子代理未完成(settled)时拒绝;进入 REPORT 时冻结(drain)剩余子代理,会话结束时同样清理——报告是主 agent 在全部素材就绪后的唯一收尾动作,不会再有子代理在报告之后继续写文件;
- 自动推进:模型在某阶段停滞时(idle + 未推进),流水线通过 Agent.followup 注入推进指令(每会话最多 4 次,只推主 agent),loop 不会因模型“忘了下一步”而中断。

关键纪律(persona + knowledge-advisor 技能双保险):

- 向顾问提出的每个问题必须是基于对某个科学事实的好奇心——引导顾问介绍它的知识储备与理解;绝不询问“接下来该查什么 / 推荐哪些文献”之类的调查建议;
- 顾问禁用一切工具、凭模型记忆为关键 statement 附参考文献;同一顾问会话内可连续追问(它保留此前轮次的上下文),整段解答由代码原样导出保存到 .dsh 的隐藏目录,按会话与轮次归档;顾问会话本身也出现在会话列表里,可随时打开查看完整对话;
- 顾问的参考文献标题可能因幻觉而不准确——引用错不代表 statement 错,主 agent 用 Scopus/OpenAlex 查证的是科学事实本身是否 well-established,查证发现的错误写入查证记录并体现在下一轮理解中;
- 子代理只挖掘素材、整理关系,不写报告:报告由主 agent 在全部子代理完成(settled)之后撰写唯一一份;declare_ready_report 会在仍有子代理工作时被运行时拒绝,进入 REPORT 后剩余子代理被冻结。

调研效果:技术路线为实际调研带来什么

科学性 — 证据基础可信,论断经得起检验

- 检索结果真实相关:引号短语 + TITLE(...) 精确标题 + OR 组,把检索从“关键词命中”提升为“语义命中”;
- 论断必须查证:搜索驱动的双向查证与知识驱动的逐条 statement 查证,都避免“搜到什么就信什么”;
- 证据与推理分离:每条论断都要求挂证据链(论文/DOI/数据点)和置信度。

丰富性 — 覆盖面广,脉络完整

- 多角度并行检索:同义词 OR 组与机制词 × 上下文词的多路并行,单一路径的漏检由交叉搜索兜底;
- 引文网络双向延伸:向后追溯参考文献、向前追踪最新施引文献,点状发现扩展成领域脉络;
- 双库叠加元数据维度:Scopus 发现、OpenAlex 补全,文献画像完整可比较。

严谨性 — 细节可靠,过程可复现

- 元数据补全与交叉校验:authorships 逐篇核验作者身份;
- 完整摘要重建:从 abstract_inverted_index 重建被截断的摘要;
- 失败有明确诊断路径:凭据清洗、代理劫持、空结果、字段缺口各有对策;知识驱动模式下顾问解答、查证结论、阶段流转全程留痕存档,调研轨迹可回看、可复现。

安装

方式一:一键安装(推荐,dsh plugin add)

本仓库是一个声明了 dsh.bundle 的插件包:dsh plugin add 会把它装进 profile 的依赖并自动挂载。挂载后,bundle patch 插入的宿主插件在 dsh 启动时把两个预设复制到预设根目录,预设随即出现在选单里(roster 每次读取都会重新扫描,无需重启即可看到;未重启的旧进程在下次启动后生效)。卸载用同一条命令。

前置:dsh 的 plugin 子命令需要 pnpm(corepack enable 或 npm i -g pnpm)
npm install -g pnpm

A. 直接从 GitHub 安装(仓库公开即可,无需发布 npm)
dsh plugin --profile web add git+https://github.com/Gaochenyuen/dsh-scopus-searcher.git

B. 发布 npm 后,用短名字安装
dsh plugin --profile web add dsh-scopus-searcher

重启 dsh(新版本生效 + 插件行执行安装),然后新建会话选择「搜索驱动模式」或「知识驱动模式」

- --profile web 对应你运行的 profile(dsh web);其它部署按实际 profile 名调整;
- 更新:dsh plugin --profile web add dsh-scopus-searcher@2.2.0;卸载:dsh plugin --profile web remove dsh-scopus-searcher,并删除 "${DSH_HOME:-$HOME/.dsh}/.agent-presets/" 下的 scopus-scholar 与 scopus-knowledge 目录;
- 从 1.x 升级:add ...@latest 可能被 pnpm 判定“已满足范围”而不更新——请显式指定 dsh-scopus-searcher@2.2.0,或先 remove 再重新 add。2.0.0 起预设结构变化:搜索驱动模式回退为纯检索闭环(scopus-scholar),知识驱动模式成为独立的代码级流水线预设(scopus-knowledge),安装脚本会自动覆盖旧预设目录;
- 安装机制双保险:bundle patch 插入的宿主插件行(当前 dsh 版本实际生效的路径)把预设复制进预设根目录;patch 里的只读预设根注册是为未来会应用 patch override 的 dsh 版本预留的增强。

dsh 版本兼容(2.1.0:适配 dsh 0.1.5)

dsh 0.1.5 的几处接口变更会让旧版预设在挂载阶段直接失败,2.1.0 已逐项修复:

| dsh 0.1.5 变更 | 旧版表现 | 2.1.0 修复 |
|---|---|---|
| dsh-persona 配置由 text 改为 prefix/suffix 两个有序 section | 预设挂载即报 $.prefix missing required value,整个预设不可用 | 两个预设的 persona 全文作为 prefix |
| Session.events 数组被移除,改为 snapshotEvents(fromSeq?) / seq / ownEvents() | 每次 consult_advisor 抛 Cannot read properties of undefined,顾问必定失败 | 用 session.seq 记录边界、snapshotEvents(before) 增量读取 |
| TurnEndReasonMap.error 的失败详情字段由 failure 改名 error | 顾问失败诊断丢失底层原因 | 两个字段名都读,诊断不丢失 |
| 模型目录随部署而变(本机 deepseek-v4-flash 已不在目录中) | 顾问首次尝试固定打到一个不存在的模型,每次咨询都先失败一次再回退 | 顾问改用 agentDefaultModel.currentSelection()(部署默认、必定可路由),且不再限制输出 token |
| present 是 agent 平面新增工具(宿主组合不提供) | 预设产物无法声明为交付物 | 两个预设补上 present 行 |

升级后必须让 profile 里的包副本刷新,否则启动时 install.cjs 仍会把旧的预设复制回预设根目录:

dsh plugin --profile web add dsh-scopus-searcher@2.2.0   # 或 remove 后重新 add
重启 dsh;启动日志出现 "dsh-scopus-searcher: installed preset '...'" 即为刷新成功

临时验证(不想重装)也可以直接把仓库里的预设同步进预设根目录,roster 每次 list() 都会重新扫描:

cp -r agent-presets/scopus-scholar agent-presets/scopus-knowledge \
"${DSH_HOME:-$HOME/.dsh}/.agent-presets/"

替换预设内的插件文件后必须重启 dsh 进程:loader 以文件 URL 为键缓存插件模块(internal.import() / 动态 import(),HMR 行默认 disabled: true),运行中的进程不会重新求值已经加载过的 lib/knowledge-pipeline.cjs——即使预设的 agent.cordis.yml 改了、roster 也重新扫描了,旧模块仍会继续执行。预设 YAML 每次挂载都会重读,插件 .cjs 不会。因此“改了文件却没重启”会出现“YAML 生效、插件代码没生效”的混合状态(正是 Cannot read properties of undefined (reading 'length') 在 2.1.0 之后仍复现的原因)。

回归自检(无需 dsh 运行,直接驱动真实插件:建立顾问会话 → 连续两轮咨询 → 校验人格 shadow / 工具 guard / 心跳监测):

node test/pipeline-consult.test.cjs                    # 仓库源码
node test/pipeline-consult.test.cjs \
"${DSH_HOME:-$HOME/.dsh}/.agent-presets/scopus-knowledge/lib/knowledge-pipeline.cjs"   # 重启后将加载的那份

2.2.0:科学顾问改为独立会话

科学顾问的技术实现从“每次咨询 spawn 一个子代理”改为“一个独立的极简模式会话”:

| 维度 | 2.1.0(子代理) | 2.2.0(独立会话) |
|---|---|---|
| 载体 | subagents.startContinuable(spawn 子代理) | agents.create() 建立根会话,组合 minimal(极简模式)预设 |
| 人格 | 子代理 persona 字段(shadow 子代理人格) | 创建时 setup 注入同名 persona section(complete: true),完整替换预设人格 |
| 工具禁用 | toolFilter { allow: [] } 结构性移除工具 | 提示词明令禁止 + 顾问自身 scope 的 guard 兜底拒绝 |
| 上下文 | 每次咨询全新子代理,问题必须自包含 | 同一会话贯穿全程:连续多轮,可追问/补充/纠错 |
| 时限 | 5 分钟/次(含一次内部重试) | 无时限 |
| 输出上限 | 24576 / 65536 token | 无上限 |
| 存活监测 | 无(只有超时) | 每 60 秒检查 agent 存活 / 回合已开始 / 事件推进,心跳写入 pipeline.log;默认连续 10 次无事件判卡死 |
| 失败处理 | 内部重试一次后报错 | 报错后可在同一会话重试;连续 2 次失败仍自动降级(THINK→SYNTHESIZE) |
| 可见性 | 隐藏的子代理会话 | 会话列表里的普通会话,可打开查看完整对话 |

相关环境变量(可选,用于调整监测节奏):DSH_KNOWLEDGE_ADVISOR_HEALTH_MS(默认 60000)、DSH_KNOWLEDGE_ADVISOR_POLL_MS(默认 2000)、DSH_KNOWLEDGE_ADVISOR_MAX_SILENT_TICKS(默认 10)、DSH_KNOWLEDGE_ADVISOR_MAX_PENDING_TICKS(默认 2)。

方式二:手动放入预设根目录(不依赖 pnpm)

mkdir -p "${DSH_HOME:-$HOME/.dsh}/.agent-presets"
git clone https://github.com/Gaochenyuen/dsh-scopus-searcher.git
cp -r dsh-scopus-searcher/agent-presets/scopus-scholar \
dsh-scopus-searcher/agent-presets/scopus-knowledge \
"${DSH_HOME:-$HOME/.dsh}/.agent-presets/"

公共前置

pip install requests                      # Python 3 环境
Scopus API key 写进 shell profile(agent shell 有凭据清洗,由 run_scopus.sh 按需加载,永不回显/落盘)
echo 'export SCOPUS_API_KEY=' >> ~/.bashrc

快速上手

短语精确检索(检索质量分水岭)
bash /run_scopus.sh --raw \
--query 'TITLE-ABS-KEY("intermolecular coulombic decay" OR "interatomic coulombic decay") AND PUBYEAR > 2019' \
--count 20 --out results.json

批量补全作者/引用数/完整摘要
python3 /openalex_tool.py enrich --file dois.txt --abstract --out enriched.json

双向引文追踪(不受 Scopus 40 条上限)
python3 /openalex_tool.py trace --doi 10.1103/PhysRevLett.79.4778 \
--direction cited_by --from-year 2019 --max 200 --out citing.json

即 preset 内 skills/scopus-search/ 目录;agent 加载 scopus-search 技能时会自动获得该路径,无需手动指定。

知识驱动模式:新建会话选择「知识驱动模式」后直接提出科学问题即可——会话开头流水线自动进入 THINK 阶段,loop_status 随时可查状态,顾问解答与查证记录在 ${DSH_HOME:-~/.dsh}/.scopus-scholar/advisor/ 全程留痕。

FAQ

Q:agent 的 shell 里为什么看不到 SCOPUS_API_KEY?
A:Harness 会做凭据清洗——名字匹配 KEY/PASSWORD/SECRET/TOKEN 的环境变量不会传给子进程。run_scopus.sh 在同一条 bash 命令内从 shell profile 加载(不回显、不落盘),是刻意的显式转发路径。

Q:为什么 -k 搜出来全是无关文献?
A:Scopus TITLE-ABS-KEY 把词当独立词松散匹配。短语请走 --raw 加引号,保留短语语义。

Q:为什么检索结果没有作者/引用数?摘要还被截断?
A:Scopus Search API 不返回这些字段、摘要有限长。用 openalex_tool.py enrich --abstract 补齐。

Q:遇到 SSLError: UNEXPECTED_EOF_WHILE_READING?
A:HTTP 代理劫持 TLS 握手。工具已内置 NO_PROXY 与 trust_env=False 对策,勿重复重试。

Q:顾问的上下文会跨轮保留吗?
A:会——2.2.0 起,科学顾问是一个独立的极简模式会话,由流水线用 agents.create() 建立并贯穿整个研究过程;每次 consult_advisor 都是同一会话里的一次 follow-up 轮次,所以顾问记得此前讲过的内容,可以直接追问、要求补充或纠正("承接上一轮……"),不必重复背景。历轮解答仍会逐字存档,顾问会话本身也能在会话列表里打开查看(方便你回看它的完整推理与对话)。顾问 agent 若被释放(例如你手动关闭了那个会话),下一次咨询会自动重建一个新顾问会话。

Q:顾问会不会偷偷用检索工具?
A:不会——双重禁止:① 代码注入的顾问人格明令"绝对不使用任何工具(包括 shell/文件读写)";② 流水线在顾问会话自己的作用域里注册 guard,任何工具调用都会被拒绝并收到明确拒绝信息。顾问会话基于极简模式预设(其唯一的工具是持久 shell),因此即使模型试图调用也只会拿到拒绝,不会真的执行任何命令或读写文件。

Q:咨询顾问一次要等多久?失败怎么办?
A:没有时限,也没有输出 token 上限——推理模型可以按需要充分思考,流水线只在每 60 秒做一次健康检查:顾问 agent 是否仍在、本轮是否已开始、会话事件是否在推进,心跳写入存档目录 pipeline.log。判失败的只有三种情况:回合已结束却没有文字回答(立即失败并给出 finish 原因)、顾问 agent 被释放、或连续多次检查(默认 10 次 ≈ 10 分钟)完全没有新事件——此时流水线会停掉顾问本轮并报错,而不是无限空等。失败后你可再次调用 consult_advisor(同一会话继续对话)。连续 2 次咨询失败后流水线自动降级:本会话停用顾问,THINK 自动进入 SYNTHESIZE,你用自己的知识凝练 3–5 个问题继续搜索查证,并在报告中向用户披露顾问不可用。监测节奏可用环境变量调整:DSH_KNOWLEDGE_ADVISOR_HEALTH_MS(默认 60000)、DSH_KNOWLEDGE_ADVISOR_POLL_MS(默认 2000)、DSH_KNOWLEDGE_ADVISOR_MAX_SILENT_TICKS(默认 10)、DSH_KNOWLEDGE_ADVISOR_MAX_PENDING_TICKS(默认 2)。

Q:被委派的子代理会不会各自写一份报告?
A:不会。子代理是素材挖掘者:运行时拒绝它们调用流水线协议工具、再启动子代理/工作流、以及写报告类文件(报告/…report…/…final…),系统提示注入“素材挖掘者”角色段;报告由主 agent 在所有子代理 settle 之后撰写唯一一份,declare_ready_report 在仍有子代理工作时会被拒绝,进入 REPORT 后剩余子代理被冻结——不会再有报告在会话收尾之后被继续写。

致谢与许可

- 基于 scopus.py 与 SKILL.md(原 scopus-search 工具目录)构建。
- 本项目采用 MIT License。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群