DeepSentry

agent
Security Audit
Fail
Health Pass
  • License — License: Apache-2.0
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Community trust — 12 GitHub stars
Code Fail
  • rm -rf — Recursive force deletion command in build.sh
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

DeepSentry(深哨) 一款 AI 驱动的新一代安全运维代理。支持本地/SSH 混合执行、动态风控与自动化审计报告生成。(集成 DeepSeek/OpenAI/Ollam/LM Stuido)

README.md

🛡️ DeepSentry v2.0 Ultimate - 深海哨兵

"让 AI 成为你的红蓝对抗伙伴与安全运维专家。"

Your AI-powered Security Agent for Local, Remote & Fleet Auditing.

Team Version Platform Go AI

一眼看懂版本亮点快速开始配置说明多目标 Fleet安全建议

DeepSentry 是一个 AI 安全应急与智能运维 Agent。你只需要用自然语言描述任务,它会自动规划步骤、调用 Shell 或内置 Go 原生工具、连接本地或远程目标、持续观察结果,并生成可审计的 Markdown 报告。

image

仅允许在你拥有或已获得明确授权的系统中使用。请不要将 DeepSentry 用于未授权扫描、入侵、破坏、绕过访问控制或任何违法用途。


目录


一眼看懂

你想做什么 DeepSentry 怎么做
排查服务器状态 自动查看系统版本、CPU/内存/磁盘、进程、监听端口、网络连接
分析安全事件 自动读取日志、筛选异常登录、排查可疑进程和网络连接
做 Web / 数据库探测 使用 http_probeweb_snapshotmysql_proberedis_probe 等内置工具
在 WebShell 里运行 --webshell 立即返回,后台执行,进度和报告可用 cat 查看
多台服务器巡检 配置 targets[],使用 Fleet 或多目标子 Agent 批量执行
复杂任务分工 子 Agent 可按任务难度动态估步,也支持多个子 Agent 并行协作
需要审计留痕 每次任务生成 reports/report_<时间>.md Markdown 报告
极简目标机没有工具 大量能力用 Go 原生实现,很多场景不依赖目标机安装 ps/netstat/nmap/file/strings/tcpdump

核心特性:

  • 中文 UI、中文提示、中文报告。
  • 默认进入类 Claude Code / Codex 的 TUI 全屏界面。
  • 支持本地、SSH、Telnet、FTP、Fleet 多目标。
  • 内置 59 个安全应急/运维/取证工具。
  • 支持 WebShell 非 TTY 场景,后台运行并实时写进度日志。
  • 支持 checkpoint 恢复、多轮追问、记忆、定时任务。

最新版本亮点

当前构建版本:

./build/deepsentry --version

示例输出:

DeepSentry v2.0 Ultimate (build 2026-07-01)

v2.0 Ultimate 重点能力:

模块 说明
TUI 默认模式 默认进入全屏 Agent 面板,支持多轮输入、任务中断、恢复会话、斜杠命令
WebShell 模式 --webshell 提交后台执行,立即打印报告和进度路径,使用 cat 查看
59 个内置工具 覆盖网络、进程、日志、文件、文档、Web、数据库、pcap、Fleet、代理转发、定时任务、配置管理
SSH 输出流修复 长任务不再等全部结束才输出,后台进度日志会逐步写入
文件传输修复 file_upload / file_download 支持带空格路径和引号路径
扫描类工具修复 远程配置扫描、secret 扫描、service unit 审计更稳更快
Fleet 体验优化 fleet_exec / fleet_file 按真实命令或文件动作动态判险,只读操作不再反复确认
裸 SSH 防卡死 控制端裸 ssh/scp/sftp 连接已配置目标时会被拦截并提示改用 Fleet,避免卡在交互式密码输入

下载哪个文件

按自己的系统下载一个主程序即可。一般只需要下载 deepsentry-* 主程序。

CPU 架构简单判断:

  • amd64:也叫 x86_64 / x64 / 64 位 x86。绝大多数 Intel / AMD 台式机、笔记本、云服务器都选这个。
  • 386:32 位 x86。只有非常老的 32 位系统才选;如果系统是 64 位,不要选 386。
  • arm64:ARM 64 位。Apple Silicon Mac(M1/M2/M3/M4)、部分 ARM 服务器或树莓派 64 位系统选这个。
