JumpServer Skills
只使用正式 CLI 入口:
- - INLINECODE0
- INLINECODE1
- INLINECODE2
这是查询与分析 skill。允许本地运行时写入 config-write --confirm 和 select-org --confirm。不执行 JumpServer 业务写操作。
Route First
按下面顺序判路由。上面的规则优先于下面的规则。
- 1. 如果用户请求的核心对象是某一天或某一段时间内的 JumpServer 使用数据分析,优先命中 HTML 模板工作流。这包括:使用报告、日报、使用情况、使用分析、审计分析、某天发生了什么、分析
20260310、看下 / 看看 3 月 10 号 使用情况、帮我看 / 帮我看看某天登录/会话/命令/传输情况、想看上周谁登录最多、过一下 3 月上旬 哪些资产最活跃,以及类似的“时间范围内使用情况 / 概览 / 汇总 / 排行 / TOP”表达。
动作:优先使用
python3 scripts/jumpserver_api/jms_report.py daily-usage ...,并由它加载
template/bastion-daily-usage-template.html 和
references/metadata/dailyusagereporttemplatefields.json;先把“昨天 / 20260310 / 3月10号 / 上周 / 本月”等时间表达归一化为明确时间窗,再生成并验证完整 HTML 报告;模板细节见
references/report-template-playbook.md。
- 2. 如果用户要配置 JumpServer、检查依赖、检查配置、检查连通性、切换组织、查看许可证、系统设置、报表、工单、存储、终端或做对象解析,先走
jms_diagnose.py。
动作:先预检,再用
config-status /
ping /
select-org /
inspect /
resolve。
- 3. 如果用户要看授权规则、ACL、RBAC、为什么某人能访问某资产、某条权限详情,走
jms_query.py。
动作:优先
permission-list /
permission-get /
asset-perm-users;必要时先用
jms_diagnose.py 做访问分析。
- 4. 如果用户要查登录、会话、终端会话、命令记录、文件传输、异常行为、高危命令、失败登录、特权账号使用审计,走
jms_query.py。
动作:优先
audit-analyze --capability ...,需要明细时再用
audit-list /
audit-get /
terminal-sessions。
- 5. 如果用户要查资产、节点、平台、账号、账号模板、用户、用户组、组织、标签、网域等对象,走
jms_query.py。
动作:只做
object-list /
object-get;名称不唯一时先解析,不要猜。
- 6. 如果用户要做治理巡检、聚合分析、账号治理、资产治理、访问分析、系统巡检或 capability 型统计,走
jms_diagnose.py inspect --capability ...。
动作:优先 capability,不手工拼多条零散查询。
普通路由细节、更多命中说法和反例见 references/routing-playbook.md。
Template Overrides
按下面顺序处理模板例外。上面的规则优先于下面的规则。
- 1. 如果用户明确说“不要生成报告,直接分析”“先简单说下”“只给我结论”“不用模板”,才允许跳过模板,直接给简短分析。
- 除上述明确例外外,只要是某一天或某一段时间的 JumpServer 使用情况 / 使用分析 / 审计分析,或者表达为某时间段的登录 / 会话 / 命令 / 传输情况、排行、TOP、谁最多,就必须先走模板工作流。
- “分析”不等于自由文本优先。带时间范围的使用分析、情况概览或排行类问题,默认先产出完整 HTML 报告;摘要只能作为补充,不能替代报告。
Organization Priority
按下面顺序处理组织。上面的规则优先于下面的规则。
- 1. 用户显式给组织:按用户指定组织执行。
- 报告或使用分析模板请求且用户未指定组织,或明确指定“所有组织”“全局组织”:默认执行
python3 scripts/jumpserver_api/jms_diagnose.py select-org --org-id 00000000-0000-0000-0000-000000000000 --confirm。 - 全局组织
00000000-0000-0000-0000-000000000000 的可访问性不只看候选组织列表;允许通过显式 select-org / 直连探测确认。 - 如果全局组织
00000000-0000-0000-0000-000000000000 的直连探测或显式选择验证失败:直接阻塞并返回 candidate_orgs;不要回退到 {0002} / {0002,0004} 自动规则。 - 非报告类请求且未指定组织:沿用保留组织逻辑。只有可访问组织集合恰好是
{0002} 或 {0002,0004} 时,才自动写入 0002。 - 当前
JMS_ORG_ID 已不可访问:先重新 select-org,不要继续业务命令。 - 查询类请求在未确定组织且存在多个可访问组织时:先返回
candidate_orgs 并要求用户选择查询组织。 - 查询类请求在当前组织已生效且仍有其他可切换组织时:继续返回
switchable_orgs,提示用户还可以切换到哪些组织查询。
Standard Flow
收到请求先做:
CODEBLOCK0
执行规则:
- - 配置或环境不确定时,先执行
python3 scripts/jumpserver_api/jms_diagnose.py config-status --json。 - INLINECODE44 时,先补齐配置,再继续。
- 名称不唯一、平台不明确、对象跨组织时,先解析或阻塞,不要猜。
- 审计类问题没有
date_from/date_to 时,默认最近 7 天;想查更大范围时优先要求明确时间窗。 - 模板化使用报告/使用分析请求必须先走
python3 scripts/jumpserver_api/jms_report.py daily-usage ...;它会负责时间归一化、组织处理、字段元数据取数、模板填充和生成后自检。普通查询优先只选 1 个正式入口。
Guardrails
- - 不生成临时 SDK Python 脚本或 HTTP 脚本。
- 不猜对象 ID、平台 ID、组织、鉴权信息或筛选条件。
- 不创建、更新、删除、解锁对象,也不追加或移除权限关系。
- 权限问题只做读取和解释,不做权限写入。
- 模板化报告请求必须优先使用
python3 scripts/jumpserver_api/jms_report.py daily-usage ...;不要现场写临时拼装逻辑。若正式入口缺失,应先补齐正式入口,再使用它。 - 模板化报告请求只使用字段元数据里声明的来源,不用 Markdown 模板替代 HTML 模板。
- 模板化报告请求中的命令审计字段,未显式给
command_storage_id 时默认汇总全部可访问 command storage;普通命令审计查询仍沿用默认 storage / 单个 storage / 多 storage 阻塞逻辑。
Respond With
成功时至少回显:
- - 已走预检
- 选中的正式入口或模板路径
- INLINECODE49
- INLINECODE50 (当当前组织已生效且仍有其他可切换组织时)
- 执行命令摘要
- 普通查询:结果摘要
- 模板报告:完整 HTML 报告,且已经通过生成后自检
模板报告成功时还至少回显:
- - 正式入口: INLINECODE51
- 报告文件路径
- 模板路径: INLINECODE52
- 字段元数据路径: INLINECODE53
- INLINECODE54
- INLINECODE55
- INLINECODE56
- INLINECODE57
- INLINECODE58
- INLINECODE59
- 可附加简短摘要,但不得仅返回摘要替代报告
阻塞时至少回显:
- - 已走预检
- INLINECODE60
- 阻塞原因
- INLINECODE61 或 INLINECODE62
- 下一步安全动作
References
JumpServer Skills
只使用正式 CLI 入口:
- - python3 scripts/jumpserverapi/jmsquery.py ...
- python3 scripts/jumpserverapi/jmsdiagnose.py ...
- python3 scripts/jumpserverapi/jmsreport.py ...
这是查询与分析 skill。允许本地运行时写入 config-write --confirm 和 select-org --confirm。不执行 JumpServer 业务写操作。
路由优先
按下面顺序判路由。上面的规则优先于下面的规则。
- 1. 如果用户请求的核心对象是某一天或某一段时间内的 JumpServer 使用数据分析,优先命中 HTML 模板工作流。这包括:使用报告、日报、使用情况、使用分析、审计分析、某天发生了什么、分析 20260310、看下 / 看看 3 月 10 号 使用情况、帮我看 / 帮我看看某天登录/会话/命令/传输情况、想看上周谁登录最多、过一下 3 月上旬 哪些资产最活跃,以及类似的“时间范围内使用情况 / 概览 / 汇总 / 排行 / TOP”表达。
动作:优先使用 python3 scripts/jumpserver
api/jmsreport.py daily-usage ...,并由它加载
template/bastion-daily-usage-template.html 和
references/metadata/dailyusagereporttemplatefields.json;先把“昨天 / 20260310 / 3月10号 / 上周 / 本月”等时间表达归一化为明确时间窗,再生成并验证完整 HTML 报告;模板细节见
references/report-template-playbook.md。
- 2. 如果用户要配置 JumpServer、检查依赖、检查配置、检查连通性、切换组织、查看许可证、系统设置、报表、工单、存储、终端或做对象解析,先走 jms_diagnose.py。
动作:先预检,再用 config-status / ping / select-org / inspect / resolve。
- 3. 如果用户要看授权规则、ACL、RBAC、为什么某人能访问某资产、某条权限详情,走 jms_query.py。
动作:优先 permission-list / permission-get / asset-perm-users;必要时先用 jms_diagnose.py 做访问分析。
- 4. 如果用户要查登录、会话、终端会话、命令记录、文件传输、异常行为、高危命令、失败登录、特权账号使用审计,走 jms_query.py。
动作:优先 audit-analyze --capability ...,需要明细时再用 audit-list / audit-get / terminal-sessions。
- 5. 如果用户要查资产、节点、平台、账号、账号模板、用户、用户组、组织、标签、网域等对象,走 jms_query.py。
动作:只做 object-list / object-get;名称不唯一时先解析,不要猜。
- 6. 如果用户要做治理巡检、聚合分析、账号治理、资产治理、访问分析、系统巡检或 capability 型统计,走 jms_diagnose.py inspect --capability ...。
动作:优先 capability,不手工拼多条零散查询。
普通路由细节、更多命中说法和反例见 references/routing-playbook.md。
模板覆盖
按下面顺序处理模板例外。上面的规则优先于下面的规则。
- 1. 如果用户明确说“不要生成报告,直接分析”“先简单说下”“只给我结论”“不用模板”,才允许跳过模板,直接给简短分析。
- 除上述明确例外外,只要是某一天或某一段时间的 JumpServer 使用情况 / 使用分析 / 审计分析,或者表达为某时间段的登录 / 会话 / 命令 / 传输情况、排行、TOP、谁最多,就必须先走模板工作流。
- “分析”不等于自由文本优先。带时间范围的使用分析、情况概览或排行类问题,默认先产出完整 HTML 报告;摘要只能作为补充,不能替代报告。
组织优先级
按下面顺序处理组织。上面的规则优先于下面的规则。
- 1. 用户显式给组织:按用户指定组织执行。
- 报告或使用分析模板请求且用户未指定组织,或明确指定“所有组织”“全局组织”:默认执行 python3 scripts/jumpserverapi/jmsdiagnose.py select-org --org-id 00000000-0000-0000-0000-000000000000 --confirm。
- 全局组织 00000000-0000-0000-0000-000000000000 的可访问性不只看候选组织列表;允许通过显式 select-org / 直连探测确认。
- 如果全局组织 00000000-0000-0000-0000-000000000000 的直连探测或显式选择验证失败:直接阻塞并返回 candidateorgs;不要回退到 {0002} / {0002,0004} 自动规则。
- 非报告类请求且未指定组织:沿用保留组织逻辑。只有可访问组织集合恰好是 {0002} 或 {0002,0004} 时,才自动写入 0002。
- 当前 JMSORGID 已不可访问:先重新 select-org,不要继续业务命令。
- 查询类请求在未确定组织且存在多个可访问组织时:先返回 candidateorgs 并要求用户选择查询组织。
- 查询类请求在当前组织已生效且仍有其他可切换组织时:继续返回 switchable_orgs,提示用户还可以切换到哪些组织查询。
标准流程
收到请求先做:
text
自动检查依赖 -> config-status --json -> 必要时 config-write --confirm -> ping -> 按路由和组织优先级选择正式入口
执行规则:
- - 配置或环境不确定时,先执行 python3 scripts/jumpserverapi/jmsdiagnose.py config-status --json。
- complete=false 时,先补齐配置,再继续。
- 名称不唯一、平台不明确、对象跨组织时,先解析或阻塞,不要猜。
- 审计类问题没有 datefrom/dateto 时,默认最近 7 天;想查更大范围时优先要求明确时间窗。
- 模板化使用报告/使用分析请求必须先走 python3 scripts/jumpserverapi/jmsreport.py daily-usage ...;它会负责时间归一化、组织处理、字段元数据取数、模板填充和生成后自检。普通查询优先只选 1 个正式入口。
安全护栏
- - 不生成临时 SDK Python 脚本或 HTTP 脚本。
- 不猜对象 ID、平台 ID、组织、鉴权信息或筛选条件。
- 不创建、更新、删除、解锁对象,也不追加或移除权限关系。
- 权限问题只做读取和解释,不做权限写入。
- 模板化报告请求必须优先使用 python3 scripts/jumpserverapi/jmsreport.py daily-usage ...;不要现场写临时拼装逻辑。若正式入口缺失,应先补齐正式入口,再使用它。
- 模板化报告请求只使用字段元数据里声明的来源,不用 Markdown 模板替代 HTML 模板。
- 模板化报告请求中的命令审计字段,未显式给 commandstorageid 时默认汇总全部可访问 command storage;普通命令审计查询仍沿用默认 storage / 单个 storage / 多 storage 阻塞逻辑。
响应格式
成功时至少回显:
- - 已走预检
- 选中的正式入口或模板路径
- effectiveorg
- switchableorgs(当当前组织已生效且仍有其他可切换组织时)
- 执行命令摘要
- 普通查询:结果摘要
- 模板报告:完整 HTML 报告,且已经通过生成后自检
模板报告成功时还至少回显:
- - 正式入口:python3 scripts/jumpserverapi/jmsreport.py daily-usage ...
- 报告文件路径
- 模板路径:template/bastion-daily-usage-template.html
- 字段元数据路径:references/metadata/dailyusagereporttemplatefields.json
- queriedcommandstorageids
- queriedcommandstoragecount
- reportdate
- datefrom
- dateto
- validationsummary
- 可附加简短摘要,但不得仅返回摘要替代报告
阻塞时至少回显:
- - 已走预检
- effectiveorg
- 阻塞原因
- candidateorgs 或 candidate_objects
- 下一步安全动作
参考资料