将冰冷的离别化为温暖的 Skill,欢迎加入数字生命1.0!Transforming cold farewells into warm skills? It's giving rebirth era. Welcome to Digital Life 1.0. 🫶
170 matches across 7 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | tools/feishu_auto_collector.py | 63 | # ─── 配置 ──────────────────────────────────────────────────────────────────── |
| MEDIUM | tools/feishu_auto_collector.py | 126 | # ─── Token ─────────────────────────────────────────────────────────────────── |
| MEDIUM | tools/feishu_auto_collector.py | 197 | # ─── 用户搜索 ───────────────────────────────────────────────────────────────── |
| MEDIUM | tools/feishu_auto_collector.py | 365 | # ─── 消息记录 ───────────────────────────────────────────────────────────────── |
| MEDIUM | tools/feishu_auto_collector.py | 663 | # ─── 文档采集 ───────────────────────────────────────────────────────────────── |
| MEDIUM | tools/feishu_auto_collector.py | 774 | # ─── 多维表格 ───────────────────────────────────────────────────────────────── |
| MEDIUM | tools/feishu_auto_collector.py | 829 | # ─── 主流程 ─────────────────────────────────────────────────────────────────── |
| MEDIUM | tools/feishu_mcp_client.py | 48 | # ─── 配置管理 ──────────────────────────────────────────────────────────────── |
| MEDIUM | tools/feishu_mcp_client.py | 90 | # ─── MCP 调用封装 ───────────────────────────────────────────────────────────── |
| MEDIUM | tools/feishu_mcp_client.py | 149 | # ─── 功能函数 ───────────────────────────────────────────────────────────────── |
| MEDIUM | tools/feishu_mcp_client.py | 253 | # ─── CLI ───────────────────────────────────────────────────────────────────── |
| MEDIUM | tools/slack_auto_collector.py | 43 | # ─── 依赖检查 ────────────────────────────────────────────────────────────────── |
| MEDIUM | tools/slack_auto_collector.py | 55 | # ─── 常量 ────────────────────────────────────────────────────────────────────── |
| MEDIUM | tools/slack_auto_collector.py | 72 | # ─── 错误类型 ────────────────────────────────────────────────────────────────── |
| MEDIUM | tools/slack_auto_collector.py | 86 | # ─── 配置管理 ────────────────────────────────────────────────────────────────── |
| MEDIUM | tools/slack_auto_collector.py | 156 | # ─── Slack Client 封装(带速率限制重试)───────────────────────────────────────── |
| MEDIUM | tools/slack_auto_collector.py | 236 | # ─── 用户搜索 ────────────────────────────────────────────────────────────────── |
| MEDIUM | tools/slack_auto_collector.py | 328 | # ─── 频道发现 ────────────────────────────────────────────────────────────────── |
| MEDIUM | tools/slack_auto_collector.py | 393 | # ─── 消息采集 ────────────────────────────────────────────────────────────────── |
| MEDIUM | tools/slack_auto_collector.py | 490 | # ─── 主采集流程 ──────────────────────────────────────────────────────────────── |
| MEDIUM | tools/slack_auto_collector.py | 649 | # ─── CLI 入口 ────────────────────────────────────────────────────────────────── |
| MEDIUM | tools/dingtalk_auto_collector.py | 49 | # ─── 配置 ──────────────────────────────────────────────────────────────────── |
| MEDIUM | tools/dingtalk_auto_collector.py | 91 | # ─── Token ─────────────────────────────────────────────────────────────────── |
| MEDIUM | tools/dingtalk_auto_collector.py | 141 | # ─── 用户搜索 ───────────────────────────────────────────────────────────────── |
| MEDIUM | tools/dingtalk_auto_collector.py | 214 | # ─── 文档采集 ───────────────────────────────────────────────────────────────── |
| MEDIUM | tools/dingtalk_auto_collector.py | 366 | # ─── 多维表格 ───────────────────────────────────────────────────────────────── |
| MEDIUM | tools/dingtalk_auto_collector.py | 482 | # ─── 消息记录(浏览器方案)──────────────────────────────────────────────────── |
| MEDIUM | tools/dingtalk_auto_collector.py | 670 | # ─── 主流程 ─────────────────────────────────────────────────────────────────── |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tools/skill_presets.py | 195 | def normalize_research_profile(character: str | None, research_profile: str | None) -> str: |
| LOW | tools/skill_presets.py | 212 | def get_research_profile_preset(character: str | None, research_profile: str | None = None) -> dict: |
| LOW | tools/skill_presets.py | 265 | def resolve_existing_storage_root( |
| LOW | tools/install_generated_skill_common.py | 52 | def render_installed_markdown(skill_dir: Path, artifact_name: str, command_name: str) -> str: |
| LOW | tools/slack_auto_collector.py | 395 | def fetch_messages_from_channel( |
| LOW | tools/install_openclaw_generated_skill.py | 12 | def default_openclaw_skills_dir() -> Path: |
| LOW | tools/feishu_browser.py | 35 | def get_default_chrome_profile() -> str: |
| LOW | tools/install_claude_generated_skill.py | 17 | def default_claude_skills_dir() -> Path: |
| LOW | tools/install_claude_generated_skill.py | 22 | def default_claude_commands_dir() -> Path: |
| LOW | tools/install_claude_generated_skill.py | 27 | def should_install_command_shim(system_name: str | None = None) -> bool: |
| LOW | tools/dingtalk_auto_collector.py | 484 | def get_default_chrome_profile() -> str: |
| LOW | tools/research/merge_research.py | 40 | def collect_structured_section_metrics(text: str) -> dict: |
| LOW | tools/research/merge_research.py | 77 | def collect_source_weight_distribution(text: str) -> Counter: |
| LOW | tools/research/merge_research.py | 106 | def count_potential_long_quote_lines(text: str) -> int: |
| LOW | tools/research/quality_check.py | 63 | def extract_summary_percentage(summary_text: str, label: str) -> int: |
| LOW | tools/research/transcribe_audio.py | 80 | def transcribe_with_faster_whisper(audio_path: Path, model_name: str, language: Optional[str]) -> str: |
| LOW | tools/research/transcribe_audio.py | 116 | def transcribe_with_openai_whisper(audio_path: Path, model_name: str, language: Optional[str]) -> str: |
| LOW | tools/research/transcribe_audio.py | 143 | def transcribe_with_openai_api(audio_path: Path, language: Optional[str]) -> str: |
| LOW | tests/test_skill_entrypoint_docs.py | 9 | def test_root_skill_uses_dot_skill_entrypoint(self) -> None: |
| LOW | tests/test_skill_entrypoint_docs.py | 41 | def test_readme_and_install_use_dot_skill_paths(self) -> None: |
| LOW | tests/test_skill_entrypoint_docs.py | 70 | def test_repo_examples_live_under_skills_colleague(self) -> None: |
| LOW | tests/test_skill_entrypoint_docs.py | 76 | def test_multilingual_readmes_include_dot_skill_and_research_toolchain(self) -> None: |
| LOW | tests/test_skill_writer.py | 25 | def test_create_colleague_keeps_legacy_names_and_adds_engine_schema(self) -> None: |
| LOW | tests/test_skill_writer.py | 88 | def test_create_relationship_uses_character_preset_metadata(self) -> None: |
| LOW | tests/test_skill_writer.py | 122 | def test_create_skill_renders_chinese_chrome_when_language_is_zh_cn(self) -> None: |
| LOW | tests/test_skill_writer.py | 150 | def test_create_celebrity_adds_research_dirs_and_toolchain(self) -> None: |
| LOW | tests/test_skill_writer.py | 193 | def test_create_celebrity_budget_unfriendly_embeds_profile_config(self) -> None: |
| LOW | tests/test_skill_writer.py | 232 | def test_create_celebrity_accepts_string_profile_from_runtime_meta(self) -> None: |
| LOW | tests/test_skill_writer.py | 255 | def test_update_regenerates_manifest_and_archives_artifacts(self) -> None: |
| LOW | tests/test_skill_writer.py | 285 | def test_update_accepts_multiple_persona_corrections_in_one_payload(self) -> None: |
| LOW | tests/test_skill_writer.py | 327 | def test_update_replaces_existing_markdown_sections_instead_of_appending_duplicates(self) -> None: |
| LOW | tests/test_skill_writer.py | 401 | def test_backup_and_rollback_include_manifest(self) -> None: |
| LOW | tests/test_skill_writer.py | 422 | def test_version_manager_can_still_resolve_legacy_colleagues_root(self) -> None: |
| LOW | tests/test_skill_writer.py | 443 | def test_character_prompt_bundles_exist(self) -> None: |
| LOW | tests/test_install_claude_generated_skill.py | 21 | def test_install_generated_skill_writes_claude_skill_folder(self) -> None: |
| LOW | tests/test_install_claude_generated_skill.py | 57 | def test_install_generated_skill_can_write_windows_command_shim(self) -> None: |
| LOW | tests/test_install_claude_generated_skill.py | 92 | def test_windows_detection_only_enables_command_shim_on_windows(self) -> None: |
| LOW | tests/test_cli_lifecycle.py | 40 | def test_default_colleague_cli_uses_skills_colleague_root(self) -> None: |
| LOW | tests/test_cli_lifecycle.py | 81 | def test_character_lifecycle_via_cli(self) -> None: |
| LOW | tests/test_cli_lifecycle.py | 308 | def test_cli_can_install_generated_skill_into_supported_host_paths(self) -> None: |
| LOW | tests/test_research_tools.py | 19 | def test_clean_subtitle_text_removes_timestamps_and_duplicates(self) -> None: |
| LOW | tests/test_research_tools.py | 36 | def test_convert_file_writes_transcript(self) -> None: |
| LOW | tests/test_research_tools.py | 49 | def test_merge_research_writes_summary(self) -> None: |
| LOW | tests/test_research_tools.py | 97 | def test_evaluate_skill_text_detects_expected_signals(self) -> None: |
| LOW | tests/test_research_tools.py | 134 | def test_source_grounding_rejects_generic_homepages(self) -> None: |
| LOW | tests/test_research_tools.py | 163 | def test_budget_unfriendly_profile_requires_deeper_research_metrics(self) -> None: |
| LOW | tests/test_research_tools.py | 215 | def test_budget_unfriendly_profile_passes_with_full_review_chain(self) -> None: |
| LOW | tests/test_install_openclaw_and_codex.py | 21 | def test_openclaw_and_codex_repo_installers_copy_repo_layout(self) -> None: |
| LOW | tests/test_install_openclaw_and_codex.py | 40 | def test_openclaw_generated_skill_installer_writes_host_skill_folder(self) -> None: |
| LOW | tests/test_install_openclaw_and_codex.py | 74 | def test_codex_generated_skill_installer_writes_host_skill_folder(self) -> None: |
| LOW | tests/test_install_hermes_skill.py | 17 | def test_install_skill_copies_repo_layout(self) -> None: |
| LOW | tests/test_install_hermes_skill.py | 30 | def test_install_skill_dry_run_does_not_write(self) -> None: |
| LOW | tests/test_install_hermes_skill.py | 40 | def test_install_skill_dry_run_allows_existing_destination(self) -> None: |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | tools/feishu_browser.py | 148 | if (cells.length === 0) return null; |
| HIGH | tools/feishu_browser.py | 164 | row.push(grid[r] && grid[r][c] ? grid[r][c] : ''); |
| HIGH | tools/feishu_browser.py | 166 | rows.push(row); |
| HIGH | tools/feishu_browser.py | 264 | results.push({{ sender, content, time }}); |
| HIGH | tools/feishu_browser.py | 320 | print("错误:请先安装 Playwright:pip install playwright && playwright install chromium", file=sys.stderr) |
| HIGH | tools/dingtalk_auto_collector.py | 88 | print(" pip3 install playwright && playwright install chromium") |
| HIGH | tools/dingtalk_auto_collector.py | 509 | "请运行:pip3 install playwright && playwright install chromium\n" |
| HIGH | tools/dingtalk_auto_collector.py | 627 | results.push({{ sender, content, time }}); |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tools/install_codex_skill.py | 4 | |
| LOW | tools/feishu_auto_collector.py | 42 | |
| LOW | tools/version_manager.py | 9 | |
| LOW | tools/skill_presets.py | 9 | |
| LOW | tools/install_codex_generated_skill.py | 4 | |
| LOW | tools/install_generated_skill_common.py | 4 | |
| LOW | tools/feishu_mcp_client.py | 34 | |
| LOW | tools/feishu_mcp_client.py | 42 | |
| LOW | tools/install_hermes_skill.py | 4 | |
| LOW | tools/slack_auto_collector.py | 33 | |
| LOW | tools/feishu_parser.py | 19 | |
| LOW | tools/install_openclaw_generated_skill.py | 4 | |
| LOW | tools/feishu_browser.py | 24 | |
| LOW | tools/feishu_browser.py | 28 | |
| LOW | tools/install_claude_generated_skill.py | 4 | |
| LOW | tools/skill_schema.py | 6 | |
| LOW | tools/dingtalk_auto_collector.py | 27 | |
| LOW | tools/dingtalk_auto_collector.py | 512 | |
| LOW | tools/install_openclaw_skill.py | 4 | |
| LOW | tools/skill_writer.py | 9 | |
| LOW | tools/research/merge_research.py | 13 | |
| LOW | tools/research/quality_check.py | 4 | |
| LOW | tools/research/srt_to_transcript.py | 4 | |
| LOW | tools/research/transcribe_audio.py | 30 | |
| LOW | tests/test_skill_writer.py | 1 | |
| LOW | tests/test_install_claude_generated_skill.py | 1 | |
| LOW | tests/test_cli_lifecycle.py | 1 | |
| LOW | tests/test_research_tools.py | 1 | |
| LOW | tests/test_install_openclaw_and_codex.py | 1 | |
| LOW | tests/test_install_hermes_skill.py | 1 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tools/feishu_auto_collector.py | 858 | except Exception as e: |
| LOW | tools/feishu_auto_collector.py | 869 | except Exception as e: |
| LOW | tools/feishu_auto_collector.py | 463 | except Exception: |
| LOW | tools/feishu_auto_collector.py | 474 | except Exception: |
| LOW | tools/feishu_auto_collector.py | 537 | except Exception: |
| LOW | tools/feishu_auto_collector.py | 548 | except Exception: |
| LOW | tools/email_parser.py | 63 | except Exception: |
| LOW | tools/email_parser.py | 88 | except Exception: |
| LOW | tools/email_parser.py | 97 | except Exception: |
| LOW | tools/email_parser.py | 108 | except Exception: |
| LOW | tools/feishu_mcp_client.py | 203 | except Exception: |
| LOW | tools/slack_auto_collector.py | 625 | except Exception as e: |
| LOW | tools/feishu_browser.py | 64 | except Exception as e: |
| LOW | tools/feishu_browser.py | 105 | except Exception: |
| LOW | tools/feishu_browser.py | 123 | except Exception: |
| LOW | tools/feishu_browser.py | 137 | except Exception: |
| LOW | tools/feishu_browser.py | 206 | except Exception as e: |
| LOW | tools/dingtalk_auto_collector.py | 315 | except Exception: |
| LOW | tools/dingtalk_auto_collector.py | 528 | except Exception as e: |
| LOW | tools/dingtalk_auto_collector.py | 578 | except Exception as e: |
| LOW | tools/dingtalk_auto_collector.py | 703 | except Exception as e: |
| LOW | tools/dingtalk_auto_collector.py | 714 | except Exception as e: |
| LOW | tools/dingtalk_auto_collector.py | 727 | except Exception as e: |
| LOW | tools/skill_writer.py | 411 | except Exception: |
| LOW | tools/research/transcribe_audio.py | 211 | except Exception as exc: |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tools/feishu_auto_collector.py | 844 | # Step 1: 搜索用户 |
| LOW | tools/feishu_auto_collector.py | 850 | # Step 2: 采集消息记录 |
| LOW | tools/feishu_auto_collector.py | 861 | # Step 3: 采集文档 |
| LOW | tools/slack_auto_collector.py | 599 | # Step 1: 搜索用户 |
| LOW | tools/slack_auto_collector.py | 609 | # Step 2: 找共同频道 |
| LOW | tools/slack_auto_collector.py | 614 | # Step 3: 采集消息 |
| LOW | tools/dingtalk_auto_collector.py | 687 | # Step 1: 搜索用户 |
| LOW | tools/dingtalk_auto_collector.py | 695 | # Step 2: 文档 |
| LOW | tools/dingtalk_auto_collector.py | 706 | # Step 3: 多维表格 |
| LOW | tools/dingtalk_auto_collector.py | 717 | # Step 4: 消息记录(浏览器方案) |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | tools/feishu_auto_collector.py | 237 | |
| LOW | tools/feishu_auto_collector.py | 415 | |
| LOW | tools/feishu_auto_collector.py | 486 | |
| LOW | tools/feishu_auto_collector.py | 566 | |
| LOW | tools/feishu_auto_collector.py | 776 | |
| LOW | tools/email_parser.py | 70 | |
| LOW | tools/feishu_mcp_client.py | 151 | |
| LOW | tools/feishu_mcp_client.py | 255 | |
| LOW | tools/feishu_browser.py | 71 | |
| LOW | tools/feishu_browser.py | 85 | |
| LOW | tools/dingtalk_auto_collector.py | 222 | |
| LOW | tools/dingtalk_auto_collector.py | 391 | |
| LOW | tools/dingtalk_auto_collector.py | 496 | |
| LOW | tools/skill_writer.py | 111 | |
| LOW | tools/research/merge_research.py | 40 | |
| LOW | tests/test_skill_writer.py | 443 |