系统 CPU Release 文件名 运行方式
macOS Apple Silicon arm64,M1/M2/M3/M4 deepsentry-darwin-arm64 chmod +x deepsentry-darwin-arm64
macOS Intel amd64,Intel Mac deepsentry-darwin-amd64 chmod +x deepsentry-darwin-amd64
Linux 64 位 x86 amd64 / x86_64 / x64 deepsentry-linux-amd64 chmod +x deepsentry-linux-amd64
Linux ARM 64 位 arm64 / aarch64 deepsentry-linux-arm64 chmod +x deepsentry-linux-arm64
Linux 32 位 x86 386 / i386 / i686 deepsentry-linux-386 chmod +x deepsentry-linux-386
Windows 64 位 x86 amd64 / x64,常见 Windows 电脑 deepsentry-windows-amd64.exe 双击或 PowerShell 运行
Windows 32 位 x86 386 / x86,老 32 位系统 deepsentry-windows-386.exe 双击或 CMD 运行

建议把下载的主程序重命名为 deepsentry

mv deepsentry-linux-amd64 deepsentry
chmod +x deepsentry
./deepsentry --version

macOS 如果提示“无法打开,因为无法验证开发者”,可以在终端执行:

xattr -d com.apple.quarantine ./deepsentry 2>/dev/null || true
chmod +x ./deepsentry
./deepsentry --version

Windows 推荐使用 Windows Terminal 或 PowerShell 7:

.\deepsentry-windows-amd64.exe --version

5 分钟快速开始

第 1 步:下载或编译二进制

如果你下载的是 Release:

chmod +x ./deepsentry
./deepsentry --version

如果你从源码构建:

git clone <你的仓库地址>
cd DeepSentry-deepagent
bash build.sh
./build/deepsentry --version

第 2 步:创建配置文件

推荐先复制模板:

cp config.example.yaml config.yaml

也可以用向导生成:

./deepsentry --init

如果你使用 build/ 目录里的二进制:

cd build
./deepsentry --init

第 3 步:填入 AI 模型配置

打开 config.yaml,至少填写:

provider: mimo
api_protocol: auto
api_url: https://token-plan-cn.xiaomimimo.com/v1
api_key: YOUR_API_KEY
model_name: mimo-v2.5-pro

如果你使用其他兼容 OpenAI Chat Completions 的模型服务,可以这样写:

provider: custom
api_protocol: auto
api_url: https://your-llm.example.com/v1
api_key: YOUR_API_KEY
model_name: your-model-name

第 4 步:选择目标模式

本地模式:

target_protocol: local
ssh_host: ""
telnet_host: ""
ftp_host: ""

SSH 远程模式:

target_protocol: ssh
ssh_host: "1.2.3.4:22"
ssh_user: root
ssh_password: "YOUR_PASSWORD"
ssh_key_path: ""

SSH 密钥模式:

target_protocol: ssh
ssh_host: "1.2.3.4:22"
ssh_user: root
ssh_password: ""
ssh_key_path: "/Users/me/.ssh/id_rsa"

第 5 步:运行第一个任务

TUI 模式,适合日常使用:

./deepsentry -c config.yaml

进入界面后输入:

排查当前服务器系统版本、内存、磁盘、监听端口和最近登录情况,最后给出风险结论。

经典命令行模式,适合脚本:

./deepsentry --no-tui -c config.yaml --task "查看当前系统版本和监听端口"

WebShell 模式,适合蚁剑、冰蝎、哥斯拉、网页终端等非交互环境:

./deepsentry --webshell -c config.yaml --task "查看当前系统版本和监听端口"

配置文件说明

完整示例见 config.example.yaml

最小可用配置

provider: custom
api_protocol: auto
api_url: https://your-api.example.com/v1
api_key: YOUR_API_KEY
model_name: your-model-name

