跳至正文
回到文档目录
SRC Skill / PROJECT DOCS 02 / 03

SRC 研究环境相关部署状态、验证与回滚记录。

DSH、Claude Code、Codex 部署记录#

本文仅保留 DSH、Claude Code、Codex 相关的部署、状态变化、验证与回滚记录。日期按原操作记录;当前状态摘要按 2026-09-23 同步。

最近状态摘要(截至 2026-09-23)#

客户端最近记录状态
DSH Desktoprecon-mcp 为主搜索源;Netlas → Quake → FOFA 为串行备用;Playwright 仅为浏览器工具;ZoomEye 已移除。
Claude CodeZoomEye 已移除,搜索顺序恢复为 Netlas → FOFA;原有技能与其他服务保留。
Codex2026-09-21 注销本项目 Quake、Netlas、FOFA、Playwright 的 MCP 注册并归档服务目录;src-research 技能保留。

以上为本文件最近一次部署记录,不代表此后对客户端主目录的独立检查。

DSH:recon-mcp 统一 Gateway 主源同步(2026-09-19—2026-09-23)#

当前主备路由#

已将 /Users/feliz/Documents/recon-mcp/ 接入 DSH 激活 profile desktop~/.dsh/profiles/desktop/cordis.patch.yml。DSH 默认先调用 recon-mcpasset_search 用于资产发现,recon 用于完整本地侦察,deep_recon 用于深度模式。

recon-mcp 内部优先读取 24 小时缓存并使用本地 subfinder → httpx → naabu → nuclei。DSH 配置中的 ENABLE_NETLAS=falseENABLE_QUAKE=falseENABLE_FOFA=false 保持 API 默认关闭。只有主源无结果、主源不可用或用户明确要求补充时,才调用独立 provider MCP,顺序固定为 Netlas → Quake → FOFA,不并发、不自动扩展 target。

~/.dsh/mcp-servers/netlas/quake/fofa/ 继续保留为备用 provider MCP。playwright 继续注册,但仅用于浏览器操作,不属于搜索源或 provider fallback。ZoomEye 不在当前活动配置中。

已同步的源文件#

  • .deploy/dsh/cordis.patch.yml
  • .deploy/dsh/AGENTS.md.preview
  • scripts/deploy_dsh.py
  • README.md
  • 目录文件分析.md
  • 部署记录.md

验证#

验证项结果
活动 profile 路由recon-mcp → Netlas → Quake → FOFA;Playwright 单独注册。
Gateway MCP 工具asset_searchrecondeep_recon
Gateway 构建npm run build 通过。
Gateway 回归npm test 的 7 项 smoke checks 全部通过。
DSH patch / 源码模板YAML 解析通过;部署脚本 Python 3.12 编译通过。
回滚备份位于 /Users/feliz/.dsh/backups/source-sync-20260923/;独立副本回滚通过。

修改 profile 后需重启 DSH,运行中的 MCP 子进程不会自动重载新的 profile 或 Gateway 构建产物。

Codex:移除项目 MCP(2026-09-21)#

已从 ~/.codex/config.toml 注销本项目的 netlasfofaquakeplaywright MCP 注册;对应四个服务目录已归档至 /Users/feliz/.codex/backups/remove-project-mcps-20260921-172152/,匹配的服务进程已停止。Codex 的 src-research 技能与项目源码未改动。

验证:活动配置中不含这四个 MCP 注册;codex mcp list 不再列出它们;归档配置与原配置哈希一致;77 个匹配进程结束后复查无残留。项目测试 python -m unittest discover -s tests -q:26 项通过。

变更字段:~/.codex/config.toml[mcp_servers.netlas][mcp_servers.fofa][mcp_servers.quake][mcp_servers.playwright]。验证与回滚材料:.deploy/codex-tool-removal-20260921-172015/

Quake 第二 API Key 槽位(2026-09-16)#

Quake 服务新增 QUAKE_API_KEY_BACKUP=,供服务目录自己的 .env 配置第二 Key;源代码、DSH 和 Codex 服务副本均已加入该字段。服务按主 Key、第二 Key 顺序尝试;认证/配额错误或连接失败时切换,两个 Key 均失败后按 Quake → Netlas → FOFA 顺序回退。凭据保留在各自 .env 中。

验证结果
Quake 单元测试16 项通过,覆盖主 Key 限流后使用第二 Key、业务限流码轮换及仅配置第二 Key。
全量回归26 项通过。
MCP 握手DSH、Codex 的 initialize、工具列举、status、空查询校验通过。
回滚独立副本回滚通过;修改副本保持新字段。

