尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

TradingAgents-CN 使用指南自动隐藏功能解析:基于 Streamlit Session State 的智能界面布局方案

TradingAgents-CN 使用指南自动隐藏功能解析:基于 Streamlit Session State 的智能界面布局方案 TradingAgents-CN 使用指南自动隐藏功能解析基于 Streamlit Session State 的智能界面布局方案【免费下载链接】TradingAgents-CN基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN导读本文围绕 TradingAgents-CN 中文金融交易框架 Web 界面中的「使用指南自动隐藏」功能展开讲解其智能显示逻辑、用户偏好记忆机制、Session State 状态管理实现以及背后的布局切换原理。读者将掌握该功能完整的实现脉络——从默认显示判定、开始分析时自动隐藏、分析完成保持隐藏到用户手动覆盖的优先级规则并可通过仓库源码与测试用例进行验证。功能概述在 TradingAgents-CN 的 Web 分析界面中右侧常驻的「使用指南」区域承载了快速开始、分析师团队说明、AI 模型说明、常见问题与风险提示等内容对新手友好但对于反复进行多标的分析的熟练用户而言长期占用约 1/3 的屏幕宽度会压缩分析配置、进度与结果区域的展示空间。「使用指南自动隐藏」功能正是为此设计它根据用户的操作状态是否正在分析、是否已有分析结果自动调整使用指南的显示状态在「新手引导」与「高效分析」两种需求之间取得平衡。该功能的完整实现位于 web/app.py约 L1075-L1094 与 L1123-L1128对应测试位于 tests/0.1.14/test_guide_auto_hide.py。智能显示逻辑核心状态判定功能的默认显示逻辑由一行核心表达式驱动见 web/app.pydefault_show_guide not (st.session_state.get(analysis_running, False) or st.session_state.get(analysis_results) is not None)即只要「分析正在运行」或「已经存在分析结果」二者满足其一默认就不显示使用指南。这对应文档中描述的四种行为场景analysis_runninganalysis_results默认显示指南初次访问无分析记录FalseNone✅ 显示开始分析True清空为 None❌ 隐藏分析完成有结果False有数据❌ 隐藏用户手动设置任意任意遵循用户选择用户偏好管理与单次渲染的默认值不同用户偏好需要跨页面刷新保持因此存放在 Streamlit 的 Session State 中。初始化逻辑如下web/app.pyif user_set_guide_preference not in st.session_state: st.session_state.user_set_guide_preference False st.session_state.show_guide_preference default_show_guideuser_set_guide_preference是一个「是否被用户显式干预过」的标记初始为False一旦用户在侧边栏切换过复选框该标记被置为True此后自动逻辑不再覆盖用户的选择。自动隐藏触发当用户提交分析表单、校验通过后主程序在启动后台分析线程之前执行自动隐藏web/app.py# 自动隐藏使用指南除非用户明确设置要显示 if not st.session_state.get(user_set_guide_preference, False): st.session_state.show_guide_preference False logger.info( [界面] 开始分析自动隐藏使用指南)这段代码位于表单提交分支内form_data.get(submitted, False)并且与状态同步操作相邻st.session_state.analysis_running True与st.session_state.analysis_results None在 L1179-L1182 先行执行随后隐藏指南再进入分析 ID 生成、AsyncProgressTracker创建与后台线程启动流程L1190-L1330。从调用链可以看出自动隐藏是「分析启动」这一完整动作中的一个环节与进度跟踪、结果持久化、线程注册等逻辑天然衔接。布局切换原理使用指南的显隐不仅影响内容展示还直接影响整个页面的栅格布局。核心代码在 web/app.py# 主内容区域 - 根据是否显示指南调整布局 if show_guide: col1, col2 st.columns([2, 1]) # 2:1比例使用指南占三分之一 else: col1 st.container() col2 None显示使用指南时页面被划分为 2:1 的两列左侧col1承载分析配置区、分析进度区与分析结果区右侧col2渲染「使用指南」侧栏。┌─────────────────┬─────────────┐ │ │ │ │ 分析配置区 │ 使用指南 │ │ │ 快速开始 │ │ 分析进度区 │ 分析师说明 │ │ │ AI模型说明 │ │ 分析结果区 │ 常见问题 │ │ │ 风险提示 │ └─────────────────┴─────────────┘ 2/3 宽度 1/3 宽度右侧col2的内容渲染被包裹在if show_guide and col2 is not None:条件中web/app.py内部通过st.expander折叠面板组织四个区块 快速开始默认展开输入股票代码A 股 6 位数字、美股代码、港股 5 位代码、选择分析日期、选择分析师团队、设置研究深度 1-5 级、点击开始分析的完整操作步骤 分析师团队说明市场分析师、社交媒体分析师、新闻分析师、基本面分析师的职责描述 AI 模型说明qwen-turbo / qwen-plus / qwen-max 的定位与推荐场景❓ 常见问题股票代码无反应、代码格式、分析耗时、港股支持、历史数据范围等高频疑问。此外还有固定的st.warning投资风险提示L1600-L1608。隐藏使用指南时col1退化为普通的st.container()主内容区占满全宽┌─────────────────────────────────┐ │ │ │ 分析配置区 │ │ │ │ 分析进度区 │ │ │ │ 分析结果区 │ │ │ └─────────────────────────────────┘ 全宽度同时col2 None保证了右侧内容块if show_guide and col2 is not None整体跳过渲染不会产生空列或布局残留。用户控制入口与状态清理侧边栏复选框用户控制入口是侧边栏的一个复选框web/app.pyshow_guide st.sidebar.checkbox( 显示使用指南, valuest.session_state.get(show_guide_preference, default_show_guide), help显示/隐藏右侧使用指南, keyguide_checkbox ) # 记录用户的选择 if show_guide ! st.session_state.get(show_guide_preference, default_show_guide): st.session_state.user_set_guide_preference True st.session_state.show_guide_preference show_guide值得注意的实现细节只有用户的选择与当前偏好值「不一致」时才会写入user_set_guide_preference True。这意味着仅当用户主动改变了复选框状态才视为「显式干预」若用户从未操作复选框每次重渲染都会回落到自动逻辑计算出的默认值从而保证初次访问的新用户仍能看到指南。状态清理按钮与自动隐藏配套的是侧边栏的「 清理分析状态」按钮web/app.py用于清理僵尸分析状态将analysis_running置为False、清空current_analysis_id与analysis_results、删除所有包含auto_refresh的 Session State 键并调用 utils/thread_tracker.py 中的cleanup_dead_analysis_threads()清理死亡线程。该按钮与自动隐藏形成闭环分析状态被清理后default_show_guide重新回到True新用户再次进入页面时可重新看到使用指南。Session State 变量一览功能共依赖四个 Session State 变量变量名类型语义生命周期analysis_runningbool分析是否正在运行分析启动时置 True完成/失败/清理时置 Falseanalysis_resultsdict/None分析结果数据新分析启动时清空完成后由后台线程持久化user_set_guide_preferencebool用户是否手动设置过偏好首次进入初始化为 False用户干预后置 Trueshow_guide_preferencebool用户的显示偏好值随自动逻辑或用户操作更新逻辑优先级三者遵循明确的优先级次序用户手动设置最高优先级user_set_guide_preference True后自动隐藏逻辑被跳过复选框状态完全由用户掌控分析状态自动逻辑中等优先级analysis_running为 True 或已有analysis_results时默认隐藏默认显示逻辑最低优先级仅作为上述两种状态均未命中时的兜底即新用户首访默认显示。测试验证功能自带完整的独立测试脚本 tests/0.1.14/test_guide_auto_hide.py其核心思路是用MockSessionState模拟 Streamlit 的 Session State 字典接口get/__setitem__/__getitem__/__contains__不依赖真实 Streamlit 运行环境即可验证逻辑。场景级测试test_guide_auto_hide_logic逐场景复现四个关键断言初始状态默认显示analysis_runningFalse、analysis_resultsNone时default_show_guide为True开始分析自动隐藏analysis_runningTrue且用户未设置偏好时show_guide_preference被置为False分析完成保持隐藏analysis_runningFalse、analysis_results有数据时显示偏好维持False用户手动设置优先user_set_guide_preferenceTrue且偏好为True时即使再次开始分析show_guide_preference仍保持True。行为矩阵测试test_ui_behavior则以「场景-输入-预期输出」表格化方式覆盖四种组合初始访问、开始分析、分析完成、用户强制显示并同时打印默认值与实际值便于直观核对自动逻辑与用户覆盖逻辑的差异。运行方式为python tests/0.1.14/test_guide_auto_hide.py该脚本不依赖外部服务与 API Key仅需 Python 3 环境即可在数秒内完成全部断言。用户体验优化前后对比维度优化前优化后使用指南显示始终显示固定占用 1/3 宽度智能自动隐藏仅新用户/空闲时显示分析结果显示区域较小2/3 宽度全宽展示报告可读性提升用户控制需手动隐藏无记忆复选框一键切换偏好被记忆新用户引导—首访仍能看到完整指南引导不缺失状态恢复—「清理分析状态」后自动回归默认显示使用建议新用户首次访问时利用默认展开的「快速开始」面板按步骤操作——输入代码后务必按回车确认Streamlit 默认行为、建议先选择 3 级标准研究深度与多个分析师以获得全面分析系统会在你点击「开始分析」后自动让出右侧空间。熟练用户通过侧边栏「 显示使用指南」复选框手动控制设置一次后偏好即被记住user_set_guide_preferenceTrue此后系统不会在每次分析时覆盖你的选择需要时随时重新勾选即可恢复指南。开发者功能完全向后兼容不侵入现有表单与进度逻辑。若要调整自动隐藏条件只需修改 web/app.py 中default_show_guide的判定表达式或补充新的 Session State 状态变量布局比例可通过 L1125 的st.columns([2, 1])调整。修改后运行 tests/0.1.14/test_guide_auto_hide.py 回归四个场景即可。未来扩展方向文档给出了后续演进思路均可在现有 Session State 模型上低成本落地个性化设置将show_guide_preference持久化到用户配置如数据库或本地存储使偏好跨会话保留响应式布局根据屏幕宽度动态切换 2:1 与全宽布局甚至在小屏设备上默认隐藏快捷键支持为「显示/隐藏使用指南」绑定键盘快捷键进一步提升操作效率使用统计结合仓库现有的用量统计能力收集指南查看与切换行为数据辅助优化默认策略。该功能在保持新用户引导完整性的前提下通过优先级明确的 Session State 设计与 2:1/全宽两态布局切换实现了「引导」与「效率」的动态平衡是 TradingAgents-CN Web 界面中典型的轻量级用户体验优化实践。【免费下载链接】TradingAgents-CN基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表