target_protocol: ssh
ssh_host: "1.2.3.4:22"
ssh_user: root
ssh_password: "YOUR_PASSWORD"
ssh_key_path: ""

use_native_tools: true
max_steps: 30
subagent_max_steps: 15
llm_timeout_sec: 120
llm_retries: 3
ssh_command_timeout_sec: 90
ssh_max_output_bytes: 524288

AI 服务商字段

字段 必填 说明
provider 服务商名称,如 mimoopenaideepseekqwencustom
api_protocol 建议填 auto 会自动识别常见协议
api_url API 地址,可只填到 /v1
api_key 云模型必填 API Key,不要提交到 GitHub
model_name 建议填 模型名称,留空时使用 provider 预设
llm_timeout_sec 单次 LLM 超时时间,建议 120
llm_retries LLM 重试次数,建议 3

Agent 步数控制

字段 默认值 说明
max_steps 30 主 Agent 单次任务最大推理步数
subagent_max_steps 15 子 Agent 步数用户上限。AI 会按任务难度估算 task_max_steps,但最终不会超过该值

临时提高复杂任务的子 Agent 上限:

./deepsentry -c config.yaml --subagent-max-steps 30 --task "完整分析 auth.log 和 syslog,输出登录时间线、可疑 IP、提权行为和证据链"

复杂任务中,主 Agent 会优先把独立方向拆给子 Agent。例如日志、网络、Webshell 三个方向可以并行执行,完成后由主 Agent 合并证据链、去重结论并继续下一步。

支持的 provider:

openai, anthropic, google, deepseek, qwen, hunyuan, tencent_hy,
teleai, ctyun, minimax, mimo, glm, xai, grok, ollama, lmstudio, custom

目标连接字段

模式 关键字段 说明
本地 target_protocol: local 所有命令在控制端本机执行
SSH target_protocol: sshssh_hostssh_user 推荐模式,支持 Shell 和文件读写
Telnet target_protocol: telnettelnet_host 老设备/极简环境
FTP target_protocol: ftpftp_host 仅文件/目录能力,无 Shell
Fleet targets[] 多台目标批量运维

让 Agent 管理 config.yaml

DeepSentry 内置 config_manage 工具,Agent 可以在用户明确要求时维护控制端本机的 config.yaml。所有写操作都会先在同目录创建备份:

.deepsentry_backups/config_<timestamp>.yaml

支持的常见管理动作:

需求 工具动作
查看当前配置摘要 action=status
读取指定配置项 action=get,参数 key
校验 YAML 是否可读 action=validate
手动创建备份 action=backup
添加外部 Skill 目录 action=add_skill_source,参数 source,也兼容 path/dir 表示 Skill 目录
添加 stdio MCP Server action=add_mcp_server,参数 specname/command/args
导入 Claude Desktop MCP JSON action=import_claude_mcp,参数 import_pathcontent
启用/禁用 MCP Server action=enable_mcp_server / action=disable_mcp_server,参数 name
启用/禁用 Skill 来源 action=enable_skill_source / action=disable_skill_source,参数 source
添加/更新 Fleet 目标 action=add_target,参数 protocol/host/user/password/key_path/tags
将已有单台配置转为 Fleet action=enable_fleet,会把当前单台目标纳入 targets 并切到控制端模式
设置单台 SSH 目标 action=set_ssh,参数 host/user/password/key_path
修改允许的单值字段 action=set,参数 key/value
修复并替换整份配置 action=replace_yaml,参数 content

示例自然语言:

把 /opt/deepsentry-skills 添加到 config.yaml 的 skill_sources,修改前先备份。
把这台 SSH 机器添加为 Fleet 目标:host=10.0.0.8:22,user=root,password=xxx,tag=prod。

工具输出会隐藏密码、Token、Secret 等敏感值,但配置文件本身仍可能包含凭据,请保护好 config.yaml 和备份目录。

如果 config.yaml 已经损坏到无法解析,Agent 可以读取原文件、生成修复后的完整 YAML,再用 replace_yaml 校验并替换;替换前仍会保留旧文件备份。

不想把密钥写进 config.yaml?

可以用环境变量覆盖:

export DEEPSENTRY_API_KEY="你的 API Key"
export DEEPSENTRY_SSH_HOST="1.2.3.4:22"
export DEEPSENTRY_SSH_USER="root"
export DEEPSENTRY_SSH_PASSWORD="你的 SSH 密码"
./deepsentry -c config.yaml

建议:

  • config.yaml 放本机使用,不提交 Git。
  • 对外发布只提交 config.example.yaml
  • CI 或服务器环境使用环境变量注入密钥。

常用运行模式

1. 默认 TUI

./deepsentry -c config.yaml

适合人工值守排查、持续追问、多轮分析。

2. 直接带任务进入 TUI

./deepsentry -c config.yaml "排查目标机内存、磁盘和监听端口"

3. 经典 stdout 模式

./deepsentry --no-tui -c config.yaml --task "审计 SSH 登录失败记录"

适合普通终端、脚本、CI。

4. JSONL 自动化模式

./deepsentry --no-tui --json -c config.yaml --task "mem_info + port_listen" > events.jsonl

适合外部程序消费事件流。

5. 静默模式

./deepsentry --quiet -c config.yaml --task "查看当前系统状态"

6. 计划模式

./deepsentry --plan -c config.yaml --task "配置每天 9 点巡检 CPU、内存、磁盘并生成报告"

7. 无人值守模式

./deepsentry --batch -y -c config.yaml --task "自动巡检目标机 /proc"

--batch -y 会自动批准高风险动作,请只在受控环境使用。

8. 恢复会话

./deepsentry --list-sessions
./deepsentry --resume session_xxx -c config.yaml

TUI 图形化选择恢复:

./deepsentry --tui --pick-session -c config.yaml

WebShell / 蚁剑 / 非交互环境用法

很多 WebShell 环境不适合 TUI,也不适合长时间阻塞等待。DeepSentry 提供 --webshell 专用模式。

基本命令

./deepsentry --webshell -c config.yaml --task "查看当前系统版本"

前台会立即返回类似:

[WEB] DeepSentry 任务已提交后台执行
[WEB] 执行结果报告: /path/to/reports/report_20260630_145544.md
[WEB] 实时进度日志: /path/to/reports/webshell_progress_20260630_145544.log
[WEB] 固定索引文件: /path/to/reports/latest_webshell.txt
[WEB] 查看进度: cat /path/to/reports/webshell_progress_20260630_145544.log
[WEB] 查看报告: cat /path/to/reports/report_20260630_145544.md

注意这里推荐用 cat,不是 tail -f。很多 WebShell 对长连接和持续输出不友好,cat 更稳。

查看进度

cat reports/latest_webshell.txt
cat reports/webshell_progress_20260630_145544.log

查看报告

cat reports/report_20260630_145544.md

WebShell 模式特点

  • 父进程立即返回,不会卡住 WebShell 页面。
  • 子进程后台执行,进度写入 webshell_progress_<时间>.log
  • 最终报告写入 report_<时间>.md
  • reports/latest_webshell.txt 永远指向最近一次任务路径。
  • 等同于后台启用 --no-tui --batch -y,高风险动作会自动批准。
  • 如果 Agent 必须追问,任务会保存 checkpoint,可用 --resume 补充信息继续。

WebShell 恢复任务

./deepsentry --webshell -c config.yaml --resume session_xxx --task "补充信息:目标 Web 目录是 /var/www/html"

TUI 全屏界面用法

TUI 是默认模式:

./deepsentry -c config.yaml

常用快捷键:

快捷键 功能
Tab 聚焦输入框
Enter 发送任务或追问
Shift+Enter / Alt+Enter / Ctrl+J 输入换行
Esc 中断当前任务或退出输入状态
Ctrl+L 清屏
Ctrl+U 清空输入
e 展开/折叠思考或子 Agent 结果
Y 批准高风险操作
N 拒绝高风险操作
q 空闲时退出

斜杠命令:

命令 说明
/help 查看帮助
/new 新建任务
/restart 重新开始
/clear 清屏
/status 查看状态
/cost 查看 token 使用量
/model 查看当前模型
/compact 压缩长上下文提示
/sessions 查看可恢复会话
/resume 查看恢复提示
/config 查看配置摘要
/exit / /quit 退出