验证工件:.deploy/quake-key-20260916-132000/{MODIFIED_FILE,DIFF_FILE,VERIFICATION.txt,ROLLBACK.sh}。本次未发起真实 Quake 查询。

Quake 增量部署到 Codex(2026-09-16)#

Codex 用户级配置 ~/.codex/config.toml 新增 [mcp_servers.quake]search 审批策略,服务位于 ~/.codex/mcp-servers/quake/codex mcp list 曾确认该服务为 enabled。DSH 已先行配置 Quake,本次保持其配置不变。路由统一为 Quake → Netlas → FOFA。

验证:Codex 配置解析、Quake MCP initialize/tools/status/空查询检查通过;测试 23 项通过;独立副本回滚恢复基线字节内容,活动配置保持部署后状态。备份位于 ~/.codex/backups/quake-20260916-130214-920242/。此注册已由 2026-09-21 的 Codex MCP 移除记录取代。

DSH:Quake 第一搜索源及联调(2026-09-15—2026-09-16)#

历史记录:本节描述当时的 Quake 主源状态;当前 DSH 路由已由上方 recon-mcp Gateway 主源同步记录取代。

部署与路由#

将 360 Quake 设为 DSH 第一 MCP 搜索源,Netlas 第二、FOFA 第三。服务源码为 mcp-servers/quake_MCP/quake.py,提供 searchstatus;DSH 服务副本位于 ~/.dsh/mcp-servers/quake/,使用独立 Python 3.12 venv,并注册在激活 profile 的 cordis.patch.yml 中(行 id mcp-src-quake)。凭据字段为 QUAKE_API_KEY,可选第二字段为 QUAKE_API_KEY_BACKUP

工具接受 search(query, start=0, size=20, include=..., latest=true);分页使用 startsize。空查询、非法分页和不支持的 include 字段在本地拒绝;限流会进入冷却。回退链为 Quake → Netlas → FOFA。

验证与缺陷修复#

初始阶段完成源代码与 DSH venv 的握手、工具列举、status、空查询输入校验;回归测试 17 项通过。DSH Desktop 的激活 profile 为 desktop,新增 MCP 行写入非激活 profile 时不会被加载;将配置改至激活 profile 并重启 DSH 后已确认生效。

填入 Key 后的真实联调发现 Quake 筛选字段配置错误。修复包括:默认不发送 include;显式非法字段在本地拒绝;上游 q2001 映射为 invalid_include;将 q3005 纳入限流冷却;连接失败增加一次重试及 1 秒退避。

实测结果
statusconfigured: true
domain:"qianxin.com"code=0,返回真实资产与字段。
分页 start=2返回不同结果,next_start=4
title:"管理后台"code=0,返回结果含 body/title 字段。
ip:"8.8.8.8" 配合 include=ip,port,orgcode=0,返回指定字段。
空查询、非法分页、非法 include本地拒绝,未发请求。
单元回归23 项通过。

DSH 运行中的服务子进程不会自动重载源码;终止旧子进程后,下一次工具调用会以新代码重启。Key 的实际值不记入本文。

DSH Desktop 初始部署(2026-09-15)#

本包部署至 ~/.dsh。技能位于 ~/.dsh/skills/src-research/SKILL.md,用户级入口为 ~/.dsh/AGENTS.md。MCP 使用激活 profile 的 patch 层;最近确认的 profile 是 desktop,配置路径为 ~/.dsh/profiles/desktop/cordis.patch.yml。服务目录位于 ~/.dsh/mcp-servers/

部署时先写入错误的非激活 profile,重启后工具未出现。检查激活 profile 后,将 MCP 行移至 desktop/cordis.patch.yml;新增 MCP 行不会可靠热加载,因此修改后需重启 DSH。scripts/deploy_dsh.py 会探测 profile,也支持 --profile 覆盖;patch 合并遇到同名但定义不一致时停止。

验证项记录结果
技能63 个 Markdown;12 个 rules、49 个知识库文件(含索引)。
Netlas / FOFA MCPinitialize、工具列举、status 或本地输入校验通过。
profile 配置desktop/cordis.patch.yml 解析校验通过;插件在 profile 下可解析。
MCP 加载重启后服务子进程加载;Netlas status 返回 configured: true
权限全局入口、profile patch 和服务 .env 均记录为 0600。
真实查询初始部署验证未调用真实资产搜索;后续 Quake 联调另见上节。

备份:~/.dsh/backups/src-research-20260915-111048-916037/~/.dsh/backups/src-research-20260915-113445-066524/。复验命令:

Terminal window
.venv/bin/python scripts/deploy_dsh.py
PY=~/.dsh/mcp-servers/fofa/.venv/bin/python
$PY scripts/check_mcp.py ~/.dsh/mcp-servers/fofa/fofa.py
$PY scripts/check_netlas_mcp.py ~/.dsh/mcp-servers/netlas/netlas_server.py

Claude Code:配置迁移与完整性检查(2026-09-14)#

目录与启动记录#

历史运行配置目录曾改名为备份目录;同日随后一次检查又记录原路径作为运行目录,并记载 zsh 启动函数设置 CLAUDE_CONFIG_DIR 后启动 Claude Code。之后的 Claude Code 用户级部署条目使用 ~/.claude。路径历史存在先后变化,执行维护前应以当前本机配置为准。

后续部署所用路径为:~/.claude/CLAUDE.md~/.claude/skills/src-research/SKILL.md~/.claude.json~/.claude/mcp-servers/。检查记录的 Claude Code 版本为 2.1.270;指定配置目录后,FOFA、Netlas、Playwright 曾显示 Connected。

技能与 MCP 验证#

检查项记录结果
研究技能 Markdown63 个;缺失 0、额外 0。
与迁移源比较59 个 Markdown 字节一致;4 个差异为入口或标题适配。
FOFA / NetlasMCP 初始化、工具列举、输入校验通过;未消耗真实搜索配额。
Playwright独立无头浏览器打开 about:blank、执行页面计算并关闭通过。
Python两个 venv 使用 Python 3.12.14,pip check 通过。
凭据文件两份 .env 权限记录为 0600。

复验命令:

Terminal window
CLAUDE_CONFIG_DIR="$HOME/.claude" claude mcp list
.venv/bin/python scripts/check_browser_mcp.py "$HOME/.claude.json"

ZoomEye 变更与清理#

2026-09-18,Claude Code 用户级服务目录 ~/.claude/mcp-servers/zoomeye/~/.claude.jsonmcpServers.zoomeye 曾新增。新增时的路由为 Netlas → ZoomEye → FOFA,独立 venv、空 .env 模板及技能规则同步完成;MCP 握手、status、pip check 通过,测试 35 项通过。

同日按后续变更移除 ZoomEye 注册和服务目录,清理 ZOOMEYE_FALLBACK_SOURCE 并恢复 Netlas → FOFA。其余既有服务与技能保留。备份:~/.claude/backups/remove-zoomeye-*;回滚工件:.deploy/remove-zoomeye-20260918-224623-443900/

Codex:初始并行部署(2026-09-14)#

从既有研究技能源复制独立副本至 ~/.codex/skills/src-research/;全局入口为 ~/.codex/AGENTS.md,MCP 配置为 ~/.codex/config.toml。初始部署包括 Netlas、FOFA、Playwright;2026-09-16 增量加入 Quake。此后 2026-09-21 已按本文件开头的记录注销这四个项目 MCP,技能副本仍保留。

初始部署验证:技能格式检查通过;10 项离线回归通过;Netlas、FOFA MCP initialize、工具列举和本地参数校验通过;Playwright MCP 初始化及独立无头浏览器打开页面、执行计算、关闭均通过。初始备份:~/.codex/backups/src-research-20260914-152619-967851/

部署脚本:scripts/deploy_codex.py。历史部署默认为预检,--apply 才安装;已存在目标目录时拒绝覆盖。MCP 状态以 Codex 配置和 codex mcp list 检查结果为准。

DSH、Codex:ZoomEye 生命周期(2026-09-18)#

ZoomEye 曾短暂加入 DSH 与 Codex,之后调整路由并从相关客户端移除;最终未保留为活动来源。

  • 初次加入时:DSH 服务位于 ~/.dsh/mcp-servers/zoomeye/ 并注册到激活 profile;Codex 服务位于 ~/.codex/mcp-servers/zoomeye/ 并注册到 ~/.codex/config.toml。两处 .env 仅含空 ZOOMEYE_API_KEY= 模板。
  • 路由调整时:曾从 Quake → Netlas → FOFA → ZoomEye 改为 Quake → ZoomEye → Netlas → FOFA,并同步搜索规则与技能副本。
  • 移除时:DSH profile 中的 mcp-src-zoomeye 行及服务目录已移除;Codex 的 mcp_servers.zoomeye 及服务目录已移除。项目源恢复 Quake → Netlas → FOFA。
  • 验证:移除后的测试 26 项通过;Quake、Netlas、FOFA MCP 握手及 DSH、Codex 配置解析通过。

相关备份分别位于 ~/.dsh/backups/zoomeye-*~/.codex/backups/zoomeye-*;完整回滚材料位于 .deploy/remove-zoomeye-20260918-224623-443900/