app: description: 按群和日期提取群成员日画像,输出严格 JSON,供 member_context 插件直接消费 icon: 🤖 icon_background: '#E0F2FE' mode: workflow name: member_context use_icon_as_answer_icon: false dependencies: - current_identifier: null type: marketplace value: marketplace_plugin_unique_identifier: langgenius/openai_api_compatible:0.0.27@f9ce3ff5e28f09931a3a7fca59add2d09590408f7e9a3d701b10c77a60249719 version: null kind: app version: 0.5.0 workflow: conversation_variables: [] environment_variables: [] features: file_upload: allowed_file_extensions: - .TXT allowed_file_types: - document allowed_file_upload_methods: - local_file - remote_url enabled: false fileUploadConfig: audio_file_size_limit: 50 batch_count_limit: 5 file_size_limit: 15 image_file_batch_limit: 10 image_file_size_limit: 10 single_chunk_attachment_limit: 10 video_file_size_limit: 100 workflow_file_upload_limit: 10 image: enabled: false number_limits: 3 transfer_methods: - local_file - remote_url number_limits: 3 opening_statement: '' retriever_resource: enabled: false sensitive_word_avoidance: enabled: false speech_to_text: enabled: false suggested_questions: [] suggested_questions_after_answer: enabled: false text_to_speech: enabled: false language: '' voice: '' graph: edges: - data: isInIteration: false isInLoop: false sourceType: start targetType: llm id: start-source-llm-target selected: false source: start_node sourceHandle: source target: llm_node targetHandle: target type: custom zIndex: 0 - data: isInIteration: false isInLoop: false sourceType: llm targetType: end id: llm-source-end-target selected: false source: llm_node sourceHandle: source target: end_node targetHandle: target type: custom zIndex: 0 - data: isInIteration: false isInLoop: false sourceType: llm targetType: llm id: llm_node-fail-branch-1775115372864-target source: llm_node sourceHandle: fail-branch target: '1775115372864' targetHandle: target type: custom zIndex: 0 - data: isInLoop: false sourceType: llm targetType: end id: 1775115372864-source-end_node-target source: '1775115372864' sourceHandle: source target: end_node targetHandle: target type: custom zIndex: 0 nodes: - data: desc: '' selected: false title: 开始 type: start variables: - label: query max_length: 120000 options: [] required: false type: paragraph variable: query - label: chatroom_id max_length: 128 options: [] required: true type: text-input variable: chatroom_id - label: digest_date max_length: 32 options: [] required: true type: text-input variable: digest_date - label: member_labels max_length: 50000 options: [] required: true type: paragraph variable: member_labels - label: compressed_chat max_length: 200000 options: [] required: true type: paragraph variable: compressed_chat height: 213 id: start_node position: x: 0 y: 0 positionAbsolute: x: 0 y: 0 selected: false sourcePosition: right targetPosition: left type: custom width: 242 - data: context: enabled: false variable_selector: [] desc: '' error_strategy: fail-branch model: completion_params: temperature: 0.2 mode: chat name: gpt-5.4-mini provider: langgenius/openai_api_compatible/openai_api_compatible prompt_template: - id: system_prompt_member_context role: system text: "你是微信群后台的成员日行为证据提取器。\n\n任务:\n根据给定的一天群聊记录,只按 wxid 识别成员,输出每个成员当天的结构化行为观察。\n\ \n关键规则:\n1. wxid 是唯一标识。display_name 仅用于展示,不用于身份判定。\n2. 每个 wxid 最终只能输出一条记录,严禁重复输出同一个\ \ wxid。\n3. 请先按 wxid 汇总该成员全天发言,再提取结果。\n4. 即使成员发言以短句为主,只要样本量足够,也必须尽量提炼:\n\ \ - topics\n - discussion_scenarios\n - skill_signals\n - problem_solving_signals\n\ \ - value_preferences\n - habit_signals\n - expression_markers\n\ \ - engagement_traits\n - reply_entry_points\n - social_role\n\ \ - temperament_signal\n - summary_text\n5. identity_clues、family_signals、life_stage_signals\ \ 没有明确公开证据时允许为空。\n6. 不允许因为“短句较多”就统一输出空数组和通用摘要。\n7. 不做心理诊断、不做隐私猜测、不把玩笑当事实。\n\ 8. 只能输出候选成员列表中的 wxid。\n9. topics 更偏向反复出现的关注方向;discussion_scenarios 更偏向什么情境下会发言;skill_signals\ \ 更偏向能力表现;problem_solving_signals 更偏向怎么处理问题;value_preferences 更偏向判断偏好;social_role 更偏向当天在群里的实际作用。\n\ 10. expression_markers 记录可观察的表达标记,如常用句式、口头禅、是否爱列步骤/贴日志;reply_entry_points 记录什么样的接话方式最容易接住他。\n\ 11. 输出前自行去重,同一个 wxid 只保留一条最完整结果。\n\n输出要求:\n- 只输出严格 JSON,不要 markdown,不要解释,不要前后缀。\n\ - 输出格式:\n{\n \"members\": [\n {\n \"wxid\": \"成员wxid\",\n \ \ \"display_name\": \"显示名\",\n \"topics\": [\"主题1\"],\n \"discussion_scenarios\"\ : [\"场景1\"],\n \"identity_clues\": [\"身份线索1\"],\n \"skill_signals\"\ : [\"技能信号1\"],\n \"problem_solving_signals\": [\"处理方式1\"],\n \ \ \"family_signals\": [\"家庭线索1\"],\n \"life_stage_signals\": [\"\ 阶段线索1\"],\n \"value_preferences\": [\"价值偏好1\"],\n \"interaction_style\"\ : \"一句中文\",\n \"message_pattern\": \"一句中文\",\n \"response_style_hint\"\ : \"一句中文\",\n \"habit_signals\": [\"习惯1\"],\n \"expression_markers\"\ : [\"表达标记1\"],\n \"engagement_traits\": [\"参与特征1\"],\n \"reply_entry_points\"\ : [\"接话点1\"],\n \"decision_style\": \"一句中文\",\n \"social_role\"\ : \"一句中文\",\n \"reply_taboos\": [\"避坑1\"],\n \"temperament_signal\"\ : \"一句中文\",\n \"summary_text\": \"不超过100字\",\n \"representative_messages\"\ : [\"原话1\", \"原话2\"],\n \"confidence\": 0.95\n }\n ]\n}\n\n字段约束:\n\ - topics、discussion_scenarios、skill_signals、problem_solving_signals、value_preferences、habit_signals、expression_markers、engagement_traits、reply_entry_points\ \ 最多 4 个\n- identity_clues、family_signals、life_stage_signals 最多 3 个\n\ - reply_taboos 最多 3 个\n- representative_messages 最多 3 条\n- 如果某成员样本明显不足,可以不输出该成员\n" - id: user_prompt_member_context role: user text: '群ID: {{#start_node.chatroom_id#}} 日期: {{#start_node.digest_date#}} 候选成员: {{#start_node.member_labels#}} 压缩后的群聊记录: {{#start_node.compressed_chat#}} ' retry_config: max_retries: 3 retry_enabled: true retry_interval: 1000 selected: false title: 成员画像提取 type: llm variables: [] vision: enabled: false height: 154 id: llm_node position: x: 342 y: 30 positionAbsolute: x: 342 y: 30 selected: false sourcePosition: right targetPosition: left type: custom width: 242 - data: desc: '' outputs: - value_selector: - llm_node - text variable: text selected: false title: 结束 type: end height: 88 id: end_node position: x: 1066 y: 52 positionAbsolute: x: 1066 y: 52 selected: false sourcePosition: right targetPosition: left type: custom width: 242 - data: context: enabled: false variable_selector: [] default_value: - key: text type: string value: '{"members": []}' error_strategy: default-value model: completion_params: temperature: 0.7 mode: chat name: grok-4-fast provider: langgenius/openai_api_compatible/openai_api_compatible prompt_template: - id: c5ee983e-d6e0-4790-ac3b-f4e097013b70 role: system text: "你是微信群后台的成员日行为证据提取器。\n\n任务:\n根据给定的一天群聊记录,只按 wxid 识别成员,输出每个成员当天的结构化行为观察。\n\ \n关键规则:\n1. wxid 是唯一标识。display_name 仅用于展示,不用于身份判定。\n2. 每个 wxid 最终只能输出一条记录,严禁重复输出同一个\ \ wxid。\n3. 请先按 wxid 汇总该成员全天发言,再提取结果。\n4. 即使成员发言以短句为主,只要样本量足够,也必须尽量提炼:\n\ \ - topics\n - discussion_scenarios\n - skill_signals\n - problem_solving_signals\n\ \ - value_preferences\n - habit_signals\n - expression_markers\n\ \ - engagement_traits\n - reply_entry_points\n - social_role\n\ \ - temperament_signal\n - summary_text\n5. identity_clues、family_signals、life_stage_signals\ \ 没有明确公开证据时允许为空。\n6. 不允许因为“短句较多”就统一输出空数组和通用摘要。\n7. 不做心理诊断、不做隐私猜测、不把玩笑当事实。\n\ 8. 只能输出候选成员列表中的 wxid。\n9. topics 更偏向反复出现的关注方向;discussion_scenarios 更偏向什么情境下会发言;skill_signals\ \ 更偏向能力表现;problem_solving_signals 更偏向怎么处理问题;value_preferences 更偏向判断偏好;social_role 更偏向当天在群里的实际作用。\n\ 10. expression_markers 记录可观察的表达标记,如常用句式、口头禅、是否爱列步骤/贴日志;reply_entry_points 记录什么样的接话方式最容易接住他。\n\ 11. 输出前自行去重,同一个 wxid 只保留一条最完整结果。\n\n输出要求:\n- 只输出严格 JSON,不要 markdown,不要解释,不要前后缀。\n\ - 输出格式:\n{\n \"members\": [\n {\n \"wxid\": \"成员wxid\",\n \ \ \"display_name\": \"显示名\",\n \"topics\": [\"主题1\"],\n \"discussion_scenarios\"\ : [\"场景1\"],\n \"identity_clues\": [\"身份线索1\"],\n \"skill_signals\"\ : [\"技能信号1\"],\n \"problem_solving_signals\": [\"处理方式1\"],\n \ \ \"family_signals\": [\"家庭线索1\"],\n \"life_stage_signals\": [\"\ 阶段线索1\"],\n \"value_preferences\": [\"价值偏好1\"],\n \"interaction_style\"\ : \"一句中文\",\n \"message_pattern\": \"一句中文\",\n \"response_style_hint\"\ : \"一句中文\",\n \"habit_signals\": [\"习惯1\"],\n \"expression_markers\"\ : [\"表达标记1\"],\n \"engagement_traits\": [\"参与特征1\"],\n \"reply_entry_points\"\ : [\"接话点1\"],\n \"decision_style\": \"一句中文\",\n \"social_role\"\ : \"一句中文\",\n \"reply_taboos\": [\"避坑1\"],\n \"temperament_signal\"\ : \"一句中文\",\n \"summary_text\": \"不超过100字\",\n \"representative_messages\"\ : [\"原话1\", \"原话2\"],\n \"confidence\": 0.95\n }\n ]\n}\n\n字段约束:\n\ - topics、discussion_scenarios、skill_signals、problem_solving_signals、value_preferences、habit_signals、expression_markers、engagement_traits、reply_entry_points\ \ 最多 4 个\n- identity_clues、family_signals、life_stage_signals 最多 3 个\n\ - reply_taboos 最多 3 个\n- representative_messages 最多 3 条\n- 如果某成员样本明显不足,可以不输出该成员\n" - id: 2df6d4ce-4e40-42a9-85f3-184075da24c7 role: user text: '群ID: {{#start_node.chatroom_id#}} 日期: {{#start_node.digest_date#}} 候选成员: {{#start_node.member_labels#}} 压缩后的群聊记录: {{#start_node.compressed_chat#}} ' selected: true title: 异常分支 type: llm vision: enabled: false height: 124 id: '1775115372864' position: x: 704 y: 132 positionAbsolute: x: 704 y: 132 selected: true sourcePosition: right targetPosition: left type: custom width: 242 viewport: x: 210 y: 340 zoom: 0.7 rag_pipeline_variables: []