输入 / 会显示命令联想,输入 /c 可快速补全 /clear


内置工具清单

当前版本注册 59 个内置工具。它们由 Go 原生实现或统一调度,Agent 会按需发现和调用,不会每轮把全部工具塞进 prompt。

按场景分类

场景 工具
网络连通 pingtraceroutedns_lookupbandwidth_test
连接审计 net_connectionsport_listenroute_tablearp_tablefirewall_status
系统应急 mem_infoprocess_listtarget_health_summarydisk_usagefile_taillogin_auditservice_unitsfile_hash
取证分析 file_identfile_stringsread_gzipread_logpcap_analyzesqlite_inspect
文档解析 document_parse
端口和内网 nmap_scancidr_scannetcat_probeservice_fingerprint
HTTP / Web http_probehttp_fetchweb_snapshotheadless_browser
抓包和流量 flow_snapshotpacket_capture
数据库探测 redis_probemysql_probepostgres_probeoracle_probe
配置审计 app_config_discoverdb_config_auditdb_log_readsecret_scanservice_unit_auditcontainer_inventory
CTF / AWD flag_scanawd_service_check
脚本和文件 script_runfile_downloadfile_uploadarchive_packarchive_extract
代理转发 tcp_forwardsocks5_proxy
自动化任务 schedule_task
Fleet 批量 fleet_inventoryfleet_execfleet_file

工具风险等级

风险 含义
low 只读或低影响操作
medium 会主动连接目标、读取较敏感信息或产生明显探测行为
high 可能执行脚本、上传文件、扫描端口、抓包、代理转发或批量执行

交互 TUI 模式下,高风险动作会请求确认。--batch--webshell 会自动批准,请谨慎使用。

Fleet 工具有动态判险逻辑:

  • fleet_exec 会看真实 command / cmd 内容。lscatdf -huptime 等只读命令可自动执行;rm、写重定向、重启、提权等高风险命令仍会确认。
  • fleet_filelsreaddownload 可自动执行;upload 会写入目标文件,需要确认。

工具启用/禁用

默认全部启用。可以在配置中控制:

enabled_tools: []
disabled_tools:
  - tcp_forward
  - socks5_proxy
  - file_upload
  - script_run

如果 enabled_tools 非空,它会作为白名单:

enabled_tools:
  - mem_info
  - port_listen
  - net_connections
  - read_log
  - secret_scan

多目标 Fleet 用法

Fleet 适合一次管理多台服务器、网络设备或 FTP 证据机。

配置示例

targets:
  - name: web-01
    protocol: ssh
    host: "10.0.0.11:22"
    user: root
    password: ""
    key_path: "/Users/me/.ssh/id_rsa"
    tags: ["prod", "web"]

  - name: legacy-router
    protocol: telnet
    host: "10.0.0.2:23"
    user: admin
    password: admin
    prompt: ">"
    tags: ["legacy", "network"]

  - name: ftp-backup
    protocol: ftp
    host: "10.0.0.50:21"
    user: backup
    password: "YOUR_PASSWORD"
    tags: ["backup", "evidence"]

selector 规则

selector 命中
all 全部目标
web-01 按 name
10.0.0.11 按 host
ssh / telnet / ftp 按协议
prod / web 按 tag
prod,ssh 同时匹配多个条件

常见任务

列出目标:

列出当前 Fleet 目标清单

批量巡检:

对 prod 标签的 SSH 主机执行内存、磁盘、监听端口巡检,最后汇总异常。

批量命令:

对 selector=prod,ssh 的目标执行 uptime 和 df -h,并汇总结果。

连接和密码注意事项

如果目标已经写在 targets[] 或单台 SSH 配置里,不要让 Agent 在控制端手写裸 ssh/scp/sftp root@host ...。这些系统命令不会读取 DeepSentry 的 config.yaml 密码/私钥,可能直接卡在 OpenSSH 的交互式密码提示里。

正确方式:

对 target-01 执行 echo SSH_OK

Agent 应调用:

{"action":"tool","tool_name":"fleet_exec","tool_args":{"selector":"target-01","command":"echo SSH_OK","concurrency":"1"}}

下载文件应走 fleet_file

{"action":"tool","tool_name":"fleet_file","tool_args":{"selector":"target-01","action":"download","remote_path":"/tmp/flag.txt","local_path":"~/.deepsentry/workspace/flag.txt"}}

需要每台机器独立分析时,优先使用子 Agent 的 target_selector,例如让 log-analyst 分别分析 prod 目标并汇总。


报告、会话与记忆

报告位置

每次任务都会生成 Markdown 报告:

reports/report_<timestamp>.md

报告包含:

  • 任务标题和启动时间。
  • Agent 思考摘要。
  • 执行动作。
  • 命令和工具输出。
  • 最终结论。

会话恢复

DeepSentry 会保存 checkpoint:

~/.deepsentry/sessions/<session_id>/checkpoint.json

查看会话:

./deepsentry --list-sessions

恢复会话:

./deepsentry --resume session_xxx -c config.yaml

记忆层

记忆 位置 说明
内置 AGENTS.md 二进制内置 默认行为准则
用户 AGENTS.md ~/.deepsentry/AGENTS.md 用户级偏好
项目 AGENTS.md .deepsentry/AGENTS.md 项目级偏好
KV 记忆 ~/.deepsentry/memory/store.json Agent 保存的结构化事实

明显的密码、Token、私钥、Webhook 密钥会被记忆系统拒绝保存。


外部 MCP 与 Skills 扩展

DeepSentry 支持加载一部分 Claude / Codex / OpenClaw / Hermes 生态中常见的外部能力,但不是所有格式都能无缝通用。

外部 Skills

DeepSentry 的 Skill 加载规则很简单:一个目录就是一个 Skill,目录里必须有 SKILL.md

默认加载目录:

./skills
~/.deepsentry/skills

推荐目录结构:

~/.deepsentry/skills/
└── log-audit/
    └── SKILL.md

SKILL.md 示例:

---
name: log-audit
description: Linux 登录日志审计与异常来源分析
license: Apache-2.0
---

# Log Audit

当用户需要分析 auth.log、secure、syslog 登录异常时,按以下流程执行……

如果你的外部 Skill 本身就是 SKILL.md + YAML frontmatter 结构,通常可以直接复制到 ~/.deepsentry/skills/<skill-name>/SKILL.md 使用。如果外部项目使用的是其他清单文件或打包格式,需要先转换成上面的目录结构。

也可以在 config.yaml 指定额外来源目录:

skill_sources:
  - "skills"
  - "~/.deepsentry/skills"
  - "/opt/deepsentry-skills"
disabled_skill_sources:
  - "/opt/old-skills"

TUI 快捷命令:

/skill list
/skill load log-audit
/skill unload log-audit
/skill add /opt/deepsentry-skills
/skill off /opt/old-skills
/skill on /opt/old-skills
/skill remove /opt/old-skills

load/unload 作用于当前会话已加载 Skill;add/off/on/remove 作用于 config.yaml 的 Skill 来源目录,通常在新会话生效。

外部 MCP

DeepSentry 当前支持 stdio 类型的 MCP tools。旧短格式仍兼容:

mcp_servers:
  - "fs:npx:-y,@modelcontextprotocol/server-filesystem,/tmp"

含义是:

名称:启动命令:参数1,参数2,参数3

Agent 会在启动时连接 MCP Server,读取 tools/list,之后可以通过 mcp:<工具名> 调用外部工具。

推荐使用结构化格式,支持 envcwd 和禁用开关:

mcp_server_configs:
  - name: fs
    type: stdio
    command: npx
    args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
    cwd: "/tmp"
    env:
      EXAMPLE_TOKEN: "xxx"
    disabled: false

TUI 快捷命令:

/mcp list
/mcp import ~/Library/Application Support/Claude/claude_desktop_config.json
/mcp add fs npx -y,@modelcontextprotocol/server-filesystem,/tmp
/mcp off fs
/mcp on fs
/mcp remove fs

当前支持:

能力 状态
stdio MCP tools/list 支持
stdio MCP tools/call 支持
Claude Desktop JSON 配置直接导入 支持,使用 /mcp import <json路径>config_manage action=import_claude_mcp
env / cwd 细粒度启动参数 支持,使用 mcp_server_configs
MCP resources / prompts 暂不支持
HTTP / SSE MCP Server 暂不支持

定时任务与多通道通知

DeepSentry 的定时任务可以在生成本地报告后发送外部通知。当前支持:

通道 notify 值 配置
钉钉机器人 dingtalk dingtalk_webhook,可选 dingtalk_secret
飞书/Lark 机器人 feishu feishu_webhook,可选 feishu_secret
HTTP 邮件网关 email email_gateway_urlemail_to,可选 token/header/from

notify 支持逗号多选,例如 dingtalk,feishu,email,会按顺序同时发送。

基础配置:

scheduler_enabled: true
scheduler_store: reports/schedules/tasks.json
scheduler_interval_sec: 30
scheduler_timezone: Local

# 钉钉机器人
dingtalk_webhook: ""
dingtalk_secret: ""

# 飞书/Lark 自定义机器人
feishu_webhook: ""
feishu_secret: ""

# HTTP 邮件网关
email_gateway_url: ""
email_gateway_token: ""
email_gateway_header: Authorization
email_to: "[email protected]"
email_from: "[email protected]"

创建钉钉任务:

每天 9 点巡检服务器 CPU、内存、磁盘和监听端口,生成报告并发钉钉。

创建飞书任务:

每天 9 点巡检服务器 CPU、内存、磁盘和监听端口,生成报告并发飞书。

创建多通道任务:

每天 9 点巡检生产服务器,生成报告,同时发钉钉、飞书和邮件通知。

也可以显式调用工具:

使用 schedule_task 添加任务:每天9点巡检,notify=dingtalk,feishu,email,kind=inspection。

邮件网关请求格式为 HTTP JSON POST:

{
  "to": ["[email protected]"],
  "from": "[email protected]",
  "subject": "DeepSentry 定时任务: 巡检",
  "markdown": "# 报告正文",
  "text": "报告正文",
  "source": "DeepSentry"
}

鉴权规则:

  • email_gateway_header: Authorization 时,email_gateway_token 会以 Bearer <token> 发送。
  • 如果你的网关使用 API Key,可设置 email_gateway_header: X-API-Key
  • 如果需要自定义完整 header,可写成 email_gateway_header: "X-Token: {token}"

只运行调度器:

./deepsentry --scheduler -c config.yaml

查看、添加、删除、立即运行调度任务,也可以让 Agent 调用 schedule_task 工具完成。

从源码构建

环境要求

  • Go 1.21 或更高版本。
  • macOS、Linux 或 Windows。
  • 如需远程模式,需要目标 SSH/Telnet/FTP 可达。

拉取代码

git clone <你的仓库地址>
cd DeepSentry-deepagent

中国大陆网络可配置 Go 代理:

go env -w GOPROXY=https://goproxy.cn,direct

构建当前平台

这种方式适合开发调试。它不会注入 build.sh 里的发布日期 ldflags,所以 --version 看到的 build 日期可能是代码默认值;正式发布请使用下一节的 bash build.sh

macOS / Linux:

go build -o deepsentry ./cmd/main.go ./cmd/usage.go ./cmd/survey_compat.go ./cmd/console_other.go

Windows:

go build -o deepsentry.exe ./cmd/main.go ./cmd/usage.go ./cmd/survey_compat.go ./cmd/console_windows.go

一键交叉编译发布包

bash build.sh

输出目录:

build/
  deepsentry-darwin-amd64
  deepsentry-darwin-arm64
  deepsentry-linux-amd64
  deepsentry-linux-arm64
  deepsentry-linux-386
  deepsentry-windows-amd64.exe
  deepsentry-windows-386.exe
  deepsentry

常见问题

1. 提示找不到配置文件

运行:

./deepsentry --init

或显式指定:

./deepsentry -c config.yaml

2. SSH 连接失败

检查:

  • ssh_host 是否包含端口,例如 1.2.3.4:22
  • ssh_user 是否正确。
  • 密码或 ssh_key_path 是否正确。
  • 在系统终端里单独测试 ssh [email protected] -p 22 是否可达。注意不要让 DeepSentry Agent 通过裸 ssh/scp/sftp 访问已配置目标;应使用 fleet_exec / fleet_file
  • 云服务器安全组是否放行。

3. 已经在 config.yaml 写了密码,为什么还提示 root@host's password:

通常是 Agent 生成了控制端裸 ssh/scp/sftp 命令。OpenSSH 子进程不会读取 DeepSentry 的配置文件,也不会把密码提示交给 TUI 输入框。

解决办法:

  • 退出当前卡住的进程,重新启动新版二进制。
  • 把多目标访问改成 fleet_exec / fleet_file
  • 单台远程模式下直接执行目标命令,不要再包一层 ssh root@host

4. WebShell 没有持续输出

WebShell 模式不会在前台持续刷屏,而是写入进度文件:

cat reports/latest_webshell.txt
cat reports/webshell_progress_<timestamp>.log
cat reports/report_<timestamp>.md

5. WebShell 报告没有生成

优先看进度日志:

cat reports/webshell_progress_<timestamp>.log

常见原因:

  • config.yaml 路径不对。
  • API Key 无效。
  • SSH 连接失败。
  • 目标命令超时。

6. LLM 报 429 / rate limit

说明模型服务商限流或高负载。可以:

  • 稍后重试。
  • 增大 llm_retries
  • 增大 llm_timeout_sec
  • 更换模型或服务商。

7. 终端乱码或显示错位

尝试:

DEEPSENTRY_PLAIN=1 ./deepsentry -c config.yaml
DEEPSENTRY_ASCII=1 ./deepsentry --no-tui -c config.yaml --task "查看系统状态"
./deepsentry --no-color -c config.yaml

Windows 推荐 Windows Terminal 或 PowerShell 7。

8. TUI 退出后终端状态不正常

运行:

reset
stty sane

9. 不想让 Agent 执行高风险工具

config.yaml 禁用:

disabled_tools:
  - script_run
  - file_upload
  - archive_extract
  - tcp_forward
  - socks5_proxy
  - nmap_scan
  - cidr_scan
  - packet_capture

安全建议

  • 只在授权环境使用。
  • 不要把真实 config.yaml、API Key、SSH 密码提交到 GitHub。
  • 分享项目或压缩包时只带 config.example.yaml,不要带真实配置。
  • 生产环境慎用 --batch -y
  • WebShell 模式会自动批准动作,建议只在隔离环境或应急授权场景使用。
  • 高风险工具如 script_runfile_uploadtcp_forwardsocks5_proxy 默认存在确认机制;无人值守时请先配置 disabled_tools
  • 已配置目标请使用 fleet_exec / fleet_file / target_selector,不要在 Agent 内裸跑 ssh/scp/sftp 访问目标。
  • 生成报告可能包含敏感路径、主机名、日志片段,公开前请脱敏。

项目结构

cmd/                    CLI 入口、TUI/经典/WebShell 参数处理
internal/analyzer/      LLM 协议、JSON/action 解析
internal/harness/       Agent 循环、动作执行、中间件、checkpoint
internal/tui/           全屏 TUI 界面
internal/builtin/       Go 原生内置工具实现
internal/tools/         工具注册表与调度
internal/executor/      Local / SSH / Telnet / FTP / Fleet 执行器
internal/memory/        内置 AGENTS.md、用户记忆、KV 记忆
internal/scheduler/     本地定时任务
internal/security/      命令风险评估
docs/操作手册.md          详细中文操作手册
config.example.yaml      配置模板
build.sh                 一键交叉编译脚本

License

本项目采用 Apache License 2.0 开源协议,详见 LICENSE


Credits

DeepSentry v2.0 Ultimate is developed by Hx0 Team.

Author: asaotomo

Reviews (0)

No results found