{"id":255,"date":"2026-06-18T13:06:23","date_gmt":"2026-06-18T05:06:23","guid":{"rendered":"https:\/\/ph.listeningo.cn\/index.php\/2026\/06\/18\/2026-06-17\/"},"modified":"2026-06-18T13:06:23","modified_gmt":"2026-06-18T05:06:23","slug":"2026-06-17","status":"publish","type":"post","link":"https:\/\/ph.listeningo.cn\/index.php\/2026\/06\/18\/2026-06-17\/","title":{"rendered":"PH\u70ed\u699c | 2026-06-17"},"content":{"rendered":"<p><!DOCTYPE html><br \/>\n<html lang=\"zh-CN\"><br \/>\n<head><br \/>\n    <meta charset=\"UTF-8\"><br \/>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><br \/>\n    <title>Product Hunt \u6bcf\u65e5\u70ed\u699c 2026-06-17<\/title><\/p>\n<style>\n        \/* --- \u5168\u5c40\u91cd\u7f6e\u4e0e\u5b57\u4f53 --- *\/\n        :root {\n            --ph-orange: #FF6154;\n            --text-main: #21293C;\n            --text-secondary: #4B587C;\n            --bg-ai: #F7F7F9;\n            --border-color: #E6E6E6;\n        }<\/p>\n<p>        body {\n            font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif;\n            color: var(--text-main);\n            background-color: #ffffff;\n            line-height: 1.6;\n            margin: 0;\n            padding: 20px;\n        }<\/p>\n<p>        .container {\n            max-width: 800px;\n            margin: 0 auto;\n        }<\/p>\n<p>        \/* --- \u5361\u7247\u6837\u5f0f --- *\/\n        .app-card {\n            border-bottom: 1px solid var(--border-color);\n            padding-bottom: 40px;\n            margin-bottom: 40px;\n        }<\/p>\n<p>        \/* --- 1. \u5934\u90e8\u533a\u57df --- *\/\n        .app-header {\n            display: flex;\n            align-items: flex-start;\n            gap: 16px;\n            margin-bottom: 20px;\n        }<\/p>\n<p>        .rank {\n            font-size: 24px;\n            font-weight: 300;\n            color: #999;\n            min-width: 30px;\n            padding-top: 4px;\n        }<\/p>\n<p>        .title-group {\n            flex: 1;\n        }<\/p>\n<p>        .app-title {\n            font-size: 24px;\n            font-weight: 800;\n            margin: 0 0 4px 0;\n            color: var(--text-main);\n            text-decoration: none;\n            display: inline-block;\n        }<\/p>\n<p>        .app-title:hover {\n            color: var(--ph-orange);\n            text-decoration: underline;\n        }<\/p>\n<p>        .vote-btn {\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n            justify-content: center;\n            border: 1px solid var(--border-color);\n            border-radius: 8px;\n            padding: 8px 12px;\n            background: #fff;\n            min-width: 60px;\n            box-shadow: 0 1px 2px rgba(0,0,0,0.05);\n        }<\/p>\n<p>        .vote-arrow {\n            color: var(--ph-orange);\n            font-size: 14px;\n            margin-bottom: -2px;\n        }<\/p>\n<p>        .vote-count {\n            font-weight: 600;\n            font-size: 14px;\n        }<\/p>\n<p>        \/* --- 2. \u5347\u7ea7\u7248\u5a92\u4f53\u753b\u5eca (\u5173\u952e\u4fee\u6539) --- *\/\n        .media-gallery {\n            display: flex;\n            gap: 16px;\n            overflow-x: auto; \/* \u5141\u8bb8\u6a2a\u5411\u6eda\u52a8 *\/\n            padding-bottom: 16px; \/* \u7559\u51fa\u6eda\u52a8\u7a7a\u95f4 *\/\n            scroll-snap-type: x mandatory; \/* \u6eda\u52a8\u5438\u9644\u6548\u679c *\/\n            -webkit-overflow-scrolling: touch; \/* iOS \u5e73\u6ed1\u6eda\u52a8 *\/\n            margin-bottom: 20px;<\/p>\n<p>            \/* \u9690\u85cf\u9ed8\u8ba4\u6eda\u52a8\u6761\u4f46\u4fdd\u7559\u529f\u80fd (Firefox) *\/\n            scrollbar-width: thin;\n            scrollbar-color: #ddd transparent;\n        }<\/p>\n<p>        \/* Webkit \u6eda\u52a8\u6761\u6837\u5f0f\u4f18\u5316 *\/\n        .media-gallery::-webkit-scrollbar {\n            height: 6px;\n        }\n        .media-gallery::-webkit-scrollbar-track {\n            background: transparent;\n        }\n        .media-gallery::-webkit-scrollbar-thumb {\n            background-color: #eee;\n            border-radius: 10px;\n        }<\/p>\n<p>        .media-item-wrapper {\n            flex: 0 0 auto; \/* \u9632\u6b62\u88ab\u538b\u7f29 *\/\n            width: 80%;     \/* \u79fb\u52a8\u7aef\u9ed8\u8ba4\u9732\u51fa\u4e00\u70b9\u4e0b\u4e00\u5f20\uff0c\u63d0\u793a\u53ef\u6ed1\u52a8 *\/\n            max-width: 500px; \/* \u684c\u9762\u7aef\u6700\u5927\u5bbd\u5ea6 *\/\n            aspect-ratio: 16\/9; \/* \u7edf\u4e00\u6bd4\u4f8b *\/<\/p>\n<p>            position: relative;\n            border-radius: 12px;\n            overflow: hidden;\n            border: 1px solid rgba(0,0,0,0.08);\n            background-color: #f5f5f5;\n            scroll-snap-align: center; \/* \u6eda\u52a8\u505c\u6b62\u65f6\u5c45\u4e2d *\/\n        }<\/p>\n<p>        .media-content {\n            width: 100%;\n            height: 100%;\n            object-fit: cover; \/* \u586b\u5145\u5bb9\u5668 *\/\n            display: block;\n            cursor: pointer;\n        }<\/p>\n<p>        \/* \u89c6\u9891\u6807\u7b7e\u7279\u6b8a\u5904\u7406 *\/\n        video.media-content {\n            background-color: #000;\n            cursor: pointer;\n        }<\/p>\n<p>        \/* \u5982\u679c\u53ea\u67091\u4e2a\u5a92\u4f53\uff0c\u4e0d\u8981\u6eda\u52a8\uff0c\u4e14\u5bbd\u5ea6\u81ea\u9002\u5e94 *\/\n        .media-gallery.single-item .media-item-wrapper {\n            width: 100%;\n            max-width: 100%;\n        }<\/p>\n<p>        \/* --- 3. \u63cf\u8ff0\u4e0e\u6807\u7b7e --- *\/\n        .one-liner {\n            font-size: 18px;\n            color: var(--text-secondary);\n            margin-bottom: 12px;\n            font-weight: 500;\n        }<\/p>\n<p>        .tags-container {\n            display: flex;\n            flex-wrap: wrap;\n            gap: 8px;\n            margin-bottom: 24px;\n        }<\/p>\n<p>        .tag {\n            font-size: 12px;\n            color: var(--text-secondary);\n            background-color: #F2F2F2;\n            padding: 4px 10px;\n            border-radius: 20px;\n            font-weight: 600;\n            text-transform: uppercase;\n        }<\/p>\n<p>        \/* --- 4. AI \u6458\u8981\u533a --- *\/\n        .ai-section {\n            background-color: var(--bg-ai);\n            border-radius: 12px;\n            padding: 20px;\n            margin-bottom: 20px;\n            border-left: 4px solid var(--ph-orange);\n        }<\/p>\n<p>        .ai-title {\n            font-size: 14px;\n            font-weight: 700;\n            color: var(--text-main);\n            margin: 0 0 12px 0;\n            display: flex;\n            align-items: center;\n            gap: 6px;\n        }<\/p>\n<p>        .ai-content {\n            font-size: 15px;\n            color: #333;\n            margin-bottom: 0;\n            line-height: 1.7;\n        }<\/p>\n<p>        \/* --- 5. \u8bc4\u8bba\u533a --- *\/\n        .reviews-section {\n            margin-top: 10px;\n        }<\/p>\n<p>        .review-item {\n            display: flex;\n            gap: 10px;\n            margin-bottom: 12px;\n            font-size: 14px;\n        }<\/p>\n<p>        .review-avatar {\n            font-size: 18px;\n            margin-top: 2px;\n            min-width: 24px;\n        }<\/p>\n<p>        .review-bubble {\n            background: #fff;\n            border: 1px solid var(--border-color);\n            padding: 8px 12px;\n            border-radius: 0 12px 12px 12px;\n            color: var(--text-secondary);\n            line-height: 1.5;\n        }<\/p>\n<p>        .review-author {\n            font-weight: 700;\n            color: var(--text-main);\n            margin-right: 4px;\n            font-style: normal;\n        }<\/p>\n<p>        .comments-section {\n            margin-top: 30px;\n            border-top: 1px solid var(--border-color);\n            padding-top: 20px;\n        }<\/p>\n<p>        .comments-toggle {\n            background-color: #f8f9fa;\n            border: 1px solid var(--border-color);\n            border-radius: 8px;\n            padding: 12px 20px;\n            cursor: pointer;\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            width: 100%;\n            font-size: 14px;\n            font-weight: 600;\n            color: var(--text-main);\n            transition: all 0.3s ease;\n        }<\/p>\n<p>        .comments-toggle:hover {\n            background-color: #e9ecef;\n        }<\/p>\n<p>        .comments-toggle .toggle-arrow {\n            font-size: 18px;\n            transition: transform 0.3s ease;\n        }<\/p>\n<p>        .comments-toggle.open .toggle-arrow {\n            transform: rotate(180deg);\n        }<\/p>\n<p>        .comments-container {\n            max-height: 0;\n            overflow: hidden;\n            transition: max-height 0.5s ease;\n            margin-top: 15px;\n        }<\/p>\n<p>        .comments-container.open {\n            max-height: 800px;\n            overflow: auto;\n        }<\/p>\n<p>        .comment-item {\n            background-color: #fff;\n            border: 1px solid var(--border-color);\n            border-radius: 8px;\n            padding: 16px;\n            margin-bottom: 12px;\n            font-size: 14px;\n        }<\/p>\n<p>        .comment-header {\n            display: flex;\n            justify-content: space-between;\n            align-items: flex-start;\n            margin-bottom: 8px;\n        }<\/p>\n<p>        .comment-author {\n            font-weight: 600;\n            color: var(--text-main);\n            margin-right: 8px;\n        }<\/p>\n<p>        .comment-content {\n            color: var(--text-secondary);\n            line-height: 1.5;\n            margin-bottom: 10px;\n            word-break: break-word;\n            word-wrap: break-word;\n            overflow-wrap: anywhere;\n            white-space: normal;\n        }<\/p>\n<p>        .comment-content p {\n            margin: 0;\n            word-break: break-word;\n            word-wrap: break-word;\n            overflow-wrap: anywhere;\n            white-space: normal;\n        }<\/p>\n<p>        \/* \u4f18\u5316\u8868\u60c5\u7b26\u53f7\u663e\u793a *\/\n       .emoji {\n            display: inline;\n            max-width: 15px;\n            overflow-wrap: normal;\n        }<\/p>\n<p>        .comment-actions {\n            display: flex;\n            align-items: center;\n            gap: 16px;\n            font-size: 12px;\n            color: var(--text-secondary);\n        }<\/p>\n<p>        .comment-vote {\n            display: flex;\n            align-items: center;\n            gap: 4px;\n            cursor: pointer;\n        }<\/p>\n<p>        .comment-replies {\n            margin-top: 12px;\n            margin-left: 20px;\n            padding-left: 12px;\n            border-left: 2px solid var(--border-color);\n        }<\/p>\n<p>        .reply-item {\n            background-color: #f8f9fa;\n            border: 1px solid var(--border-color);\n            border-radius: 6px;\n            padding: 12px;\n            margin-bottom: 8px;\n            font-size: 13px;\n        }<\/p>\n<p>        .reply-content {\n            color: var(--text-secondary);\n            line-height: 1.4;\n            margin-bottom: 6px;\n        }<\/p>\n<p>        \/* --- \u54cd\u5e94\u5f0f\u5fae\u8c03 --- *\/\n        @media (min-width: 600px) {\n            .media-item-wrapper {\n                width: 60%; \/* \u684c\u9762\u7aef\u7a0d\u5fae\u7a84\u4e00\u70b9\uff0c\u5c55\u793a\u66f4\u591a\u5f20 *\/\n                scroll-snap-align: start; \/* \u684c\u9762\u7aef\u9760\u5de6\u5bf9\u9f50 *\/\n            }\n        }<\/p>\n<p>        \/* \u79fb\u52a8\u8bbe\u5907\u54cd\u5e94\u5f0f\u4f18\u5316 *\/\n        @media (max-width: 599px) {\n            \/* \u6a21\u6001\u6846\u4f18\u5316 *\/\n            .modal-content {\n                max-width: 95%;\n                max-height: 85vh;\n                margin: 10vh auto;\n            }<\/p>\n<p>            .close {\n                top: 10px;\n                right: 20px;\n                font-size: 30px;\n                \/* \u589e\u5927\u70b9\u51fb\u533a\u57df *\/\n                padding: 15px;\n            }<\/p>\n<p>            \/* \u89c6\u9891\u64ad\u653e\u56fe\u6807\u4f18\u5316 *\/\n            .play-icon {\n                width: 60px;\n                height: 60px;\n                font-size: 18px;\n            }<\/p>\n<p>            \/* \u786e\u4fdd\u5a92\u4f53\u5185\u5bb9\u5728\u5c0f\u5c4f\u5e55\u4e0a\u6b63\u786e\u663e\u793a *\/\n            .media-content {\n                object-fit: cover;\n            }\n        }<\/p>\n<p>        \/* --- \u56fe\u7247\u653e\u5927\u6a21\u6001\u6846\u6837\u5f0f --- *\/\n        .modal {\n            display: none;\n            position: fixed;\n            z-index: 1000;\n            left: 0;\n            top: 0;\n            width: 100%;\n            height: 100%;\n            background-color: rgba(0, 0, 0, 0.9);\n            overflow: auto;\n            transition: opacity 0.3s ease;\n        }<\/p>\n<p>        .modal-content {\n            display: block;\n            max-width: 90%;\n            max-height: 90vh;\n            margin: 5vh auto;\n            object-fit: contain;\n            animation: zoom 0.3s;\n        }<\/p>\n<p>        @keyframes zoom {\n            from {transform: scale(0.8); opacity: 0;}\n            to {transform: scale(1); opacity: 1;}\n        }<\/p>\n<p>        .close {\n            position: absolute;\n            top: 20px;\n            right: 35px;\n            color: #fff;\n            font-size: 40px;\n            font-weight: bold;\n            transition: 0.3s;\n            cursor: pointer;\n            \/* \u6dfb\u52a0\u89e6\u63a7\u4f18\u5316 *\/\n            padding: 10px;\n            line-height: 1;\n            user-select: none;\n            -webkit-user-select: none;\n        }<\/p>\n<p>        .close:hover,\n        .close:focus {\n            color: #bbb;\n            text-decoration: none;\n        }<\/p>\n<p>        \/* \u89c6\u9891\u70b9\u51fb\u63d0\u793a\u6837\u5f0f *\/\n        .video-overlay {\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            background-color: rgba(0, 0, 0, 0.2);\n            opacity: 0;\n            transition: opacity 0.3s ease;\n            \/* \u89e6\u63a7\u4f18\u5316 *\/\n            touch-action: manipulation;\n            cursor: pointer;\n        }<\/p>\n<p>        .media-item-wrapper:hover .video-overlay {\n            opacity: 1;\n        }<\/p>\n<p>        \/* \u4e3a\u89e6\u6478\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u6548\u679c *\/\n        .media-item-wrapper:active .video-overlay {\n            opacity: 0.8;\n        }<\/p>\n<p>        .play-icon {\n            width: 80px;\n            height: 80px;\n            background-color: rgba(255, 255, 255, 0.9);\n            border-radius: 50%;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            color: var(--ph-orange);\n            font-size: 24px;\n            font-weight: bold;\n            \/* \u89e6\u63a7\u4f18\u5316 *\/\n            user-select: none;\n            -webkit-user-select: none;\n        }<\/p>\n<p>        \/* --- \u54cd\u5e94\u5f0f\u5fae\u8c03 --- *\/\n        @media (min-width: 600px) {\n            .media-item-wrapper {\n                width: 60%; \/* \u684c\u9762\u7aef\u7a0d\u5fae\u7a84\u4e00\u70b9\uff0c\u5c55\u793a\u66f4\u591a\u5f20 *\/\n                scroll-snap-align: start; \/* \u684c\u9762\u7aef\u9760\u5de6\u5bf9\u9f50 *\/\n            }\n        }<\/p>\n<p>        \/* \u79fb\u52a8\u8bbe\u5907\u54cd\u5e94\u5f0f\u4f18\u5316 *\/\n        @media (max-width: 599px) {\n            \/* \u6a21\u6001\u6846\u4f18\u5316 *\/\n            .modal-content {\n                max-width: 95%;\n                max-height: 85vh;\n                margin: 10vh auto;\n            }<\/p>\n<p>            .close {\n                top: 10px;\n                right: 20px;\n                font-size: 30px;\n                \/* \u589e\u5927\u70b9\u51fb\u533a\u57df *\/\n                padding: 15px;\n            }<\/p>\n<p>            \/* \u89c6\u9891\u64ad\u653e\u56fe\u6807\u4f18\u5316 *\/\n            .play-icon {\n                width: 60px;\n                height: 60px;\n                font-size: 18px;\n            }<\/p>\n<p>            \/* \u786e\u4fdd\u5a92\u4f53\u5185\u5bb9\u5728\u5c0f\u5c4f\u5e55\u4e0a\u6b63\u786e\u663e\u793a *\/\n            .media-content {\n                object-fit: cover;\n            }\n        }\n    <\/style>\n<p><\/head><br \/>\n<body><\/p>\n<div class=\"container\">\n<h1 style=\"text-align:center; margin-bottom:40px; font-weight:900;\">PH\u70ed\u699c | 2026-06-17<\/h1>\n<p>    <!-- \u5c55\u793aapp\u5361\u7247 --><\/p>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#1<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/64HL7FCICRJ4CQ\" class=\"app-title\">Framer 3.0<\/a><\/p>\n<div class=\"one-liner\">With Agents, Branching, Community, and an all-new design<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">437<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Framer 3.0 \u901a\u8fc7AI Agent\u3001\u5206\u652f\u534f\u4f5c\u548c\u521b\u4f5c\u8005\u793e\u533a\uff0c\u8ba9\u56e2\u961f\u5728\u65e0\u4ee3\u7801\u7f51\u7ad9\u8bbe\u8ba1\u3001\u5185\u5bb9\u64b0\u5199\u4e0e\u7248\u672c\u7ba1\u7406\u65f6\uff0c\u80fd\u591f\u5b89\u5168\u5b9e\u9a8c\u3001\u9ad8\u6548\u534f\u4f5c\u5e76\u5b9e\u73b0\u5185\u5bb9\u53d8\u73b0\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/237d1ce4-67ab-46fa-857f-3d604353f5fa.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/b982c2f4-0375-4cc7-91a0-bf66cc011563.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/76c257b3-7016-4229-b504-3cc6f76f331c.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/67f599c0-42b2-48f8-9da1-a8467ab90880.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/3eb7df14-d02c-4619-94c2-657f8484765b.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/j4WW4bwWhPk\"><source src=\"https:\/\/youtu.be\/j4WW4bwWhPk\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Design Tools<\/span><br \/>\n            <span class=\"tag\">Website Builder<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u65e0\u4ee3\u7801\u7f51\u7ad9\u6784\u5efa<\/span><br \/>\n            <span class=\"tag\">AI\u8bbe\u8ba1\u52a9\u624b<\/span><br \/>\n            <span class=\"tag\">\u56e2\u961f\u5206\u652f\u534f\u4f5c<\/span><br \/>\n            <span class=\"tag\">AI\u4ee3\u7406<\/span><br \/>\n            <span class=\"tag\">\u7248\u672c\u7ba1\u7406<\/span><br \/>\n            <span class=\"tag\">\u521b\u4f5c\u8005\u7ecf\u6d4e<\/span><br \/>\n            <span class=\"tag\">\u7f51\u9875\u5e03\u5c40\u667a\u80fd\u751f\u6210<\/span><br \/>\n            <span class=\"tag\">Framer\u793e\u533a<\/span><br \/>\n            <span class=\"tag\">AI\u751f\u6210\u5185\u5bb9<\/span><br \/>\n            <span class=\"tag\">UI\u8bbe\u8ba1\u5de5\u5177<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u8ba4\u53ef\u5206\u652f\u529f\u80fd\u5bf9\u5b89\u5168\u5b9e\u9a8c\u548c\u56e2\u961f\u534f\u4f5c\u7684\u4ef7\u503c\u3002\u6838\u5fc3\u95ee\u9898\u5305\u62ec\uff1aAI\u5bf9\u590d\u6742\u5d4c\u5957\u5e03\u5c40\u7684\u5904\u7406\u80fd\u529b\u3001\u4e0e\u7ec4\u4ef6\u7ea6\u675f\u51b2\u7a81\u65f6\u7684\u89e3\u51b3\u65b9\u6cd5\u3001\u4ee5\u53ca\u662f\u5426\u652f\u6301\u54c1\u724c\u98ce\u683c\u6307\u5357\u8bad\u7ec3\u3002\u5b98\u65b9\u56de\u5e94\u4ee3\u7406\u5728\u5206\u652f\u4e0a\u5de5\u4f5c\uff0c\u652f\u6301\u65e0\u9650\u5d4c\u5957\u548c\u7ec4\u4ef6\u590d\u7528\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Framer 3.0 \u7684\u53d1\u5e03\uff0c\u672c\u8d28\u4e0a\u662f\u5728Webflow\u4e0eWix\u7b49\u6210\u719f\u5de5\u5177\u7684\u5939\u51fb\u4e0b\uff0c\u8bd5\u56fe\u7528\u201cAI Agent + \u5206\u652f\u534f\u4f5c\u201d\u6784\u5efa\u5dee\u5f02\u5316\u62a4\u57ce\u6cb3\u3002\u4ea7\u54c1\u4f53\u9a8c\u4e0a\uff0cAgent\u76f4\u63a5\u5d4c\u5165\u753b\u5e03\u5e76\u63d0\u4f9b\u81ea\u52a8\u5206\u652f\u673a\u5236\uff0c\u7cbe\u51c6\u5207\u4e2d\u4e86\u8bbe\u8ba1\u5e08\u201c\u6015\u6539\u574f\u3001\u4e0d\u6562\u8bd5\u201d\u7684\u5fc3\u7406\u75db\u70b9\uff0c\u6bd4\u7ade\u54c1\u6a2a\u5411\u5bf9\u6bd4\u65f6\u7684\u201cAI\u8f85\u52a9\u751f\u6210\u201d\u66f4\u5177\u5de5\u7a0b\u5b89\u5168\u6027\u3002\u4f46\u9700\u51b7\u9759\u770b\u5f85\u5176AI\u80fd\u529b\uff1a\u4ece\u7528\u6237\u5bf9\u5e03\u5c40\u5904\u7406\u3001\u98ce\u683c\u6307\u5357\u8bad\u7ec3\u3001\u8bbe\u8ba1\u7cfb\u7edf\u7248\u63a7\u7684\u8ffd\u95ee\u53ef\u4ee5\u770b\u51fa\uff0c\u73b0\u6709Agent\u7684\u667a\u80fd\u7a0b\u5ea6\u5f88\u53ef\u80fd\u4ecd\u505c\u7559\u5728\u201c\u6a21\u677f\u5f0f\u751f\u6210+\u7b80\u5355\u7f16\u8f91\u201d\u5c42\u9762\uff0c\u5bf9\u54cd\u5e94\u5f0f\u7ed3\u6784\u7684\u81ea\u52a8\u63a8\u5bfc\u3001\u5bf9\u73b0\u6709\u590d\u6742\u7ec4\u4ef6\u6811\u7684\u89e3\u6790\u80fd\u529b\u5c1a\u672a\u5f97\u5230\u9a8c\u8bc1\u3002\u6b64\u5916\uff0c\u793e\u533a\u6a21\u5f0f\u7684\u201c\u5206\u4eab\u4e0e\u53d8\u73b0\u201d\u867d\u7136\u8fce\u5408\u4e86\u72ec\u7acb\u521b\u4f5c\u8005\u548c\u5c0f\u56e2\u961f\u7684\u751f\u5b58\u8bc9\u6c42\uff0c\u4f46\u54c1\u63a7\u4e0e\u7248\u6743\u95ee\u9898\u5927\u6982\u7387\u4f1a\u5728\u7528\u6237\u91cf\u589e\u957f\u540e\u7206\u53d1\u3002\u771f\u6b63\u7684\u62a4\u57ce\u6cb3\u5728\u4e8e\uff1a\u80fd\u5426\u628a\u201cAgent + \u5206\u652f\u201d\u8fd9\u5957\u534f\u540c\u673a\u5236\u6253\u78e8\u6210\u7a33\u5b9a\u7684\u8bbe\u8ba1\u884c\u4e3a\u7ea6\u675f\u5c42\uff0c\u8ba9AI\u4e0d\u53ea\u662f\u201c\u81ea\u52a8\u586b\u5145\u5de5\u5177\u201d\uff0c\u800c\u662f\u771f\u6b63\u7406\u89e3\u8bbe\u8ba1\u610f\u56fe\u5e76\u81ea\u52a8\u9002\u914d\u7cfb\u7edf\u7684\u201c\u51c6\u56e2\u961f\u6210\u5458\u201d\u3002\u5426\u5219\uff0c\u4e00\u65e6\u4e3b\u8981\u7ade\u54c1\u4e5f\u63a5\u5165\u7c7b\u4f3c\u80fd\u529b\uff0cFramer\u7684\u65b0\u9c9c\u611f\u5c06\u8fc5\u901f\u6d88\u9000\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Framer 3.0<\/span>\n                <\/div>\n<div class=\"comment-content\">Agents bring AI to the canvas to help you design, write, analyze, and organize your sites. We\u2019re also launching Branching, a new way for teams to explore ideas before they go live, and unveiling the new Framer Community, where creators can share and earn. Together, these launches change how teams create, maintain, and scale websites. We think you\u2019ll love it.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hey everyone, we\u2019re shipping three huge Framer updates today. <\/p>\n<p>1. Use Agents on the canvas to design, write, analyze, and organize your site. Including ways to connect your own AI\u2019s like Claude Code or Codex to Framer.<br \/>\n2. Branching gives your team a safer way to try ideas before you publish.<br \/>\n3. The new Framer Community gives creators a place to share work and earn from it.<\/p>\n<p>Try them out and tell us what you think!<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>23<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@jurrehoutkamp\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jurrehoutkamp<\/a>&nbsp;Framer 3.0 looks incredible! The branching feature for AI edits is brilliant. How do the agents handle complex layout structures like nested grids or stacks when redesigning a section? Do they generate clean, responsive structures out of the box?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats! Curious on how does Framer handle conflicts when the AI&#8217;s design suggestions clash with existing component constraints?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>6<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@crystalmei\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@crystalmei<\/a>&nbsp;Up to you as the prompter. The agent can either make edits, make new components, or re-use existing elements and styles.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Congrats on the launch heroes! Was looking for such tool for long time<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Can branches be nested or is it limited to one level deep from the main published version?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@ivory_xuxu\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@ivory_xuxu<\/a>&nbsp;They can be nested infinitely.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@ivory_xuxu\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@ivory_xuxu<\/a>&nbsp;As many levels deep as you want<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>what sets it apart from other website builders?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Love that Agents can design, write, and organize all in one place, but what guardrails exist to prevent the AI from accidentally breaking responsive layouts during automated edits?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@mia_qiao\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@mia_qiao<\/a>&nbsp;Agents auto-branch so your main site never breaks.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@mia_qiao\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@mia_qiao<\/a>&nbsp;Agents always work on branches so you can see the edits they made before you merge it into your main branch<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The Branching feature is a game-changer. We&#8217;re a small nonprofit team building our donor-facing platform and being able to try different page layouts without risking the live site is exactly what scrappy teams need. Congrats on the launch.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>congrats on the launch. branching is the feature i didn&#8217;t know i needed until now. letting teams explore without touching prod is the kind of thing that quietly unblocks a lot of back-and-forth. excited to see where the agent stuff goes inside the canvas.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>So happy to see Framer launch their new version. Developers may feel differently, but as a designer, Framer is just so delightful and easy to use. Sure, there&#8217;s a slight learning curve, but its overall UI and functionality is very similar to Figma, so once you get into it, it will start to click. In comparison, Webflow feels like using Geocities (reference for fellow elder millennials). Can&#8217;t wait to start testing out and integrating the AI features into my sites.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Stunning update! Regarding the AI agents assisting with copy writing on the canvas\u2014can we train the agent on an uploaded brand style guide or specific company voice data, or is it relying on standard, generic prompts for text generation?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The branching feature caught my eye. I build my own pages and the thing I always dread is testing variations without breaking what already works. Looking forward to trying this one.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Very interesting approach. Do you think AI website builders eventually become the primary interface, with designers acting more like editors and creative directors, or do you see them remaining productivity tools for experienced designers?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This is cool but how does it handle agent drift? Is there a design system page? Or best practice around this? <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on the huge Framer 3.0 launch! Bringing AI Agents directly onto the canvas to help with layout organization and writing sounds like a massive workflow acceleration<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#2<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/XGLQDUQRILY2VD\" class=\"app-title\">Swytchcode CLI<\/a><\/p>\n<div class=\"one-liner\">Give agents reliable access to 2,000+ APIs w\/ durable state<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">357<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Swytchcode CLI \u662f\u4e00\u4e2a\u4f4d\u4e8eAI\u667a\u80fd\u4f53\u4e0e\u5916\u90e8API\u4e4b\u95f4\u7684\u6267\u884c\u5c42\u4e2d\u95f4\u4ef6\uff0c\u901a\u8fc7\u63d0\u4f9b\u6a21\u5f0f\u9a8c\u8bc1\u3001\u5e42\u7b49\u6027\u3001\u91cd\u8bd5\u7b56\u7565\u53ca\u6301\u4e45\u5316\u72b6\u6001\uff0c\u89e3\u51b3\u667a\u80fd\u4f53\u5728\u751f\u4ea7\u73af\u5883\u4e2d\u8c03\u75282000+API\u65f6\u53ef\u9760\u6027\u5dee\u3001\u8c03\u8bd5\u56f0\u96be\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/91508b6c-29df-4c5a-9273-9534d76be92c.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/198a7699-f01b-4bed-a9d9-8caec02f1e6a.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/af716f25-2ca2-481b-a9a9-9faf1c87ffbb.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/5216d884-b925-490d-a023-c2f7ac542409.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/cef6ff9a-ea60-453a-846a-cb25c9e8cb0f.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/a058ec04-16f0-4e8d-ab55-0badf390f72f.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/vUl0o4apRUU\"><source src=\"https:\/\/youtu.be\/vUl0o4apRUU\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">API<\/span><br \/>\n            <span class=\"tag\">Developer Tools<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">AI\u4ee3\u7406\u6267\u884c\u5c42<\/span><br \/>\n            <span class=\"tag\">API\u7f51\u5173<\/span><br \/>\n            <span class=\"tag\">\u5f00\u53d1\u8005\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u5e42\u7b49\u6027\u4fdd\u969c<\/span><br \/>\n            <span class=\"tag\">\u6a21\u5f0f\u9a8c\u8bc1<\/span><br \/>\n            <span class=\"tag\">CLI\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u667a\u80fd\u4f53\u53ef\u9760\u6027<\/span><br \/>\n            <span class=\"tag\">2000+API\u96c6\u6210<\/span><br \/>\n            <span class=\"tag\">\u65e0\u91cd\u5199\u96c6\u6210<\/span><br \/>\n            <span class=\"tag\">\u751f\u4ea7\u7ea7AI<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u8d5e\u8d4f\u5176\u89e3\u51b3API\u8c03\u7528\u4e0d\u53ef\u9760\u7684\u75db\u70b9\uff0c\u7279\u522b\u662f\u6a21\u5f0f\u9a8c\u8bc1\u548c\u5e42\u7b49\u6027\u8bbe\u8ba1\u3002\u4f46\u591a\u4f4d\u7528\u6237\u8ffd\u95ee\uff1a\u7f3a\u4e4f\u591a\u6b65\u9aa4\u5de5\u4f5c\u6d41\u7684\u90e8\u5206\u56de\u6eda\/\u8865\u507f\u673a\u5236\uff1b\u5728\u591a\u79df\u6237\u573a\u666f\u4e0b\u7b56\u7565\u548c\u51ed\u8bc1\u7684\u9694\u79bb\u65b9\u5f0f\uff1b\u4ee5\u53ca\u4ece\u672c\u5730CLI\u5230\u751f\u4ea7\u90e8\u7f72\u65f6\u7684\u8fd0\u884c\u65f6\u6258\u7ba1\u95ee\u9898\u3002\u5efa\u8bae\u589e\u52a0\u4f01\u4e1a\u7ea7\u5bc6\u94a5\u7ba1\u7406\u96c6\u6210\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Swytchcode CLI\u7cbe\u51c6\u5207\u5165\u4e86\u4e00\u4e2a\u88ab\u8fc7\u5ea6\u7092\u4f5c\u5374\u9c9c\u6709\u843d\u5730\u7684AI\u5de5\u7a0b\u5316\u75db\u70b9\uff1a\u667a\u80fd\u4f53\u201c\u4f1a\u60f3\u201d\u4f46\u201c\u505a\u4e0d\u51c6\u201d\u3002\u5927\u91cfAI\u4ea7\u54c1\u6b7b\u4e8eAPI\u8c03\u7528\u7684\u968f\u610f\u6027\u2014\u2014\u65e0\u6548\u8f7d\u8377\u3001\u91cd\u590d\u6267\u884c\u3001\u6743\u9650\u6cc4\u9732\u3002Swytchcode\u7684\u4ef7\u503c\u4e0d\u5728\u4e8e\u201c\u8fde\u63a5API\u201d\uff0c\u800c\u5728\u4e8e\u4e3a\u8fd9\u4e9b\u8c03\u7528\u6ce8\u5165\u4f01\u4e1a\u7ea7\u7684\u4e8b\u52a1\u6027\u4fdd\u969c\uff08\u5e42\u7b49\u6027\u3001\u6a21\u5f0f\u6821\u9a8c\u3001\u7b56\u7565\u6267\u884c\uff09\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u7136\u800c\uff0c\u5fc5\u987b\u6307\u51fa\u8be5\u4ea7\u54c1\u7684\u5c40\u9650\u6027\u3002\u9996\u5148\uff0c**\u5b83\u672c\u8d28\u4e0a\u662f\u4e00\u4e2a\u589e\u5f3a\u578b\u7684API\u4ee3\u7406\u7f51\u5173**\uff0c\u800c\u975e\u667a\u80fd\u4f53\u7f16\u6392\u5f15\u64ce\u3002\u5b83\u65e0\u6cd5\u89e3\u51b3\u667a\u80fd\u4f53\u672c\u8eab\u7684\u63a8\u7406\u9519\u8bef\uff0c\u53ea\u80fd\u964d\u4f4e\u56e0API\u8c03\u7528\u5f15\u53d1\u7684\u201c\u4e8c\u6b21\u4f24\u5bb3\u201d\u3002\u5f00\u53d1\u8005\u4ecd\u9700\u81ea\u884c\u5904\u7406\u5de5\u4f5c\u6d41\u903b\u8f91\u3002\u5176\u6b21\uff0c\u51762000+API\u7684\u8986\u76d6\u5e7f\u5ea6\u610f\u5473\u7740\u5927\u91cfAPI\u7684\u9002\u914d\u6df1\u5ea6\u5b58\u7591\uff0c\u5c24\u5176\u662f\u9488\u5bf9\u975e\u6807\u51c6\u6216\u79c1\u6709API\uff0c\u81ea\u5b9a\u4e49manifest\u7684\u7ef4\u62a4\u6210\u672c\u4f1a\u8fc5\u901f\u4e0a\u5347\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u8bc4\u8bba\u4e2d\u7528\u6237\u5bf9\u201c\u591a\u6b65\u9aa4\u5de5\u4f5c\u6d41\u56de\u6eda\u201d\u548c\u201c\u591a\u79df\u6237\u7b56\u7565\u9694\u79bb\u201d\u7684\u8ffd\u95ee\u975e\u5e38\u81f4\u547d\u3002\u7f3a\u4e4f\u8865\u507f\u673a\u5236\u610f\u5473\u7740\u4efb\u4f55\u4e2d\u6bb5\u5931\u8d25\u90fd\u53ef\u80fd\u5bfc\u81f4\u6570\u636e\u6c61\u67d3\uff0c\u8fd9\u5bf9\u4e8e\u91d1\u878d\u3001\u7535\u5546\u7b49\u573a\u666f\u662f\u4e0d\u53ef\u63a5\u53d7\u7684\u3002\u800c\u5c06\u51ed\u8bc1\u7b56\u7565\u6df7\u5728manifest\u4e2d\uff0c\u5728\u591a\u79df\u6237\u751f\u4ea7\u73af\u5883\u4e0b\u5c06\u76f4\u63a5\u5f15\u53d1\u5b89\u5168\u707e\u96be\u3002\u5f53\u524d\u8bbe\u8ba1\u66f4\u50cf\u4e00\u4e2a\u51fa\u8272\u7684\u5f00\u53d1\u539f\u578b\u5de5\u5177\uff0c\u800c\u975e\u53ef\u76f4\u63a5\u4e0a\u751f\u4ea7\u7684\u53ef\u9760\u57fa\u7840\u8bbe\u65bd\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4e00\u53e5\u8bdd\u603b\u7ed3\uff1aSwytchcode CLI\u89e3\u51b3\u4e86\u201c\u8ba9\u667a\u80fd\u4f53\u4e0d\u4e71\u8c03\u7528\u201d\u7684\u5de5\u7a0b\u95ee\u9898\uff0c\u4f46\u8981\u8fbe\u5230\u201c\u8ba9\u667a\u80fd\u4f53\u5728\u590d\u6742\u5546\u4e1a\u573a\u666f\u4e0b\u53ef\u9760\u6267\u884c\u201d\u7684\u6210\u719f\u5ea6\uff0c\u8fd8\u9700\u8981\u5728\u7f16\u6392\u3001\u5bb9\u9519\u548c\u5b89\u5168\u9694\u79bb\u4e0a\u8d70\u66f4\u8fdc\u7684\u8def\u3002\u5bf9\u4e8e\u4e2d\u5c0f\u56e2\u961f\u5feb\u901f\u539f\u578b\u9a8c\u8bc1\uff0c\u5b83\u6781\u5177\u4ef7\u503c\uff1b\u5bf9\u4e8e\u5927\u578b\u4f01\u4e1a\uff0c\u5b83\u76ee\u524d\u53ea\u80fd\u7b97\u4e00\u4e2a\u4e0d\u9519\u7684\u8d77\u70b9\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Swytchcode CLI<\/span>\n                <\/div>\n<div class=\"comment-content\">Write agent logic, and skip the plumbing. Give AI agents reliable access to 2,000+ APIs with retries, idempotency, policy enforcement, and durable state.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hey Product Hunt, <strong>Swytchcode CLI<\/strong> is live today! \ud83d\ude80<\/p>\n<p>Over the last year, we kept seeing the same pattern.<strong> Building AI agents was easy. Getting them to reliably execute actions in production was not.<\/strong><\/p>\n<p>Agents would call APIs with invalid payloads, fail because of auth issues, retry actions that shouldn&#8217;t be retried, or break when an API changed. Debugging these failures quickly became a bigger problem than building the agent itself.<\/p>\n<p>The agent wasn&#8217;t the problem. The execution layer had zero protection.<\/p>\n<p>That&#8217;s why we built Swytchcode CLI.<\/p>\n<p><strong>Swytchcode sits between your AI agent and every API it calls.<\/strong><\/p>\n<ol>\n<li>\n<p><strong>Schema validation<\/strong> before every request. Field renames and breaking API changes don&#8217;t silently break your agent.<\/p>\n<\/li>\n<li>\n<p><strong>Authentication handled.<\/strong> OAuth, API keys, and enterprise SSO without exposing credentials to the agent.<\/p>\n<\/li>\n<li>\n<p><strong>Idempotency guarantees<\/strong> so duplicate executions don&#8217;t create duplicate outcomes.<\/p>\n<\/li>\n<li>\n<p><strong>Policy enforcement<\/strong> to keep agents operating within defined guardrails.<\/p>\n<\/li>\n<li>\n<p><strong>2000+ APIs<\/strong> out of the box, including Stripe, GitHub, Slack, Resend, HubSpot, Notion, Jira, Twilio, OpenAI, Anthropic, Gemini, Binance and many more.<\/p>\n<\/li>\n<\/ol>\n<p>Works with<strong> Claude, Cursor, Copilot, Openclaw, Gemini, windsurf , Hermes agents<\/strong>. No rewrites. No new infrastructure.<\/p>\n<p>We believe the next wave of AI products will be defined not by how well agents think, but by how reliably they execute in production.<\/p>\n<p><strong>Try it now:<\/strong><\/p>\n<pre><code>npx swytchcode<\/code><\/pre>\n<p>We&#8217;d love feedback from AI engineers, agent builders, and anyone experimenting with agentic workflows.<\/p>\n<p>Join our <strong>Discord community<\/strong> : <a href=\"https:\/\/discord.com\/invite\/zuSXSv5GWs\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/discord.com\/invite\/zuSXSv5GWs<\/a><\/p>\n<p><strong>Explore the docs and get started<\/strong> : <a href=\"https:\/\/docs.swytchcode.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/docs.swytchcode.com<\/a><br \/>Explore usecase examples: <a href=\"https:\/\/github.com\/swytchcodehq\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/swytchcodehq<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>14<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@chaitrali_kakde1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@chaitrali_kakde1<\/a>&nbsp;Hi,<\/p>\n<p>Do you get any traffic from Reddit?<\/p>\n<p>Most websites are missing out on it. I help businesses drive organic Reddit traffic through real community engagement no paid ads, no bots.<\/p>\n<p>Could open up a new traffic channel for your website.<\/p>\n<p>Worth a quick chat?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@chaitrali_kakde1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@chaitrali_kakde1<\/a>&nbsp;Congrats on the launch guys. may be add direct integration with popular secret vaults eg Doppler or AWS Secrets Manager for enterprise ICPs down the road?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats! Curious how does Swytchcode standardize idempotency handling when each API has wildly different native mechanisms or none at all?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>7<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@crystalmei\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@crystalmei<\/a>&nbsp;Thanks for your interest. Idempotency is inbuilt with Swytchcode CLI. We have a manifest file to manage idempotency, retries, and environment. Also, really soon we are coming up with custom rules for each workflow<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>5<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">The npx swytchcode approach is super clean. Being able to just spin it up and test it without a massive architectural rewrite is a huge selling point, stoked to see support for Windsurf and Cursor out of the box. Amazing launch \ud83d\udc4f<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>6<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@istiakahmad\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@istiakahmad<\/a>&nbsp;Thanks for the encouraging words. Do try it out.<br \/>We also support Claude, Codex, Openclaw, Hermes, and many others. I would really love your feedback <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Congrats on the launch! \ud83d\ude80<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>5<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@ruvik_milkis\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@ruvik_milkis<\/a>&nbsp;Thanks a lot! Really appreciate it. If you get a chance to explore Swytchcode, I&#8217;d love to hear your feedback. It would mean a lot to us! \ud83d\ude80<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">@chaitrali_kakde1 I will 100% check this out\ud83d\udc4d<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Solid niche to own! Curious about the long tail: for the APIs in your 2000 with no native idempotency key, are you synthesizing one off a payload hash and deduping on your side? Overall, congrats on the launch!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>5<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@artstavenka1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@artstavenka1<\/a>&nbsp;thanks a lot. We have a manifest file where you can define custom idempotency for your API calls along with retries and environment handling. Please feel free to try out our product. Happy to hear your feedback.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Heyy, I love the Product direction here , breaking api changes silently killing priduction agents is in noght mare scenario beouse the llm just try to hallucinate a workaround if it gets a 400 error. Schema validation at the gate is the right way to handle this, congrats for CLI launch \ud83d\udc4f<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>5<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@priya_kushwaha1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@priya_kushwaha1<\/a>&nbsp;Thanks a lot, Priya. Please do try the CLI and give us feedback.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>4<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>that\u2019s a real pain point. awesome to see this evolution of the product <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@kritikasinghania\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@kritikasinghania<\/a>&nbsp;its a real pain point for sure. Feel free to try out and give us feedback<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>interesting product!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@madalina_barbu\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@madalina_barbu<\/a>&nbsp;thanks Madalina<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hi Chaitrali, curious to know how you guys standardize idempotency handling when each external API has wildly different native mechanisms. great to see CLI launch <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@vikramp7470\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@vikramp7470<\/a>&nbsp;Great question, Vikram!<\/p>\n<p>Idempotency is built into the Swytchcode CLI. We use a manifest file to standardize idempotency, retries, and environment configuration across APIs. We&#8217;re also adding custom workflow rules soon for even finer control. \ud83d\ude80<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>3<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">@chaitrali_kakde1 thanks for clarification \ud83d\udc4d<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>4<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Really cool! Can I use this on my projects? Like instead of me writing this protection layer swytchcpde handles that <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@lak7\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@lak7<\/a>&nbsp;yes you can use this in your project, Swytchcode support popular coding agents like Claude, co-pilot,cursor,codex etc. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@lak7\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@lak7<\/a>&nbsp;would love to speak to you Lakshay and understand your use case and take feedback. Sending you a linkedin connect<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This is exactly the execution layer that&#8217;s been missing from most agentic stacks. The fact that agents can now get schema validation, idempotency, and policy enforcement out of the box \u2014 without rewriting any logic \u2014 is a huge deal for anyone shipping AI products to production. The 2,000+ API coverage is impressive too. Congrats on the launch! \ud83d\ude80<\/p>\n<\/p>\n<p>Quick question: how does Swytchcode handle rollback or compensation when a multi-step agent workflow partially fails mid-chain \u2014 for example, if step 3 of 5 hits a policy violation after steps 1 and 2 already executed?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@doganakbulut\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@doganakbulut<\/a>&nbsp;this is a brilliant idea. Today we don&#8217;t have rollback feature. Will see how we will implement this.<\/p>\n<p>Would love to connect and discuss. Will ping you on Linkedin<\/p>\n<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on the launch. The direction makes sense: execution failures are usually boring plumbing until one creates a real business side effect.<\/p>\n<\/p>\n<p>I am curious about the multi-tenant edge. When the same agent pattern runs across different customer workspaces, do policies and credentials live per workspace, per user, or in the manifest?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@blah_mad\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@blah_mad<\/a>&nbsp;It&#8217;s as simple as a typical node project. We store all the information inside the &#8220;<strong>.swytchcode<\/strong>&#8221; folder. Whenever you ship the project, you ship the &#8220;.swytchcode&#8221; folder.<br \/>Also, similar to the <em>npm install<\/em> command, we have the &#8220;<em>swytchcode bootstrap<\/em>&#8221; command so that we ship only the metadata (to reduce the overall package size).<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@blah_mad\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@blah_mad<\/a>&nbsp;policies live in the manifest, credentials are managed by user either locally or through a vault.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This is going to be a game changer for devs work with tons of integrations. Congratulations with the launch guys. I will always support you.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@malithmcrdev\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@malithmcrdev<\/a>&nbsp;Thank you, Malith, for your support. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on the launch! Great product! <\/p>\n<p>Do you have approximate (or maybe case study specific) numbers on how much swytchcode saves money for AI agent builders or for end users?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@sergii_kozyrev\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sergii_kozyrev<\/a>&nbsp;from what we observed earlier Swytchcode saves time like 90-95% for end users. We need to do a cost savings study, thank you for feedback.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>For a community launch workflow, I\u2019d test an agent that collects Discord feedback, opens GitHub issues, and sends follow-up emails without redoing auth plumbing. The .swytchcode folder as a project boundary makes sense, but I wonder about handoff between local dev and production. When deploying from a CLI-built agent, does Swytchcode provide a hosted runtime, or is it expected to ship inside our own worker\/server?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@hazy0\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@hazy0<\/a>&nbsp;thank you for the support and asking this, swytchcode gets shipped inside your worker\/container.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Nice job! Need of the hour<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@pooran_prasad_rajanna\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@pooran_prasad_rajanna<\/a>&nbsp;thank you for your support.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>the npx approach is the right call &#8211; being able to drop this into an existing agent setup without architectural rewrites is exactly how this kind of tooling should work. durable state across API calls is the piece most CLI tools get completely wrong. curious how conflict resolution works when two agents are hitting the same endpoint concurrently &#8211; that&#8217;s usually where state layers fall apart in practice<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@galdayan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@galdayan<\/a>&nbsp;Hey Gal, I think we didn&#8217;t convey the messaging properly. The thing is, Swytchcode CLI helps agents write the integration code inside your project via MCP and rules. The generated integration code then calls the CLI to fetch data from the API (and all the rules are honored). So in a way, we are just a library that makes the API request for your project. Hence, the conflict doesn&#8217;t appear. <\/p>\n<p>Would be happy to show a demo and get feedback from you<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">All the best team \ud83d\ude80<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@suhasmotwani\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@suhasmotwani<\/a>&nbsp;thanks Suhas<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Standardizing this layer of the stack for agents looks very promising.  There is so much unseen functionality behind the scenes of these types of integrations that can become a huge challenge to manage.  <\/p>\n<p>Which integrations are you seeing in practice the most? <\/p>\n<p>Congrats on the relaunch! <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@anthony_latona\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@anthony_latona<\/a>&nbsp;Thanks for the kind words. Today we see most integrations around fintech apis and deployment apis<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This is a strong framing: the agent is not the hard part, reliable execution is. In B2B workflows, policy enforcement often needs business context, not just API\/schema context. Can Swytchcode scope policies by role or risk level, for example allowing an agent to update HubSpot freely but requiring approval before sending customer-facing messages or changing billing data?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@rahulbhavsar\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@rahulbhavsar<\/a>&nbsp;Yes this is a brilliant idea. Today we are implementing the policies for individual methods and libraries. This should be up in our next release.<\/p>\n<p>Do give the CLI a try and would love more such feedback<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The part I like here is treating execution as a separate reliability layer, not as prompt quality. In production agent work, retries, auth, idempotency, and policy are where the expensive failures hide.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@krekeltronics\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@krekeltronics<\/a>&nbsp;Thanks a lot \u2764\ufe0f really appreciate it!<\/p>\n<p>Would love if you could try it out sometime and share your feedback, it would genuinely help us improve \ud83d\ude80<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The emphasis on idempotency and durable state is massive. In marketing automation, the absolute last thing you want is a glitch causing an agent to double-trigger an email sequence or webhook to a customer. How does Swytchcode handle those retry loops cleanly under the hood?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>&#8220;The agent wasn&#8217;t the problem, the execution layer had zero protection&#8221; is so true. I build voice agents that call tools mid-conversation, and the failures are almost never the model, they&#8217;re retries firing twice or an API quietly changing its schema. Curious how you handle auth across 2,000+ APIs when the agent is acting on behalf of different end users, do you manage per-user OAuth tokens and refresh, or is it mostly single-account keys for now?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#3<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/6N2SY23DZALOT6\" class=\"app-title\">Daemons by Charlie Labs<\/a><\/p>\n<div class=\"one-liner\">Keep PRs, issues, CI, and docs moving with AI agents<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">222<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Daemons\u4e3a\u4f7f\u7528AI\u7f16\u7801Agent\u7684\u5de5\u7a0b\u56e2\u961f\u63d0\u4f9b\u6301\u4e45\u5316AI\u5b88\u62a4\u8fdb\u7a0b\uff0c\u81ea\u52a8\u5904\u7406PR\u5ba1\u67e5\u3001CI\u4fee\u590d\u3001\u6587\u6863\u7ef4\u62a4\u7b49\u64cd\u4f5c\u503a\u52a1\uff0c\u8ba9\u7f16\u7801Agent\u521b\u9020\u7684\u5de5\u4f5c\u80fd\u771f\u6b63\u843d\u5730\u5b8c\u6210\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/156384bb-cb69-4e95-b345-def782b3dc1e.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/18c9ce49-fe74-45e3-b01b-1fd2346fce03.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/5efac4c1-0608-45c5-8977-05c160401ae8.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/4955422e-9fda-498e-bff8-6cf147b70d78.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/8d634b44-aba3-48e0-b228-a9d244b34dc6.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Software Engineering<\/span><br \/>\n            <span class=\"tag\">Developer Tools<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">AI\u4ee3\u7406<\/span><br \/>\n            <span class=\"tag\">\u5de5\u7a0b\u6548\u7387<\/span><br \/>\n            <span class=\"tag\">\u5f00\u53d1\u8005\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u4ee3\u7801\u5ba1\u67e5<\/span><br \/>\n            <span class=\"tag\">CI\/CD<\/span><br \/>\n            <span class=\"tag\">\u6587\u6863\u7ef4\u62a4<\/span><br \/>\n            <span class=\"tag\">\u95ee\u9898\u8ddf\u8e2a<\/span><br \/>\n            <span class=\"tag\">\u64cd\u4f5c\u503a\u52a1<\/span><br \/>\n            <span class=\"tag\">\u56e2\u961f\u534f\u4f5c<\/span><br \/>\n            <span class=\"tag\">Sentry\u96c6\u6210<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u8ba4\u540c\u89e3\u51b3\u64cd\u4f5c\u503a\u52a1\u7684\u5b9a\u4f4d\uff0c\u5173\u6ce8\u5b88\u62a4\u8fdb\u7a0b\u7684\u51b2\u7a81\u5904\u7406\u3001\u653b\u51fb\u6027\u8c03\u8282\u3001\u957f\u65f6\u95f4\u8bb0\u5fc6\u6f02\u79fb\u3002\u63d0\u51fa\u8de8\u5e73\u53f0\u72b6\u6001\u4e00\u81f4\u6027\u3001\u5b88\u62a4\u8fdb\u7a0b\u95f4\u534f\u8c03\u6210\u672c\u7b49\u95ee\u9898\uff0c\u5bf9Markdown\u5b9a\u4e49\u89d2\u8272\u548c\u514d\u8d39\u8ba1\u5212\u8868\u793a\u8ba4\u53ef\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Daemons\u7cbe\u51c6\u51fb\u4e2d\u4e86\u5f53\u524dAI\u7f16\u7801\u5de5\u5177\u94fe\u4e2d\u6700\u75db\u7684\u771f\u7a7a\u5730\u5e26\u2014\u2014Agent\u53ea\u7ba1\u751f\u4e0d\u7ba1\u517b\u3002\u5f53\u4e3b\u6d41\u53d9\u4e8b\u4ecd\u5728\u9f13\u5439\u4ee3\u7801\u751f\u6210\u901f\u5ea6\u65f6\uff0cCharlie Labs\u51b7\u9759\u5730\u6307\u51fa\uff1a\u66f4\u5feb\u5730\u4ea7\u751f\u4ee3\u7801\u610f\u5473\u7740\u66f4\u5feb\u5730\u79ef\u7d2f\u64cd\u4f5c\u503a\u52a1\u3002\u8fd9\u4e2a\u6d1e\u5bdf\u672c\u8eab\u5c31\u662f\u5bf9\u884c\u4e1a\u6d6e\u8e81\u98ce\u6c14\u7684\u6709\u529b\u53cd\u51fb\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4ea7\u54c1\u7684\u6838\u5fc3\u4ef7\u503c\u4e0d\u5728\u4e8e\u5b83\u6709\u591a\u667a\u80fd\uff0c\u800c\u5728\u4e8e\u5b83\u91cd\u65b0\u5b9a\u4e49\u4e86AI\u5728\u5de5\u7a0b\u56e2\u961f\u4e2d\u7684\u5206\u5de5\u89d2\u8272\uff1a\u4ece\u5355\u6b21\u54cd\u5e94\u7684\u201c\u5de5\u5177\u201d\u5347\u7ea7\u4e3a\u6301\u7eed\u8d1f\u8d23\u7684\u201c\u56e2\u961f\u6210\u5458\u201d\u3002\u6bcf\u4e2a\u5b88\u62a4\u8fdb\u7a0b\u88ab\u9650\u5b9a\u5728\u660e\u786e\u7684Markdown\u8fb9\u754c\u5185\u8fd0\u884c\uff0c\u8fd9\u6bd4\u901a\u7528Agent\u66f4\u53ef\u9760\u3001\u66f4\u53ef\u5ba1\u8ba1\u3002\u5b9e\u9645\u6848\u4f8b\u4e2d\uff0cCI\u4fee\u590d\u5b88\u62a4\u8fdb\u7a0b\u4e3b\u52a8\u884c\u52a8\uff0c\u6587\u6863\u5b88\u62a4\u8fdb\u7a0b\u61c2\u5f97\u6c89\u9ed8\u2014\u2014\u8fd9\u79cd\u5dee\u5f02\u5316\u7684\u884c\u4e3a\u8bbe\u8ba1\u6070\u6070\u4f53\u73b0\u4e86\u4ea7\u54c1\u8bbe\u8ba1\u7684\u6210\u719f\u5ea6\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u7136\u800c\uff0c\u95ee\u9898\u4e5f\u5f88\u660e\u663e\u3002\u7528\u6237\u62c5\u5fc3\u7684\u5b88\u62a4\u8fdb\u7a0b\u95f4\u534f\u8c03\u6210\u672c\u7edd\u975e\u675e\u4eba\u5fe7\u5929\uff0c\u5f53\u51e0\u5341\u4e2a\u5b88\u62a4\u8fdb\u7a0b\u540c\u65f6\u8fd0\u884c\uff0c\u5b83\u4eec\u4e4b\u95f4\u7684\u8ba4\u77e5\u51b2\u7a81\u548c\u8d44\u6e90\u7ade\u4e89\u4f1a\u8fc5\u901f\u4ece\u7ebf\u6027\u589e\u957f\u53d8\u6210\u6307\u6570\u7ea7\u707e\u96be\u3002Charlie Labs\u76ee\u524d\u7684\u89e3\u51b3\u65b9\u6848\u2014\u2014\u8ba9\u5b88\u62a4\u8fdb\u7a0b\u4e92\u76f8\u5173\u6ce8\u3001\u8ba9Charlie\u5e2e\u52a9\u4ee3\u7406\u6e05\u7406\u2014\u2014\u542c\u8d77\u6765\u66f4\u50cf\u662f\u6253\u8865\u4e01\u800c\u975e\u67b6\u6784\u8bbe\u8ba1\u3002\u4ece\u957f\u8fdc\u6765\u770b\uff0c\u7f3a\u4e4f\u5bf9\u5b88\u62a4\u8fdb\u7a0b\u751f\u6001\u7cfb\u7edf\u7684\u5143\u6cbb\u7406\u673a\u5236\u5c06\u662f\u81f4\u547d\u77ed\u677f\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u53e6\u4e00\u4e2a\u88ab\u5ffd\u89c6\u7684\u98ce\u9669\u662f\uff0c\u5b88\u62a4\u8fdb\u7a0b\u7684\u6301\u4e45\u5316\u8fd0\u884c\u610f\u5473\u7740\u9690\u79c1\u548c\u5ba1\u8ba1\u8ddf\u8e2a\u7684\u5de8\u5927\u6311\u6218\u3002\u5b83\u4eec\u6301\u7eed\u76d1\u63a7\u4ed3\u5e93\u7684\u6240\u6709\u6d3b\u52a8\uff0c\u5982\u679c\u4ea7\u751f\u5e7b\u89c9\u6216\u88ab\u6076\u610f\u5229\u7528\uff0c\u53ef\u80fd\u9020\u6210\u6bd4\u5355\u4e00Agent\u66f4\u5927\u7684\u7834\u574f\u3002\u4ea7\u54c1\u5bf9\u5b89\u5168\u6027\u3001\u6743\u9650\u63a7\u5236\u3001\u56de\u6eda\u673a\u5236\u7684\u4ecb\u7ecd\u51e0\u4e4e\u4e3a\u96f6\uff0c\u8fd9\u4e0d\u80fd\u5f53\u4f5c\u9ed8\u8ba4\u6b63\u786e\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u603b\u4f53\u800c\u8a00\uff0cDaemons\u662fAI\u8f85\u52a9\u5f00\u53d1\u5de5\u5177\u94fe\u4e2d\u4e00\u4e2a\u6781\u5177\u524d\u77bb\u6027\u7684\u65b9\u5411\u6027\u4ea7\u54c1\uff0c\u4f46\u80fd\u5426\u4ece\u6709\u8da3\u7684\u6982\u5ff5\u8fdb\u5316\u6210\u53ef\u9760\u7684\u5de5\u7a0b\u57fa\u7840\u8bbe\u65bd\uff0c\u53d6\u51b3\u4e8eCharlie Labs\u80fd\u5426\u5728\u6280\u672f\u521b\u65b0\u4e4b\u4e0a\u5efa\u7acb\u8db3\u591f\u575a\u5b9e\u7684\u6cbb\u7406\u548c\u5b89\u5168\u6846\u67b6\u3002\u5bf9\u5df2\u7ecf\u6df1\u9677Agent\u540e\u9057\u75c7\u7684\u56e2\u961f\u6765\u8bf4\uff0c\u503c\u5f97\u4e00\u8bd5\uff0c\u4f46\u8bf7\u4fdd\u6301\u6e05\u9192\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Daemons by Charlie Labs<\/span>\n                <\/div>\n<div class=\"comment-content\">Charlie Labs gives engineering teams always-on AI daemons that keep work moving after coding agents create it. Define recurring roles in your repo, then let Daemons monitor PRs, issues, CI, docs, and Sentry errors over time. Instead of waiting for another human prompt, Daemons leave reviewable updates where your team already works: GitHub, Linear, Slack, and Sentry.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hi Product Hunt \u2014 we&#8217;re Charlie Labs and we built Daemons for software teams that are already using coding agents and discovering a second-order problem: faster code creation also creates more operational debt.<\/p>\n<p>Daemons are persistent, role-scoped teammates that work across GitHub, Linear, Slack, and Sentry. <\/p>\n<p>\ud83d\udcdc Our thesis is simple: <strong>agents create work. Daemons do the rest.<\/strong><\/p>\n<p>How it works: <\/p>\n<ol>\n<li>\n<p>Teams define the roles and boundaries in Markdown. <\/p>\n<\/li>\n<li>\n<p>Daemons then keep recurring loops moving \u2014 issue hygiene, docs and dependency maintenance, bug triage, CI repair, and follow-through \u2014 with reviewable PRs, issues, reports, escalations, fixes, etc. <\/p>\n<\/li>\n<li>\n<p>Continue to improve the underlying Daemons with Charlie&#8217;s help  <\/p>\n<\/li>\n<\/ol>\n<p>We would especially value feedback from teams using coding agents today: which recurring engineering or operational loop is still falling between the cracks for you?<\/p>\n<\/p>\n<p>Most teams can run several daemons consistently on our free plan. <\/p>\n<\/p>\n<p>Start here: <a href=\"https:\/\/charlielabs.ai\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/charlielabs.ai\/<\/a> <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>46<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@jerrod_engelberg\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jerrod_engelberg<\/a>&nbsp;Ahan , that is such a great launch , I really appreciate. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@jerrod_engelberg\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jerrod_engelberg<\/a>&nbsp;This feels like a natural extension of coding agents, focusing on the messy on operational side that usually gets ignored.\ud83d\udc4d<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>6<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@jerrod_engelberg\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jerrod_engelberg<\/a>&nbsp;Love the concept. \ud83d\ude42<\/p>\n<p>We are rapidly entering a world where we need AI to manage the output of other AI, and Daemons targets this perfectly.<\/p>\n<p>Defining roles and boundaries in Markdown is very elegant. I&#8217;m curious about <strong>how you handle context window drift or &#8216;hallucination&#8217; over long, persistent loops?<\/strong> For example, if a Daemon monitors Sentry errors over weeks, how does it stay anchored to the original boundaries without getting distracted by edge cases?<\/p>\n<p>This feels like the missing layer in the current agent ecosystem. Congrats on the launch! \ud83c\udf89<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Love this framing. Coding agents have gotten good at creating work but not at shepherding everything that comes after (PR reviews, CI failures, stale issues). Do the daemons leave a comment and wait when the right action is ambiguous, or do they try to resolve it automatically? Congrats on the launch.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>10<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@i_sanjay_gautam\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@i_sanjay_gautam<\/a>&nbsp;thanks Sanjay! <\/p>\n<p>The short answer to your question is that Daemons can do both, and can be tuned to be more or less aggressive to act.<\/p>\n<p>Here is an example of a daemon (resolving failing CI checks) that will be more aggressive in acting because the trigger is clear (failing CI): <a href=\"https:\/\/github.com\/charlie-labs\/daemons\/blob\/master\/daemons\/pr-check-repair\/DAEMON.md\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/charlie-labs\/daemons\/blob\/master\/daemons\/pr-check-repair\/DAEMON.md<\/a><\/p>\n<p>On the other hand, here is a daemon (docs drift) that will be more modest about when it comments because often, if your docs haven&#8217;t drifted, you don&#8217;t really want to hear from this daemon \ud83d\ude0a: <a href=\"https:\/\/github.com\/charlie-labs\/daemons\/blob\/master\/daemons\/docs-drift-maintainer\/DAEMON.md\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/github.com\/charlie-labs\/daemons\/blob\/master\/daemons\/docs-drift-maintainer\/DAEMON.md<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>7<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/products\/daemons-by-charlie-labs\" data-node-type=\"mention\" data-mention-type=\"product\" data-mention-id=\"daemons-by-charlie-labs\" target=\"_blank\" rel=\"noopener\">@Daemons by Charlie Labs<\/a> This feels like a practical step beyond code generation , keeping the follow through work moving is where many teams still struggle .<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>9<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@nora_bennett2\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@nora_bennett2<\/a>&nbsp;That&#8217;s true <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@nora_bennett2\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@nora_bennett2<\/a>&nbsp;We&#8217;ve noticed that ourselves, and in the early trials people have been reporting back on with Daemons, it&#8217;s been noted that adding Daemons helps agent work go faster and be less of an operational burden.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Love the role-scoped approach. Clear boundaries plus persistent execution seems much more practical than adding another general-purpose agent.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@oreofe_oluwatipin1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@oreofe_oluwatipin1<\/a>&nbsp;We totally agree! We hope you try it out and let us know what you think!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The daemon model is clever here. Persistent watchers that accumulate context over time solve the state gap that one-shot agents miss. Building async coordination pipelines, you&#8217;ll realize fast that handoffs degrade without a continuous observer. How do you handle conflicting writes when two daemons simultaneously target the same PR thread or Linear issue?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@anand_thakkar1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@anand_thakkar1<\/a>&nbsp;good question. A design decision really important to us early on was to have the daemons, respectively, have visibility into other daemon runs. The knowledge then becomes context of the existing daemon run.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Finally someone tackling the operational hangover. Free plan means no excuse not to try it.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@tipin_timray\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@tipin_timray<\/a>&nbsp;I couldn&#8217;t have said it better myself \ud83d\ude4f<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>In my experience the operational debt quietly stacks up behind the create step but everyone&#8217;s still optimizing that create step. How&#8217;s the aggressiveness dial? The docs-drift deciding when to shut up is the hard one. Is that threshold hand-tuned in your md.file? Congrats with the launch!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@artstavenka1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@artstavenka1<\/a>&nbsp;Thanks, Art! Yes, how often a Daemon runs, and the condition it runs on, are all tuned via the markdown file. For more info, check out the Use Cases page here which has various Daemon definition Markdown files on it <a href=\"https:\/\/charlielabs.ai\/use-cases\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/charlielabs.ai\/use-cases\/<\/a> <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Liked the approach of &#8220;operational hangover&#8221; created by coding agents. My concern or rather a query is; as organizations will deploy dozens of specialized daemons, does the coordination cost between daemons become the next bottleneck? In other words, who manages the managers? thoughts on that ?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@faisal_2420010\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@faisal_2420010<\/a>&nbsp;that&#8217;s a very good question and one that we are even running into internally &#8211;&gt; we now have dozens of daemons set up on our largest repo and typically run several hundred daemon jobs per day. <\/p>\n<p>A few things that can help: <br \/>1.) Daemons are not in a silo, they have access to other daemon runs from Charlie and have enough intelligence to bring that awareness into their own run.<\/p>\n<p>2.) If you start getting overwhelmed, you can always add our built-in agent, @charliehelps to your Github as a collaborator and ask @charliehelps for daemon clean up or look for potential overlap. <\/p>\n<p>3.) If you want to go really meta, you can write a daemon to keep your daemons up to date \ud83e\udd2f \/ not conflicting with one another <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Strong thesis. Most teams are focused on code creation, not the maintenance burden that comes after.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@oreofe_oluwatipin1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@oreofe_oluwatipin1<\/a>&nbsp;it aint much but it&#8217;s honest work \ud83e\udd20 \ud83e\uddf9<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>With persistent teammates working across GitHub, Linear, Slack, and Sentry simultaneously, how does the system maintain state consistency when the same issue gets updated in multiple platforms at once?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@crystalmei\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@crystalmei<\/a>&nbsp;I think I understand what you&#8217;re asking but can you clarify? Do you mean specifically, for example, that when a PR is merged in Github it may also update the relevant Linear issue as well automatically and you&#8217;d receive both alerts as a user? <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Just ran the terminal prompt\u2014under 60 secs is no joke. Agent replied on Teams and held context when I responded. Solid.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>I like the role-scoped teammate framing. This feels close to the real future of agents: not one-off prompts, but recurring responsibilities with boundaries and reviewable output. How are you measuring daemon performance over time, fewer stale PRs, faster CI recovery, fewer ignored issues, or something closer to an \u201cowner\u201d score for each role?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The useful framing is not \u201cAI writes code.\u201d It is that unresolved operational queues finally have a worker with context and memory. PRs, issues, CI, and docs only get safer if the daemon is constrained by explicit runbooks and review gates.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Congrats on the launch! \ud83d\ude80<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>I like that Daemons by Charlie Labs focuses on a specific workflow instead of trying to be a broad all-in-one tool. The part I would want to understand better is the first-time setup: how quickly can a small team get from a blank workspace to a useful result?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>the &#8216;agents create work&#8217; framing is spot on. every team I&#8217;ve seen go heavy on coding agents ends up drowning in the review\/triage overhead nobody planned for. curious how you handle the trust question \u2014 do teams typically start with daemons on low-stakes repos first, or jump straight in?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Amazing! I have tinkered with self maintaining docs earlier and this looks like a much cleaner way to give more control on when the tasks are invoked. I am assuming teams could choose to make them a CI\/CD gate or choose to do retrospective cleanup? Can they be customized beyond the .md to run custom scripts etc?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>the &#8220;after coding agents create it&#8221; framing is exactly right, that&#8217;s the gap most teams feel but can&#8217;t articulate yet. curious how Daemons handles CI failures that are flaky vs actually broken by the agent&#8217;s changes, that&#8217;s usually where async signal gets noisy and the daemon would need to know the difference to avoid spamming reviewers. congrats on the launch.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on the launch. The bit I\u2019d watch is not only when a daemon should act, but how it proves the loop is actually done.<\/p>\n<\/p>\n<p>For CI\/docs\/issue cleanup, do you store a small receipt of trigger, context, action taken, and verification result, or is that mostly visible in the GitHub\/Linear trail?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Love the name. <\/p>\n<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/a0927d1f-6465-442b-8d57-4d438f956145.gif?auto=compress,format&amp;codec=mozjpeg&amp;cs=strip\" style=\"max-width: 100%\"><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>&#8220;Agents create work, daemons do the rest&#8221; is a sharp framing. To answer your question: the loop that falls between the cracks for me as a solo builder isn&#8217;t code creation, it&#8217;s keeping things alive after they ship, dependency and cert renewals, a deployed service that silently dies overnight, the small maintenance no one schedules. Curious how you set the autonomy boundary: how do you decide what a daemon fixes on its own versus what it just flags for a human to approve?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Love the idea of Daemons picking up the chores agents leave behind\u2014like the responsible roommate who actually does the dishes. Faster code is great, but someone has to clean up the CI mess and feed the docs. Curious, which loop have you found teams most relieved to hand off first: bug triage, dependency wrangling, or issue hygiene?<\/p>\n<p>Congratulations!<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The &#8220;agents create work, Daemons do the rest&#8221; thesis is spot on \u2014 it tackles the second-order problem that most teams don&#8217;t see coming until they&#8217;re drowning in stale PRs and ignored CI failures. Defining daemon roles in plain Markdown is a smart choice too; it keeps behavior reviewable and version-controlled. Congrats on the launch! \ud83d\udc4f<\/p>\n<\/p>\n<p>Curious: as teams scale up to many daemons running in parallel, how do you prevent alert fatigue? Is there a way to set a &#8220;quiet hours&#8221; policy or prioritize which daemons get to surface updates vs. just silently act?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#4<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/34MN5LM7CS4KI2\" class=\"app-title\">Quartz<\/a><\/p>\n<div class=\"one-liner\">AI email client built for focus. Runs locally on your Mac<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">212<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Quartz\u662f\u4e00\u6b3e\u5728Mac\u672c\u5730\u8fd0\u884cAI\u6a21\u578b\u7684\u7535\u5b50\u90ae\u4ef6\u5ba2\u6237\u7aef\uff0c\u901a\u8fc7\u667a\u80fd\u5206\u7ea7\u548c\u5b66\u4e60\u7528\u6237\u5199\u4f5c\u98ce\u683c\uff0c\u5e2e\u4f60\u5728\u6df7\u4e71\u7684Gmail\u6536\u4ef6\u7bb1\u4e2d\u805a\u7126\u771f\u6b63\u91cd\u8981\u7684\u90ae\u4ef6\uff0c\u540c\u65f6\u4fdd\u8bc1\u6570\u636e\u9690\u79c1\u4e0d\u5916\u6cc4\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/53ce98d4-6eab-486e-b3c3-fd416f9f4e6f.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/eacfe7c5-b75b-493d-ad2f-fff5b2ba4cce.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f0877b40-c3fe-4ec6-b208-2ba3e07a974a.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/5f77c11a-9bdf-47a5-a8b6-15743161f9f3.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/4cb314f4-ce4a-425e-bfd8-db5cbed1f5b1.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/jL5uZL5jBoE\"><source src=\"https:\/\/youtu.be\/jL5uZL5jBoE\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Email<\/span><br \/>\n            <span class=\"tag\">Productivity<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">AI\u90ae\u4ef6\u5ba2\u6237\u7aef<\/span><br \/>\n            <span class=\"tag\">\u672c\u5730AI<\/span><br \/>\n            <span class=\"tag\">\u9690\u79c1\u4f18\u5148<\/span><br \/>\n            <span class=\"tag\">\u6536\u4ef6\u7bb1\u7ba1\u7406<\/span><br \/>\n            <span class=\"tag\">\u5199\u4f5c\u98ce\u683c\u5b66\u4e60<\/span><br \/>\n            <span class=\"tag\">Gmail\u5ba2\u6237\u7aef<\/span><br \/>\n            <span class=\"tag\">Mac\u5e94\u7528<\/span><br \/>\n            <span class=\"tag\">\u4e13\u6ce8\u529b\u63d0\u5347<\/span><br \/>\n            <span class=\"tag\">\u667a\u80fd\u5206\u7ea7<\/span><br \/>\n            <span class=\"tag\">\u751f\u4ea7\u529b\u5de5\u5177<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u8d5e\u8d4f\u672c\u5730AI\u4e0e\u9690\u79c1\u52a0\u5bc6\uff0c\u4f46\u5bf9\u5199\u4f5c\u98ce\u683c\u7684\u5b66\u4e60\u65f6\u95f4\u5b58\u7591\uff08\u56de\u590d\u79f0\u4ec5\u9700\u51e0\u5c01\u90ae\u4ef6\uff09\uff0c\u5e76\u8be2\u95ee\u81ea\u5b9a\u4e49\u5206\u7c7b\uff08\u5df2\u56de\u590d\u4ec5\u652f\u6301\u4e94\u7ea7\u91cd\u8981\u6027\uff0c\u81ea\u5b9a\u4e49\u5728\u8def\u7ebf\u56fe\u4e2d\uff09\u3002\u5176\u4ed6\u95ee\u9898\u6d89\u53ca\u591a\u8d26\u6237\u652f\u6301\uff08\u5df2\u652f\u6301\u591aGmail\uff09\u3001\u8fc7\u6ee4\u673a\u5236\uff08\u57fa\u4e8e\u7528\u6237\u753b\u50cf\u4e0e\u53cd\u9988\uff09\u53ca\u672a\u6765\u5b9a\u4ef7\uff08\u53ef\u80fd\u4e3a\u56fa\u5b9a\u5e74\u8d39\uff09\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Quartz\u5728\u201cAI+\u90ae\u4ef6\u201d\u7684\u62e5\u6324\u8d5b\u9053\u4e0a\u6253\u51fa\u4e86\u4e00\u5f20\u5dee\u5f02\u5316\u7684\u597d\u724c\u2014\u2014\u672c\u5730\u8fd0\u884c\u3002\u5f53\u5927\u591a\u6570AI\u90ae\u7bb1\u670d\u52a1\uff08\u5982Superhuman\u6216Shortwave\uff09\u5c06\u7528\u6237\u6570\u636e\u4e0a\u4f20\u81f3\u4e91\u7aef\u6a21\u578b\u65f6\uff0cQuartz\u9009\u62e9\u7528Mac\u672c\u5730\u7684Gemma 4 E4B\u6a21\u578b\u5904\u7406\u4e00\u5207\u3002\u8fd9\u4e0d\u4ec5\u662f\u5356\u70b9\uff0c\u66f4\u662f\u58c1\u5792\uff1a\u5bf9B\u7aef\u5ba2\u6237\u3001\u9690\u79c1\u654f\u611f\u7528\u6237\u3001\u4ee5\u53ca\u538c\u5026\u4e86\u201c\u4e3a\u4e86\u53bb\u566a\u800c\u5f15\u5165\u66f4\u591a\u566a\u58f0\u201d\u7684\u4e2d\u5c0f\u56e2\u961f\u800c\u8a00\uff0c\u6570\u636e\u4ece\u4e0d\u79bb\u673a\u610f\u5473\u7740\u96f6\u4fe1\u4efb\u5408\u89c4\u548c\u7aef\u5230\u7aef\u52a0\u5bc6\u4e0d\u518d\u662f\u53e3\u53f7\uff0c\u800c\u662f\u67b6\u6784\u4e8b\u5b9e\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u4ea7\u54c1\u4ecd\u5904\u4e8e\u65e9\u671f\u201c\u9053\u4e49\u80dc\u5229\u201d\u9636\u6bb5\u3002\u4ece\u8bc4\u8bba\u56de\u590d\u770b\uff0c\u201c\u5b66\u4f1a\u7528\u6237\u53e3\u543b\u201d\u8fd9\u4e2a\u6838\u5fc3KOL\u529f\u80fd\u4ecd\u4f9d\u8d56\u6709\u9650\u6837\u672c\uff08\u540c\u7ebf\u7a0b>\u540c\u8054\u7cfb\u4eba\uff09\uff0c\u4e14\u4e0d\u6293\u53d6\u5df2\u53d1\u90ae\u4ef6\uff0c\u8fd9\u610f\u5473\u7740\u521d\u671f\u4f53\u9a8c\u5927\u6982\u7387\u4f1a\u201c\u7ffb\u8bd1\u8154\u201d\u660e\u663e\uff0c\u5bf9\u9ad8\u9891\u6536\u53d1\u8005\u53ef\u80fd\u5ef6\u8fdf\u6ee1\u8db3\u3002\u81ea\u5b9a\u4e49\u5206\u7c7b\u7f3a\u5931\u3001\u4e0d\u652f\u6301\u975eGmail\u8d26\u6237\u3001\u4ee5\u53ca\u5bf9Mac\u786c\u4ef6\u6027\u80fd\u7684\u9690\u6027\u8981\u6c42\u90fd\u662f\u5b9e\u7528\u95e8\u69db\u3002\u82e5\u6700\u7ec8\u5b9a\u4ef7\u6210\u4e3a\u5e74\u8d39\u5236\uff0c\u5b83\u5c06\u9762\u4e34Superhuman\uff0830\u7f8e\u5143\/\u6708\uff09\u4e00\u6837\u7684\u4ed8\u8d39\u5fc3\u7406\u6218\uff1a\u7528\u6237\u662f\u5426\u613f\u610f\u4e3a\u201c\u4e0d\u88ab\u6253\u6270\u201d\u548c\u201c\u4e0d\u4e0a\u4f20\u6570\u636e\u201d\u652f\u4ed8\u6ea2\u4ef7\uff1f\n            <\/p>\n<p class=\"ai-content\">\n                Quartz\u7684\u771f\u6b63\u4ef7\u503c\u4e0d\u5728\u4e8e\u5e2e\u4f60\u770b\u5b8c5k\u5c01\u672a\u8bfb\uff08\u5b83\u81ea\u5df1\u90fd\u627f\u8ba4\u6682\u65f6\u505a\u4e0d\u5230\uff09\uff0c\u800c\u5728\u4e8e\u91cd\u65b0\u5b9a\u4e49\u201cAI\u52a9\u624b\u201d\u7684\u8fb9\u754c\u2014\u2014\u628aAI\u4ece\u4e91\u7aefSaaS\u5546\u90a3\u91cc\u201c\u593a\u56de\u201d\u5230\u7528\u6237\u624b\u4e2d\u3002\u8fd9\u4e00\u903b\u8f91\u82e5\u8dd1\u901a\uff0c\u5c06\u5bf9\u6574\u4e2aAI\u5e94\u7528\u751f\u6001\u4ea7\u751f\u793a\u8303\u6548\u5e94\uff1a\u5bf9\u7528\u6237\u9690\u79c1\u7684\u5c0a\u91cd\uff0c\u53ef\u4ee5\u4e0d\u662f\u529f\u80fd\u4e0a\u7684\u59a5\u534f\uff0c\u800c\u662f\u6280\u672f\u4e0a\u7684\u5347\u7ea7\u3002\u4f46\u524d\u63d0\u662f\uff0cQuartz\u5f97\u5148\u8ba9\u672c\u5730\u6a21\u578b\u8dd1\u5f97\u591f\u5feb\u3001\u5b66\u5f97\u591f\u51c6\uff0c\u5426\u5219\u201c\u9690\u79c1\u201d\u53ea\u662f\u7a7a\u5934\u652f\u7968\uff0c\u201c\u672c\u5730\u201d\u5c31\u662f\u6027\u80fd\u684e\u688f\u3002\u76ee\u524d\u6765\u770b\uff0c\u5b83\u662f\u503c\u5f97\u79c1\u5bc6\u5de5\u4f5c\u8005\u4e00\u8bd5\u7684\u201c\u6e05\u9192\u5242\u201d\uff0c\u4f46\u5c1a\u672a\u6210\u4e3a\u4e3b\u6d41\u66ff\u4ee3\u65b9\u6848\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Quartz<\/span>\n                <\/div>\n<div class=\"comment-content\">Quartz turns Gmail into a focused inbox. It sorts every message by importance, and learns what matters to you over time. When you reply, it drafts in your own voice. And the AI runs entirely on your own Mac, so your mail stays end-to-end encrypted and never shared with AI providers.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hi Product Hunt!<\/p>\n<p>We built Quartz because our own inboxes had become impossible to keep up with.<\/p>\n<p>AI made it easier than ever to send emails at scale. We think AI should also help people defend their inboxes from that noise.<\/p>\n<p>Quartz is an AI-native email app that protects your focus and helps you get through email faster. It learns your style and preferences over time, so it gets better the more you use it.<\/p>\n<p>And because email is private, Quartz runs entirely on your device. Your emails are not sent to AI providers.<\/p>\n<p>Excited to share it with you today. We\u2019re currently in public beta and free to use. <\/p>\n<\/p>\n<p>We\u2019d love to hear what you think!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>15<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@pavel_demeshchik\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@pavel_demeshchik<\/a>&nbsp;Love the focus on local-first and reducing notification noise\u2014that&#8217;s the real productivity killer for anyone managing multiple client projects. How does Quartz handle email threading and categorization across different client work? I imagine freelancers and agency teams would benefit from organizing by project rather than traditional folders.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Running the AI locally and keeping emails end-to-end encrypted is the right call \u2014 most people don&#8217;t realize how much of their inbox ends up on third-party servers. The &#8220;learns your voice&#8221; for drafts is the feature I&#8217;m most curious about.<\/p>\n<\/p>\n<p>How long does it take for Quartz to actually learn your writing style \u2014 is it noticeable after a few replies or does it take weeks?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>5<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@doganakbulut\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@doganakbulut<\/a>, good question. Steering model to produce decent email draft in user&#8217;s voice or at least not cringe was one of the hardest challenges and we&#8217;re not done yet.<\/p>\n<p>Right now it should be noticeable after just a couple of sent emails. Important thing is that we don&#8217;t fetch sent emails from Gmail at the moment and rely only on emails sent from the app. The model would try to learn first from the email you already sent in the same thread, than from emails you sent to the same person, then from others.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>3<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@doganakbulut\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@doganakbulut<\/a>&nbsp;ah, it&#8217;s also possible to give more context about yourself in &#8220;Writing style&#8221;, it should help immediately.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hey folks, I&#8217;m really excited to try out some fresh email AI innovations &#8212; most providers feel boring and don\u2019t do what I need. Let&#8217;s rock! <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@saicheg\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@saicheg<\/a>, let us know how it goes. I&#8217;ll be curious to know if we also don&#8217;t do what you need.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>How does the filtering work? This would be extremely useful if it had some learning mechanism that delivered personalized results.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@rileytomasek\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@rileytomasek<\/a>&nbsp;good question! Filtering is personalized based on your profile (think about it as your <a href=\"https:\/\/Claude.md\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Claude.md<\/a>) + learnings over time. You can correct AI filtering and provide feedback which it take into account next time it sees a similar email<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">@rileytomasek mostly from your direct feedback: when you correct filtering and share feedback next time you receive an email from similar sender or with similar content it will load your feedback in context<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>We just shipped v0.1.84 and it&#8217;s a nice mix of &#8220;finally&#8221; fixes and quality-of-life polish. A few highlights:<\/p>\n<p><strong>\ud83d\udd17 Links in plain-text emails are now tappable.<\/strong> Bare web addresses in plain-text messages are live, clickable links now \u2014 no more copy-pasting URLs into your browser. Just tap and go.<\/p>\n<p>\ud83c\udf4e <strong>Sign-in is reliable again on older macOS.<\/strong> Connecting your account could crash on macOS 14.0\u201314.3. That&#8217;s fixed, so sign-in works no matter which version you&#8217;re on.<\/p>\n<\/p>\n<p>Plus a round of refinements:<\/p>\n<ul>\n<li>\n<p>Recipient names with commas or quotation marks now display correctly \u2014 no more split-up addresses or stray escaped quotes in recipient chips.<\/p>\n<\/li>\n<li>\n<p><strong>Draft with AI<\/strong> now has a clear submit button, so it&#8217;s obvious how to send your prompt.<\/p>\n<\/li>\n<li>\n<p>Settings panels share consistent, polished typography for a cleaner, more cohesive feel.<\/p>\n<\/li>\n<li>\n<p>The Telemetry panel shows your analytics ID as a read-only field \u2014 handy for privacy checks and support.<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Appreciate not having to add yet another service to the chain just to get the AI-powered goodies in the email client. Local LLM is the way. Congrats on the launch! \ud83d\ude80<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@vshkl\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@vshkl<\/a>&nbsp;thank you \u2764\ufe0f<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Whoa, this looks really slick! Big kudos on making the AI fully local, too \ud83d\udc4d\ud83d\udc4d\ud83d\udc4d I might actually stand a chance at processing my 5k unreads \ud83e\udd14<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@izayats\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@izayats<\/a>&nbsp;thank you! <br \/>We don&#8217;t process your existing backlog in beta: crunching 5k+ emails can take a while depending on your hardware. But switch to Quartz today and you&#8217;ll never build up a backlog like that again!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>the &#8216;drafts in your own voice&#8217; bit locally is what i&#8217;d watch \u2014 no per-user training step means few-shot on your sent mail, so the voice match lives or dies on which examples get picked.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@qifengzheng\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@qifengzheng<\/a>&nbsp;you&#8217;re absolutely right, the remark is on point.<\/p>\n<p>I think decent drafting experience was (and still is TBH) one of the hardest challenges we had. We&#8217;re still working on it and continue improving it.<\/p>\n<p>Speaking about examples we choose, we try to pick outgoing emails from the same thread first, then emails sent to the same contact, then the rest of emails. It&#8217;s also possible to describe your style and give more context about yourself in settings.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Been dreaming about this for a while but for comms more broadly: telegram, whatsapp, etc. I think Eric (former YC partner) tried this. Good luck! <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@flreln\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@flreln<\/a>&nbsp;Thank you! Email felt like the most painful place to start, but the long-term vision is much broader. I want Quartz to become a personalized attention layer that understands what\u2019s important to you across email, messaging and eventually every channel competing for your attention<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on the launch! This tool would definitely make my life easier. Does it support adding multiple emails\/domains, to tackle everything at once?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@skottur\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@skottur<\/a>, thank you \u2764\ufe0f<\/p>\n<p>It supports adding multiple Gmail accounts. I personally have 2 Google Workspaces accounts and one personal Gmail account added.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Our changelog for today so far<\/p>\n<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/08e81507-8c6c-47cf-8d99-2ecfde80b6aa.png?auto=compress,format&amp;codec=mozjpeg&amp;cs=strip\" style=\"max-width: 100%\"><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>It looks like there is a chance I&#8217;ll finally start reading my emails \ud83d\ude00<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@stolyarov\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@stolyarov<\/a>, that&#8217;s cool to hear \u2764\ufe0f. Let us know if you have any feedback \ud83d\ude09<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Really interesting local first approach. Just curious, which model(s) are you running locally? <br \/>Also, can I define any custom categories? Like emails about credit card transactions or UPI payments?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@ashish_parab\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@ashish_parab<\/a>&nbsp;good questions! <br \/>We&#8217;re running Gemma 4 E4B on-device. Custom categories aren&#8217;t in yet, right now it&#8217;s the standard five importance levels, but they&#8217;re on our roadmap!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Very excited to try this out! Would that send a push notification when an email is <em>very<\/em> important so I can respond asap?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@nikita_sakau1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@nikita_sakau1<\/a>, indeed we send notifications for emails that get into important category.<\/p>\n<\/p>\n<p>One thing I think we probably should showcase more is that you can change categories of emails manually and this will be remembered (locally, data is visible in settings for review) and would influence categorization of the following emails. If an important email slipped into non-important category, you can fix it manually and next time similar email would go to important and you&#8217;ll see a notification.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@nikita_sakau1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@nikita_sakau1<\/a>&nbsp;thank you! Yes, that&#8217;s the whole idea. You won&#8217;t see push notifications unless it&#8217;s important. And &#8220;important&#8221; is defined by you, Quartz will get more accurate over time as it learns more about you!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hey, congrats with the launch! What&#8217;s your vision on future pricing? Downloading and testing the app anyway \ud83d\udcaa<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@anna_golovchenko\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@anna_golovchenko<\/a>, thank you \u2764\ufe0f<\/p>\n<p>We want to know if there&#8217;s any interest first. In the future I think it could be a fixed yearly payment.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Local first AI on Tauri for inherently private data (email here, but the pattern generalizes to trading, health, code) is the architectural answer to &#8220;I want AI but not in the cloud.&#8221; The hardest part isn&#8217;t the model. It&#8217;s the bundling and update story. How are you handling the Gemma 4 E4B model size in the Tauri bundle, shipping it bundled, downloading on first launch, or external dependency? And how do you handle model updates without re-downloading the entire 4GB+ weight file each time? <\/p>\n<\/p>\n<p>The &#8220;learn from sent emails in this thread first, then to same person, then others&#8221; hierarchy is a smart loop. I&#8217;d be curious what happens for users with very short reply history. Does the model fall back to a base &#8220;professional but warm&#8221; voice, or does it just produce neutral drafts until enough signal accumulates? The cold-start problem is the part most local-first AI tools handle poorly.<\/p>\n<\/p>\n<p>Congrats on the launch.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@joshua_santiago2\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@joshua_santiago2<\/a>&nbsp;thank you! All valid questions, appreciate them! Gemma 4 is downloaded as you complete the onboarding process. Right now we don&#8217;t have any optimizations in place for model updates, so yes, it&#8217;ll re-download the entire 4 GB file. But thanks for highlighting that, it&#8217;s definitely something we need to take care of.<br \/>We address the cold start problem with a proper onboarding. We allow users to specify their categorization preferences and writing style via their profile (think of it as <a href=\"https:\/\/CLAUDE.md\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">CLAUDE.md<\/a> for Claude Code) <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Great project! You mentioned how cold emails create clutter and this tools helps dealing with that.<\/p>\n<p>Do you think we can expand this into agent2agent communication? Like both sides essentially have AI messaging each other and if things make sense, the issue gets escalated to humans. <\/p>\n<p>One of the reasons we treat cold emails as spam is because there are so many of them. However, if there is a proper processing layer, I actually do wish people to reach out to me and let me know how they can bring value. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@vugar_javadov\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@vugar_javadov<\/a>&nbsp;I think eventually we&#8217;ll get to agent2agent communication: my personal AI agent will be speaking to yours and both of us will only get involved if there&#8217;s something of common interest. My big vision for Quartz is building personal attention layer across all communication channels (email, WhatsApp, Telegram, etc), email is just the most painful channel as of now (no regards to privacy)<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Any plans for Windows anytime soon?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@ladefalobi\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@ladefalobi<\/a>&nbsp;Thanks for asking!<\/p>\n<p>We definitely plan to support Windows. With the huge variety of hardware and system configurations, it\u2019s much harder to guarantee a great user experience, so we decided to focus on Mac first and get that right before expanding.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Local-on-Mac with Gemma on-device is a great privacy angle, that&#8217;s exactly why I run my own AI tools on my own machine too. One thing I haven&#8217;t seen asked: since the model runs on the Mac, what happens to sorting and drafts when the laptop is asleep or closed? Does it catch up the moment you reopen it, or do you need it awake to keep processing? Congrats on the launch.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@david_marko\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@david_marko<\/a>, when the lid is closed, the app is hibernated and we don&#8217;t do any processing. The app should resume the processing as soon as you open the lib back up.<\/p>\n<p>So it&#8217;ll resume automatically but won&#8217;t process anything when laptop is asleep. In rare case when something gets wrong and processing fails, it&#8217;s possible to trigger re-processing of an email manually.<\/p>\n<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/27f0c19e-ab32-4976-8691-b3be70aa89eb.png?auto=compress,format&amp;codec=mozjpeg&amp;cs=strip\" style=\"max-width: 100%\"><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Focus and privacy in the same product is rare for an email client. Does it handle multiple accounts in one inbox?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@suzychase\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@suzychase<\/a>, yes, it does. Unfortunately, only Gmail for now. I use multiple accounts myself.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Local-first is the right instinct for email agents. The hard part is less summarization and more trust: what can act, what only drafts, and how quickly a user can audit why something happened.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@krekeltronics\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@krekeltronics<\/a>&nbsp;that&#8217;s why show AI reasoning in the app and let users correct it. This way Quartz learns from its mistakes and gets better over time. Thank you for checking us out!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Interesting! Congrats on the launch<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p>Thank you <a href=\"https:\/\/www.producthunt.com\/@ruvik_milkis\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@ruvik_milkis<\/a>&nbsp;\u2764\ufe0f<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hi! \ud83d\ude80 \ud83d\ude80\ud83d\ude80<\/p>\n<p>Congrats on the launch! Looking forward to seeing how this grows.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@lptnbrg\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@lptnbrg<\/a>, thank you \u2764\ufe0f<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>An email product built around focus! I love that:)<\/p>\n<p>Is there a way to identify which emails are important besides manually marking them myself?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@hun_kim\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@hun_kim<\/a>&nbsp;thank you and good question! You can describe it via your user profile first and then teach Quartz with corrections and feedback. It will get better the more you use it!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>How about integrating them with office emails? Mostly office emails consist of 1000+ unread emails, which needs sorting and prioritizing. Any idea how we can integrate with office emails?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@sumit_maiti\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sumit_maiti<\/a>&nbsp;are you on MS Outlook \/ Microsoft 365?<br \/>Currently, we support Gmail only but other providers are on the roadmap. Tell me your exact setup and I&#8217;ll see how we can help and bump it up the list.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#5<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/DPQ4UERYTICR5L\" class=\"app-title\">Android 17<\/a><\/p>\n<div class=\"one-liner\">Android becomes an intelligence system<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">179<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Android 17\u5c06\u64cd\u4f5c\u7cfb\u7edf\u5347\u7ea7\u4e3a\u667a\u80fd\u7cfb\u7edf\uff0c\u901a\u8fc7AppFunctions\u548cMCP\u534f\u8bae\u8ba9\u5e94\u7528\u66b4\u9732\u672c\u5730\u529f\u80fd\u7ed9AI\u52a9\u624b\uff0c\u89e3\u51b3\u5728\u591a\u8bbe\u5907\u573a\u666f\u4e0b\u5e94\u7528\u529f\u80fd\u788e\u7247\u5316\u3001\u65e0\u6cd5\u88ab\u667a\u80fd\u8c03\u7528\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/2e141e0c-b782-4e72-9d5a-794fb6a742f8.jpeg?auto=format\" data-video-url=\"https:\/\/www.youtube.com\/watch?v=Utmu5Sk3G54\"><source src=\"https:\/\/www.youtube.com\/watch?v=Utmu5Sk3G54\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/53f0906e-6984-49ad-b8ef-503e82ff8ab9.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/b8b38f4b-a904-4c19-9844-a35647ce578e.gif?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/5c432f82-9c85-4880-8def-85b77de561a6.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/a47a9146-2d59-4ac6-8e2e-203613e6bf3a.gif?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/25318145-af06-481e-a95b-c39ff31e7230.webp?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/5eaad2e4-7a04-4ee4-ab8a-70e724b70147.webp?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/0bb3dac1-1ddd-4325-9e43-40fe312aec2e.webp?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Android<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span><br \/>\n            <span class=\"tag\">Development<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u667a\u80fd\u7cfb\u7edf<\/span><br \/>\n            <span class=\"tag\">Android MCP<\/span><br \/>\n            <span class=\"tag\">AppFunctions<\/span><br \/>\n            <span class=\"tag\">AI\u4ee3\u7406<\/span><br \/>\n            <span class=\"tag\">\u5e94\u7528\u5de5\u5177\u5316<\/span><br \/>\n            <span class=\"tag\">\u8de8\u7aef\u9002\u914d<\/span><br \/>\n            <span class=\"tag\">\u9690\u79c1\u63a7\u5236<\/span><br \/>\n            <span class=\"tag\">\u5a92\u4f53API<\/span><br \/>\n            <span class=\"tag\">\u5185\u5b58\u4f18\u5316<\/span><br \/>\n            <span class=\"tag\">Agent\u5e73\u53f0<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u80af\u5b9aAppFunctions\u548cMCP\u662f\u6700\u5927\u4eae\u70b9\uff0c\u8ba4\u4e3aAndroid\u5f00\u59cb\u5411Agent\u5e73\u53f0\u8fdb\u5316\u3002\u4f46\u6709\u4eba\u62c5\u5fe7App\u81ea\u5b9a\u4e49\u5de5\u5177\u4f1a\u5bfc\u81f4\u53d1\u73b0\u6027\u6df7\u4e71\uff0c\u7c7b\u4f3ciOS\u6377\u5f84\u7684\u788e\u7247\u5316\u95ee\u9898\uff1b\u5bf9\u591a\u8868\u9762\u9002\u914d\u957f\u671f\u201c\u753b\u997c\u201d\u8868\u793a\u6000\u7591\uff0c\u7f3a\u4e4f\u5177\u4f53\u67b6\u6784\u9a8c\u8bc1\u6848\u4f8b\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Android 17\u7684\u91ce\u5fc3\u6e05\u6670\u2014\u2014\u4ece\u201c\u5e94\u7528\u542f\u52a8\u5668\u201d\u8f6c\u5411\u201c\u667a\u80fd\u4e2d\u95f4\u4ef6\u201d\uff0c\u8ba9App\u80fd\u529b\u53ef\u88abAI\u8c03\u7528\u3002AppFunctions+Android MCP\u7684\u7ec4\u5408\u786e\u5b9e\u6bd4\u73b0\u6709\u6377\u5f84\u6216Siri Intent\u66f4\u5e95\u5c42\u3001\u66f4\u81ea\u7531\uff0c\u7406\u8bba\u4e0a\u80fd\u5b9e\u73b0\u5e94\u7528\u95f4\u65e0UI\u534f\u4f5c\u3002\u4f46\u8bc4\u8bba\u4e2d\u7684\u62c5\u5fe7\u7edd\u975e\u675e\u4eba\u5fe7\u5929\uff1a\u6bcf\u4e2aApp\u81ea\u884c\u5b9a\u4e49\u5de5\u5177\uff0c\u65e0\u5f02\u4e8e\u5efa\u9020\u4e00\u5ea7\u6ca1\u6709\u7d22\u5f15\u7684\u56fe\u4e66\u9986\u2014\u2014\u5f53\u6570\u767e\u5e94\u7528\u5404\u81ea\u66b4\u9732\u6570\u5341\u4e2aaction\uff0cMCP\u7684\u53d1\u73b0\u4e0e\u51b2\u7a81\u6d88\u89e3\u673a\u5236\u5c06\u6210\u4e3a\u81f4\u547d\u77ed\u677f\u3002Google\u4ece\u672a\u8bc1\u660e\u81ea\u5df1\u80fd\u7ba1\u597d\u751f\u6001\u788e\u7247\u5316\uff08\u60f3\u60f3Android\u5206\u53d1\u3001\u6743\u9650\u7ba1\u7406\u5386\u53f2\uff09\uff0c\u800c\u6b64\u6b21\u67b6\u6784\u7684\u6210\u8d25\uff0c\u6070\u6070\u4f9d\u8d56\u4e00\u4e2a\u7406\u60f3\u5316\u7684\u5168\u5c40\u534f\u8c03\u5c42\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u66f4\u81f4\u547d\u7684\u662f\uff0c\u591a\u8868\u9762\u81ea\u9002\u5e94\u4ece\u6298\u53e0\u5c4f\u5143\u5e74\u5c31\u5f00\u59cb\u558a\uff0c\u81f3\u4eca\u4ecd\u662fCompose\u4e0a\u7684\u6837\u677f\u95f4\u529f\u80fd\u3002\u5982\u679cAndroid 17\u53ea\u662f\u628a\u201c\u9002\u914d\u8d23\u4efb\u201d\u63a8\u7ed9\u5f00\u53d1\u8005\uff0c\u800c\u7f3a\u4e4f\u8fd0\u884c\u65f6\u53ef\u9760\u7684\u5f62\u6001\u5207\u6362\u4fdd\u969c\uff0c\u90a3\u4e48\u201c\u667a\u80fd\u7cfb\u7edf\u201d\u5c31\u53ea\u662f\u4e00\u6b21\u5927\u578bIDE\u4fc3\u9500\u2014\u2014\u5229\u597dChrome OS\u548cGemini\u56e2\u961f\uff0c\u4f46\u5bf9\u666e\u901a\u7528\u6237\u548c\u4e2d\u5c0f\u5f00\u53d1\u8005\u800c\u8a00\uff0c\u5b66\u4e60\u6210\u672c\u4e0e\u6536\u76ca\u4e0d\u6210\u6b63\u6bd4\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u771f\u6b63\u7684\u4ef7\u503c\u5728\u4e8e\uff1aAndroid 17\u5728\u8d4c\u4e00\u4e2a\u201cAI\u4f18\u5148\u201d\u7684\u4ea4\u4e92\u672a\u6765\u2014\u2014\u5f53\u7528\u6237\u4e0d\u518d\u9700\u8981\u624b\u52a8\u6253\u5f00App\uff0c\u800c\u662f\u76f4\u63a5\u6307\u4ee4\u6267\u884c\u64cd\u4f5c\uff0c\u90a3\u4e48\u5e94\u7528\u5c31\u9000\u5316\u4e3a\u53ef\u8c03\u7528\u7684\u5de5\u5177\u51fd\u6570\u3002\u8fd9\u4e2a\u65b9\u5411\u6ca1\u9519\uff0c\u4f46Google\u9700\u8981\u56de\u7b54\u4e00\u4e2a\u6838\u5fc3\u95ee\u9898\uff1a\u8c01\u6765\u4fdd\u8bc1\u8fd9\u4e2a\u201c\u667a\u80fd\u5c42\u201d\u4e0d\u4f1a\u6ca6\u4e3a\u4e0b\u4e00\u4e2a\u788e\u7247\u5316\u7684Intent\u7cfb\u7edf\uff1f\u5982\u679c\u4e0d\u80fd\uff0c\u5b83\u4e0d\u8fc7\u662f\u7528AI\u7684\u7cd6\u8863\u5305\u88c5\u4e86\u65e7\u6709\u7684\u6df7\u4e71\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Android 17<\/span>\n                <\/div>\n<div class=\"comment-content\">Android 17 brings AppFunctions, Android MCP, adaptive-first app requirements, App Bubbles, Continue On, stronger privacy controls, memory limits, performance improvements, and new media\/camera APIs as Android starts shifting from an operating system into an intelligence system.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hi everyone!<\/p>\n<p>Android 17 puts apps closer to the agent layer.<\/p>\n<p>With <a href=\"https:\/\/developer.android.com\/ai\/appfunctions\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">AppFunctions<\/a>, an app can expose its own actions as local tools for Android MCP. <a href=\"https:\/\/www.producthunt.com\/products\/gemini-6\" target=\"_blank\" rel=\"noopener\">@Gemini<\/a> and other assistants can discover those actions and run workflows with access to the app\u2019s local state.<\/p>\n<p>The UI still matters, but the app\u2019s core capabilities can now become callable system-level tools.<\/p>\n<p>It also changes the baseline for app design. Developers now have to assume their apps may run across phones, tablets, foldables, desktop windows, floating bubbles, and handoff surfaces, and <a href=\"https:\/\/www.producthunt.com\/products\/google\" target=\"_blank\" rel=\"noopener\">@Google<\/a> is pushing <a href=\"https:\/\/developer.android.com\/develop\/ui\/compose\/first\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Compose<\/a> as the default way to build for that world.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@zaczuo\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@zaczuo<\/a>&nbsp;Hi,<\/p>\n<p>Do you get any traffic from Reddit?<\/p>\n<p>Most websites are missing out on it. I help businesses drive organic Reddit traffic through real community engagement, no paid ads, no bots.<\/p>\n<p>Could open up a new traffic channel for your website.<\/p>\n<p>Worth a quick chat?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@zaczuo\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@zaczuo<\/a>&nbsp;Hi \ud83d\udc4b. If you loved android 17 (me too) , you&#8217;ll definitely love <a href=\"https:\/\/twent.xyz\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">twent.xyz<\/a> . Its my biggest passion project so far. I call it the Autopilot Agent for Android. Nice name, right? \ud83d\ude05 . It has SOTA agentic memory, an Ubuntu Terminal UI Automation, MCP + AGENT SKILL supoort, Workflow automation,  AI-generated Mini-apps, in-chat Generative UI, background agents, Agent CLIs support, browser to browse ACP-compatible Agent CLIs, supports BYOK and local models, <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>the AppFunctions story is interesting but feels like it&#8217;ll fragment badly in practice &#8211; every app defining its own tools means discoverability just becomes chaos at scale. iOS shortcuts went through this exact problem and it never really resolved. also the multi-surface adaptive layout thing has been &#8216;coming soon&#8217; since the first foldables launched. show me one concrete use case that only works because of this specific architecture and i&#8217;ll be more convinced<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>AppFunctions and Android MCP are the most interesting parts here. If apps can expose real local actions to assistants, Android starts feeling less like a launcher and more like an agent-ready platform.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Thant Awesome! Can&#8217;t wait to try it <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#6<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/FBPTZIGWMZDYLT\" class=\"app-title\">Dopami<\/a><\/p>\n<div class=\"one-liner\">Household chores without the mental load for ADHD<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">151<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Dopami \u901a\u8fc7\u884c\u4e3a\u7b97\u6cd5\u548c\u6e38\u620f\u5316\u673a\u5236\uff0c\u4e3a ADHD \u4eba\u7fa4\u3001\u5bb6\u5ead\u53ca\u5ba4\u53cb\u5728\u5171\u4eab\u5bb6\u52a1\u573a\u666f\u4e2d\u63a8\u9001\u5c0f\u4efb\u52a1\uff0c\u89e3\u51b3\u7531\u6267\u884c\u529f\u80fd\u548c\u51b3\u7b56\u75b2\u52b3\u5bfc\u81f4\u7684\u542f\u52a8\u56f0\u96be\u4e0e\u5fc3\u7406\u8d1f\u62c5\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/7514a2af-e33d-4a61-911d-2bda828f3dae.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/07b899fe-84c7-4b90-89ae-dc60859c82e4.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1bf9786c-d434-4a44-9dee-ef14ac8ba85f.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/c13b5d14-7e81-4f89-b709-09eec1999312.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/cab35a3e-cc10-4a51-a7dc-24acdf67aaca.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/a4b8efa6-f7d3-4218-a427-e67fb6e7e701.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/e5f8e853-434e-4275-8265-cb69307990e0.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/527e4d77-65da-4ffb-b77f-a8ae30f0ffaa.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/365f3a3c-f831-4819-b39e-8a68a2569e75.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/560baa05-df1c-42d0-8458-414d7021a71b.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/939ebd7b-4995-43e9-9fdf-8326d2d0a4ea.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/03c760d2-c6dc-4f20-a480-1a30577cf0f3.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/b58cb33f-507a-4869-b3f3-dee1ac6e2f86.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/ed32705f-2d49-4e7d-a7ae-5ff3a9f5285a.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/2dcefa28-e5cb-4435-8732-f4156a122be5.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/b8621249-41c4-4eae-85b9-c91ee948d5da.jpeg?auto=format\" data-video-url=\"https:\/\/www.youtube.com\/watch?v=PFJStlUSsCs\"><source src=\"https:\/\/www.youtube.com\/watch?v=PFJStlUSsCs\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Productivity<\/span><br \/>\n            <span class=\"tag\">Task Management<\/span><br \/>\n            <span class=\"tag\">Home<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">ADHD\u8f85\u52a9<\/span><br \/>\n            <span class=\"tag\">\u5bb6\u52a1\u7ba1\u7406<\/span><br \/>\n            <span class=\"tag\">\u6e38\u620f\u5316\u4efb\u52a1<\/span><br \/>\n            <span class=\"tag\">\u884c\u4e3a\u7b97\u6cd5<\/span><br \/>\n            <span class=\"tag\">\u5fc3\u7406\u5065\u5eb7<\/span><br \/>\n            <span class=\"tag\">\u5bb6\u5ead\u534f\u4f5c<\/span><br \/>\n            <span class=\"tag\">\u6e38\u620f\u5316<\/span><br \/>\n            <span class=\"tag\">\u4e60\u60ef\u517b\u6210<\/span><br \/>\n            <span class=\"tag\">\u6548\u7387\u5de5\u5177<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u8ba4\u53ef\u201c\u4efb\u52a1\u201d\u800c\u975e\u201c\u5bb6\u52a1\u201d\u7684\u8868\u8ff0\u548c\u6309\u623f\u95f4\/\u65f6\u95f4\/\u7cbe\u529b\u63a8\u9001\u7684\u8bbe\u8ba1\u3002\u4e3b\u8981\u95ee\u9898\u5305\u62ec\uff1a\u662f\u5426\u652f\u6301\u72ec\u7acb\u914d\u7f6e\u6587\u4ef6\uff08\u5b98\u65b9\u786e\u8ba4\u652f\u6301\uff09\u3001\u63d0\u9192\u4e0e\u901a\u77e5\u529f\u80fd\uff08\u5df2\u5b9e\u73b0\u5faa\u73af\u4efb\u52a1\uff09\u3001\u5e73\u53f0\u517c\u5bb9\u6027\uff08Android\/iOS \u5f85\u660e\u786e\uff09\u3002\u90e8\u5206\u7528\u6237\u5bf9\u5b9e\u9645\u6267\u884c\u529b\u5b58\u7591\uff0c\u4f46\u80af\u5b9a\u8da3\u5473\u6027\u5bf9 ADHD \u7684\u5438\u5f15\u529b\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Dopami \u7684\u806a\u660e\u4e4b\u5904\u4e0d\u5728\u4e8e\u201c\u505a\u5bb6\u52a1\u201d\uff0c\u800c\u5728\u4e8e\u7cbe\u51c6\u627e\u5230\u4e86 ADHD \u7fa4\u4f53\u7684\u8ba4\u77e5\u75db\u611f\u2014\u2014\u4e0d\u662f\u61d2\uff0c\u662f\u542f\u52a8\u65f6\u7684\u201c\u96f6\u51b3\u7b56\u529b\u201d\u4e0e\u201c\u591a\u5df4\u80fa\u9965\u997f\u201d\u3002\u5b83\u7684\u6838\u5fc3\u4ef7\u503c\u4e0d\u662f\u5728\u529f\u80fd\u5806\u53e0\uff0c\u800c\u662f\u628a TikTok \u7684\u201c\u6ce8\u610f\u529b\u52ab\u6301\u7b97\u6cd5\u201d\u9006\u5411\u7528\u5728\u81ea\u63a7\u573a\u666f\uff1a\u4e0d\u8981\u6c42\u7528\u6237\u81ea\u5f8b\uff0c\u800c\u662f\u8ba9\u7b97\u6cd5\u81ea\u9002\u5e94\u4f60\u7684\u80fd\u91cf\u6ce2\u5cf0\u3002\u8fd9\u672c\u8d28\u4e0a\u662f\u4e00\u79cd\u201c\u5bf9\u6297\u6027\u8bbe\u8ba1\u201d\uff0c\u4ee5\u5bf9\u6297\u73b0\u4ee3\u6570\u5b57\u539f\u4f4f\u6c11\u7684\u795e\u7ecf\u591a\u6837\u6027\u7f3a\u9677\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u5371\u9669\u4e5f\u540c\u6837\u51fa\u73b0\u5728\u8fd9\u91cc\u3002\u4ea7\u54c1\u7528\u6e38\u620f\u5316\u3001XP \u7cfb\u7edf\u3001\u6392\u540d\u5956\u52b1\u505a\u5f15\u5bfc\uff0c\u672c\u8d28\u662f\u7528\u201c\u5916\u90e8\u523a\u6fc0\u201d\u66ff\u4ee3\u201c\u5185\u90e8\u52a8\u673a\u201d\uff0c\u957f\u671f\u6765\u770b\uff0c\u8fd9\u5bf9 ADHD \u7528\u6237\u53ef\u80fd\u5f62\u6210\u65b0\u7684\u4f9d\u8d56\u56de\u8def\u2014\u2014\u53ea\u6709\u5728\u5956\u52b1\u53cd\u9988\u5b58\u5728\u65f6\u624d\u884c\u52a8\uff0c\u4e00\u65e6\u6e38\u620f\u65b0\u9c9c\u611f\u6d88\u9000\u6216\u7b97\u6cd5\u51fa\u73b0\u8bef\u5224\uff0c\u7cfb\u7edf\u4f1a\u8fc5\u901f\u5931\u6548\u3002\u53e6\u5916\uff0c\u201c\u6bcf\u6708 9.99 \u7f8e\u5143\u201d\u7684\u5b9a\u4ef7\u70b9\u5f88\u5fae\u5999\uff1a\u6bd4\u540c\u7c7b\u5de5\u5177\u7565\u9ad8\uff0c\u4f46\u5bf9\u6807\u7684\u662f\u201c\u5e2e\u52a9\u7701\u4e0b\u8ba4\u77e5\u5e26\u5bbd\u201d\uff0c\u8fd9\u672c\u8eab\u5c31\u662f\u6700\u96be\u91cf\u5316\u7684\u4ef7\u503c\u3002\u521d\u671f\u901a\u8fc7\u514d\u8d39 Beta \u548c\u201c\u96c6\u4eba\u8d62\u516c\u4ed4\u201d\u7684\u75c5\u6bd2\u4f20\u64ad\u79ef\u7d2f\u7528\u6237\u6570\u636e\uff0c\u662f\u806a\u660e\u7684\u51b7\u542f\u52a8\u7b56\u7565\u3002\u4f46\u6700\u7ec8\u51b3\u5b9a\u9ecf\u6027\u7684\uff0c\u4e0d\u662f\u516c\u4ed4\uff0c\u800c\u662f\u7b97\u6cd5\u80fd\u5426\u771f\u6b63\u8bfb\u61c2\u201c\u4f60\u4eca\u5929\u8fde\u52a8\u90fd\u4e0d\u60f3\u52a8\u201d\u7684\u90a3\u4e00\u5929\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Dopami<\/span>\n                <\/div>\n<div class=\"comment-content\">Dopami helps ADHD families, adults, and roommates handle household chores without mental load by suggesting small missions based on room, time, energy, and shared home context.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Love the framing of &#8220;missions&#8221; instead of chores \u2014 that reframe alone makes it way less overwhelming for ADHD brains. The room\/time\/energy context is a smart touch too.<\/p>\n<\/p>\n<p>Do shared households get separate profiles per person, or is the task list shared across everyone?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@doganakbulut\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@doganakbulut<\/a>&nbsp;Thank you \ud83e\ude77 Separate profiles, shared roof  that&#8217;s exactly how it works. Everyone in the household has their own missions and their own progress, so nobody&#8217;s list gets tangled with someone else&#8217;s. Way less of the &#8220;whose task was this?&#8221; chaos that ADHD brains know too well \ud83d\ude42<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hey Product Hunt \ud83d\udc4b<\/p>\n<p>We built Dopami because we kept asking the same question: why does TikTok know exactly when to grab my attention, but my to-do list doesn&#8217;t?<\/p>\n<p>The answer is behavioral algorithms. TikTok learns your habits, your active windows, your patterns and serves content at the exact moment you&#8217;ll engage. It works flawlessly. The problem is it works against you.<\/p>\n<p>We built the same engine. But instead of serving you a Reel, it surfaces the right chore at the right moment.<\/p>\n<p>Here&#8217;s what that means in practice:<\/p>\n<p>No alarms to set. No rigid routines to maintain.<br \/>Dopami observes when you open the app, which missions you complete, in what order, at what time.<br \/>The more you use it, the more precisely it knows when to nudge you not with a generic reminder, but with a specific mission calibrated to your energy right now.<br \/>The rest of the product:<\/p>\n<p>Chores organized by room \u2192 zero decision fatigue<br \/>Every task earns XP, unlocks levels and trophies \u2192 your brain gets the dopamine hit it needs<br \/>Due dates feed the algorithm \u2192 deadlines drive priority automatically<br \/>Up to 6 household members \u2192 everyone sees what needs to be done, not just you<br \/>Dark-mode-first design \u2192 built to calm, not overwhelm<br \/>Who it&#8217;s for: Adults with ADHD, parents managing households, roommates who are tired of the mental load falling on one person.<\/p>\n<p>Where we are: Currently in closed beta free while we learn. Launching at $9.99\/month with a 30-day free trial.<\/p>\n<p>We&#8217;re two founders one ADHD, one not which means the product gets stress-tested from both sides every single day.<\/p>\n<p>If you&#8217;ve ever stared at a pile of dishes for three days knowing you needed to do them but couldn&#8217;t start: this is for you.<\/p>\n<p>Would love your questions and feedback. We read everything. \ud83e\udde0<\/p>\n<p>Nathan &amp; N\u00e9o, co-founders of Dopami<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/b9aca98b-0bfa-493d-8fba-66593e17a477.webp?auto=compress,format&amp;codec=mozjpeg&amp;cs=strip\" style=\"max-width: 100%\"><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Such a cute mascot that a chore will feel more like a game \ud83d\ude42 <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@busmark_w_nika\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@busmark_w_nika<\/a>&nbsp;ahah thanks ! If you want a chance to win our plush mascot, get as many people as possible to sign up using your referral code \ud83d\ude42 <\/p>\n<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Not sure it would actually get me to do the chores but looks fun!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@louislecat\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@louislecat<\/a>&nbsp;Haha fair! \ud83d\ude04 But that &#8220;looks fun&#8221; part is kind of the whole point for ADHD brains, the issue usually isn&#8217;t laziness, it&#8217;s that boring tasks give zero dopamine, so starting feels impossible. Dopami adds the reward <em>up front<\/em> so your brain actually wants to begin. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Love the concept! Quick question \u2014 does Dopami also help with scheduling tasks and sending reminders\/notifications if we forget to complete them?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@priyanktyagi\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@priyanktyagi<\/a>&nbsp;Hello, thank you for your message. It&#8217;s entirely possible with a system of recurring tasks \ud83d\ude42<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The mental load framing is the part that gets me. It isn&#8217;t the chores themselves, it&#8217;s the constant background tracking of them.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@suzychase\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@suzychase<\/a>&nbsp;Hey ! For ADHD The &#8220;open tabs that never close&#8221; feeling. That invisible background process is the real exhaustion  not the dishes themselves. Offloading it is the whole point. \ud83e\ude77<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>would be better if you add your x handle on the website<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@jackleeio\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jackleeio<\/a>&nbsp;Thanks ! We fix that \ud83d\ude42 <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Android or iOS?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>We are glad that you like the application so much; feel free to invite as many people as possible to increase your chances of winning a free plush toy \ud83d\ude42<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/e6134f90-6bbc-4a4e-8b75-92dee50e624c.png?auto=compress,format&amp;codec=mozjpeg&amp;cs=strip\" style=\"max-width: 100%\"><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>We&#8217;re doing something a little unhinged to celebrate our launch here <\/p>\n<\/p>\n<p>We just opened a waitlist lottery the more people you invite, the higher you climb, and the better your prizes.<\/p>\n<p>Top spots win exclusive Dopami Founder Packs: early beta access, limited mascot collectibles, and a lifetime head start before we go public.<\/p>\n<p>It&#8217;s exactly the kind of mission your ADHD brain will actually want to complete.<\/p>\n<\/p>\n<p> <a href=\"https:\/\/www.do-pami.com\/beta\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/www.do-pami.com\/beta\/<\/a><\/p>\n<\/p>\n<p>Every person you bring in = one more entry. The leaderboard is live. Go. \ud83e\udde0\u26a1<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#7<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/JWZ6X5DYJU2KA2\" class=\"app-title\">Tapfree for Chrome<\/a><\/p>\n<div class=\"one-liner\">Voice dictation that adapts to what\u2019s on your screen<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">124<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Tapfree \u662f\u4e00\u6b3e\u4e3a Chrome \u6d4f\u89c8\u5668\u548c ChromeOS \u6253\u9020\u7684\u8bed\u97f3\u4f18\u5148\u952e\u76d8\uff0c\u5b83\u901a\u8fc7\u7406\u89e3\u7f51\u9875\u4e0a\u4e0b\u6587\u6765\u7cbe\u51c6\u8f6c\u5199\u53e3\u8bed\uff0c\u89e3\u51b3\u4e86\u4f20\u7edf\u542c\u5199\u5de5\u5177\u65e0\u6cd5\u5904\u7406\u4fee\u6b63\u3001\u683c\u5f0f\u6df7\u4e71\u548c\u8bed\u5883\u9519\u4e71\u7684\u75db\u70b9\uff0c\u8ba9\u7528\u6237\u5728\u4efb\u4f55\u6587\u672c\u6846\u4e2d\u90fd\u80fd\u5b9e\u73b0\u201c\u5373\u8bf4\u5373\u6240\u5f97\u201d\u7684\u9ad8\u6548\u8f93\u5165\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/b5462248-d2aa-48a2-8026-d351f6f4d166.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/71a278d1-779a-4d1e-8764-c26b29da58e8.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/0035c59d-3557-4baa-bdd1-b847676553e1.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/be8acea2-4100-4665-bdb6-1ca21ed7ce4a.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/4ef107fa-3521-4109-b414-94623dec92ce.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/33938bc7-5178-48df-8ec9-4436fe49cbd3.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Chrome Extensions<\/span><br \/>\n            <span class=\"tag\">Productivity<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u8bed\u97f3\u8f93\u5165<\/span><br \/>\n            <span class=\"tag\">\u542c\u5199\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u4e0a\u4e0b\u6587\u611f\u77e5<\/span><br \/>\n            <span class=\"tag\">Chrome\u6269\u5c55<\/span><br \/>\n            <span class=\"tag\">ChromeOS<\/span><br \/>\n            <span class=\"tag\">AI\u952e\u76d8<\/span><br \/>\n            <span class=\"tag\">\u6548\u7387\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u8bed\u97f3\u8f6c\u6587\u5b57<\/span><br \/>\n            <span class=\"tag\">\u514d\u63d0\u8f93\u5165<\/span><br \/>\n            <span class=\"tag\">\u529e\u516c\u6548\u7387<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u79f0\u8d5e\u5176\u667a\u80fd\u4fee\u6b63\u548c\u4e0a\u4e0b\u6587\u7406\u89e3\u80fd\u529b\uff0c\u5e76\u5173\u5fc3\uff1a\u9690\u79c1\u653f\u7b56\uff08\u4e0a\u4e0b\u6587\u662f\u5426\u5b58\u50a8\uff09\u3001\u662f\u5426\u652f\u6301\u6240\u6709\u7f51\u7ad9\u53caLinux\u5e94\u7528\u3001\u89e6\u5c4f\u4e0e\u5feb\u6377\u952e\u652f\u6301\u3002\u90e8\u5206\u7528\u6237\u5e0c\u671b\u8fdb\u4e00\u6b65\u4f18\u5316\u5728\u7f16\u7a0b\u73af\u5883\u4e2d\u7684\u53d8\u91cf\u540d\u8bc6\u522b\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Tapfree \u7684\u4ef7\u503c\u4e0d\u5728\u4e8e\u53c8\u505a\u4e86\u4e00\u6b3e\u8bed\u97f3\u8f6c\u6587\u5b57\u5de5\u5177\uff0c\u800c\u5728\u4e8e\u91cd\u65b0\u5b9a\u4e49\u4e86\u201c\u542c\u5199\u201d\u7684\u4eba\u673a\u4ea4\u4e92\u8303\u5f0f\u3002\u5b83\u6452\u5f03\u4e86\u4f20\u7edf\u5de5\u5177\u201c\u4f60\u8bf4\u4ec0\u4e48\u6211\u6253\u4ec0\u4e48\u201d\u7684\u673a\u68b0\u5fe0\u8bda\uff0c\u901a\u8fc7\u5f15\u5165LLM\u5bf9\u8bed\u4e49\u7684\u6df1\u5ea6\u7406\u89e3\uff0c\u5b9e\u73b0\u4e86\u5bf9\u53e3\u8bed\u4e2d\u81ea\u7136\u505c\u987f\u3001\u81ea\u6211\u4fee\u6b63\u3001\u8bed\u6c14\u8f6c\u8ff0\u7b49\u884c\u4e3a\u7684\u667a\u80fd\u8fd8\u539f\u3002\u8fd9\u6070\u6070\u662f\u751f\u4ea7\u529b\u5de5\u5177\u4ece\u201c\u6267\u884c\u6307\u4ee4\u201d\u8fdb\u5316\u5230\u201c\u7406\u89e3\u610f\u56fe\u201d\u7684\u5173\u952e\u4e00\u6b65\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u51b7\u9759\u6765\u770b\uff0c\u5176\u201c\u6740\u624b\u950f\u201d\u9690\u79c1\u58f0\u660e\u4e2d\u7684\u201cephemeral\u201d\u6a21\u5f0f\u867d\u80fd\u5b89\u629a\u7528\u6237\uff0c\u5374\u4e5f\u610f\u5473\u7740\u9700\u8981\u6d88\u8017\u672c\u5730\u6216\u4e91\u7aef\u7b97\u529b\u53bb\u5b9e\u65f6\u8fd0\u7b97\u4e0a\u4e0b\u6587\uff0c\u8fd9\u5bf9\u4f4e\u914dChromebook\u662f\u4e2a\u9690\u5f62\u6210\u672c\u3002\u540c\u65f6\uff0c\u521b\u4f5c\u8005\u5f3a\u8c03\u7684\u201c\u7f16\u7a0b\u73af\u5883\u9002\u914d\u201d\u76ee\u524d\u4ec5\u505c\u7559\u5728\u201c\u4e0d\u9519\u201d\u7684\u7a0b\u5ea6\uff0c\u4e0e\u771f\u6b63\u80fd\u8f85\u52a9\u4ee3\u7801\u751f\u6210\u7684AI Agent\u76f8\u6bd4\u5c1a\u663e\u7a1a\u5ae9\u3002\u5728\u4ea7\u54c1\u5f62\u6001\u4e0a\uff0c\u4f5c\u4e3a\u4e00\u4e2aChrome\u6269\u5c55\uff0c\u5176\u5929\u82b1\u677f\u4e5f\u663e\u800c\u6613\u89c1\u2014\u2014\u5b83\u65e0\u6cd5\u63a5\u7ba1\u7cfb\u7edf\u5168\u5c40\u7684\u8f93\u5165\uff0c\u4e5f\u65e0\u6cd5\u670d\u52a1\u91cd\u5ea6\u672c\u5730\u5e94\u7528\u7528\u6237\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f5c\u4e3a\u4e00\u6b3e\u72ec\u7acb\u5f00\u53d1\u8005\u4f5c\u54c1\uff0cTapfree\u5728\u5207\u5165\u70b9\u7684\u9009\u62e9\u4e0a\u582a\u79f0\u8001\u8fa3\uff1a\u7784\u51c6\u4e86\u4e3b\u6d41\u5927\u5382\u5ffd\u7565\u7684Chromebook\u548c\u7f51\u9875\u8f93\u5165\u573a\u666f\uff0c\u7528\u201c\u4e0a\u4e0b\u6587\u7406\u89e3\u201d\u8fd9\u4e00\u5dee\u5f02\u5316\u529f\u80fd\u6495\u5f00\u4e86\u4e00\u9053\u53e3\u5b50\u3002\u4f46\u5b83\u76ee\u524d\u7684\u62a4\u57ce\u6cb3\u5e76\u4e0d\u6df1\uff0c\u4e00\u65e6\u8c37\u6b4c\u539f\u751fAssistant\u6216Microsoft SwiftKey\u96c6\u6210\u7c7b\u4f3c\u529f\u80fd\uff0c\u72ec\u7acb\u5de5\u5177\u7684\u751f\u5b58\u7a7a\u95f4\u5c06\u9762\u4e34\u4e25\u5cfb\u6324\u538b\u3002\u603b\u7684\u6765\u8bf4\uff0c\u8fd9\u662f\u4e00\u6b3e\u503c\u5f97\u53eb\u597d\u7684\u201c\u5c0f\u800c\u7f8e\u201d\u4ea7\u54c1\uff0c\u4f46\u82e5\u60f3\u6210\u4e3a\u751f\u5b58\u4e0b\u53bb\u7684\u201c\u5c0f\u800c\u5f3a\u201d\uff0c\u8fd8\u9700\u5728\u5782\u76f4\u573a\u666f\u7684\u6df1\u5ea6\u548c\u5546\u4e1a\u5316\u8def\u5f84\u4e0a\u7ed9\u51fa\u66f4\u6709\u529b\u7684\u7b54\u6848\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Tapfree for Chrome<\/span>\n                <\/div>\n<div class=\"comment-content\">Typing on the web has not evolved. Tapfree fixes that. Tapfree is a voice-first keyboard for Chrome text fields and ChromeOS that lets you write messages, notes, docs, and emails by speaking naturally &#8211; without dictation errors, awkward formatting, or constant corrections. It understands context, not just words.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hey Product Hunt \ud83d\udc4b<\/p>\n<p>I&#8217;m Mansehej, the maker of Tapfree.<\/p>\n<p>I built Tapfree for Chrome because typing on the web, especially on my Chromebook felt really clunky. When you&#8217;re moving fast, your ideas don&#8217;t arrive as perfect sentences. They come as fragments, quick reactions, and rough thoughts you need to shape into something coherent.<\/p>\n<p>Most dictation tools don&#8217;t help much. They transcribe words literally, miss context, butcher names, and leave you fixing formatting by hand. Writing an email, a chat reply, or a document all need very different handling. They also struggle with touch support, failing to provide a well integrated user experience.<\/p>\n<p>What makes Tapfree different is how it understands context. Tapfree uses the webpage context, not just the tab you&#8217;re in, to produce cleaner, more relevant dictation. It subtly appears itself in the text fields you need it the most, without disrupting your flow.<\/p>\n<p>It also handles the way people actually talk. You say &#8220;Could you get some coffee&#8230; sorry, tea on the way back?&#8221; and Tapfree writes: &#8220;Could you get some tea on the way back?&#8221;. It catches your corrections mid-sentence so you don&#8217;t have to go back and fix them.<\/p>\n<\/p>\n<p>Tapfree also works natively, system-wide on ChromeOS.<\/p>\n<p>If you give it a try, I&#8217;d love specific feedback:<\/p>\n<p>How do you feel about the &#8220;there when you need it&#8221; approach to integrating into the text field?<br \/>Any &#8220;wow&#8221; moments with the context understanding?<br \/>What would make it even more useful for you?<\/p>\n<p>Thanks so much for checking it out!<\/p>\n<p>Feedback from this community means the world to a solo builder! \ud83d\ude4f<\/p>\n<p>&#8211; Mansehej<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>13<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@mansehej\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@mansehej<\/a>&nbsp;Congratulations on the ChromeOS launch!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Oh cool, is it the similar to using voice chat options in LLM ?<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@harini_mukesh\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@harini_mukesh<\/a>&nbsp;Similar, but with the difference being that Tapfree is available across all of the websites you use and uses the context of the page to ensure that the dictation is well formatted, and names are spelled correctly. <\/p>\n<p>Similar to how you would have a dictation button in ChatGPT, you would now have a dictation button in Facebook, GMail, etc. with your emails automatically getting formatted for you as an example.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Does it support Chromium based browsers like Dia?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@piyush_gupta25\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@piyush_gupta25<\/a>&nbsp;Yes, it does. I&#8217;m writing this reply to you using Tapfree on Dia as well!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Awesome product! Tried a bunch of things like this but not really clicked with any of them. This applies page context more intelligently, and doesn&#8217;t change what I&#8217;m trying to say like a lot of the alternatives. Sometimes I&#8217;ll look at a Wispr flow dictation and wonder how on earth it arrived at the transcription, but Tapfree consistently captures the intention of what I&#8217;m trying to say.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@nightingale\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@nightingale<\/a>&nbsp;That&#8217;s very lovely feedback, and I am very happy to hear it. This made my day, thank you!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Interesting one! How does it decide a phrase was a retraction vs me thinking out loud? Did you tune that toward catching every correction?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p>@artstavenka1&nbsp;Thank you! It uses an LLM under the hood to understand the semantics of what&#8217;s being spoken, and then make a decision on if it should be a correction accordingly. <\/p>\n<p>As an example, if I am chatting with someone on Whatsapp, and I say:<\/p>\n<p>&#8216;<em>And then she said sorry I shouted at you&#8217;<\/em><br \/>This becomes <br \/>&#8216;<em>And then she said, &#8220;Sorry I shouted at you&#8221;&#8216;<\/em><br \/>And does not become<br \/>&#8216;<em>And then I shouted at you&#8217;<\/em><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Does this mean I can dictate in linux apps on my Chromebook?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@sp_singh2\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@sp_singh2<\/a>&nbsp;Yes! This was my main motivation for building this as well. I started off by wanting to dictate in the <a href=\"https:\/\/www.producthunt.com\/products\/openai-codex-cli\" data-node-type=\"mention\" data-mention-type=\"product\" data-mention-id=\"openai-codex-cli\" target=\"_blank\" rel=\"noopener\">@OpenAI Codex CLI<\/a> when ssh-ing into my VM using the terminal on my Chromebook and Tapfree then evolved to what it is today.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>What&#8217;s the privacy policy like? Do you store the context anywhere?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@aashishk404\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@aashishk404<\/a>&nbsp;Great question! All context used is ephemeral and not stored anywhere. It is not logged, and never will be. It&#8217;s also opt-in, and Tapfree works in a still-pretty-good dictation mode without it!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Voice dictation that actually reads the screen context is a game changer \u2014 so tired of dictation tools that have no idea what you&#8217;re working on. This feels like the missing piece for hands-free productivity.<\/p>\n<\/p>\n<p>Does it work across all websites or only specific ones? Curious if it handles things like coding environments or doc editors well.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@doganakbulut\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@doganakbulut<\/a>&nbsp;It works across all websites. It automatically injects a subtle mic button in relevant text fields that you can press (or just use the configured keybind) and speak!<\/p>\n<\/p>\n<p>Works very well in doc editors. Coding editors were one of the main pain points for me as well because I use a lot of agentic coding. Tapfree is pretty good at function and variable names, and I am trying to tune it even more towards coding environments.<\/p>\n<\/p>\n<p>Would love your feedback if you try it out for coding!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>solo built chrome extensions reading text fields across every site is exactly the kind of thing that needs tight permission scoping, since youre potentially sitting close to password fields and forms. congrats on the launch, just make sure the extension isnt grabbing more than it needs to<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@abdullah_bin_asad\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@abdullah_bin_asad<\/a>&nbsp;Yes absolutely! Tapfree explicitly completely ignores any fields with sensitive information. Additonaly, any context captured elsewhere is ephemeral<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>With the move to desktop browsers, did you add global keyboard shortcuts to trigger the dictation without needing to click the injected mic?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@varsha_vaidywan_h24058\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@varsha_vaidywan_h24058<\/a>&nbsp;Yes! The keyboard shortcuts (customizable) work anywhere in the browser for Windows\/Mac\/Linux, and work system-wide in ChromeOS.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Yeah! Love this kind of solutions focused on save time on our daily routine. Voice dictation can change our performance and I&#8217;m sure many founders gonna take the most of it. All the best!!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@german_merlo1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@german_merlo1<\/a>&nbsp;Exactly! Especially because a lot of small-business owners cannot afford Macs, and Chromebooks strike a perfect balance between productivity and price. This would be extremely helpful for them. And thank you!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on bringing Tapfree to Android \ud83c\udf89 Excited to see how this makes everyday tasks smoother, wishing the team big success ahead!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@moon10\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@moon10<\/a>&nbsp;Thank you! Would love your feedback once you get a chance to try it out on Chrome\/Android!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Does it work with touchscreens?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@harjyot_kaur\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@harjyot_kaur<\/a>&nbsp;Yes! Tapfree subtly injects a mic in every text field where you would want to dictate, making it super simple to press it to dictate without losing your flow<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#8<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/TNPX5PAZNXT24I\" class=\"app-title\">Deep Work Plan<\/a><\/p>\n<div class=\"one-liner\">Models matter. Context matters more. Give your agent a plan.<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">110<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Deep Work Plan\u5c06\u5f00\u53d1\u89c4\u8303\u76f4\u63a5\u5199\u5165\u4ee3\u7801\u4ed3\u5e93\uff0c\u4e3aAI\u667a\u80fd\u4f53\u63d0\u4f9b\u6301\u4e45\u5316\u3001\u53ef\u9a8c\u8bc1\u7684\u539f\u5b50\u4efb\u52a1\u8ba1\u5212\uff0c\u6709\u6548\u89e3\u51b3\u957f\u65f6\u95f4\u4efb\u52a1\u4e2dAI\u667a\u80fd\u4f53\u5bb9\u6613\u201c\u6f02\u79fb\u201d\u548c\u6267\u884c\u4e0a\u4e0b\u6587\u4e22\u5931\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/288c5179-77a2-4ed9-9d5f-723e44a2266e.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/e5814eea-0871-4718-a4a3-3fd92924eeca.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/e32654d4-d8ca-473e-ad3c-64d25034704e.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/a264f5db-233c-467a-ad0c-f06c41631b0e.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/7fefb602-2585-4970-aa61-4d38d9b40cde.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Open Source<\/span><br \/>\n            <span class=\"tag\">Developer Tools<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span><br \/>\n            <span class=\"tag\">GitHub<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">AI\u667a\u80fd\u4f53<\/span><br \/>\n            <span class=\"tag\">\u4efb\u52a1\u7f16\u6392<\/span><br \/>\n            <span class=\"tag\">\u4e0a\u4e0b\u6587\u7ba1\u7406<\/span><br \/>\n            <span class=\"tag\">\u4ee3\u7801\u89c4\u8303<\/span><br \/>\n            <span class=\"tag\">\u5de5\u4f5c\u6d41\u5f15\u64ce<\/span><br \/>\n            <span class=\"tag\">\u5f00\u6e90<\/span><br \/>\n            <span class=\"tag\">\u5f00\u53d1\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u8d28\u91cf\u95e8\u7981<\/span><br \/>\n            <span class=\"tag\">\u72b6\u6001\u6301\u4e45\u5316<\/span><br \/>\n            <span class=\"tag\">MIT<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u5173\u6ce8\u8ba1\u5212\u4e0d\u4f1a\u56e0\u4ee3\u7801\u53d8\u66f4\u800c\u8fc7\u65f6\uff0c\u8ba4\u4e3a\u5c06\u89c4\u8303\u5199\u5165\u4ed3\u5e93\u662f\u89e3\u51b3\u667a\u80fd\u4f53\u6f02\u79fb\u7684\u6b63\u786e\u67b6\u6784\u3002\u6838\u5fc3\u95ee\u9898\u5305\u62ec\uff1a\u8ba1\u5212\u80fd\u5426\u81ea\u52a8\u66f4\u65b0\u3001\u975e\u6280\u672f\u7528\u6237\u662f\u5426\u6613\u7528\u3001\u9a8c\u8bc1\u95e8\u7981\u7684\u5177\u4f53\u5b9e\u73b0\u65b9\u5f0f\uff0c\u4ee5\u53ca\u5982\u4f55\u5728\u4e0d\u4e22\u5931\u72b6\u6001\u7684\u60c5\u51b5\u4e0b\u7f16\u8f91\u4e2d\u671f\u4efb\u52a1\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Deep Work Plan\u7684\u4ef7\u503c\u4e0d\u5728\u4e8e\u53c8\u4e00\u4e2aAI\u7f16\u7801\u52a9\u624b\uff0c\u800c\u5728\u4e8e\u5b83\u5207\u5165\u4e86\u4e00\u4e2a\u9c9c\u6709\u4eba\u89e6\u53ca\u5374\u6781\u5176\u5173\u952e\u7684\u73af\u8282\uff1a\u4e3aAI\u667a\u80fd\u4f53\u7684\u5de5\u4f5c\u6d41\u5b9a\u4e49\u201c\u5951\u7ea6\u201d\u3002\u5b83\u654f\u9510\u5730\u6307\u51fa\uff0c\u201c\u6a21\u578b\u91cd\u8981\uff0c\u4e0a\u4e0b\u6587\u66f4\u91cd\u8981\u201d\uff0c\u5e76\u7528\u4e00\u4e2a\u7ed3\u6784\u5316\u7684\u65b9\u6848\uff0c\u5c06\u539f\u672c\u6f02\u6d6e\u5728\u804a\u5929\u7a97\u53e3\u4e2d\u7684\u201c\u610f\u56fe\u201d\u56fa\u5316\u4e3a\u4ee3\u7801\u4ed3\u5e93\u4e2d\u53ef\u6267\u884c\u3001\u53ef\u9a8c\u8bc1\u3001\u53ef\u56de\u6eaf\u7684\u201c\u89c4\u8303\u201d\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u8fd9\u80cc\u540e\u7684\u903b\u8f91\u503c\u5f97\u6df1\u601d\uff1a\u6211\u4eec\u5f80\u5f80\u8fc7\u5ea6\u795e\u5316\u6a21\u578b\u7684\u667a\u80fd\uff0c\u5374\u5ffd\u89c6\u4e86\u5927\u6a21\u578b\u5f53\u524d\u7684\u6838\u5fc3\u77ed\u677f\u2014\u2014\u7f3a\u4e4f\u957f\u671f\u8bb0\u5fc6\u548c\u7ed3\u6784\u5316\u6267\u884c\u80fd\u529b\u3002\u4e00\u4e2a\u518d\u806a\u660e\u7684\u6a21\u578b\uff0c\u5728\u957f\u8fbe\u6570\u5c0f\u65f6\u7684\u5f00\u53d1\u4efb\u52a1\u4e2d\u4e5f\u96be\u514d\u8ff7\u5931\u65b9\u5411\u3002Deep Work Plan\u6ca1\u6709\u8bd5\u56fe\u6539\u8fdb\u6a21\u578b\u672c\u8eab\uff0c\u800c\u662f\u901a\u8fc7\u5916\u90e8\u7cfb\u7edf\uff08\u5373\u4ed3\u5e93\u4e2d\u7684\u8ba1\u5212\u6587\u4ef6\uff09\u6765\u7ea6\u675f\u548c\u5f15\u5bfc\u6a21\u578b\u884c\u4e3a\uff0c\u8fd9\u662f\u4e00\u4e2a\u66f4\u52a1\u5b9e\u3001\u66f4\u5de5\u7a0b\u5316\u7684\u89e3\u6cd5\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u5176\u6838\u5fc3\u4eae\u70b9\u5728\u4e8e\u5bf9\u201c\u72b6\u6001\u201d\u548c\u201c\u9a8c\u8bc1\u201d\u7684\u8bbe\u8ba1\u3002\u5c06\u8ba1\u5212\u4e0e\u72b6\u6001\u5206\u79bb\uff0c\u4f7f\u4efb\u52a1\u4e2d\u65ad\u540e\u80fd\u4ee5\u6700\u5c0f\u4ee3\u4ef7\u6062\u590d\uff1b\u5c06\u201c\u9a8c\u8bc1\u95e8\u7981\u201d\u4f5c\u4e3a\u4efb\u52a1\u5b8c\u6210\u7684\u552f\u4e00\u6807\u51c6\uff0c\u800c\u975e\u6a21\u578b\u7684\u81ea\u6211\u611f\u89c9\uff0c\u4ece\u6839\u672c\u4e0a\u675c\u7edd\u4e86\u201c\u4ee3\u7801\u80fd\u8fd0\u884c\u4f46\u504f\u79bb\u76ee\u6807\u201d\u7684\u6f02\u79fb\u3002\u8fd9\u4e0e\u5f53\u524d\u6d41\u884c\u7684\u201cVibe Coding\u201d\u5f62\u6210\u4e86\u9c9c\u660e\u5bf9\u6bd4\uff0c\u540e\u8005\u9f13\u52b1\u51ed\u611f\u89c9\u521b\u4f5c\uff0c\u800c\u524d\u8005\u5219\u5f3a\u8c03\u7eaa\u5f8b\u548c\u53ef\u4ea4\u4ed8\u6210\u679c\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u7136\u800c\uff0c\u5176\u5c40\u9650\u6027\u4e0e\u4eae\u70b9\u540c\u6837\u660e\u663e\u3002\u9996\u5148\u662f\u5fc3\u667a\u8d1f\u62c5\uff1a\u5b83\u8981\u6c42\u5f00\u53d1\u8005\u5728\u4f7f\u7528\u4e4b\u521d\u5c31\u5177\u5907\u201c\u7f16\u5199\u89c4\u8303\u201d\u7684\u62bd\u8c61\u80fd\u529b\uff0c\u8fd9\u5bf9\u975e\u6280\u672f\u7528\u6237\u5e76\u4e0d\u53cb\u597d\u3002\u867d\u7136\u5de5\u5177\u63d0\u4f9b\u4e86\u6a21\u677f\u548c\u81ea\u8fdb\u5316\u673a\u5236\uff0c\u4f46\u201c\u5c06\u6a21\u7cca\u60f3\u6cd5\u5206\u89e3\u4e3a\u539f\u5b50\u4efb\u52a1\u5e76\u5b9a\u4e49\u9a8c\u8bc1\u6807\u51c6\u201d\u672c\u8eab\u5c31\u662f\u4e00\u9879\u4e13\u4e1a\u6280\u80fd\u3002\u5176\u6b21\uff0c\u5b83\u5047\u8bbe\u4e86\u201c\u597d\u89c4\u8303\u201d\u7684\u5b58\u5728\u3002\u6b63\u5982\u8bc4\u8bba\u8005\u6240\u8a00\uff0c\u201c\u5783\u573e\u95e8\u7981\u8fdb\uff0c\u5783\u573e\u7ed3\u679c\u51fa\u201d\uff0c\u5982\u679c\u521d\u59cb\u8ba1\u5212\u672c\u8eab\u5c31\u5b58\u5728\u7f3a\u9677\uff0c\u5de5\u5177\u5e76\u4e0d\u80fd\u8fa8\u522b\u3002\u6700\u540e\uff0c\u4f5c\u4e3a\u4e00\u6b3e\u5f00\u53d1\u8005\u5de5\u5177\uff0c\u5b83\u901a\u8fc7\u201c\u5f00\u6e90\u201d\u548c\u201c\u65e0\u5382\u5546\u9501\u5b9a\u201d\u7684\u7b56\u7565\u89c4\u907f\u4e86\u7528\u6237\u7684\u540e\u987e\u4e4b\u5fe7\uff0c\u4f46\u5176\u80fd\u5426\u5728Cursor\u3001Copilot\u7b49\u96c6\u6210\u5ea6\u66f4\u9ad8\u7684IDE\u751f\u6001\u4e2d\u72ec\u7acb\u751f\u5b58\uff0c\u4ecd\u662f\u4e00\u4e2a\u4e0d\u5c0f\u7684\u6311\u6218\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u603b\u7684\u6765\u8bf4\uff0cDeep Work Plan\u63d0\u4f9b\u4e86\u4e00\u4e2a\u6781\u5177\u4ef7\u503c\u7684\u201c\u5de5\u4f5c\u6d41\u811a\u624b\u67b6\u201d\uff0c\u5b83\u4e3aAI\u751f\u4ea7\u529b\u7684\u534f\u4f5c\u5efa\u7acb\u4e86\u4e00\u6761\u53ef\u843d\u5730\u7684\u201c\u7eaa\u5f8b\u7ebf\u201d\u3002\u5b83\u4e0d\u662f\u8ba9AI\u53d8\u5f97\u66f4\u806a\u660e\uff0c\u800c\u662f\u8ba9AI\u7684\u5de5\u4f5c\u6210\u679c\u53d8\u5f97\u66f4\u53ef\u4fe1\u3001\u66f4\u53ef\u7ba1\u7406\u3002\u5bf9\u4e8e\u6df1\u9677\u201cAI\u81ea\u52a8\u751f\u6210\u5783\u573e\u4ee3\u7801\u201d\u6ce5\u6f6d\u7684\u56e2\u961f\u800c\u8a00\uff0c\u8fd9\u6216\u8bb8\u662f\u4e00\u5242\u5bf9\u75c7\u7684\u826f\u65b9\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Deep Work Plan<\/span>\n                <\/div>\n<div class=\"comment-content\">Deep Work Plan turns any repo into a harness with the context of your best engineer \u2014 so any AI agent codes like your smartest model and can&#8217;t drift from the plan. Not a chat window it forgets, a spec written into the repo: atomic tasks, acceptance criteria, validation gates, resumable state. Long runs survive context resets; any agent picks up where the last left off. Point an agent at it, walk away, come back to work you can verify. Any agent, any repo, no lock-in. Open Source, MIT.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hi Product Hunt \ud83d\udc4b<\/p>\n<p>Models matter. Context matters more. That one line is the whole reason this exists.<\/p>\n<p>I build with AI agents every day, and I kept hitting the same wall: an agent starts a long task brilliantly, then somewhere around hour three it quietly drifts. The diff still compiles \u2014 it&#8217;s just not what I asked for. There was never a clean way to resume, because the whole plan lived in a chat window that had grown too long to trust.<\/p>\n<p>I stopped treating that as a prompting problem and started treating it as a structural one. The fix wasn&#8217;t a smarter model. It was giving the agent a plan it couldn&#8217;t drift from \u2014 written into the repository itself.<\/p>\n<p>That&#8217;s Deep Work Plan. The idea is two moves:<\/p>\n<p>1) Make the plan the source of truth, not the chat. Before any code, you write a spec: a goal, atomic tasks, and for each task explicit acceptance criteria + a validation gate. &#8220;Done&#8221; is decided by the gate, not by how the model feels. And it lives on disk, so it survives a context reset or a handoff to a different agent tomorrow.<\/p>\n<p>2) Let the repository be the harness. The context (files), the tools (your scripts and tests), the guardrails (the plan and its gates), the state (on disk) \u2014 all of it lives in the repo as plain files any agent can read. So it&#8217;s tool-agnostic: Claude Code, Codex, Cursor, or next year&#8217;s agent can all run the same plan. No vendor to bet on.<\/p>\n<p>What I&#8217;m proudest of is that it&#8217;s not a slide. It&#8217;s dogfooded across three repos \u2014 including the site that documents it. It&#8217;s MIT, and you can install it into your own repo in one step at deepworkplan.com\/init.<\/p>\n<p>If your agents start strong and wander by hour three, I&#8217;d genuinely love your take. How are you keeping long-horizon agent work on track today?<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@xergioalex\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@xergioalex<\/a>&nbsp;The premise that &#8220;context matters more&#8221; really resonates\u2014I&#8217;ve seen teams spin up agents that fail because they lack proper context about project constraints and dependencies. How do you see this evolving for non-technical users who want structured AI help but aren&#8217;t comfortable writing detailed plans? Do you have templates for common project types?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The &#8220;repo as harness&#8221; idea is clever \u2014 giving agents durable context instead of a fresh chat window every time is exactly what long-horizon tasks need. Context drift is probably the #1 reason agent work falls apart mid-task.<\/p>\n<\/p>\n<p>Is the plan file something you generate once and manually update, or does it evolve automatically as the codebase changes?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@doganakbulut\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@doganakbulut<\/a>&nbsp;Good instinct to ask what happens after the initial harness setup, that&#8217;s where it actually gets interesting. The short version: it&#8217;s neither of the two options you posed. You&#8217;re not hand maintaining it, and it isn&#8217;t blindly syncing itself to the code either. It&#8217;s generated once, and then it keeps maintaining itself as part of the work, which is really the whole point of the methodology.<\/p>\n<p>You start from a goal, and DWP decomposes it into atomic tasks, each with acceptance criteria and a validation gate. From there, that file is the source of truth. I deliberately don&#8217;t auto-rewrite it from code diffs. If the spec just chases the code, the code becomes the truth and the spec turns into a lagging mirror, which is the exact drift we&#8217;re trying to kill. So it evolves on purpose, not silently: every task&#8217;s gate re-runs against the repo as it is <em>right now<\/em>, so when something changes between runs the gate fails loudly instead of rotting in silence, and that&#8217;s the cue to `refine`. The agent does that refinement during the run; you mostly bookend it, approving the plan up front and reviewing the diff at PR time.<\/p>\n<p>The part I&#8217;d really stress: keeping things current is work the plan does, not a separate chore. Any task that changes behavior also updates the `docs\/`, `<a href=\"http:\/\/AGENTS.md\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">AGENTS.md<\/a>`, and `.agents\/` kit that describe it, and extends the tests that prove it, and that re-sync is part of the task&#8217;s own validation gate. On top of that, every plan closes with a security-analysis pass and a skill-discovery step that turns what was just built into reusable skills. So the docs and tests evolve alongside the code by construction. The agent is continuously self-documenting, instead of leaving a stale spec behind.<\/p>\n<p>It&#8217;s basically the Boy Scout rule applied to the harness: every run leaves the repo a little more agent-ready than it found it, not more stale.<\/p>\n<p>Longer take in the methodology write-up: <a href=\"https:\/\/deepworkplan.com\/methodology\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/deepworkplan.com\/methodology\/<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>How do you keep the plan from getting stale as humans change the codebase between runs?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@naimz\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@naimz<\/a>&nbsp;Great question, honestly the failure mode I worried about most while designing this, because it&#8217;s the one most &#8220;just write a spec&#8221; approaches quietly ignore. The plan isn&#8217;t a snapshot of the code, so it doesn&#8217;t rot like one. DWP handles drift on three fronts.<\/p>\n<p><strong>The first<\/strong> is that I write tasks as behavior, not edits. An acceptance criterion in a DWP task reads like <em>&#8220;`POST \/login` rate-limits to 10 attempts per IP per minute and returns 429 with a `Retry-After` header,&#8221; <\/em>not <em>&#8220;add a Redis client in `auth.ts` and wrap the handler.&#8221;<\/em> So if a teammate swaps the store for an in-memory cache between runs, lifts the check into a CDN rule, or just renames the file, nothing in my plan is invalidated, the criterion is still expressible against the current code.<\/p>\n<p><strong>The second<\/strong> is that every task carries its own validation gate, and the gate re-runs against the repo as it is <em>right now<\/em>, not the repo as it was when I wrote the plan. So if someone broke an assumption between runs, the next run fails loudly at that gate instead of drifting silently, and that failure is my cue to `refine` before continuing, not to paper over it.<\/p>\n<p><strong>The third <\/strong>is that I made keeping the spec in sync with the code part of the work, not a separate chore. Any DWP task that changes behavior also updates the `docs\/`, `<a href=\"http:\/\/AGENTS.md\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">AGENTS.md<\/a>`, and `.agents\/` kit that describe it, re-syncing the repo&#8217;s agent-facing surface is part of the task&#8217;s validation gate. On top of that, every plan ends with a security-analysis pass and a skill-discovery step that proposes new reusable skills out of what was just built. It&#8217;s basically the Boy Scout rule applied to the harness, every run is meant to leave the codebase a little <em>more<\/em> agent-ready than it found it, not more stale.<\/p>\n<p>If you want the longer take on why we built it this way, the methodology write-up walks through it: <a href=\"https:\/\/deepworkplan.com\/methodology\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/deepworkplan.com\/methodology\/<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>&#8220;Context matters more than the model&#8221; is the lesson it took me a year of vibe coding to actually believe. My best and worst sessions use the same model&#8230; the difference is whether I handed it a real plan or just vibes. The part I still fight is drift, the agent quietly wandering off the plan three steps in. Does Deep Work Plan keep checking the work back against the plan, or is the plan mostly an upfront thing?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@luca_capone\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@luca_capone<\/a>&nbsp;You nailed the exact problem it&#8217;s built for. The plan is <strong>not<\/strong> an upfront artifact you<\/p>\n<p>write once and hope the agent honors, it&#8217;s the thing the agent executes <em>against<\/em>, task by<\/p>\n<p>task, and it doesn&#8217;t get to declare victory until the work is actually validated.<\/p>\n<p>Concretely, drift gets fought in three places:<\/p>\n<p>1. <strong>One task at a time, not the whole goal at once.<\/strong> The plan is decomposed into small,<\/p>\n<p>   self-contained tasks. The agent works a single task, then has to stop and check itself<\/p>\n<p>   before moving on \u2014 so it can only wander one step, not three.<\/p>\n<p>2. <strong>Every task carries its own acceptance criteria + a validation gate.<\/strong> &#8220;Done&#8221; isn&#8217;t the<\/p>\n<p>   agent&#8217;s opinion \u2014 it&#8217;s a checklist plus the exact commands\/tests that prove it (tests,<\/p>\n<p>   lint, type-check, build). The agent runs them <em>before<\/em> marking the task complete. If they<\/p>\n<p>   fail, the task isn&#8217;t done, full stop.<\/p>\n<p>3. <strong>Progress is written down in the repo as it goes.<\/strong> Each task gets an explicit status<\/p>\n<p>   marker (not started \/ in progress \/ done \/ blocked) and a log. So drift becomes <em>visible<\/em> \u2014<\/p>\n<p>   you (or the next agent, or the next session) can see exactly where it is vs. where the plan<\/p>\n<p>   said it should be, and resume from the first incomplete task without redoing finished work.<\/p>\n<p>So to your question directly: the plan is a <strong>continuous check<\/strong>, not an upfront thing. And<\/p>\n<p>yes, a plan isn&#8217;t finished until <em>everything<\/em> validates, including mandatory end-of-plan<\/p>\n<p>review tasks (e.g. a security pass over the whole change set). The agent can&#8217;t quietly call it<\/p>\n<p>done with a gate still red.<\/p>\n<p>The honest caveat: it can&#8217;t stop an agent from writing a weak acceptance criterion in the<\/p>\n<p>first place. Garbage gate in, garbage gate out. But it makes drift loud instead of silent,<\/p>\n<p>which, as you said, is most of the battle.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>spec-written-into-the-repo is the right model &#8211; a persistent plan that survives context resets and that any agent can pick up is fundamentally different from a prompt you&#8217;re manually re-feeding each session. the acceptance criteria + validation gates combo is the piece most agent frameworks don&#8217;t bother with. curious how it handles cases where the atomic tasks turn out to be wrong mid-run &#8211; can you edit and resume without blowing the state?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@galdayan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@galdayan<\/a>&nbsp;That comes up pretty often on real work, so handling it cleanly was a core design goal, not an afterthought. The methodology can refine a plan at any point, including after it&#8217;s already been partially executed, without throwing away the work that&#8217;s done.<\/p>\n<p>Here&#8217;s why that&#8217;s safe: the state and the task definitions are kept separate. The plan is a checklist on disk plus a small state file, so which tasks are already done is recorded durably, independent of the task text. When a task turns out to be wrong mid-run, the agent doesn&#8217;t push through. It marks that task blocked and stops, which surfaces the problem instead of burying it in a chat transcript.<\/p>\n<p>From there you refine the plan: edit, reorder, split, or drop the tasks that haven&#8217;t run yet, while the completed ones stay completed. The refinement only touches the open part of the plan, so nothing that already passed its validation gate gets blown away. Then you resume, and it rebuilds state from disk plus the actual repo and continues where it left off, re-running the gates so nothing that shifted underneath slips by.<\/p>\n<p>So editing a plan mid-run is a normal, first-class move, not a reset. That&#8217;s the whole reason the plan lives on disk instead of the chat: you can rewrite the route without losing the miles already driven.<\/p>\n<p>Full loop here: <a href=\"https:\/\/deepworkplan.com\/methodology\/02-core-loop\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/deepworkplan.com\/methodology\/02-core-loop\/<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Writing the plan into the repo rather than the context window is the right architecture. Durable state that survives model swaps and context resets is what makes long multi-step tasks actually viable. The validation gate pattern catches drift before it compounds. How are the gates implemented? Are they executable assertions the agent runs itself, or do they require human sign-off?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@anand_thakkar1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@anand_thakkar1<\/a>&nbsp;Glad you went straight to the gates, that&#8217;s where most of the design weight sits. Short answer: executable assertions the agent runs itself. Human sign-off bookends the run, it doesn&#8217;t live inside it: a person approves the plan before execution starts, and reviews the final diff at PR time. Execution in between is autonomous, that&#8217;s the whole point.<\/p>\n<\/p>\n<p>Every task has a `<strong>Validation<\/strong>` section that names concrete commands, typically the repo&#8217;s own quality gate (tests + lint + type-check for a TS repo, `cargo test &amp;&amp; cargo clippy` for Rust, `pytest &amp;&amp; ruff` for Python). DWP doesn&#8217;t impose a test runner, it reads whatever the project already considers &#8220;the code is healthy&#8221; and binds the task to <em>that<\/em>. A task isn&#8217;t marked `[x]` done unless those commands exit 0, and tasks that change behavior have to extend the suite, so the gate isn&#8217;t &#8220;existing tests pass&#8221; but &#8220;the new tests that prove this works pass too.&#8221;<\/p>\n<\/p>\n<p>On failure, the task is marked `[!]` blocked and the agent stops. The failure surfaces in the progress log instead of getting buried in a chat transcript, which is the cue to `refine` the plan or pull a human in, not to push through.<\/p>\n<p>One plan-level gate worth calling out: every plan ends with a mandatory security-analysis pass over the <em>whole<\/em> change set, plus a skill-discovery pass that proposes new reusable skills from what was built.<\/p>\n<\/p>\n<p>Take a look at the <strong>Core loop<\/strong> write-up with the full validation and completion protocol: <a href=\"https:\/\/deepworkplan.com\/methodology\/02-core-loop\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/deepworkplan.com\/methodology\/02-core-loop\/<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#9<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/VF4QYEKCY2WWNZ\" class=\"app-title\">Dualora<\/a><\/p>\n<div class=\"one-liner\">Record in both 16:9 and 9:16 at the same time<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">108<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Dualora\u662f\u4e00\u6b3e\u8ba9\u521b\u4f5c\u8005\u5728\u62cd\u6444\u65f6\u540c\u6b65\u9884\u89c8\u5e76\u5f55\u523616:9\u6a2a\u5c4f\u4e0e9:16\u7ad6\u5c4f\u53cc\u683c\u5f0f\u89c6\u9891\u7684\u5de5\u5177\uff0c\u89e3\u51b3\u4e86\u4e00\u6b21\u62cd\u6444\u9700\u540e\u671f\u4e8c\u6b21\u88c1\u526a\u3001\u6784\u56fe\u5931\u51c6\u7684\u8de8\u5e73\u53f0\u53d1\u5e03\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/55711979-6886-4252-895a-8dd80533b7f5.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/7adc8b89-c989-4e60-94b6-483c7642c7cc.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/ca7df87a-1673-49a4-9d67-4f9ad3973c76.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f02ddc9e-e15d-47d9-936e-26ca6a4bd2d6.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/03e1b7e3-bed7-4f81-b437-72f86fcc29a0.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/11d6e52d-2524-4679-816a-a5e185085e6c.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Android<\/span><br \/>\n            <span class=\"tag\">Social Media<\/span><br \/>\n            <span class=\"tag\">Photography<\/span><br \/>\n            <span class=\"tag\">Photo &#038; Video<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u89c6\u9891\u5f55\u5236<\/span><br \/>\n            <span class=\"tag\">\u53cc\u683c\u5f0f<\/span><br \/>\n            <span class=\"tag\">\u521b\u4f5c\u8005\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u8de8\u5e73\u53f0\u53d1\u5e03<\/span><br \/>\n            <span class=\"tag\">\u7ad6\u5c4f\u6a2a\u5c4f<\/span><br \/>\n            <span class=\"tag\">\u672c\u5730\u5904\u7406<\/span><br \/>\n            <span class=\"tag\">\u65e0\u8d26\u53f7<\/span><br \/>\n            <span class=\"tag\">\u4ea7\u54c1\u6548\u7387<\/span><br \/>\n            <span class=\"tag\">Android<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u8ba4\u53ef\u8be5\u529f\u80fd\u89e3\u51b3\u4e86\u5f55\u5236\u4e24\u6b21\u6216\u540e\u671f\u88c1\u526a\u5931\u51c6\u7684\u75db\u70b9\u3002\u4e3b\u8981\u7591\u95ee\uff1a\u5f55\u5236\u65f6\u662f\u540c\u65f6\u751f\u6210\u4e24\u4e2a\u72ec\u7acb\u6587\u4ef6\u8fd8\u662f\u540e\u671f\u62c6\u5e27\uff1f\u5f00\u53d1\u8005\u56de\u5e94\uff1a\u4e3a\u4fdd\u6027\u80fd\uff0c\u5148\u5f55\u539f\u59cb\u753b\u9762\uff0c\u518d\u7528\u961f\u5217\u6e32\u67d3\u53cc\u6587\u4ef6\u3002\u7528\u6237\u63d0\u51fa\u8865\u5145\u5b57\u5e55\u5b89\u5168\u533a\u3001UI\u53e0\u52a0\u7b49\u5efa\u8bae\uff0c\u5f00\u53d1\u8005\u5df2\u5217\u5165\u8def\u7ebf\u56fe\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Dualora\u5207\u5165\u7684\u75db\u70b9\u771f\u5b9e\u4e14\u5177\u4f53\u2014\u2014\u8de8\u5e73\u53f0\u521b\u4f5c\u8005\u786e\u5b9e\u957f\u671f\u88ab\u6a2a\u7ad6\u5c4f\u5185\u5bb9\u7684\u91cd\u590d\u5f55\u5236\u6216\u540e\u671f\u88c1\u526a\u6298\u78e8\u3002\u4ea7\u54c1\u201c\u5b9e\u65f6\u53cc\u753b\u9762\u9884\u89c8+\u672c\u5730\u53cc\u6587\u4ef6\u5bfc\u51fa\u201d\u7684\u8bbe\u8ba1\u7b80\u6d01\u6709\u529b\uff0c\u76f4\u63a5\u8df3\u8fc7\u540e\u671f\u7ea0\u9519\u7684\u7e41\u7410\u73af\u8282\uff0c\u4e14\u5f3a\u8c03\u201c\u65e0\u8d26\u53f7\u201d\u201c\u65e0\u4e91\u4e0a\u4f20\u201d\uff0c\u65e2\u964d\u4f4e\u4e86\u4f7f\u7528\u95e8\u69db\uff0c\u4e5f\u6d88\u9664\u4e86\u9690\u79c1\u987e\u8651\uff0c\u5728\u5f53\u4e0b\u7528\u6237\u5bf9\u6570\u636e\u6ee5\u7528\u9ad8\u5ea6\u654f\u611f\u7684\u73af\u5883\u91cc\uff0c\u8fd9\u662f\u4e00\u79cd\u806a\u660e\u7684\u4fe1\u4efb\u5efa\u7acb\u7b56\u7565\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u7136\u800c\uff0c\u8fd9\u6b3e\u4ea7\u54c1\u7684\u95ee\u9898\u540c\u6837\u660e\u663e\u3002\u9996\u5148\uff0c\u5176\u6280\u672f\u5b9e\u73b0\u5e76\u975e\u5b9e\u65f6\u53cc\u6d41\u7f16\u7801\uff0c\u800c\u662f\u6355\u83b7\u540e\u6e32\u67d3\uff0c\u8fd9\u610f\u5473\u7740\u5f55\u5b8c\u5230\u5bfc\u51fa\u4e4b\u95f4\u4ecd\u5b58\u5728\u7b49\u5f85\u65f6\u95f4\uff0c\u5bf9\u4e8e\u8ffd\u6c42\u5373\u65f6\u53d1\u5e03\u7684\u521b\u4f5c\u8005\u800c\u8a00\uff0c\u8fd9\u4e00\u7b49\u5f85\u53ef\u80fd\u6253\u65ad\u5de5\u4f5c\u6d41\uff0c\u5c24\u5176\u662f\u957f\u89c6\u9891\u573a\u666f\u3002\u5176\u6b21\uff0c\u4ea7\u54c1\u76ee\u524d\u4ec5\u805a\u7126\u4e8e\u62cd\u6444\u73af\u8282\uff0c\u4f46\u521b\u4f5c\u8005\u5b8c\u6574\u7684\u75db\u70b9\u94fe\u6761\u8fd8\u5305\u62ec\uff1a\u5982\u4f55\u89c4\u5212\u6784\u56fe\u4e2d\u7684\u4eba\u7269\/\u5173\u952e\u5185\u5bb9\u540c\u65f6\u9002\u914d\u4e24\u79cd\u753b\u5e45\uff1f\u5982\u4f55\u5feb\u901f\u6279\u91cf\u6dfb\u52a0\u5e73\u53f0\u5bf9\u5e94\u7684\u5b57\u5e55\u548c\u6c34\u5370\uff1f\u8fd9\u4e9b\u201c\u4e0b\u6e38\u201d\u95ee\u9898\u5e76\u672a\u88ab\u89e3\u51b3\uff0c\u53ef\u80fd\u5bfc\u81f4\u7528\u6237\u4ecd\u9700\u8df3\u8f6c\u5230\u5176\u4ed6\u5de5\u5177\u8865\u5b8c\u6d41\u7a0b\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u8bc4\u8bba\u533a\u63d0\u53ca\u201cFirework\u5341\u5e74\u524d\u5c31\u505a\u8fc7\u201d\u5c3d\u7ba1\u88ab\u53cd\u9a73\uff0c\u4f46\u63d0\u793a\u4e86\u4e00\u4e2a\u6838\u5fc3\u98ce\u9669\uff1a\u5de5\u5177\u578b\u4ea7\u54c1\u5f80\u5f80\u9762\u4e34\u201c\u4f4e\u7c98\u6027\u201d\u56f0\u5883\u3002\u7528\u6237\u53ea\u6709\u5728\u62cd\u6444\u7279\u5b9a\u5185\u5bb9\u65f6\u624d\u4f1a\u60f3\u8d77\u5b83\uff0c\u7528\u5b8c\u5373\u8d70\uff0c\u6ca1\u6709\u793e\u4ea4\u5173\u7cfb\u94fe\u6216\u4e91\u7aef\u8d44\u4ea7\u7ed1\u5b9a\uff0c\u5f88\u5bb9\u6613\u88ab\u7cfb\u7edf\u76f8\u673a\u81ea\u5e26\u7684\u5bfc\u526a\u529f\u80fd\u6216\u66ff\u4ee3App\u6240\u53d6\u4ee3\u3002\u5982\u679c\u60f3\u7a81\u56f4\uff0cDualora\u5fc5\u987b\u4ece\u201c\u4e34\u65f6\u62cd\u6444\u5de5\u5177\u201d\u5347\u7ea7\u4e3a\u201c\u591a\u5e73\u53f0\u5185\u5bb9\u7684\u4e00\u7ad9\u5f0f\u62cd\u6444\u4e0e\u53d1\u5e03\u67a2\u7ebd\u201d\uff0c\u4f8b\u5982\u5185\u7f6e\u753b\u5e45\u6784\u56fe\u6307\u5357\u3001\u667a\u80fd\u68c0\u6d4b\u753b\u9762\u4e3b\u4f53\u5e76\u7ed9\u51fa\u6700\u4f73\u6784\u6846\u5efa\u8bae\u3001\u6216\u76f4\u63a5\u5bf9\u63a5YouTube\/Shorts\/TikTok\u7684\u53d1\u5e03API\uff0c\u5c06\u521b\u4f5c\u5230\u5206\u53d1\u7684\u94fe\u6761\u5f7b\u5e95\u7f29\u77ed\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u603b\u4e4b\uff0cDualora\u65b9\u5411\u6b63\u786e\uff0c\u4f46\u76ee\u524d\u53ea\u662f\u4e00\u4e2a\u201c\u7ec7\u4e86\u4e00\u534a\u7684\u9526\u201d\uff0c\u8ddd\u79bb\u6210\u4e3a\u521b\u4f5c\u8005\u5de5\u4f5c\u6d41\u7684\u5fc5\u9700\u54c1\uff0c\u8fd8\u5dee\u4e24\u4e2a\u5173\u952e\u8865\u4e01\uff1a\u4e00\u662f\u7f29\u77ed\u5bfc\u51fa\u65f6\u95f4\u81f3\u5b9e\u65f6\uff0c\u4e8c\u662f\u4ece\u5de5\u5177\u8fdb\u5316\u5230\u89e3\u51b3\u65b9\u6848\u3002\u5426\u5219\uff0c\u5b83\u5f88\u53ef\u80fd\u53ea\u662f\u53c8\u4e00\u4e2a\u88ab\u6536\u85cf\u5939\u9057\u5fd8\u7684\u201c\u5c0f\u4f17\u597d\u7269\u201d\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Dualora<\/span>\n                <\/div>\n<div class=\"comment-content\">Multi-platform creators have a broken workflow: record landscape for YouTube, flip the phone, record again for Shorts. Or record once and spend 20 minutes cropping a second version that still looks off. Dualora fixes this at capture time \u2014 not in post. Open the app and you see both 16:9 and 9:16 framing live on screen while you shoot \u2014 Split View or Picture-in-Picture. Hit record. Export two files. Upload to two platforms. Done. No guessing. No re-shooting. No desktop detour. No Account.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hey Product Hunt! \ud83d\udc4b I&#8217;m Alik \u2014 indie dev from India.<\/p>\n<p>I built Dualora because I was tired of recording every video twice: once horizontal for YouTube, once vertical for Shorts. And cropping in post never works \u2014 you only find out you framed it wrong after you&#8217;ve already shot.<\/p>\n<p>So I built an app that shows you both 16:9 and 9:16 live while you shoot. Record once. Export both. Done. Everything processes on your phone \u2014 no cloud upload, no account, <\/p>\n<p>If you create for YouTube AND Shorts\/Reels\/TikTok  or any kind of content\u2014 try one session and tell me if you&#8217;d ever go back to recording twice. Would love your honest feedback, bugs included. \ud83d\ude4f<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Firework did this more than 10 years ago. It didn\u2019t take off. Perhaps it\u2019ll be different this time.<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@lakshminath_dondeti\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@lakshminath_dondeti<\/a>&nbsp;<br \/>A lot has changed in a decade especially the rise of short-form vertical platforms alongside traditional horizontal ones. It&#8217;s a genuine workflow problem for modern creators who are tired of recording things twice or losing framing while cropping in post. Dualora is built specifically for today&#8217;s multi-platform ecosystem, and I&#8217;m excited to see how creators use it!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Finally, something where you don&#8217;t have to go through seven circles of hell just to sign up!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@jackdonovan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jackdonovan<\/a>&nbsp;Haha, thank you! We absolutely hate jumping through hoops just to try an app, so we wanted to make the entry as seamless and friction-free as possible. Great to hear that it stood out to you!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This solves a real pain for creators \u2014 recording once and getting both formats natively is way better than cropping after the fact. The quality always suffers when you crop.<\/p>\n<\/p>\n<p>Does it split the feeds in post or actually record two separate video files simultaneously?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@doganakbulut\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@doganakbulut<\/a>Thanks for the appreciation <br \/>To answer your question: because we are focusing heavily on Android, performance stability during recording is our top priority. Rendering two high-resolution video streams simultaneously can heavily tax a phone&#8217;s hardware and risk dropped frames.<\/p>\n<p>Instead, Dualora captures the raw feed efficiently and then uses a queue to render out the two separate, native video files right after you finish recording. This ensures your phone stays cool and your recording remains perfectly smooth!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>I like that Dualora fixes this while recording, not after. Seeing both 16:9 and 9:16 live on screen feels much more practical than guessing and hoping the crop will work later.<\/p>\n<\/p>\n<p>Curious if you plan to add safe-zone guides for captions, UI overlays, or platform-specific crops in the future?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@andrasczeizel\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@andrasczeizel<\/a>&nbsp;TThanks so much for checking out Dualora! That&#8217;s exactly why we built it\u2014trying to guess the framing and hoping the crop works out in post-production is a massive headache for creators.<\/p>\n<p>Your suggestion about adding safe-zone guides for captions, platform UI overlays, and specific crops is fantastic and highly practical. I am definitely adding that to our roadmap for future updates. Thanks for the valuable feedback!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>As a content creator this definitely caught my eye. It truly is a struggle finding a way to use landscape video as short form content as well. I can&#8217;t wait to try this one out!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@aditi37\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@aditi37<\/a>&nbsp;Thanks, looking forward to you valuable feedback <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Why didn&#8217;t i know Your app during recording my tutorials \ud83d\ude41 I did double job.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#10<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/DEFEOZOV5TL4MK\" class=\"app-title\">memi<\/a><\/p>\n<div class=\"one-liner\">The AI agent harness for product design teams<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">104<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>memi \u662f\u4e00\u6b3e macOS \u5e73\u53f0\u4e0a\u7684AI\u667a\u80fd\u4f53\u4e2d\u53f0\uff0c\u8ba9\u8bbe\u8ba1\u56e2\u961f\u5728\u672c\u5730\u5de5\u4f5c\u73af\u5883\u4e2d\u76f4\u63a5\u8c03\u7528Claude\u3001Codex\u7b49AI\u4ee3\u7406\uff0c\u5c06\u4ea7\u54c1\u89c4\u683c\u3001\u7814\u7a76\u6570\u636e\u548cFigma\u6587\u4ef6\u4f5c\u4e3a\u7edf\u4e00\u4e0a\u4e0b\u6587\uff0c\u89e3\u51b3AI\u8f85\u52a9\u8bbe\u8ba1\u4e2d\u53cd\u590d\u4e22\u5931\u9879\u76ee\u8bb0\u5fc6\u4e0e\u8bbe\u8ba1\u610f\u56fe\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/fd9e90ac-49d6-4b40-b7e2-fd2ed0049079.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/ceaffcac-14fd-4bd4-9c5d-9fa7a87575be.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1ffee249-072a-460a-abe6-fdb0203a2ca0.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/78930ba0-945d-448f-a0de-e6b16c8d4bb4.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Design Tools<\/span><br \/>\n            <span class=\"tag\">Developer Tools<\/span><br \/>\n            <span class=\"tag\">GitHub<\/span><br \/>\n            <span class=\"tag\">SDK<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u8bbe\u8ba1AI\u4e2d\u53f0<\/span><br \/>\n            <span class=\"tag\">macOS\u5de5\u4f5c\u53f0<\/span><br \/>\n            <span class=\"tag\">AI\u667a\u80fd\u4f53\u7f16\u6392<\/span><br \/>\n            <span class=\"tag\">\u8bbe\u8ba1\u7cfb\u7edf\u7ba1\u7406<\/span><br \/>\n            <span class=\"tag\">\u4ee3\u7406\u51b2\u7a81\u68c0\u6d4b<\/span><br \/>\n            <span class=\"tag\">\u8bbe\u8ba1\u8bb0\u5fc6\u5c42<\/span><br \/>\n            <span class=\"tag\">Figma\u534f\u4f5c<\/span><br \/>\n            <span class=\"tag\">\u5f00\u653e\u5f0fAI\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u672c\u5730\u5316AI\u8bbe\u8ba1<\/span><br \/>\n            <span class=\"tag\">\u8bbe\u8ba1\u5e08\u52a9\u624b<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u5173\u5fc3\uff1a\u662f\u5426\u5f3a\u4f9d\u8d56Figma\uff08\u56de\u590d\uff1a\u4e0d\u9700\u8981\uff09\uff1bAI\u5982\u4f55\u91cf\u5316\u5e76\u5b66\u4e60\u4e3b\u89c2\u201c\u54c1\u5473\u201d\uff08\u56de\u590d\uff1a\u6784\u5efa\u52a8\u6001\u504f\u597d\u6863\u6848\uff09\uff1b\u591a\u4ee3\u7406\u9488\u5bf9\u540c\u4e00\u8bbe\u8ba1\u6e90\u4ea7\u751f\u5206\u6b67\u65f6\u5982\u4f55\u88c1\u51b3\uff08\u56de\u590d\uff1a\u7ef4\u6301Figma\u4f5c\u4e3a\u771f\u76f8\u6e90\uff0c\u8f93\u51fa\u5dee\u5f02\u4f5c\u4e3a\u63d0\u6848\uff0c\u7531\u8bbe\u8ba1\u5e08\u88c1\u51b3\u5e76\u7eb3\u5165\u9879\u76ee\u8bb0\u5fc6\uff09\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                memi\u7684\u6838\u5fc3\u4ef7\u503c\u5e76\u975e\u201c\u53c8\u4e00\u4e2aAI\u8bbe\u8ba1\u5de5\u5177\u201d\uff0c\u800c\u662f\u4e3a\u8bbe\u8ba1\u56e2\u961f\u63d0\u4f9b\u4e86\u4e00\u4e2a\u201cAI\u667a\u80fd\u4f53\u64cd\u4f5c\u7cfb\u7edf\u201d\u2014\u2014\u5b83\u8bd5\u56fe\u89e3\u51b3\u5f53\u524dAI\u8f85\u52a9\u8bbe\u8ba1\u4e2d\u6700\u68d8\u624b\u7684\u975e\u6280\u672f\u95ee\u9898\uff1a**\u4e0a\u4e0b\u6587\u7684\u65ad\u88c2\u4e0e\u8bb0\u5fc6\u7684\u6d88\u901d**\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u5f53\u524d\u4e3b\u6d41AI\u5de5\u5177\u94fe\u7684\u5178\u578b\u56f0\u5c40\u662f\uff1a\u6bcf\u6b21\u4f7f\u7528Claude\u751f\u6210\u4ee3\u7801\u6216Codex\u5904\u7406\u8bbe\u8ba1\u7a3f\u65f6\uff0cAI\u5bf9\u9879\u76ee\u3001\u98ce\u683c\u3001\u8fc7\u5f80\u51b3\u7b56\u51e0\u4e4e\u6beb\u4e0d\u77e5\u60c5\uff0c\u5bfc\u81f4\u5927\u91cf\u91cd\u590d\u52b3\u52a8\u548c\u5ba1\u7f8e\u6f02\u79fb\u3002memi\u7684\u201c\u8bb0\u5fc6\u5c42\uff08memory layer\uff09\u201d\u8bbe\u8ba1\u770b\u4f3c\u8bed\u4e49\u7b80\u5355\uff0c\u5b9e\u5219\u76f4\u51fb\u8981\u5bb3\u2014\u2014\u5b83\u5c06\u8bbe\u8ba1\u5e08\u7684\u5ba1\u7f8e\u504f\u597d\u3001\u7ec4\u4ef6\u6a21\u5f0f\u3001\u62d2\u6536\u51b3\u7b56\u7b49\u975e\u7ed3\u6784\u5316\u6570\u636e\uff0c\u8f6c\u5316\u4e3a\u53ef\u88ab\u591a\u4ee3\u7406\u5f15\u7528\u7684\u7ed3\u6784\u5316\u4e0a\u4e0b\u6587\u3002\u8fd9\u79cd\u505a\u6cd5\u6bd4\u5355\u7eaf\u7684\u201c\u7528\u66f4\u5927\u6a21\u578b\u201d\u806a\u660e\u5f97\u591a\uff1a\u8fb9\u9645\u6210\u672c\u66f4\u4f4e\uff0c\u4e14\u66f4\u65b0\u901f\u5ea6\u5feb\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u66f4\u503c\u5f97\u5173\u6ce8\u7684\u662f\u5176\u5bf9\u201c\u591a\u4ee3\u7406\u51b2\u7a81\u201d\u7684\u5904\u7406\u903b\u8f91\u3002\u5927\u90e8\u5206\u7ade\u54c1\u60f3\u901a\u8fc7\u4e00\u4e2a\u8d85\u7ea7\u6a21\u578b\u5305\u63fd\u4e00\u5207\uff0c\u7ed3\u679c\u5f80\u5f80\u662f\u5e73\u5747\u5316\u3001\u5e73\u5eb8\u5316\u3002memi\u9ed8\u8ba4\u4ee3\u7406\u4f1a\u51fa\u5206\u6b67\uff0c\u5e76\u5141\u8bb8\u8bbe\u8ba1\u5e08\u4ee5\u201c\u4ef2\u88c1\u8005\u201d\u8eab\u4efd\u4ecb\u5165\uff0c\u4e14\u5c06\u88c1\u5b9a\u7ed3\u679c\u53cd\u54fa\u8bb0\u5fc6\u2014\u2014\u8fd9\u5b9e\u9645\u4e0a\u5728\u6784\u5efa**\u534f\u540c\u51b3\u7b56\u7684\u98de\u8f6e**\u3002\u5bf9\u4e8e\u5185\u90e8\u6709\u590d\u6742\u8bbe\u8ba1\u7cfb\u7edf\u7684\u56e2\u961f\uff08\u5982\u4e2d\u5927\u578bSaaS\u516c\u53f8\u3001Web3\u4ea7\u54c1\u56e2\u961f\uff09\uff0c\u8fd9\u4e2a\u4ef7\u503c\u8fdc\u80dc\u8fc7\u4e00\u6b21\u6027\u51fa\u56fe\u529f\u80fd\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4e0d\u8fc7\uff0c\u6709\u4e24\u70b9\u503c\u5f97\u8b66\u60d5\uff1a\u7b2c\u4e00\uff0cmacOS\u72ec\u5360\u610f\u5473\u7740\u5b83\u4e3b\u52a8\u653e\u5f03\u4e86\u5e9e\u5927\u7684Web\u548c\u79fb\u52a8\u7aef\u8bbe\u8ba1\u5e08\u7fa4\u4f53\uff0c\u4ee5\u53caCI\/CD\u96c6\u6210\u7b49\u81ea\u52a8\u5316\u573a\u666f\uff1b\u7b2c\u4e8c\uff0c\u201c\u54c1\u5473\u201d\u7684\u5b66\u4e60\u80fd\u5426\u5728\u8de8\u56e2\u961f\u3001\u8de8\u9879\u76ee\u65f6\u957f\u5468\u671f\u5185\u771f\u6b63\u7a33\u5b9a\u8f93\u51fa\uff0c\u4ecd\u9700\u6848\u4f8b\u9a8c\u8bc1\u3002\u5982\u679cmemi\u80fd\u89e3\u51b3\u8de8\u73af\u5883\u517c\u5bb9\u4e0e\u54c1\u5473\u6536\u655b\u6027\uff0c\u5b83\u5c31\u4e0d\u53ea\u662f\u201cAI harness\u201d\uff0c\u800c\u662f**\u8bbe\u8ba1\u8d44\u4ea7\u7684\u795e\u7ecf\u7f51\u7edc**\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">memi<\/span>\n                <\/div>\n<div class=\"comment-content\">A macOS workbench where Claude, Codex, and Hermes run on your specs, research, and Figma files.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Is Figma required? Where I struggle with design systems in AI-native development is maintaining and verifying against a single source of truth.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@jgilbertson47\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@jgilbertson47<\/a>&nbsp;nope not required at all!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Love the vision of an AI that understands your patterns and taste. I wonder how does memoire actually learn and quantify something as subjective as a designer&#8217;s aesthetic preferences over time?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@crystalmei\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@crystalmei<\/a>&nbsp;I love this question because taste is the whole point. We do not try to turn a designer\u2019s aesthetic into one magic score. memi builds a living taste profile from repeated signals: accepted vs rejected generations, recurring token choices, component patterns, spacing\/type\/color preferences, reference boards, Figma usage, and project-specific decisions. Over time it can say things like \u201cthis team tends to prefer denser layouts, sharper radii, quieter contrast, and editorial type\u201d and use that as context for critique or generation. The quantification is really a memory layer plus receipts, so subjective taste becomes something the agent can reference and improve against without pretending it is objective.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hey Product Hunt \ud83d\udc4b<\/p>\n<p>I built memoire because I kept seeing the same problem: designers are being asked to work closer to code, AI agents, design systems, and product logic, but the tools around them still treat design context as something separate.<\/p>\n<p>memoire is an open-source AI agent harness for product designers. It helps connect your design workflow to Figma, GitHub, codebases, design systems, and AI agents like Claude, Codex, and other local or open-source tools.<\/p>\n<p>The goal is simple: make AI-assisted building feel less like starting from zero every time and more like working with a system that understands your project, your components, your patterns, and your taste.<\/p>\n<p>I\u2019m especially interested in feedback from designers, builders, and indie hackers:<\/p>\n<p>What part of your design-to-code workflow still feels the most broken?<\/p>\n<p>Is it handoff, design systems, context switching, agent setup, Figma-to-code, or picking up an existing project mid-way?<\/p>\n<p>Would love your thoughts, critiques, and feature requests.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Routing multiple agents against the same Figma source is the right call. Text specs drift from design intent the moment a file changes. It&#8217;s a translation layer that doesn&#8217;t survive iteration. When Claude and Codex generate diverging implementations from the same component spec, how do you surface and resolve those conflicts?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@anand_thakkar1\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@anand_thakkar1<\/a>&nbsp;Great question. The way we think about it is: Figma stays the source of truth, and agent outputs become proposals against that source, not separate truths. memi keeps the shared context around component specs, tokens, source frames, receipts, and prior accepted changes. When Claude and Codex diverge, the goal is to surface the delta clearly: what changed, which design intent it maps to, and where it conflicts. The designer can accept, reject, or revise, and that resolution becomes part of the project memory for the next run. So conflict resolution is less \u201caverage two agents\u201d and more \u201ckeep design intent anchored while agents produce inspectable diffs.\u201d<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#11<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/7RVXX2IGKRAB3W\" class=\"app-title\">Typerino<\/a><\/p>\n<div class=\"one-liner\">Screenwriting and playwriting for movies, television, stage.<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">102<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Typerino\u662f\u4e00\u6b3e\u4e13\u4e3a\u7535\u5f71\u3001\u7535\u89c6\u548c\u821e\u53f0\u5267\u521b\u4f5c\u8005\u8bbe\u8ba1\u7684\u4e13\u4e1a\u5267\u672c\u5199\u4f5c\u5de5\u5177\uff0c\u901a\u8fc7\u539f\u751f\u5e94\u7528\u5b9e\u73b0\u201c\u6240\u89c1\u5373\u6240\u5f97\u201d\u7684\u884c\u4e1a\u6807\u51c6\u683c\u5f0f\u6392\u7248\uff0c\u89e3\u51b3\u4e86\u4f20\u7edf\u5de5\u5177\u64cd\u4f5c\u590d\u6742\u3001\u5199\u4f5c\u4f53\u9a8c\u5361\u987f\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/c39d43f2-b8d0-4343-a492-0416462e42cc.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/cf03771b-14b5-4efc-8dfd-b83dd5c62e2c.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/430822dd-fcab-46b6-a497-65ce47c1d79a.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/3d8b1c59-1ce6-4be6-b8d5-9fbc0179cf54.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/a5054c3a-85ba-4e90-b409-38389ac11cc2.jpeg?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Mac<\/span><br \/>\n            <span class=\"tag\">Productivity<\/span><br \/>\n            <span class=\"tag\">Writing<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u5267\u672c\u5199\u4f5c<\/span><br \/>\n            <span class=\"tag\">\u7f16\u5267\u8f6f\u4ef6<\/span><br \/>\n            <span class=\"tag\">\u821e\u53f0\u5267\u521b\u4f5c<\/span><br \/>\n            <span class=\"tag\">\u5f71\u89c6\u5267\u672c<\/span><br \/>\n            <span class=\"tag\">\u683c\u5f0f\u5316<\/span><br \/>\n            <span class=\"tag\">Mac<\/span><br \/>\n            <span class=\"tag\">Windows<\/span><br \/>\n            <span class=\"tag\">\u6240\u89c1\u5373\u6240\u5f97<\/span><br \/>\n            <span class=\"tag\">\u884c\u4e1a\u6807\u51c6<\/span><br \/>\n            <span class=\"tag\">\u5199\u4f5c\u4f53\u9a8c<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u8ba4\u53ef\u5176\u8bbe\u8ba1\u611f\u548c\u6253\u5b57\u6d41\u7545\u5ea6\uff0c\u6709\u7528\u6237\u671f\u671b\u6dfb\u52a0\u4e3b\u9898\u548c\u7535\u5b50\u4e66\u5bfc\u51fa\u529f\u80fd\u3002\u4e00\u4f4d\u7528\u6237\u8be2\u95ee\u4e0eCeltx\u7b49\u7ade\u54c1\u7684\u5dee\u5f02\uff0c\u5f00\u53d1\u8005\u56de\u5e94\u5f3a\u8c03\u4e13\u4e3a\u821e\u53f0\u5267\u4f18\u5316\u4e14\u8ffd\u6c42\u4f7f\u7528\u6109\u60a6\u611f\u3002\u5df2\u6709\u7528\u6237\u4eceStudioBinder\u5bfc\u5165\u811a\u672c\u8bd5\u7528\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Typerino\u5728\u201c\u6109\u60a6\u611f\u201d\u4e0a\u505a\u5bf9\u4e86\uff0c\u4f46\u8b66\u60d5\u6ca6\u4e3a\u5c0f\u4f17\u60c5\u6000\u4e4b\u4f5c\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4ece\u4ea7\u54c1\u8bbe\u8ba1\u4e0a\u770b\uff0cTyperino\u7cbe\u51c6\u6293\u4f4f\u4e86\u8d44\u6df1\u7f16\u5267\u7684\u9690\u6027\u75db\u70b9\uff1a\u5f53Final Draft\u3001Celtx\u7b49\u5de5\u5177\u7684\u529f\u80fd\u5806\u53e0\u8fbe\u5230\u9971\u548c\uff0c\u6253\u5b57\u5ef6\u8fdf\u548c\u754c\u9762\u6742\u97f3\u53cd\u800c\u6210\u4e3a\u521b\u9020\u529b\u7684\u654c\u4eba\u3002\u5b83\u590d\u5236\u4e86Vellum\u5728\u7535\u5b50\u4e66\u9886\u57df\u7684\u6210\u529f\u903b\u8f91\u2014\u2014\u5c06\u5bf9\u5de5\u5177\u7684\u7231\u8f6c\u5316\u4e3a\u5bf9\u521b\u4f5c\u8fc7\u7a0b\u7684\u5c0a\u91cd\u3002102\u7968\u7684Product Hunt\u6210\u7ee9\u8bf4\u660e\uff0c\u81f3\u5c11\u5bf9\u201c\u8d28\u611f\u6d3e\u201d\u7528\u6237\u800c\u8a00\uff0c\u8fd9\u79cd\u201c\u6781\u7b80\u539f\u751f+\u683c\u5f0f\u81ea\u52a8\u5316\u201d\u7684\u5b9a\u4f4d\u6781\u5177\u5438\u5f15\u529b\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u5176\u4ef7\u503c\u951a\u70b9\u5b58\u5728\u98ce\u9669\u3002\u7b2c\u4e00\uff0c\u5b9a\u4ef7\u7b56\u7565\uff0811.99\u7f8e\u5143\/\u6708\uff09\u76f4\u63a5\u5bf9\u6807Final Draft\uff0c\u800c\u975eFade In\u7b49\u66f4\u4fbf\u5b9c\u7684\u66ff\u4ee3\u54c1\u3002\u5bf9\u4e8e\u4e2a\u4eba\u7f16\u5267\uff0c\u60c5\u6000\u80fd\u5426\u652f\u6491\u6301\u7eed\u4ed8\u8d39\u4ecd\u662f\u95ee\u53f7\uff1b\u5bf9\u4e8e\u5236\u4f5c\u516c\u53f8\uff0c\u7f3a\u4e4f\u534f\u4f5c\u548c\u4e91\u7aef\u529f\u80fd\u53ef\u80fd\u5bfc\u81f4\u76f4\u63a5\u88ab\u8fc7\u6ee4\u3002\u7b2c\u4e8c\uff0c\u5f00\u53d1\u8005\u81ea\u8ff0\u201c\u50cf\u521d\u7a3f\u4e00\u6837\u53d1\u5e03\u201d\uff0c\u610f\u5473\u77401.0\u7248\u5728\u529f\u80fd\u4e0a\u8fd8\u8fdc\u672a\u6210\u719f\u3002\u7528\u6237\u8bc4\u8bba\u4e2d\u63d0\u5230\u7684\u201c\u4e3b\u9898\u201d\u548c\u201c\u5bfc\u51fa\u201d\u5c1a\u5728\u8def\u7ebf\u56fe\uff0c\u800c\u66f4\u5173\u952e\u7684\u201c\u591a\u8bbe\u5907\u540c\u6b65\u201d\u3001\u201c\u4fee\u8ba2\u6a21\u5f0f\u201d\u7b49\u529f\u80fd\u5e76\u672a\u63d0\u53ca\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u771f\u6b63\u7684\u4ef7\u503c\u5728\u4e8e\uff0c\u5b83\u8ba9\u201c\u4e13\u4e1a\u5199\u4f5c\u5de5\u5177\u201d\u56de\u5f52\u5230\u4e86\u201c\u5199\u4f5c\u201d\u672c\u8eab\u3002\u5982\u679cTyperino\u80fd\u575a\u6301\u201c\u5feb\u3001\u9759\u3001\u75db\u201d\u7684\u4f53\u9a8c\u54f2\u5b66\uff0c\u5e76\u8fc5\u901f\u8865\u9f50\u534f\u4f5c\u548c\u683c\u5f0f\u517c\u5bb9\u6027\u7684\u77ed\u677f\uff0c\u5b83\u6216\u8bb8\u80fd\u50cfBear\u4e4b\u4e8e\u7b14\u8bb0\u3001Ulysses\u4e4b\u4e8e\u957f\u6587\u4e00\u6837\uff0c\u5360\u9886\u4e00\u4e2a\u7edd\u5bf9\u5782\u76f4\u4f46\u4ed8\u8d39\u610f\u613f\u5f3a\u7684\u521b\u4f5c\u8005\u5e02\u573a\u3002\u5426\u5219\uff0c\u5b83\u53ef\u80fd\u53ea\u662f\u4e00\u6b3e\u8bbe\u8ba1\u7cbe\u7f8e\u7684\u201c\u7b2c\u4e00\u7a3f\u73a9\u5177\u201d\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Typerino<\/span>\n                <\/div>\n<div class=\"comment-content\">Industry-standard screenwriting and stage-play formatting for feature, television, and stage. No Markdown, no syntax: what you type is what gets exported. Mac and Windows. Free 14-day trial, then $11.99\/mo, or $99\/year.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hey Product Hunt \ud83d\udc4b<\/p>\n<p>I&#8217;m Charlie, and Typerino is the screenwriting and playwriting app I wanted and couldn&#8217;t find.<br \/>I love the craft and I&#8217;ve spent a lot of time inside the existing tools.  I&#8217;ve spent my career as a software designer &amp; builder, so naturally I built my own. <\/p>\n<p>The writing engine is designed from the ground up around a single goal: that it should feel great and look great. Typing should feel crisp and delightful. No perceptible delay between thought and word on the page, even in a feature-length script. Industry-standard formatting is there, the writing surface is clean and quiet, and it runs natively on both Mac and Windows.<\/p>\n<p>I&#8217;m calling this 1.0, but I think of it the way screenwriters think of a first draft \u2014 the thing you ship so you can start making it better. It&#8217;s not everything I want it to be yet. It is something I trust you to write in. I&#8217;ll be patching and adding fast, and I&#8217;d genuinely love your notes on what to sharpen next.<\/p>\n<p>Easiest way to feel the difference: download it, open a blank script, and just type for thirty seconds.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Congrats Charlie, I\u2019ve been looking for something like this to accompany me in a screenwriting course I\u2019m currently doing. Love the scene and character sidebars, as I personally sometime find it hard to hold onto structure on other writing tools. Will take this for a spin \ud83d\ude4f<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">@ferdi_sigona Thank you so much! Will love to hear what you think. Getting it out into the world and seeing what others make of it means the world to me.<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This is so nicely designed. Have you thought about making themes or ereader export?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">@nabeel5 Thank you! And yes, more themes are definitely on the todo list.<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This looks really promising! I&#8217;ve already started to import my scripts from StudioBinder to keep working Typerino!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@uxward\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@uxward<\/a>&nbsp;Thank you Brandon! \ud83d\ude4f<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The \u201cjust type for thirty seconds\u201d point is a good way to frame it. For writing tools, speed and feel matter as much as features, especially when someone is working on a long script.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>I am sure Typerino is a great product, just curious what makes it better than celtx or other tools? I have used Celtx for a couple of stage play scripts a few years ago.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@maddy19\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@maddy19<\/a>&nbsp;I&#8217;ve used Final Draft, FadeIn, Celtx, and a few others for years. They&#8217;re all functional and each does some things well, but none of them felt like a pleasure to use. I was inspired by what Vellum did for ebook creation and wanted to bring that same care to screen and stage writing. And since you&#8217;re writing stage plays&#8230; that&#8217;s a first-class format in Typerino, not an afterthought bolted onto a screenplay editor, which is usually where other tools fall short for playwrights.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#12<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/JNY45JPBOBQUX6\" class=\"app-title\">Mirlo<\/a><\/p>\n<div class=\"one-liner\">Social media for real connections. No likes, no algorithm.<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">96<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Mirlo\u662f\u4e00\u6b3e\u53bb\u4e2d\u5fc3\u5316\u3001\u65e0\u7b97\u6cd5\u5e72\u6270\u7684\u6b27\u6d32\u793e\u4ea4APP\uff0c\u4e13\u6ce8\u4e8e\u901a\u8fc7\u4e92\u76f8\u5173\u6ce8\u7684\u673a\u5236\uff0c\u5728\u719f\u4eba\u4e4b\u95f4\u5efa\u7acb\u771f\u5b9e\u3001\u79c1\u5bc6\u4e14\u65e0\u538b\u529b\u7684\u6c9f\u901a\u573a\u666f\uff0c\u89e3\u51b3\u7528\u6237\u5bf9\u73b0\u6709\u793e\u4ea4\u5a92\u4f53\u201c\u6d88\u8017\u6027\u4f53\u9a8c\u201d\u7684\u5026\u6020\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/31087dc4-04c5-402d-bf8a-aebc0774d5c2.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1af09a65-6f51-4fb6-b3a9-a09386bc8bdc.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1c7919de-3a00-473b-9912-d8d34e6854ef.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/365bc5a6-9351-4816-90b5-1808d6241865.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/04963516-3be9-4eca-ac0f-6b8bfc5d61b4.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">iOS<\/span><br \/>\n            <span class=\"tag\">Social Media<\/span><br \/>\n            <span class=\"tag\">Social Networking<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u793e\u4ea4\u5e94\u7528<\/span><br \/>\n            <span class=\"tag\">\u65e0\u7b97\u6cd5<\/span><br \/>\n            <span class=\"tag\">\u9690\u79c1\u4fdd\u62a4<\/span><br \/>\n            <span class=\"tag\">\u8ba2\u9605\u5236<\/span><br \/>\n            <span class=\"tag\">\u4e92\u76f8\u5173\u6ce8<\/span><br \/>\n            <span class=\"tag\">\u6b27\u6d32\u5236\u9020<\/span><br \/>\n            <span class=\"tag\">\u65e0\u5e7f\u544a<\/span><br \/>\n            <span class=\"tag\">\u719f\u4eba\u793e\u4ea4<\/span><br \/>\n            <span class=\"tag\">\u53cd\u6c89\u8ff7<\/span><br \/>\n            <span class=\"tag\">\u6570\u5b57\u6781\u7b80<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u6b22\u8fce\u201c\u65e0\u70b9\u8d5e\u3001\u65e0\u7b97\u6cd5\u201d\u7684\u7eaf\u51c0\u7406\u5ff5\uff0c\u4f46\u4e3b\u8981\u5173\u6ce8\u4e24\u4e2a\u95ee\u9898\uff1a\u4e00\u662f\u5982\u4f55\u5728\u6ca1\u6709\u7b97\u6cd5\u7684\u60c5\u51b5\u4e0b\u53d1\u73b0\u65b0\u670b\u53cb\uff08\u5f53\u524d\u4ec5\u652f\u6301\u540d\u79f0\u641c\u7d22\uff0c\u8def\u7ebf\u56fe\u5305\u62ec\u901a\u8baf\u5f55\u540c\u6b65\u548c\u597d\u53cb\u63a8\u8350\uff09\uff1b\u4e8c\u662f\u5bf9\u201c\u88f8\u9732\u5185\u5bb9\u201d\u5ba1\u6838\u673a\u5236\u7684\u7591\u95ee\uff1b\u6b64\u5916\uff0c\u975e\u6b27\u6d32\u7528\u6237\u8868\u8fbe\u4e86\u5f3a\u70c8\u7684\u4f7f\u7528\u671f\u5f85\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Mirlo \u7684\u201c\u53cd\u7b97\u6cd5\u201d\u53d9\u4e8b\u7cbe\u51c6\u51fb\u4e2d\u4e86\u88ab\u4f20\u7edf\u793e\u4ea4\u5e73\u53f0\u5f02\u5316\u7684\u7528\u6237\u7684\u60c5\u7eea\u75db\u70b9\uff0c\u4f46\u5176\u771f\u6b63\u7684\u4ef7\u503c\u4e0d\u5728\u4e8e\u201c\u65e0\u7b97\u6cd5\u201d\uff0c\u800c\u5728\u4e8e\u5b83\u91cd\u65b0\u5b9a\u4e49\u4e86\u793e\u4ea4\u7f51\u7edc\u7684\u8fde\u63a5\u7ea6\u675f\uff1a\u901a\u8fc7\u201c\u4e92\u76f8\u5173\u6ce8\u201d\u548c\u201c\u65e0\u516c\u5f00\u8bc4\u8bba\u201d\u628a\u793e\u4ea4\u573a\u666f\u62c9\u56de\u79c1\u5bc6\u719f\u4eba\u5708\uff0c\u5f7b\u5e95\u6d88\u89e3\u4e86\u8868\u6f14\u6027\u7126\u8651\u2014\u2014\u70b9\u8d5e\u6570\u4e0e\u516c\u5f00\u53cd\u9988\u662f\u793e\u4ea4\u538b\u529b\u7684\u6838\u5fc3\u653e\u5927\u5668\uff0cMirlo\u76f4\u63a5\u62c6\u6389\u4e86\u8fd9\u4e24\u9053\u9600\u95e8\u3002\u8fd9\u79cd\u8bbe\u8ba1\u5728\u7406\u5ff5\u4e0a\u6bd4\u53ea\u662f\u201c\u5b89\u9759\u201d\u7684\u7ade\u54c1\uff08\u5982Daylight\u3001Minus\uff09\u66f4\u6fc0\u8fdb\uff0c\u4e5f\u66f4\u63a5\u8fd1\u793e\u4ea4\u7684\u672c\u8d28\uff08\u5373\u4fe1\u606f\u4ea4\u6362\u800c\u975e\u58f0\u671b\u7ade\u4e89\uff09\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u7136\u800c\uff0cMirlo\u7684\u5546\u4e1a\u6a21\u578b\u540c\u65f6\u66b4\u9732\u4e86\u5176\u81f4\u547d\u6096\u8bba\uff1a\u8ba2\u9605\u5236\uff084.99\u20ac\/\u6708\uff09\u548c\u201c\u65e0\u6570\u636e\u51fa\u552e\u201d\u4fdd\u8bc1\u4e86\u5f7b\u5e95\u7684\u7528\u6237\u4e3b\u6743\uff0c\u5374\u8ba9\u51b7\u542f\u52a8\u53d8\u5f97\u51e0\u4e4e\u4e0d\u53ef\u80fd\u3002\u793e\u4ea4\u7f51\u7edc\u7684\u4ef7\u503c\u968f\u8282\u70b9\u6570\u91cf\u6307\u6570\u7ea7\u589e\u957f\uff0c\u800c\u201c\u4ec5\u4e92\u76f8\u5173\u6ce8\u201d\u610f\u5473\u7740\u7528\u6237\u5fc5\u987b\u5148\u6709\u670b\u53cb\u52a0\u5165\u624d\u80fd\u83b7\u5f97\u4ef7\u503c\uff0c\u7f3a\u4e4f\u201c\u63a8\u8350\u4eba\u201d\u548c\u201c\u516c\u5171\u5e7f\u573a\u201d\u673a\u5236\u8fdb\u4e00\u6b65\u62ac\u9ad8\u4e86\u52a0\u5165\u95e8\u69db\u3002\u5bf9\u4e8e\u666e\u901a\u7528\u6237\u800c\u8a00\uff0c\u82b15\u6b27\u5143\u6bcf\u6708\u53bb\u201c\u8054\u7cfb\u672c\u5c31\u5728\u5fae\u4fe1\/Telegram\u4e0a\u8054\u7cfb\u7684\u4eba\u201d\u7f3a\u4e4f\u5207\u6362\u52a8\u673a\u3002\u76ee\u524d\uff0cMirlo\u66f4\u50cf\u662f\u4e00\u4e2a\u4e3a\u201c\u5bf9\u793e\u4ea4\u5a92\u4f53\u5f7b\u5e95\u5931\u671b\u201d\u7684\u6781\u5ba2\u56e2\u4f53\u51c6\u5907\u7684\u907f\u98ce\u6e2f\uff0c\u800c\u975e\u5927\u4f17\u5e02\u573a\u4ea7\u54c1\u3002\u5176\u751f\u6b7b\u53d6\u51b3\u4e8e\u80fd\u5426\u5728\u201c\u7eaf\u51c0\u201d\u4e0e\u201c\u53ef\u53d1\u73b0\u6027\u201d\u4e4b\u95f4\u627e\u5230\u4e00\u4e2a\u4e0d\u7834\u574f\u6838\u5fc3\u4f53\u9a8c\u7684\u5e73\u8861\u70b9\u2014\u2014\u63a8\u8350\u7cfb\u7edf\u5982\u679c\u52a0\u5165\u4f20\u7edf\u6a21\u5f0f\uff0c\u53c8\u4f1a\u8ba9\u5b83\u6ca6\u4e3a\u53e6\u4e00\u4e2a\u201c\u5b89\u9759\u7684Instagram DM\u201d\u3002\u521b\u59cb\u4eba\u9762\u4e34\u7684\u6838\u5fc3\u95ee\u9898\u4e0d\u662f\u201c\u5982\u4f55\u505a\u66f4\u597d\u201d\uff0c\u800c\u662f\u201c\u4eba\u4eec\u4e3a\u4ec0\u4e48\u9700\u8981\u4e00\u4e2a\u4e13\u95e8\u7684\u65b0APP\u6765\u505a\u73b0\u5728\u5df2\u5728\u505a\u7684\u4e8b\u60c5\u201d\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Mirlo<\/span>\n                <\/div>\n<div class=\"comment-content\">Mirlo is a European social app for real human connection. Built without engagement hooks: no likes, no public comments, no algorithm, no infinite scroll. Mutual connections only, so the conversation stays between the people in it. Hosted in the EU, no ads, no data sold. Subscription-only, 14-day trial. On iOS across 30 EU countries with wider rollout planned. Made for the people who quietly closed the apps that stopped working for them.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hey everyone, I&#8217;m Mathijs. I built Mirlo because my own social apps stopped giving back what they were taking. Not in a dramatic way, just in a slow, daily way that I couldn&#8217;t unsee anymore.<\/p>\n<p>Mirlo is what I wished I had instead. No likes, no public comments, no algorithm, no infinite scroll. Every connection is mutual, so the conversation stays between the people in it. It&#8217;s calm on purpose.<\/p>\n<p>It&#8217;s also subscription-only, \u20ac4.99 a month or \u20ac34.99 a year. If you&#8217;re not paying for it, you&#8217;re the product, and I didn&#8217;t want that to be the model. The 14-day free trial lets you try it without committing.<\/p>\n<p>Everything is built and hosted in Europe under GDPR and the Digital Services Act. No ads, no data selling, no third-party tracking.<\/p>\n<p>A note on availability: Mirlo is currently live on iOS in 30 European countries (the EU plus a few neighbors). Android and wider international rollout are on the roadmap, not the launch checklist. If you&#8217;re outside Europe and Mirlo sounds like something you&#8217;d want, I&#8217;d love to hear from you. That demand signal directly informs what comes next.<\/p>\n<p>Curious what you think, especially the design choices that feel different. What would you want from a social app that doesn&#8217;t measure you?<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>4<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@mathijslemmers\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@mathijslemmers<\/a>&nbsp;Congrats on the launch! Very cool concept &#8211; social media in its purity. Curious that you mentioned the &#8220;nudity&#8221; aspect on the website &#8211; could Mirlo be a competitor for OnlyFans?! If that&#8217;s the plan, smart. If it&#8217;s not, how would you monitor that?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>I miss the early days of social apps when they were mostly about keeping up with people you actually knew. Curious to see how this evolves.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@varun1jan\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@varun1jan<\/a>&nbsp;Same here\ud83d\ude04 It&#8217;s a sentiment I keep hearing over and over. I finally had enough about a year ago. Deleted my Instagram but quite soon felt like I was missing out on genuine updates from friends and family.<\/p>\n<p>Really hoping we&#8217;ve got something here that can help people connect with their loved ones and not be glued to their phone 24\/7.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Genuinely refreshing to see a social app built around mutual connections and no public likes. Most attempts at &#8220;calm&#8221; social media still sneak in engagement mechanics. The European privacy angle + no data selling is a strong differentiator too.<\/p>\n<\/p>\n<p>How do you handle discovery on Mirlo \u2014 if there&#8217;s no algorithm, how do new users find people they&#8217;d actually want to connect with?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@doganakbulut\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@doganakbulut<\/a>&nbsp;Thank you for your comment! At this moment the answer to that is quite simple: discovery isn&#8217;t handled.<\/p>\n<p>You can search for people by name and\/or username, but that&#8217;s about it. There are features on the roadmap to improve this, but we want to be careful rolling these out. It&#8217;s scarily easy to fall back into pushing certain content onto people.<\/p>\n<p>What&#8217;s on the roadmap:<\/p>\n<ul>\n<li>\n<p>Sync your contacts;<\/p>\n<\/li>\n<li>\n<p>Recommended friends based on your current connections.<\/p>\n<\/li>\n<\/ul>\n<p>We&#8217;re very open to listen to any ideas or brainstorm about this. Let us know your thoughts\ud83d\ude0a<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>I&#8217;m from India and I&#8217;m really excited to try this out one day. I was an early Instagram user back when it was just about sharing photos before everything got so toxic. I really miss that simplicity and I hope Mirlo can bring it back, good luck! <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@rajanbuilds\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@rajanbuilds<\/a>&nbsp;I&#8217;m so happy to hear that! We can&#8217;t wait to role the app out to other countries. There seems to be a real want for people to go back to basics and just connect with their friends and family.<\/p>\n<p>Thank you so much for sharing\ud83e\udef6<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Great initiative. A social media network that focuses on the \u2018social\u2019. I\u2019ve installed the app and will try to get my friends use it!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">@syourt thanks Sjoerd, that\u2019s greatly appreciated. Be sure to let me know if you have any questions or feedback\ud83d\udc4d<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>\u3053\u3093\u306b\u3061\u306f\u3002\u30ea\u30ea\u30fc\u30b9\u304a\u3081\u3067\u3068\u3046\u3054\u3056\u3044\u307e\u3059\u3002<br \/>\u308f\u305f\u3057\u3082\u5c11\u3057\u3060\u3051\u8fd1\u3044\u601d\u60f3\u3067SNS\u3092\u69cb\u7bc9\u3057\u3066\u3044\u308b\u306e\u3067\u8208\u5473\u304c\u6e67\u304d\u307e\u3057\u305f\u3002<br \/>\u5b9f\u969b\u306b\u3069\u306e\u3088\u3046\u306b\u4ed6\u306e\u4eba\u3068\u7e4b\u304c\u308b\u306e\u3067\u3059\u304b\uff1f\u3059\u3067\u306b\u77e5\u3063\u3066\u3044\u308b\u77e5\u4eba\u540c\u58eb\u306e\u30b3\u30df\u30e5\u30cb\u30c6\u30a3\u3068\u306a\u308b\u306e\u3067\u3057\u3087\u3046\u304b\uff1f<br \/>\u30a4\u30f3\u30b9\u30bf\u30b0\u30e9\u30e0\u306eDM\u6a5f\u80fd\u3060\u3051\u3092\u5207\u308a\u53d6\u3063\u305f\u3088\u3046\u306a\u30a2\u30d7\u30ea\u306a\u306e\u3067\u3057\u3087\u3046\u304b\u3002<br \/>\u304a\u6642\u9593\u304c\u3042\u308c\u3070\u6559\u3048\u3066\u3044\u305f\u3060\u3051\u308b\u3068\u5b09\u3057\u3044\u3067\u3059\u3002\u3042\u308a\u304c\u3068\u3046\u3054\u3056\u3044\u307e\u3059\u3002<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@orora\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@orora<\/a>&nbsp; Thank you for commenting! I hope you don&#8217;t mind me responding in English.<\/p>\n<p>For the MVP, connecting with people is simply searching either their name or username, clicking on their profile and sending a connection request. The other user then has the choice to accept or decline the invite.<\/p>\n<\/p>\n<p>Once an invite has been accepted you both get access to each other&#8217;s posts and the option to chat to each other.<\/p>\n<\/p>\n<p>There currently is no feature to promote connection more. But we are thinking about:<\/p>\n<ul>\n<li>\n<p>Sync your contacts;<\/p>\n<\/li>\n<li>\n<p>Recommended friends based on your current connections.<\/p>\n<\/li>\n<\/ul>\n<p>In addition, each user has the option to hide their account from the search. Which means they alone can initiate connections.<\/p>\n<p>Hope this helps, feel free to let me know should you have more questions\ud83d\ude04<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>the &#8220;mutual connections only&#8221; detail is the one that actually makes this different. every other &#8220;anti-algorithm&#8221; app still has public replies or likes, which just recreates the performance anxiety in a slightly quieter room. curious how you handle the cold start problem though, since that mutual-only constraint means it&#8217;s pretty hard to find anyone until you already know someone on it.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#13<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/TSJ3B6FFBRFCJR\" class=\"app-title\">Redactify<\/a><\/p>\n<div class=\"one-liner\">Automated profanity censoring for video &#038; audio<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">94<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Redactify\u662f\u4e00\u6b3e\u81ea\u52a8\u68c0\u6d4b\u5e76\u6d88\u97f3\u89c6\u9891\/\u97f3\u9891\u4e2d\u7684\u810f\u8bdd\uff0c\u540c\u65f6\u6a21\u7cca\u8bf4\u8bdd\u4eba\u5634\u90e8\u753b\u9762\u7684\u5de5\u5177\uff0c\u4e13\u4e3a\u9700\u8981\u5728TikTok\u3001YouTube\u7b49\u591a\u5e73\u53f0\u53d1\u5e03\u5185\u5bb9\u5374\u62c5\u5fc3\u8fdd\u89c4\u7684\u521b\u4f5c\u8005\u3001\u64ad\u5ba2\u4e3b\u548c\u5a92\u4f53\u56e2\u961f\u89e3\u51b3\u7e41\u7410\u4e14\u6613\u51fa\u9519\u7684\u5ba1\u6838\u5de5\u4f5c\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/ce3acac6-2460-4e0c-8795-138a2f4599a3.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/zbXPWjFknvU\"><source src=\"https:\/\/youtu.be\/zbXPWjFknvU\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/478079e3-3689-4d9b-9e10-cc5de6586ebe.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/e540bcbd-00a4-45d6-b898-49575f47d601.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/7fa6a44a-25e6-4144-84ae-de7c29fea992.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f7ac4059-2701-433d-9ac6-b9f58752485f.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Social Media<\/span><br \/>\n            <span class=\"tag\">Entertainment<\/span><br \/>\n            <span class=\"tag\">Video<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u89c6\u9891\u7f16\u8f91<\/span><br \/>\n            <span class=\"tag\">\u97f3\u9891\u5904\u7406<\/span><br \/>\n            <span class=\"tag\">\u81ea\u52a8\u6d88\u97f3<\/span><br \/>\n            <span class=\"tag\">\u53e3\u578b\u6a21\u7cca<\/span><br \/>\n            <span class=\"tag\">\u5185\u5bb9\u5ba1\u6838<\/span><br \/>\n            <span class=\"tag\">\u521b\u610f\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u5a92\u4f53\u5236\u4f5c<\/span><br \/>\n            <span class=\"tag\">\u64ad\u5ba2\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u8de8\u5e73\u53f0\u53d1\u5e03<\/span><br \/>\n            <span class=\"tag\">AI\u8f85\u52a9<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u80af\u5b9a\u5176\u201c\u97f3\u9891\u6d88\u97f3+\u5634\u90e8\u6a21\u7cca\u201d\u7684\u5168\u9762\u6027\uff0c\u89e3\u51b3\u591a\u5e73\u53f0\u5408\u89c4\u75db\u70b9\u3002\u4e3b\u8981\u7591\u95ee\u96c6\u4e2d\u4e8e\uff1a\u662f\u5426\u652f\u6301\u591a\u8bed\u8a00\uff08\u7b54\uff1a\u652f\u6301\u82f1\u897f\u6cd5\u5fb7\u8461\uff09\u3001\u80fd\u5426\u81ea\u5b9a\u4e49\u810f\u8bcd\u5e93\u3001\u4e0d\u540c\u53e3\u97f3\u68c0\u6d4b\u51c6\u786e\u7387\u5982\u4f55\u3001\u4ee5\u53ca\u65f6\u95f4\u8f74\u5bf9\u9f50\u548c\u5ba1\u6838\u901f\u5ea6\u7b49\u7ec6\u8282\u5c1a\u6709\u63d0\u5347\u7a7a\u95f4\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Redactify\u7684\u5207\u5165\u70b9\u975e\u5e38\u7cbe\u51c6\uff1a\u5b83\u6ca1\u6709\u5728\u201c\u810f\u8bdd\u68c0\u6d4b\u201d\u8fd9\u4e2a\u5df2\u7ecf\u88ab\u591a\u5bb6AI\u8bed\u97f3\u516c\u53f8\uff08\u5982AssemblyAI\u3001Rev\uff09\u505a\u70c2\u7684\u8d5b\u9053\u4e0a\u5185\u5377\uff0c\u800c\u662f\u6293\u4f4f\u4e86\u5185\u5bb9\u5ba1\u6838\u6d41\u7a0b\u4e2d\u4e00\u4e2a\u88ab\u957f\u671f\u5ffd\u89c6\u7684\u89c6\u89c9\u75db\u70b9\u2014\u2014\u201c\u53ea\u6d88\u97f3\u4e0d\u6a21\u7cca\u5634\u578b\u201d\uff0c\u8fd9\u5728\u5507\u8bed\u53ef\u8bfb\u7684\u89c6\u9891\u5e73\u53f0\uff08\u5c24\u5176\u662fTikTok\uff09\u4e0a\u51e0\u4e4e\u7b49\u4e8e\u767d\u5e72\u3002\u8fd9\u79cd\u201c\u97f3\u9891+\u89c6\u89c9\u201d\u53cc\u901a\u9053\u906e\u853d\u7684\u903b\u8f91\uff0c\u6bd4\u5355\u7eaf\u7684\u97f3\u9891\u6d88\u97f3\u66f4\u63a5\u8fd1\u4e00\u4e2a\u201c\u5b8c\u6574\u201d\u7684\u4ea4\u4ed8\u65b9\u6848\uff0c\u76f4\u51fb\u4e86\u521b\u4f5c\u8005\u201c\u4e00\u7a3f\u591a\u6295\u201d\u65f6\u5bf9\u4e0d\u540c\u5e73\u53f0\u4e25\u82db\u793e\u533a\u51c6\u5219\u7684\u6050\u60e7\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u7136\u800c\uff0c\u4ea7\u54c1\u771f\u6b63\u7684\u62a4\u57ce\u6cb3\u4e0d\u5728\u4e8e\u68c0\u6d4b\u672c\u8eab\uff08\u5b83\u4f9d\u8d56ElevenLabs\u7684\u8f6c\u5f55\uff09\uff0c\u800c\u5728\u4e8e\u201c\u68c0\u6d4b-\u906e\u853d-\u5bfc\u51fa\u201d\u8fd9\u4e2a\u5168\u6d41\u7a0b\u7684\u81ea\u52a8\u5316\u4e0e\u7f16\u8f91\u6548\u7387\u3002\u76ee\u524d\u7528\u6237\u53cd\u9988\u7684\u6838\u5fc3\u77db\u76fe\u70b9\u4e5f\u5728\u4e8e\u6b64\uff1a\u68c0\u6d4b\u51c6\u786e\u7387\u53d7\u53e3\u97f3\u5f71\u54cd\uff0c\u65f6\u95f4\u8f74\u5bf9\u9f50\u65e0\u6cd5\u624b\u52a8\u5fae\u8c03\u3002\u8fd9\u8bf4\u660e\u76ee\u524d\u7684\u81ea\u52a8\u5316\u66f4\u50cf\u4e00\u4e2a\u201c\u9ed1\u7bb1\u201d\uff0c\u521b\u4f5c\u8005\u4e00\u65e6\u53d1\u73b0\u8bef\u5224\uff08\u4f8b\u5982\u628a\u4e25\u8083\u8bbf\u8c08\u4e2d\u7684\u5b66\u672f\u7528\u8bcd\u5f53\u6210\u810f\u8bdd\uff09\uff0c\u7f3a\u4e4f\u9ad8\u6548\u7684\u4fee\u6b63\u5de5\u5177\uff0c\u53cd\u800c\u53ef\u80fd\u6bd4\u624b\u52a8\u6d88\u97f3\u66f4\u8017\u65f6\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4ece\u7ade\u54c1\u89d2\u5ea6\u770b\uff0c\u5e02\u9762\u4e0a\u5df2\u6709Descript\u3001Riverside\u7b49\u4e00\u7ad9\u5f0f\u64ad\u5ba2\/\u89c6\u9891\u7f16\u8f91\u5de5\u5177\u96c6\u6210\u4e86\u97f3\u9891\u81ea\u52a8\u6e05\u7406\u529f\u80fd\uff08\u5305\u62ec\u586b\u5145\u8bcd\u548c\u810f\u8bdd\uff09\uff0c\u4f46\u5b83\u4eec\u66f4\u5f3a\u8c03\u201c\u526a\u8f91\u201d\u800c\u975e\u201c\u906e\u853d\u201d\u3002Redactify\u82e5\u60f3\u7a81\u56f4\uff0c\u4e0d\u5e94\u6b62\u6b65\u4e8e\u505a\u4e00\u4e2a\u201c\u9ad8\u7ea7\u7248Bleep\u6309\u94ae\u201d\uff0c\u800c\u5fc5\u987b\u5411\u201c\u653f\u7b56\u5408\u89c4\u81ea\u52a8\u5316\u5f15\u64ce\u201d\u8fdb\u5316\uff1a\u6bd4\u5982\u8ba9\u7528\u6237\u9884\u8bbe\u201cTikTok\u4e25\u683c\u6a21\u5f0f\u201d\u6216\u201cYouTube\u5bbd\u677e\u6a21\u5f0f\u201d\u7684\u4e0d\u540c\u6807\u51c6\uff0c\u5e76\u5229\u7528\u7528\u6237\u53cd\u9988\u7684\u7ea0\u9519\u6570\u636e\u6301\u7eed\u8bad\u7ec3\u6a21\u578b\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4e00\u4e2a\u66f4\u6df1\u5c42\u7684\u9690\u60a3\u662f\uff0c\u8fc7\u5ea6\u81ea\u52a8\u5316\u906e\u853d\u53ef\u80fd\u8ba9\u521b\u4f5c\u8005\u5931\u53bb\u5bf9\u5185\u5bb9\u5c3a\u5ea6\u7684\u4e3b\u89c2\u5224\u65ad\uff0c\u5bfc\u81f4\u201c\u81ea\u6211\u5ba1\u67e5\u201d\u8fc7\u5ea6\u3002\u4ea7\u54c1\u7684\u4ef7\u503c\u8fdc\u4e0d\u6b62\u662f\u8282\u7701\u65f6\u95f4\u2014\u2014\u5b83\u662f\u7ed9\u5e73\u53f0\u5185\u5bb9\u5ba1\u6838\u7684\u201c\u6f5c\u89c4\u5219\u201d\u63d0\u4f9b\u4e86\u4e00\u628a\u80fd\u81ea\u52a8\u4e0a\u9501\u7684\u94a5\u5319\uff0c\u4f46\u94a5\u5319\u7684\u9f7f\u7eb9\uff08\u68c0\u6d4b\u6807\u51c6\uff09\u662f\u5426\u5408\u7406\uff0c\u8fd8\u9700\u521b\u4f5c\u8005\u96c6\u4f53\u6821\u51c6\u3002\u5426\u5219\uff0c\u5b83\u53ea\u662f\u4e00\u53f0\u66f4\u9ad8\u6548\u7684\u201c\u7cbe\u795e\u81ea\u5bab\u673a\u201d\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Redactify<\/span>\n                <\/div>\n<div class=\"comment-content\">Bleep out swear words in your videos automatically, and blur speakers&#8217; mouths so nothing slips through. Built for creators, podcasters, and media teams shipping to TikTok, YouTube, Twitch and Spotify.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">I know censoring content is a pain for editors, not only because it takes up valuable time, but because the typical way of doing it is extremely error-prone. It&#8217;s a perfect example of &#8216;busy work&#8217;. Stuff that needs to be done, but doesn&#8217;t improve the art, or leave a lasting impact on the consumer. This is the exact type of work that can be handled via automation.<\/p>\n<p>Many existing solutions have handled this to some degree, delivering automated profanity censoring for audio. But none of them go as far as to blur the mouth of the speaker during a profanity. And I thought to myself, &#8220;what&#8217;s the use of censoring the audio, if we&#8217;re not going to blur the mouth too. That&#8217;s the most difficult part of the process&#8221;.<\/p>\n<p>Hence why I created Redactify. An all-in-one video &amp; audio censoring tool to give content creators the confidence to post without feat of crippling their income, and to give media teams a tool that handles the &#8216;busy work&#8217;, so they can focus on quality whilst still meeting deadlines.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Super useful for creators who want to stay brand-safe without manually hunting down every slip. The mouth blur on top of the bleep is a nice touch \u2014 covers both audio and video platforms.<\/p>\n<\/p>\n<p>Does it handle different languages or is it English-only for now?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@doganakbulut\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@doganakbulut<\/a>&nbsp;Thanks! Yeah exactly, felt like it wouldn&#8217;t be a proper solution without mouth blur.<\/p>\n<\/p>\n<p>To your question, yes it does! English is the most thoroughly supported language, but Spanish, French, German &amp; Portuguese are also supported (with more coming in future)<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This solves a real headache for creators who post across multiple platforms with different content policies. Manual bleeping is tedious and easy to miss. Curious how it handles context \u2014 some words are fine in one setting and not another. Does it let you customize the word list or is it one-size-fits-all? Congrats on the launch!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>For audio\/video tools, the edge cases are usually timeline alignment and review speed, not just detection accuracy. A profanity censor that stays frame-accurate and easy to audit is much more valuable than one that is merely clever.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@krekeltronics\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@krekeltronics<\/a>&nbsp;Interesting \u2014 there are tools in the app for reviewing &amp; editing, but for timeline alignment we rely on the outputs of our backend processing. Would be a welcome feature to let users edit the exact timing as well. Noted \ud83d\udcdd<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This looks genuinely useful for creators and editors who spend way too much time on repetitive cleanup work. One thing I&#8217;d be curious about is how accurate the detection is across different accents and speaking styles.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@henry_habib\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@henry_habib<\/a>&nbsp;Hey Henry! Glad to hear you also see the value \ud83d\ude0e<\/p>\n<\/p>\n<p>It&#8217;s a great question, under the hood Redactify uses ElevenLabs, which (from what I&#8217;ve seen &amp; experienced) seems to be best-in-class for transcription.<\/p>\n<\/p>\n<p>I&#8217;ve tested with a range of accents, but I&#8217;d be interested to hear your feedback if you get a chance to try it out yourself!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#14<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/3NQNKLV5OK7622\" class=\"app-title\">Wolfram Language 15<\/a><\/p>\n<div class=\"one-liner\">Computational language built for humans and AI agents<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">93<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Wolfram Language 15 \u4f5c\u4e3a\u4e00\u4e2a\u53ef\u88ab\u4eba\u7c7b\u4e0eAI\u5171\u540c\u7f16\u5199\u548c\u8bfb\u53d6\u7684\u201c\u8ba1\u7b97\u8bed\u8a00\u201d\uff0c\u89e3\u51b3\u4e86\u4f20\u7edf\u7f16\u7a0b\u8bed\u8a00\u5728AI\u751f\u6210\u4ee3\u7801\u65f6\u96be\u4ee5\u9a8c\u8bc1\u3001\u7406\u89e3\u548c\u4fe1\u4efb\u7684\u75db\u70b9\uff0c\u8ba9\u7528\u6237\u80fd\u76f4\u63a5\u68c0\u67e5\u5e76\u8fd0\u884cAI\u6240\u7406\u89e3\u7684\u7cbe\u786e\u903b\u8f91\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f5a796e8-7128-4f77-a8fa-f4a5689684a2.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/7391e4ae-23a9-4dcb-9d88-e7165d416b6f.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/b4880549-97f7-4696-a010-9b2811de4411.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/0ff25269-b98e-4b9c-b484-29f8c6120a2c.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/6c8b8238-dc56-402e-8730-6ecd080d7b51.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f15f0ebf-7eff-4998-8454-1d79ae6a81d0.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1710fc98-c09a-43bf-a3a8-aaade37c8acf.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/5489623d-36f7-4fec-b6f0-328ab23ebcaa.jpeg?auto=format\" data-video-url=\"https:\/\/www.youtube.com\/watch?v=a90LXMxLuW0\"><source src=\"https:\/\/www.youtube.com\/watch?v=a90LXMxLuW0\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Artificial Intelligence<\/span><br \/>\n            <span class=\"tag\">Data &#038; Analytics<\/span><br \/>\n            <span class=\"tag\">Science<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u8ba1\u7b97\u8bed\u8a00<\/span><br \/>\n            <span class=\"tag\">AI\u7f16\u7a0b<\/span><br \/>\n            <span class=\"tag\">\u7b26\u53f7\u8ba1\u7b97<\/span><br \/>\n            <span class=\"tag\">\u6570\u503c\u8ba1\u7b97<\/span><br \/>\n            <span class=\"tag\">\u53ef\u89c6\u5316<\/span><br \/>\n            <span class=\"tag\">\u77e5\u8bc6\u5e93<\/span><br \/>\n            <span class=\"tag\">\u7269\u7406\u5b66<\/span><br \/>\n            <span class=\"tag\">\u6570\u5b66<\/span><br \/>\n            <span class=\"tag\">\u7f16\u7a0b\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u5f00\u53d1\u8005\u5de5\u5177<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u4e3b\u8981\u8868\u8fbe\u4e86\u867d\u7136Wolfram Language\u5df2\u670938\u5e74\u5386\u53f2\uff0c\u4f46\u7b2c15\u7248\u4ecd\u5728\u589e\u52a0\u5b9e\u8d28\u6027\u6838\u5fc3\u529f\u80fd\uff1b\u5176\u6838\u5fc3\u4ef7\u503c\u5728\u4e8eAI\u751f\u6210\u7684\u4ee3\u7801\u53ef\u88ab\u4eba\u7c7b\u7cbe\u786e\u68c0\u67e5\u548c\u4fe1\u4efb\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Wolfram Language 15 \u7684\u53d1\u5e03\uff0c\u518d\u6b21\u51f8\u663e\u4e86Stephen Wolfram\u5bf9\u201c\u8ba1\u7b97\u8bed\u8a00\u201d\u8fd9\u4e00\u72ec\u7279\u54c1\u7c7b\u7684\u575a\u6301\u4e0e\u504f\u6267\u3002\u4ece\u4ea7\u54c1\u4ecb\u7ecd\u770b\uff0c\u5176\u8986\u76d6\u8303\u56f4\u4eceLLM\u3001AI\u5230\u5929\u6587\u3001\u5316\u5b66\u751a\u81f3\u89c6\u9891\u5904\u7406\uff0c\u582a\u79f0\u65e0\u6240\u4e0d\u5305\u7684\u77e5\u8bc6\u5de5\u7a0b\u5de8\u517d\u3002\u7136\u800c\uff0c\u8fd9\u79cd\u201c\u5927\u800c\u5168\u201d\u6070\u6070\u662f\u53cc\u5203\u5251\uff1a\u5bf9\u4e8e\u666e\u901a\u5f00\u53d1\u8005\uff0c\u5b66\u4e60\u66f2\u7ebf\u4f9d\u7136\u9661\u5ced\uff0c\u793e\u533a\u751f\u6001\u8fdc\u4e0d\u53caPython\u6216JavaScript\u6d3b\u8dc3\u3002\u5173\u952e\u5728\u4e8e\uff0c\u672c\u6b21\u66f4\u65b0\u771f\u6b63\u503c\u5f97\u5173\u6ce8\u7684\u662f\u201cLLM &#038; AI\u201d\u677f\u5757\u2014\u2014\u5b83\u8bd5\u56fe\u89e3\u51b3\u5927\u6a21\u578b\u65f6\u4ee3\u6700\u68d8\u624b\u7684\u4fe1\u4efb\u95ee\u9898\uff1a\u5f53AI\u751f\u6210\u4ee3\u7801\u65f6\uff0c\u4eba\u7c7b\u80fd\u5426\u7406\u89e3\u5e76\u9a8c\u8bc1\u5176\u63a8\u7406\uff1fWolfram Language \u7684\u7b26\u53f7\u5316\u672c\u8d28\u4f7f\u5f97\u4ee3\u7801\u5929\u7136\u5177\u5907\u81ea\u89e3\u91ca\u6027\uff0c\u8fd9\u6bd4\u9ed1\u7bb1\u5f0f\u7684\u795e\u7ecf\u7f51\u7edc\u8f93\u51fa\u66f4\u5177\u5ba1\u8ba1\u4ef7\u503c\u3002\u4f46\u5fc5\u987b\u6307\u51fa\uff0c\u8fd9\u79cd\u4ef7\u503c\u76ee\u524d\u5c40\u9650\u4e8e\u6280\u672f\u7cbe\u82f1\u4e0e\u79d1\u7814\u573a\u666f\u3002\u5728AI\u7f16\u7a0b\u52a9\u624b\u6279\u91cf\u6d8c\u73b0\u7684\u4eca\u5929\uff0c\u5982\u679cWolfram \u4e0d\u80fd\u964d\u4f4e\u4f7f\u7528\u95e8\u69db\u3001\u589e\u5f3a\u751f\u6001\u4e92\u64cd\u4f5c\u6027\uff0c\u5b83\u6781\u53ef\u80fd\u6ca6\u4e3a\u5c11\u6570\u6781\u5ba2\u7684\u201c\u7cbe\u5bc6\u73a9\u5177\u201d\uff0c\u800c\u975e\u901a\u7528\u8ba1\u7b97\u89e3\u51b3\u65b9\u6848\u3002\u771f\u6b63\u7684\u7a81\u7834\u5728\u4e8e\uff1a\u80fd\u5426\u8ba9\u90a3\u4e9b\u4e0d\u7cbe\u901a\u5f62\u5f0f\u5316\u8bed\u8a00\u7684\u4e1a\u52a1\u4eba\u5458\uff0c\u4e5f\u80fd\u901a\u8fc7\u81ea\u7136\u8bed\u8a00\u4e0e\u8fd9\u5957\u7cfb\u7edf\u4ea4\u4e92\u5e76\u83b7\u5f97\u53ef\u5ba1\u8ba1\u7684\u7ed3\u679c\uff1f\u5426\u5219\uff0c\u7b2c15\u7248\u4e0d\u8fc7\u662f\u53c8\u4e00\u6b21\u4ee4\u4eba\u656c\u754f\u7684\u6280\u672f\u6f14\u793a\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Wolfram Language 15<\/span>\n                <\/div>\n<div class=\"comment-content\">New and updated functionality in Wolfram Language 15: LLM &#038; AI, notebook &#038; user interfaces, symbolic &#038; numeric computations, visualization &#038; graphics, geometry &#038; graphs, astronomy, chemistry, life sciences, knowledgebase, video, PDEs &#038; system modeling, core language, compiler &#038; evaluation, repositories.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hi everyone!<\/p>\n<p>After 38 years, Wolfram Language 15 is still adding real core functionality.<\/p>\n<p>Stephen <a href=\"https:\/\/writings.stephenwolfram.com\/2026\/06\/launching-version-15-of-wolfram-language-mathematica-built-in-useful-ai-lots-of-new-core-functionality\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">frames<\/a> Wolfram Language this way:<\/p>\n<blockquote>\n<p>something beyond a programming language\u2014it\u2019s a full-scale computational language&#8230; intended not just to be written by humans, but also to be read by them, as a way to help formalize and crispen up their thoughts.<\/p>\n<\/blockquote>\n<p>In his view, when AI generates Wolfram Language code, the value is that it shows \u201cin precise terms\u201d what the AI understood \u2014 something humans can inspect, run, and trust.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#15<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/S35MFFM4CUKDUW\" class=\"app-title\">Tyto by ai-coustics<\/a><\/p>\n<div class=\"one-liner\">Audio insight that predicts voice AI performance<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">90<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Tyto \u662f\u4e00\u4e2a\u8f7b\u91cf\u7ea7\u97f3\u9891\u6d1e\u5bdf\u6a21\u578b\uff0c\u80fd\u591f\u5b9e\u65f6\u6216\u4e8b\u540e\u5206\u6790\u8bed\u97f3\u6d41\uff0c\u9884\u6d4b\u97f3\u9891\u8d28\u91cf\u95ee\u9898\uff08\u5982\u566a\u97f3\u3001\u5e72\u6270\u58f0\u3001\u4e22\u5305\uff09\u5bf9AI\u8bed\u97f3\u52a9\u624b\u6027\u80fd\u7684\u5177\u4f53\u5f71\u54cd\uff0c\u5e2e\u52a9\u5f00\u53d1\u8005\u5728\u5608\u6742\u7684\u771f\u5b9e\u573a\u666f\u4e2d\u5b9a\u4f4d\u5e76\u89e3\u51b3\u56e0\u97f3\u9891\u5bfc\u81f4\u5bf9\u8bdd\u5931\u8d25\u7684\u6839\u672c\u539f\u56e0\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/face01ef-dc97-4bc1-964b-fe34a094f02f.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1782682a-67e4-42d0-8658-680464376b51.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/5126f811-e271-411a-9518-0e1b32bb7c0d.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1eb2faf3-26c3-4718-ac7e-5bc33aaf4f6f.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/a1fda7fa-f59c-4d5e-a7e7-af1789dff2d0.jpeg?auto=format\" data-video-url=\"https:\/\/www.youtube.com\/watch?v=dNtmI_5Klgk\"><source src=\"https:\/\/www.youtube.com\/watch?v=dNtmI_5Klgk\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Developer Tools<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span><br \/>\n            <span class=\"tag\">Audio<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u97f3\u9891\u8d28\u91cf\u5206\u6790<\/span><br \/>\n            <span class=\"tag\">\u8bed\u97f3AI\u76d1\u63a7<\/span><br \/>\n            <span class=\"tag\">\u8bed\u97f3Agent\u6545\u969c\u9884\u6d4b<\/span><br \/>\n            <span class=\"tag\">\u5b9e\u65f6\u97f3\u9891\u6d1e\u5bdf<\/span><br \/>\n            <span class=\"tag\">\u5e72\u6270\u8bed\u97f3\u68c0\u6d4b<\/span><br \/>\n            <span class=\"tag\">\u8bed\u97f3\u6027\u80fd\u8bc4\u5206<\/span><br \/>\n            <span class=\"tag\">\u901a\u8bdd\u8d28\u91cf\u8bca\u65ad<\/span><br \/>\n            <span class=\"tag\">\u5f00\u53d1\u8005\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">AI-coustics<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u8ba4\u53ef\u5176\u89e3\u51b3\u4e86\u97f3\u9891\u95ee\u9898\u201c\u76f2\u70b9\u201d\u7684\u75db\u70b9\u3002\u4e3b\u8981\u7591\u95ee\u662f\uff1a\u68c0\u6d4b\u5230\u5e72\u6270\u65f6\u80fd\u5426\u81ea\u52a8\u89e6\u53d1Agent\u8c03\u6574\u6d41\u7a0b\uff1f\u8fd0\u884c\u662f\u5426\u4f1a\u589e\u52a0\u5b9e\u65f6\u901a\u8bdd\u5ef6\u8fdf\uff1f\u4ee5\u53ca\u80fd\u5426\u8f93\u51fa\u98ce\u9669\u4fe1\u53f7\u4f9b\u4e0b\u6e38\u7b56\u7565\uff08\u5982\u8f6c\u63a5\u4eba\u5de5\uff09\u4f7f\u7528\u3002\u5b98\u65b9\u56de\u590d\u89e3\u91ca\u4e86\u53ef\u914d\u7f6e\u9608\u503c\u3001\u4f20\u9012\u6807\u7b7e\uff0c\u4e14\u4e0d\u589e\u52a0\u5ef6\u8fdf\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Tyto\u7cbe\u51c6\u5207\u4e2d\u4e86\u5f53\u524d\u8bed\u97f3AI\u843d\u5730\u4e2d\u4e00\u4e2a\u865a\u4f2a\u7684\u201c\u76f2\u70b9\u201d\u2014\u2014\u5927\u591a\u6570\u56e2\u961f\u4f9d\u8d56ASR\u8f6c\u5f55\u6765\u8bca\u65ad\u5931\u8d25\uff0c\u5374\u5ffd\u7565\u4e86\u4e00\u4e2a\u5e38\u8bc6\uff1a\u8f6c\u5f55\u6587\u672c\u4e0d\u4f1a\u544a\u8bc9\u4f60\u5ba2\u6237\u80cc\u666f\u91cc\u7535\u89c6\u5f00\u5f97\u591a\u5927\u58f0\u3002\u4ea7\u54c1\u672c\u8eab\u8f7b\u91cf\u3001\u5b9e\u65f6\u3001\u5f00\u7bb1\u5373\u7528\uff0c\u5b9a\u4f4d\u6e05\u6670\uff0c\u6280\u672f\u4e0a\u4e5f\u6bd4\u7b80\u5355\u4fe1\u566a\u6bd4\u5ea6\u91cf\u9ad8\u7ea7\u5f97\u591a\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u5173\u952e\u5728\u4e8e\uff0cTyto\u672c\u8d28\u4e0a\u662f\u4e00\u4e2a\u201c\u544a\u8b66\u5668\u201d\u800c\u975e\u201c\u89e3\u51b3\u5668\u201d\u3002\u5b83\u544a\u8bc9\u4f60\u7684Agent\u201c\u4f60\u542c\u4e0d\u6e05\u4e86\u201d\uff0c\u4f46\u8ba9Agent\u53bb\u5904\u7406\u2014\u2014\u8fd9\u7b49\u4e8e\u628a\u7403\u8e22\u56de\u7ed9\u8c03\u7528\u65b9\u3002\u73b0\u5b9e\u4e2d\uff0c\u5f88\u591a\u5f00\u53d1\u8005\u8fde\u201c\u97f3\u9891\u4e0d\u4f73\u201d\u8fd9\u4e2a\u4fe1\u53f7\u90fd\u6ca1\u6709\uff0c\u800c\u73b0\u5728\u4ed6\u4eec\u6709\u4e86\uff0c\u5374\u53ef\u80fd\u53d1\u73b0\u81ea\u5df1\u7f3a\u4e4f\u52a8\u6001\u8c03\u6574\u7b56\u7565\u7684\u5de5\u7a0b\u80fd\u529b\u6216\u6a21\u578b\u517c\u5bb9\u6027\u3002\u8fd9\u5bfc\u81f4Tyto\u7684\u4e0a\u9650\u9ad8\u5ea6\u4f9d\u8d56\u4e0b\u6e38\u5de5\u7a0b\u6210\u719f\u5ea6\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u53e6\u4e00\u70b9\u503c\u5f97\u8b66\u60d5\uff1a\u5b83\u58f0\u79f0\u201c\u4e0d\u589e\u52a0\u5ef6\u8fdf\u201d\uff0c\u4f46\u201c\u9010\u5757\u626b\u63cf\u201d\u672c\u8eab\u5728\u5b9e\u65f6\u4ea4\u4e92\u4e2d\u4ecd\u53ef\u80fd\u9020\u6210\u51b3\u7b56\u6ede\u540e\u3002\u5bf9\u4e8e\u77ed\u4fc3\u5bf9\u8bdd\u6216\u8d85\u4f4e\u5ef6\u8fdf\u573a\u666f\uff0c\u8fd9\u4e2a\u201c\u5206\u6790\u5b8c\u518d\u53d1\u5206\u201d\u7684\u673a\u5236\u662f\u5426\u622a\u65ad\u7528\u6237\u5173\u952e\u8bdd\u8bed\uff0c\u9700\u8981\u5b9e\u6d4b\u9a8c\u8bc1\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u603b\u4f53\u800c\u8a00\uff0cTyto\u662f\u4e00\u4e2a\u597d\u5de5\u5177\uff0c\u4f46\u4e0d\u662f\u4e07\u80fd\u836f\u3002\u5bf9\u4e8e\u5df2\u7ecf\u5728\u5bf9\u4ed8\u590d\u6742\u58f0\u5b66\u573a\u666f\u7684\u56e2\u961f\u662f\u96ea\u4e2d\u9001\u70ad\uff0c\u5bf9\u4e8e\u4ec5\u5e0c\u671b\u201c\u63d2\u4e2aSDK\u5c31\u641e\u5b9a\u4e00\u5207\u201d\u7684\u56e2\u961f\uff0c\u5b83\u53ef\u80fd\u53ea\u662f\u53e6\u4e00\u4e2a\u9700\u8981\u6392\u67e5\u7684\u6570\u636e\u6e90\u3002\u771f\u6b63\u7684\u4ef7\u503c\u5728\u4e8e\u96c6\u6210\u540e\u7684\u95ed\u73af\u4f18\u5316\u80fd\u529b\uff0c\u800c\u975e\u5b64\u7acb\u7684\u4e00\u5957\u5206\u6570\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Tyto by ai-coustics<\/span>\n                <\/div>\n<div class=\"comment-content\">Tyto is a lightweight model that runs on your audio stream and predicts whether the audio reaching your agent will cause downstream failures. It outputs a single score plus a breakdown across six dimensions: noise, speaker reverb, speaker loudness, interfering speech, background media speech, packet loss. Try it here: https:\/\/ai-coustics-tyto-demo&#8211;ph.modal.run\/<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hi everyone, I&#8217;m Fabian, co-founder at ai-coustics.<br \/>The launch page covers very well what our newest product does but let me add here why we built it.<\/p>\n<p>Voice agents are moving into the real world, where <strong>audio is messy<\/strong>: think cars, call centers, kitchens, noisy streets. And in the real world they fail in ways the transcript never shows. Especially competing voices &#8211; like a TV in the background or a far-field speaker &#8211; and artifacts like packet loss on a bad connection can throw off agent&#8217;s performance. Teams see the bad outcome but have no idea the cause was audio. That blind spot is where trust in production voice AI breaks down.<\/p>\n<p>Tyto (Audio Insight) is the solution for that blind spot. It analyses the input audio and scores it: how noisy, how reverberant, how much interfering speech, how likely the agent is to mishear. It&#8217;s a signal you can actually act on.<br \/>It works in two modes: <strong>real-time monitoring<\/strong> so you catch failing calls as they happen or adjust the agent flow, and <strong>post-call analysis<\/strong> so you can finally answer what went wrong. And it runs on the same on-device ai-coustics SDK that&#8217;s already shipped in production by voice AI teams.<\/p>\n<p>Easiest way to feel it: point Tyto at a recording of one of your worst calls and watch it highlight exactly where the audio fell apart. Full write-up <a href=\"https:\/\/ai-coustics.com\/blog\/tyto-audio-insight-model?utm_source=product-hunt&amp;utm_medium=social&amp;utm_campaign=tyto-launch-first-comment\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">here<\/a>. Link to documentation <a href=\"https:\/\/docs.ai-coustics.com\/guides\/tyto?utm_source=product-hunt&amp;utm_medium=social&amp;utm_campaign=tyto-launch-first-comment\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><strong>here<\/strong><\/a>.<\/p>\n<p>We built this for the people shipping voice agents into hard environments. Tell us what&#8217;s missing, we&#8217;re reading every comment. \ud83d\ude4c<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>13<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hey hey, Mila from ai-coustics here &#8211; I&#8217;m looking forward to seeing what you all think!<\/p>\n<p>If you want to try it in your own infrastructure right away, you can get your SDK key <a href=\"https:\/\/developers.ai-coustics.com\/dashboard\/sdk\/keys?utm_source=product-hunt&amp;utm_medium=social&amp;utm_campaign=tyto-launch-mila-comment\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><strong>here<\/strong><\/a> \ud83d\ude0a<br \/>You can find full docs here: <a href=\"https:\/\/docs.ai-coustics.com\/?utm_source=product-hunt&amp;utm_medium=social&amp;utm_campaign=tyto-launch-mila-comment\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/docs.ai-coustics.com\/<\/a><\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>9<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@ai_mila\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@ai_mila<\/a>&nbsp;really cool launch!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on the launch! I&#8217;m curious what specific agent flow adjustments can Tyto trigger automatically when it detects interfering speech mid-conversation?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>8<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p>@crystalmei&nbsp;<strong>TLDR<\/strong>: Tyto gives you the raw metrics on how much interfering speech there is and gives Voice AI builders the flexibility to threshold those values and emit tags, which can be propagated to the LLM or voice agent to intervene.<\/p>\n<p><strong>Deeper Dive<\/strong>: Tyto outputs two interfering speech quality metrics respectively for in-the-room interfering speakers and devices playing content containing speech. They are both numerical values that go from 0 (clean audio) to 1 (lots of interfering speech). Crucially they are <em>agent agnostic<\/em> to give builders control over how they leverage them. <\/p>\n<p>The flow we would recommend is to run Tyto over your user audio and threshold the interfering speech metrics at 0.35 (medium) and 0.6 (poor). These bands can then be used realtime to propagate information (e.g. textual tags like &#8220;High Background Speech&#8221; or &#8220;TV\/radio\/device detected&#8221;) to your Voice Agent or LLM. <\/p>\n<p>You can also preemptively flush the agent&#8217;s turn when the threshold is exceeded and have it tell the user to move somewhere quieter. We&#8217;ve seen use cases like these with some customers, which is pretty cool.<\/p>\n<p>Hope that helps! You can find lots more information in the <a href=\"https:\/\/docs.ai-coustics.com\/guides\/tyto\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Tyto guide in the ai-coustics docs<\/a> \ud83d\ude42<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>9<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>It basically feels like the Voice AI agents are not deaf anymore! I think there was some degree of the Audio Intelligence in some of the STT engines such as understanding certain sounds etc but the acoustics awareness is a whole new level! <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>6<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>For anyone who wants to try this hands-on: we\u2019ve open-sourced the demo agent codebase so you can run it yourself or see how to integrate it into your own voice agent setup. Check it out here: [<a href=\"https:\/\/github.com\/ai-coustics\/Project-Tyto-Real-Time-Demo\/tree\/ver\/python\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">link<\/a>]<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>5<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@corvj\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@corvj<\/a>&nbsp;So cool, thanks for sharing this!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Looks great! Does running on-device add latency to the live call, or is the scoring free?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@louislecat\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@louislecat<\/a>&nbsp;In the &#8216;real-time&#8217; mode, Tyto scans chunks of audio (depends how you set it, but for example 5 seconds progressively) and sends the scores after analyzing. It doesn&#8217;t add latency to the call itself.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>This is a useful blind spot to solve. In sales and support voice agents, transcripts often hide the real reason trust broke down. Do you see Tyto feeding a live confidence\/risk signal into the agent policy, like switching to confirmation mode, slowing down, or escalating to a human when audio quality crosses a threshold?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@rahulbhavsar\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@rahulbhavsar<\/a>&nbsp;Exactly this. Tyto&#8217;s major value add is that it gives you the headline Risk Score in realtime so you can trigger an intervention when it crosses a critical threshold. <\/p>\n<p>It leaves <em>you<\/em> the flexibility to choose your intervention downstream and indeed that could be routing to a human, asking the user to turn off a TV or switching from automatic to manual turn-taking, for example. You can tailor the intervention based on the six more granular audio quality dimensions Tyto offers (interfering speech, media playing in the background, noise etc.)<\/p>\n<p>Sales is a demanding use case for voice agents so this kind of acoustic awareness is exactly the edge Tyto aims to provide.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#16<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/5EPNMKHP73F6IK\" class=\"app-title\">Locus Founder<\/a><\/p>\n<div class=\"one-liner\">Text an AI agent and it builds + runs your business<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">90<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Locus Founder \u662f\u4e00\u4e2a\u80fd\u901a\u8fc7\u6587\u672c\u5bf9\u8bdd\u3001\u4ece\u96f6\u5230\u4e00\u5168\u81ea\u52a8\u6784\u5efa\u5e76\u8fd0\u8425\u4e00\u5bb6\u5b8c\u6574\u5546\u4e1a\u5b9e\u4f53\u7684AI\u4ee3\u7406\uff0c\u89e3\u51b3\u4e86\u521b\u4e1a\u8005\u4ece\u521b\u610f\u5230\u4e1a\u52a1\u843d\u5730\u4e4b\u95f4\u7684\u7e41\u7410\u6267\u884c\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/f1dedded-1e24-48c9-9f9d-f1e5a0135c65.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/7f1e6a62-189d-49cb-887f-ae0a1a4c92a2.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/9922b370-bca8-4dda-a992-909db9cf7169.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/1535e338-cb20-479b-a315-851a0ce52360.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/9e8ea8bb-aaf8-41c2-bc4f-38015c16a6e6.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/7314ca3a-f4e7-4d60-b302-e81664bb1576.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/eFhNN5HNMWs\"><source src=\"https:\/\/youtu.be\/eFhNN5HNMWs\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">SaaS<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span><br \/>\n            <span class=\"tag\">No-Code<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">AI\u4ee3\u7406<\/span><br \/>\n            <span class=\"tag\">\u521b\u4e1a\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u65e0\u4ee3\u7801\u5f00\u53d1<\/span><br \/>\n            <span class=\"tag\">\u5168\u6808\u5e94\u7528<\/span><br \/>\n            <span class=\"tag\">\u81ea\u52a8\u5316\u8fd0\u8425<\/span><br \/>\n            <span class=\"tag\">Stripe\u652f\u4ed8<\/span><br \/>\n            <span class=\"tag\">\u5e7f\u544a\u6295\u653e<\/span><br \/>\n            <span class=\"tag\">\u4f9b\u5e94\u94fe\u6574\u5408<\/span><br \/>\n            <span class=\"tag\">YCombinator<\/span><br \/>\n            <span class=\"tag\">\u5546\u4e1a\u81ea\u52a8\u5316<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u8ba4\u53ef\u5176\u201c\u6301\u7eed\u8fd0\u8425\u201d\u800c\u975e\u4ec5\u751f\u6210\u8d44\u4ea7\u7684\u72ec\u7279\u4ef7\u503c\u3002\u4e3b\u8981\u7591\u95ee\u96c6\u4e2d\u5728\uff1a\u4ee3\u7406\u7684\u81ea\u4e3b\u6743\u8fb9\u754c\uff08\u5982\u5e7f\u544a\u652f\u51fa\u662f\u5426\u9700\u8981\u9010\u7b14\u6279\u51c6\uff09\u3001\u5b9a\u4ef7\u7b56\u7565\u4e0e\u5229\u6da6\u7387\u5982\u4f55\u8003\u91cf\u3001\u4ee5\u53ca\u4ea7\u54c1\u8d27\u6e90\uff08\u5982\u4e00\u4ef6\u4ee3\u53d1\uff09\u7684\u5177\u4f53\u5b9e\u73b0\u65b9\u5f0f\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Locus Founder \u7684\u91ce\u5fc3\u503c\u5f97\u80af\u5b9a\uff0c\u5b83\u8bd5\u56fe\u89e3\u51b3\u7684\u5e76\u975e\u201c\u505a\u4e2a\u7f51\u7ad9\u201d\u8fd9\u79cd\u8868\u5c42\u9700\u6c42\uff0c\u800c\u662f\u521b\u4e1a\u8fc7\u7a0b\u4e2d\u6700\u4ee4\u4eba\u538c\u70e6\u7684\u201c\u4e2d\u95f4\u5730\u5e26\u201d\u2014\u2014\u57df\u540d\u3001\u652f\u4ed8\u3001\u4f9b\u5e94\u94fe\u3001\u5e7f\u544a\u3001\u5ba2\u670d\uff0c\u8fd9\u4e9b\u7410\u788e\u4f46\u5fc5\u8981\u7684\u73af\u8282\u3002\u4ece\u4ea7\u54c1\u4ecb\u7ecd\u770b\uff0c\u5b83\u786e\u5b9e\u4e0d\u50cfMidjourney\u6216Copilot\u90a3\u6837\u53ea\u505a\u8f85\u52a9\uff0c\u800c\u662f\u5c1d\u8bd5\u6210\u4e3a\u201c\u4ee3\u8fd0\u8425\u201d\u7684AI\u7248\u672c\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u771f\u6b63\u7684\u4ef7\u503c\u6d3c\u5730\uff0c\u53ef\u80fd\u5e76\u4e0d\u5728\u201c\u81ea\u52a8\u5efa\u7ad9\u201d\u6216\u201c\u5bf9\u63a5Stripe\u201d\u8fd9\u4e9b\u76f8\u5bf9\u6210\u719f\u7684\u529f\u80fd\u4e0a\u3002\u6838\u5fc3\u770b\u70b9\u5728\u4e8e\u5176\u201c\u6301\u7eed\u8fd0\u8425\u201d\u80fd\u529b\uff1aAI\u4f5c\u4e3a\u540e\u53f0\u4ee3\u7406\uff0c\u8d1f\u8d23\u65e5\u5e38\u8fd0\u8f6c\uff0c\u4ec5\u5728\u9700\u8981\u51b3\u7b56\u6216\u82b1\u94b1\u65f6\u624d\u901a\u77e5\u4eba\u7c7b\u3002\u8fd9\u79cd\u201c\u4eba\u673a\u534f\u540c\u201d\u7684\u6a21\u5f0f\uff0c\u5728\u7406\u8bba\u4e0a\u5927\u5e45\u964d\u4f4e\u4e86\u521b\u4e1a\u7684\u8bd5\u9519\u6210\u672c\u548c\u65f6\u95f4\u95e8\u69db\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u7136\u800c\uff0c\u9510\u8bc4\u5fc5\u987b\u6307\u51fa\u5176\u5c1a\u672a\u88ab\u5145\u5206\u9a8c\u8bc1\u7684\u77ed\u677f\uff1a\n            <\/p>\n<p class=\"ai-content\">\n                1. **\u4f9b\u5e94\u94fe\u6df1\u6c34\u533a**\uff1a\u53f7\u79f0\u5bf9\u63a5180\u4e07\u4ef6\u5546\u54c1\uff0c\u4f46\u4e00\u4ef6\u4ee3\u53d1\u7684\u5229\u6da6\u901a\u5e38\u6781\u8584\u3002AI\u5982\u4f55\u5728\u4ef7\u683c\u6218\u4e2d\u81ea\u52a8\u4e3a\u5356\u5bb6\u6311\u9009\u6709\u5229\u6da6\u7a7a\u95f4\u7684\u5355\u54c1\uff1f\u8bc4\u8bba\u4e2d\u6709\u7591\u95ee\u201c\u662f\u5426\u8003\u8651\u5b9a\u4ef7\u7b56\u7565\u201d\uff0c\u5b98\u65b9\u56de\u590d\u6a21\u7cca\uff0c\u8fd9\u5f88\u5173\u952e\u3002\u5806\u780cSKU\u4e0d\u7b49\u4e8e\u7ecf\u8425\u80fd\u529b\u3002\n            <\/p>\n<p class=\"ai-content\">\n                2. **\u4fe1\u4efb\u4e0e\u51b3\u7b56\u7684\u8fb9\u754c**\uff1a\u521b\u4e1a\u672c\u8d28\u662f\u65e0\u6570\u6a21\u7cca\u51b3\u7b56\u7684\u96c6\u5408\uff08\u5982\u5e7f\u544a\u8bed\u7684\u8c03\u6027\u3001\u76ee\u6807\u53d7\u4f17\u7684\u9009\u62e9\uff09\u3002AI\u5982\u4f55\u786e\u4fdd\u201c\u91c7\u8bbf\u201d\u7528\u6237\u540e\u4ea7\u51fa\u7684\u662f\u771f\u6b63\u7684\u201c1 of 1\u201d\u54c1\u724c\uff0c\u800c\u975e\u6392\u5217\u7ec4\u5408\u7684\u4f2a\u5b9a\u5236\uff1f\u5982\u679c\u6240\u6709\u5173\u952e\u51b3\u7b56\u4ecd\u9700\u4eba\u7c7b\u6279\u51c6\uff0c\u90a3\u201c\u81ea\u52a8\u8fd0\u8425\u201d\u7684\u6548\u7387\u548c\u4ef7\u503c\u4f1a\u5927\u6253\u6298\u6263\u3002\n            <\/p>\n<p class=\"ai-content\">\n                3. **\u5546\u4e1a\u53ef\u6301\u7eed\u6027**\uff1aY Combinator\u80cc\u4e66\u662f\u4eae\u70b9\uff0c\u4f46\u4f5c\u4e3a\u4ea7\u54c1\u672c\u8eab\uff0c\u5b83\u662f\u4e00\u4e2a\u9762\u5411\u201c\u61d2\u4eba\u521b\u4e1a\u8005\u201d\u7684\u4fe1\u7528\u5de5\u5382\u3002\u8fd9\u7c7b\u7528\u6237\u5f80\u5f80\u7f3a\u4e4f\u8bd5\u9519\u6df1\u5ea6\uff0c\u4e00\u65e6AI\u672a\u80fd\u5e26\u6765\u9884\u671fROI\uff0c\u6d41\u5931\u4f1a\u5f88\u5feb\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4e00\u53e5\u8bdd\u603b\u7ed3\uff1aLocus Founder \u662f\u4e00\u4e2a\u806a\u660e\u7684\u201c\u521b\u4e1a\u81ea\u52a8\u5316\u201d\u4ea7\u54c1\uff0c\u5b83\u66f4\u63a5\u8fd1\u4e00\u4e2a\u201c\u6700\u5c0f\u53ef\u884c\u5546\u4e1a\uff08MVB\uff09\u5de5\u5382\u201d\uff0c\u800c\u975e\u771f\u6b63\u7684\u201c\u5546\u4e1a\u5927\u8111\u201d\u3002\u5bf9\u4e8e\u90a3\u4e9b\u5bf9\u6280\u672f\u4e00\u7a8d\u4e0d\u901a\u4f46\u62e5\u6709\u660e\u786e\u4e14\u4f4e\u95e8\u69db\u9500\u552e\u6a21\u5f0f\u60f3\u6cd5\u7684\u4eba\u6765\u8bf4\uff0c\u5b83\u53ef\u80fd\u662f\u6700\u5feb\u7684\u8d77\u8dd1\u7ebf\u3002\u4f46\u5207\u52ff\u9ad8\u4f30AI\u89e3\u51b3\u201c\u5356\u4ec0\u4e48\u3001\u600e\u4e48\u5356\u3001\u5356\u7ed9\u8c01\u201d\u7b49\u6838\u5fc3\u5546\u4e1a\u95ee\u9898\u7684\u80fd\u529b\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Locus Founder<\/span>\n                <\/div>\n<div class=\"comment-content\">Locus Founder builds and runs a whole business for you. Most AI tools only build you a landing page, Locus Founder interviews you, designs the brand, and ships a full-stack app. Locus Founder doesn&#8217;t stop there; it sets up Stripe payments, sources your product, creates and publishes ads, and so much more. Locus Founder is always working in the background and pings you to approve any decisions or spending. No templates, no forms, no code. Locus Founder is backed by YCombinator.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Hey Product Hunt \ud83d\udc4b<\/p>\n<p>I&#8217;m Cole, founder and CEO of Locus<\/p>\n<p>I started Locus because of a frustration I couldn&#8217;t shake: the hardest part of starting a business isn&#8217;t the idea, it&#8217;s everything between the idea and a live business that actually takes money. Domain, landing page, payments, brand, ads, outreach, and finding the first customers. I watched so many good ideas die in that gap, including a few of my own.<\/p>\n<p>So we built Locus Founder. It&#8217;s an AI agent you talk to like a cofounder. You text it an idea, and it does the real work:<\/p>\n<p>\ud83e\udde0 Interviews you about your audience and taste first, so you never get a generic template; every business is 1 of 1.<br \/>\ud83d\udee0\ufe0f Ships a real full-stack app with auth, a database, and payments<br \/>\ud83d\udcb3 Wires up Stripe so you can take money on day one<br \/>\ud83c\udfa8 Builds and publishes your brand, ad creatives, and cold outreach<br \/>\ud83e\udd16 Then runs in the background and only pings you when it needs a decision or a spend approval<\/p>\n<p>The thing I&#8217;m proudest of: you can run the whole thing from your phone over text, before you even make an account.<\/p>\n<p>It&#8217;s live today. Text your idea and watch it work live at <a href=\"http:\/\/locusfounder.com\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">locusfounder.com<\/a>.<\/p>\n<p>We&#8217;re still early, and the feedback of this community means a lot to me, especially on the onboarding. What would it take for you to trust an agent to build and run a business for you?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>3<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@cole_dermott\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@cole_dermott<\/a>&nbsp;Interesting vision. Most AI tools stop at generating assets, so the idea of an agent that continues running the business and only asks for approval on key decisions is pretty compelling. Curious how much autonomy users typically give it and which tasks still require the most human input.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Super excited for this launch!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>The tool I wish I had back in high school. Super excited to take everyone from idea to first sale as fast as we can!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>What kinds of decisions does it ask you to approve most often, like ad spend and pricing or product changes?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@karimbenkeroum\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@karimbenkeroum<\/a>&nbsp;Hi Karim, all of the above! Anything that involves spending requires human approval. That might be deploying a website, making a new product, or launching an ad. The human stays in the loop, so you know where your money is going. <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>An interesting concept. I&#8217;d be curious to know what level of control and approval I have before it starts making decisions or spending money. Congrats on the launch!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">@henry_habib Hello<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@henry_habib\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@henry_habib<\/a>&nbsp;Hey Henry, thank you! Regarding your question, a user has full control over where they are spending. Every time a spend occurs, the user must approve the spend, as well as being notified of how much was spent.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Curious how granular the spend approval flow is, like, does it ask before every ad dollar, or only past a threshold? Also sources your product is doing a lot of work in that sentence, is that dropshipping integrations or something more? Would love to see a case study of a non templated output from two very different interviews.<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@madil\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@madil<\/a>&nbsp;Hi Muhammad! Before the agent ever spends, it always asks for your approval. From approving a website build or launching an ad, the user is always in control and knows exactly where their credits are being spent. Regarding your product sourcing question, yes! We have a dropshipping integration with multiple suppliers, including Printify, Wholesale2B, CJ Dropshipping, and more! This is a catalog of over 1.8 million products for a user to pick from!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<div class=\"reply-item\">\n<div class=\"reply-content\">@andreas_lucas  Appreciate it! With dropshipping margins typically thin, does the agent factor in pricing strategy or margin targets when it picks products, or does it leave pricing entirely to the user?<br \/>\nThe 1.8M catalog is amazing!<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Finally, builts an agent that actually <em>does<\/em> the grunt work instead of just handing me another generic to-do list. Love this. <a href=\"https:\/\/www.producthunt.com\/@cole_dermott\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"cole_dermott\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@cole_dermott<\/a> <\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>great product!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@adi_singh13\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@adi_singh13<\/a>&nbsp;Wouldn&#8217;t be possible without the amazing team at AgentMail!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#17<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/ZR32M4EYACOZKM\" class=\"app-title\">ClipDone<\/a><\/p>\n<div class=\"one-liner\">Automatic short-form video editing<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">89<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>ClipDone\u901a\u8fc7\u81ea\u52a8\u5206\u6790\u539f\u59cb\u7d20\u6750\uff0c\u4e00\u952e\u751f\u6210\u5e26\u5b57\u5e55\u3001B-roll\u548c\u52a8\u753b\u7684\u77ed\u89c6\u9891\uff0c\u89e3\u51b3\u4f01\u4e1a\u771f\u4eba\u51fa\u955c\u5185\u5bb9\u526a\u8f91\u8017\u65f6\u3001\u6210\u672c\u9ad8\u3001\u6d41\u7a0b\u590d\u6742\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/a6f09d61-208b-4652-af32-ac8483e05bce.jpeg?auto=format\" data-video-url=\"https:\/\/youtu.be\/894xdcDtzEM\"><source src=\"https:\/\/youtu.be\/894xdcDtzEM\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/64830182-d306-4b03-81d7-42cbb42e8fa9.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/0d5cb9e3-05d6-441f-847e-7d1a2ae1ba0e.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/176d2bf9-a904-49d4-9702-4290be367082.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/85a8192b-6d6c-4628-bd1e-1d68c7a42036.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Social Media<\/span><br \/>\n            <span class=\"tag\">Marketing<\/span><br \/>\n            <span class=\"tag\">Video<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u81ea\u52a8\u89c6\u9891\u7f16\u8f91<\/span><br \/>\n            <span class=\"tag\">AI\u526a\u8f91<\/span><br \/>\n            <span class=\"tag\">\u77ed\u89c6\u9891\u5236\u4f5c<\/span><br \/>\n            <span class=\"tag\">\u5185\u5bb9\u8425\u9500<\/span><br \/>\n            <span class=\"tag\">\u70ed\u95e8\u77ed\u7247<\/span><br \/>\n            <span class=\"tag\">\u5b57\u5e55\u751f\u6210<\/span><br \/>\n            <span class=\"tag\">\u7d20\u6750\u5206\u6790<\/span><br \/>\n            <span class=\"tag\">\u51fa\u6d77\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">SaaS<\/span><br \/>\n            <span class=\"tag\">\u6548\u7387\u5de5\u5177<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u521b\u59cb\u4ebaMoritz\u6307\u51fa\u624b\u52a8\u526a\u8f91\u4e0e\u5916\u5305\u7ba1\u7406\u6210\u672c\u9ad8\u3001\u6d41\u7a0b\u590d\u6742\uff0cClipDone\u65e8\u5728\u8ba9\u7528\u6237\u53ea\u9700\u4e0a\u4f20\u7d20\u6750\u5373\u53ef\u83b7\u5f97\u6210\u54c1\u3002\u7528\u6237\u5efa\u8bae\u589e\u52a0\u6309\u6761\u4ed8\u8d39\u6a21\u5f0f\uff08\u598215\u7f8e\u5143\/\u6761\uff09\uff0c\u4ee5\u6ee1\u8db3\u4f4e\u9891\u4f7f\u7528\u9700\u6c42\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                ClipDone\u5207\u4e2d\u4e86\u4e00\u4e2a\u771f\u5b9e\u4f46\u5371\u9669\u7684\u75db\u70b9\uff1a\u526a\u8f91\u5916\u5305\u7684\u201c\u7b2c\u4e8c\u516c\u53f8\u201d\u9677\u9631\u3002\u5b83\u8bd5\u56fe\u5c06\u4e13\u4e1a\u526a\u8f91\u6d41\u7a0b\u9ed1\u7bb1\u5316\uff0c\u8ba9\u4f01\u4e1a\u4e3b\u4ece\u201c\u7ba1\u7406\u526a\u8f91\u5e08\u201d\u7684\u6ce5\u6f6d\u4e2d\u89e3\u8131\u3002\u4ece\u4ea7\u54c1\u770b\uff0c\u5176\u4ef7\u503c\u5e76\u975e\u201c\u526a\u8f91\u201d\u672c\u8eab\u2014\u2014\u4efb\u4f55AI\u5de5\u5177\u90fd\u80fd\u526a\u2014\u2014\u800c\u662f\u5bf9\u201c\u771f\u4eba\u51fa\u955c\u201d\u8fd9\u4e00\u7279\u5b9a\u573a\u666f\u7684\u6df1\u5ea6\u652f\u6301\uff1a\u81ea\u52a8\u6293\u53d6\u6700\u4f73\u8bed\u6bb5\u3001\u5339\u914d\u52a8\u6001\u5b57\u5e55\u4e0e\u76f8\u5173B-roll\u3002\u8fd9\u6070\u6070\u662f\u4f20\u7edfAI\u751f\u6210\u89c6\u9891\uff08\u5982Sora\uff09\u96be\u4ee5\u66ff\u4ee3\u7684\u9886\u57df\uff0c\u4e5f\u662f\u8425\u9500\u8d44\u4ea7\u4e2d\u4fe1\u4efb\u5ea6\u6700\u9ad8\u7684\u90e8\u5206\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4f46\u98ce\u9669\u540c\u6837\u660e\u663e\u3002\u76ee\u524d89\u7968\u7684\u53cd\u9988\u548c\u201c\u6309\u6761\u4ed8\u8d39\u201d\u7684\u547c\u58f0\u6697\u793a\u4e86\u4e24\u4e2a\u6838\u5fc3\u95ee\u9898\uff1a\u4e00\u662f\u5b9a\u4ef7\u6a21\u578b\u4e0e\u7528\u6237\u5b9e\u9645\u4f7f\u7528\u9891\u7387\u8131\u8282\uff0c\u8ba2\u9605\u5236\u53ef\u80fd\u627c\u6740\u5c1d\u9c9c\u610f\u613f\uff1b\u4e8c\u662f\u201c\u81ea\u52a8\u526a\u8f91\u201d\u7684\u8d28\u91cf\u4e0a\u9650\u2014\u2014\u5982\u4f55\u786e\u4fdd\u5b83\u4e0d\u88ab\u574f\u7d20\u6750\u8bef\u5bfc\uff0c\u4e0d\u4ea7\u751f\u610f\u4e49\u4e0d\u660e\u7684\u955c\u5934\u7ec4\u63a5\uff1f\u4e00\u65e6\u67d0\u6761\u89c6\u9891\u56e0AI\u8bef\u5224\u800c\u663e\u5f97\u6ed1\u7a3d\uff0c\u54c1\u724c\u65b9\u5c06\u76f4\u63a5\u4e70\u5355\u3002\n            <\/p>\n<p class=\"ai-content\">\n                ClipDone\u771f\u6b63\u7684\u62a4\u57ce\u6cb3\u4e0d\u5728\u6280\u672f\uff0c\u800c\u5728\u201c\u6570\u636e\u98de\u8f6e\u201d\uff1a\u7528\u6237\u4e0a\u4f20\u7684\u7d20\u6750\u7c7b\u578b\u548c\u6700\u7ec8\u53d1\u5e03\u7684\u526a\u8f91\u7ed3\u679c\uff0c\u5c06\u6784\u6210\u526a\u6cd5\u504f\u597d\u7684\u8bad\u7ec3\u96c6\u3002\u5982\u679c\u5b83\u53ea\u505a\u7b80\u5355\u7684\u97f3\u9891\u9a71\u52a8\u526a\u8f91\uff08\u6309\u58f0\u97f3\u6ce2\u5f62\u5207\u9759\u9ed8\uff09\uff0c\u90a3\u4e0e\u526a\u6620\u3001CapCut\u5185\u7f6e\u7684\u201c\u56fe\u6587\u6210\u7247\u201d\u65e0\u5f02\u3002\u552f\u6709\u5728\u201c\u6545\u4e8b\u7ebf\u91cd\u6784\u201d\u548c\u201c\u60c5\u7eea\u8282\u594f\u5339\u914d\u201d\u4e0a\u903c\u8fd1\u771f\u4eba\u526a\u8f91\u5e08\uff0c\u5b83\u624d\u503c\u5f97\u88ab\u5f53\u6210\u5de5\u5177\u800c\u975e\u73a9\u5177\u3002\u5426\u5219\uff0c\u5b83\u53ea\u4f1a\u662f\u53e6\u4e00\u4e2a\u201c\u7701\u6389\u6c9f\u901a\u8d39\u3001\u4f46\u652f\u4ed8\u7406\u89e3\u8d39\u201d\u7684\u4e2d\u95f4\u4ea7\u7269\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">ClipDone<\/span>\n                <\/div>\n<div class=\"comment-content\">Creating video content still takes too much work. The best marketing videos usually come from real people speaking to a camera, but manual editing is slow and expensive. It shouldn\u2019t be easier to generate AI videos than to edit real ones. That\u2019s why we built ClipDone. It automatically turns your raw footage into ready-to-post shorts. Just upload your footage and ClipDone edits it together, adds subtitles, b-roll, and animations.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\ud83d\udc4b Hey! I\u2019m Moritz, creator of ClipDone.<\/p>\n<p>Editing videos is still hard. That isn&#8217;t surprising because it didn&#8217;t really change for the last few decades.<\/p>\n<p>Learning to edit yourself takes time and will only work at first with few videos.<\/p>\n<p>So you need to hire. But that costs a lot of focus and flexibility.<br \/>\nYou need new people, which needs communication and managing. All the usual scaling up stuff&#8230; .<br \/>\nOr you go with expensive and slow agencies where you have to send timestamped feedback in Slack.<\/p>\n<p>I helped build a marketing agency over the last few years and the editing team almost turned into a second company.<br \/>\nI&#8217;ve heard of similar situations from other people. You basically need to build a whole editing agency internally.<\/p>\n<p>A lot companies then don&#8217;t even consider doing videos themselves or offering them to clients because its too much effort.<\/p>\n<p>Ideally, you should be able to just drop your recorded footage somewhere and then get out a finished video. So you don&#8217;t have to think about editing anymore.<br \/>\nThat&#8217;s what we&#8217;re building with ClipDone<\/p>\n<p>1. You upload your footage.<br \/>\n2. ClipDone automatically analyzes and edits the clips, creates fitting animations, subtitles, zooms, &#8230; everything needed for a finished short.<br \/>\n3. Download and publish the video. (Write feedback notes if you want anything changed.)<\/p>\n<p>Try it with your own footage at <a href=\"https:\/\/clipdone.app\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/clipdone.app<\/a>.<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats with the launch!<\/p>\n<p>ClipDone looks solid, good job! The only thing I can dream of is pay-per-clip pricing. I don&#8217;t usually need to edit videos every month but I need it ocassionally. So I would be happy to pay 15$ per video instead of having a subscription.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#18<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/5WW66DFQBH6RCJ\" class=\"app-title\">Snapchat SPECS<\/a><\/p>\n<div class=\"one-liner\">Powerful computer built into lightweight see-through glasses<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">85<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Snapchat SPECS \u5c06\u8f7b\u91cf\u5316\u900f\u660e\u773c\u955c\u4e0e\u72ec\u7acb\u8ba1\u7b97\u80fd\u529b\u7ed3\u5408\uff0c\u8ba9\u4f60\u5728\u4e0d\u8131\u79bb\u73b0\u5b9e\u73af\u5883\u7684\u524d\u63d0\u4e0b\uff0c\u5b8c\u6210\u5b66\u4e60\u3001\u5de5\u4f5c\u4e0e\u5a31\u4e50\u4efb\u52a1\uff0c\u89e3\u51b3\u7684\u662f\u667a\u80fd\u7a7f\u6234\u8bbe\u5907\u201c\u5e72\u6270\u6c89\u6d78\u201d\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <video class=\"media-content\" poster=\"https:\/\/ph-files.imgix.net\/1d9a5e01-6003-408f-9f63-ab99c623f791.jpeg?auto=format\" data-video-url=\"https:\/\/www.youtube.com\/watch?v=h9OzwbeQ_6g\"><source src=\"https:\/\/www.youtube.com\/watch?v=h9OzwbeQ_6g\" type=\"video\/mp4\"><\/video><\/p>\n<div class=\"video-overlay\">\n<div class=\"play-icon\">\u25b6<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/b0d55c6d-7eb6-4d8a-b2ba-ffc55d342902.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/8ee48493-3231-4b80-b520-a99d8208dcda.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/7727674b-9223-41de-becd-2f89b34b3e76.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/c7af7d7d-9b07-467b-ba3d-dec83ea0469a.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/27273d9e-b897-4fa0-b8da-13e31963c781.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/613be3be-a449-4bbd-be92-9e8e9bf816f4.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Virtual Reality<\/span><br \/>\n            <span class=\"tag\">Hardware<\/span><br \/>\n            <span class=\"tag\">Augmented Reality<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">AR\u773c\u955c<\/span><br \/>\n            <span class=\"tag\">\u72ec\u7acb\u8ba1\u7b97<\/span><br \/>\n            <span class=\"tag\">\u667a\u80fd\u7a7f\u6234<\/span><br \/>\n            <span class=\"tag\">\u8f7b\u91cf\u5316<\/span><br \/>\n            <span class=\"tag\">\u589e\u5f3a\u73b0\u5b9e<\/span><br \/>\n            <span class=\"tag\">\u5f00\u53d1\u8005\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">Lens Studio<\/span><br \/>\n            <span class=\"tag\">MCP<\/span><br \/>\n            <span class=\"tag\">Snapchat<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u8d28\u75912195\u7f8e\u5143\u5b9a\u4ef7\u8fc7\u9ad8\uff0c\u8ba4\u4e3a\u534e\u5c14\u8857\u4e0d\u770b\u597d\u3002\u6709\u8bc4\u8bba\u6307\u51fa\uff0c\u6838\u5fc3\u4ef7\u503c\u53ef\u80fd\u4e0d\u5728\u6d88\u8d39\u8005\u666e\u53ca\uff0c\u800c\u662f\u5f00\u53d1\u8005\u7528MCP\u6784\u5efa\u5b9e\u7528AR\u5de5\u4f5c\u6d41\u3002\u7528\u6237\u8fd8\u8ffd\u95ee\u65e5\u5e38\u4f69\u6234\u7684\u6740\u624b\u7ea7\u5e94\u7528\u573a\u666f\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Snapchat SPECS\u8bd5\u56fe\u7528\u201c\u4e00\u6b65\u5230\u4f4d\u201d\u7684\u72ec\u7acb\u8ba1\u7b97\u6765\u98a0\u8986\u773c\u955c\u5f62\u6001\uff0c\u4f462195\u7f8e\u5143\u7684\u5b9a\u4ef7\uff0c\u51e0\u4e4e\u662f\u4e00\u53f0\u9ad8\u7aef\u624b\u673a+MacBook Air\u7684\u603b\u548c\uff0c\u5374\u53ea\u6362\u6765\u4e00\u526f\u529f\u80fd\u5c1a\u672a\u88ab\u9a8c\u8bc1\u7684\u773c\u955c\u3002\u534e\u5c14\u8857\u4e0d\u4e70\u8d26\uff0c\u5b9e\u5c5e\u7406\u6027\u2014\u2014\u56e0\u4e3a\u8981\u8bf4\u670d\u5927\u4f17\u4e3a\u201c\u7559\u5728\u5f53\u4e0b\u201d\u4e70\u5355\uff0c\u4f60\u5f97\u5148\u8bc1\u660e\u5b83\u80fd\u6bd4\u624b\u673a\u5e72\u5f97\u66f4\u6f02\u4eae\u3002\u4ece\u8bc4\u8bba\u770b\uff0c\u771f\u6b63\u770b\u5230\u673a\u4f1a\u7684\u662f\u5f00\u53d1\u8005\u751f\u6001\uff1aLens Studio\u63a5\u4e0aMCP\uff0c\u6709\u671b\u8ba9AR\u5de5\u4f5c\u6d41\uff08\u5982\u8fdc\u7a0b\u534f\u4f5c\u3001\u6570\u636e\u53ef\u89c6\u5316\uff09\u5148\u5728\u4f01\u4e1a\u7aef\u843d\u5730\u3002\u4f46\u8fd9\u6b63\u4e2dSnap\u7684\u8f6f\u808b\u2014\u2014\u5b83\u7684\u6d88\u8d39\u7ea7\u57fa\u56e0\u4e0eB\u7aef\u4ed8\u8d39\u610f\u613f\u4e4b\u95f4\u5b58\u5728\u9e3f\u6c9f\u3002SPECS\u7684\u56f0\u5883\u5728\u4e8e\uff1a\u60f3\u6210\u4e3a\u201c\u4e0b\u4e00\u4e2a\u624b\u673a\u201d\uff0c\u5374\u8fde\u201c\u624b\u673a\u914d\u4ef6\u201d\u7684\u5b9e\u7528\u95e8\u69db\u90fd\u6ca1\u8de8\u8fc7\u3002\u6ca1\u6709\u6740\u624b\u7ea7\u5e94\u7528\uff0c\u5b83\u5c31\u662f\u6602\u8d35\u7684\u6280\u672f\u79c0\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Snapchat SPECS<\/span>\n                <\/div>\n<div class=\"comment-content\">SPECS bring computing into the world around you, so you can learn, work, and play while staying present in the moment.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p><img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/3503572c-7cb1-4e39-9dd8-71c89973e797.gif?auto=compress,format&amp;codec=mozjpeg&amp;cs=strip\" style=\"max-width: 100%\"><\/p>\n<p>$2,195 for a stand-alone face computer. <\/p>\n<\/p>\n<p>Wall Street doesn&#8217;t like it, even though Lens Studio now has <a href=\"https:\/\/newsroom.snap.com\/snap-launches-new-tools-for-specs-developers\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">MCP for devs<\/a>!<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>2<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@chrismessina\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@chrismessina<\/a>&nbsp;super interesting, well hunted!  <\/p>\n<p>the standalone angle is interesting, but $2,195 is a tough bar. curious whether the real wedge ends up being devs building useful AR workflows rather than consumer adoption<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Really cool to see Snap continuing to push AR forward. Curious\u2026 what use case do you think will make people wear smart glasses every day?<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>1<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#19<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/DMJN5IXQA3M22J\" class=\"app-title\">Cilantro<\/a><\/p>\n<div class=\"one-liner\">Watches your accounts and tells you what changed<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">84<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>Cilantro \u662f\u4e00\u6b3e\u53ea\u89c2\u5bdf\u4e0d\u7ba1\u7406\u7684\u91d1\u878d\u4f34\u4fa3\u5e94\u7528\uff0c\u81ea\u52a8\u76d1\u6d4b\u94f6\u884c\u8d26\u6237\u4e2d\u7684\u5f02\u5e38\u6263\u6b3e\u3001\u8d26\u5355\u53d8\u52a8\u548c\u6d88\u8d39\u8d8b\u52bf\uff0c\u6bcf\u5468\u63a8\u9001\u201c\u53d8\u5316\u6458\u8981\u201d\uff0c\u65e0\u9700\u7528\u6237\u624b\u52a8\u8bb0\u8d26\u6216\u8bbe\u9884\u7b97\uff0c\u5c24\u5176\u9002\u5408\u4e0e\u4f34\u4fa3\u5171\u540c\u76d1\u63a7\u5bb6\u5ead\u8d22\u52a1\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/9e318785-5061-42f9-88a1-75cf07d0c2d4.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/a79e04a4-82aa-4c1c-986f-6bc7ac25c8b3.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/69630c14-d4e6-48f7-b1f7-534adb138a8b.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">iOS<\/span><br \/>\n            <span class=\"tag\">Fintech<\/span><br \/>\n            <span class=\"tag\">Personal Finance<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">\u4e2a\u4eba\u8d22\u52a1\u7ba1\u7406<\/span><br \/>\n            <span class=\"tag\">\u94f6\u884c\u8d26\u6237\u76d1\u63a7<\/span><br \/>\n            <span class=\"tag\">\u5f02\u5e38\u6d88\u8d39\u63d0\u9192<\/span><br \/>\n            <span class=\"tag\">\u81ea\u52a8\u8d26\u5355\u8ffd\u8e2a<\/span><br \/>\n            <span class=\"tag\">\u8ba2\u9605\u7ba1\u7406<\/span><br \/>\n            <span class=\"tag\">\u4f34\u4fa3\u5171\u4eab<\/span><br \/>\n            <span class=\"tag\">\u65e0\u9884\u7b97\u8bb0\u8d26<\/span><br \/>\n            <span class=\"tag\">\u53ea\u8bfb\u6a21\u5f0f<\/span><br \/>\n            <span class=\"tag\">\u9690\u79c1\u5b89\u5168<\/span><br \/>\n            <span class=\"tag\">\u91d1\u878d\u79d1\u6280<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u666e\u904d\u8ba4\u53ef\u201c\u53ea\u63d0\u793a\u53d8\u5316\u201d\u7684\u7406\u5ff5\uff0c\u8ba4\u4e3a\u6bd4\u4f20\u7edf\u9884\u7b97\u7ba1\u7406\u66f4\u8d34\u8fd1\u771f\u5b9e\u751f\u6d3b\u3002\u6838\u5fc3\u53cd\u9988\u5305\u62ec\uff1a\u5e0c\u671b\u7cfb\u7edf\u80fd\u6839\u636e\u7528\u6237\u5ffd\u7565\u6216\u786e\u8ba4\u6765\u5b66\u4e60\u4f18\u5316\u63a8\u8350\uff0c\u8be2\u95ee\u662f\u5426\u652f\u6301\u53d1\u7968\u4e0a\u4f20\uff0c\u5e76\u80af\u5b9a\u4e86\u53ea\u8bfb\u6a21\u5f0f\u548c\u6570\u636e\u4e0d\u552e\u5356\u7684\u4fe1\u4efb\u6784\u5efa\u3002\u5f00\u53d1\u8005\u56de\u5e94\u5df2\u5177\u5907\u5b66\u4e60\u673a\u5236\uff0c\u5e76\u63a2\u7d22\u53d1\u7968\u4e0a\u4f20\u529f\u80fd\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                Cilantro \u7684\u806a\u660e\u4e4b\u5904\u5728\u4e8e\u7cbe\u51c6\u5207\u4e2d\u4e86\u4e00\u4e2a\u957f\u671f\u88ab\u5927\u578b\u8bb0\u8d26\u5e94\u7528\u5ffd\u89c6\u7684\u7ec6\u5206\u9700\u6c42\uff1a\u88ab\u52a8\u8d22\u52a1\u76d1\u63a7\u3002\u5bf9\u4e8e\u76f8\u5f53\u4e00\u90e8\u5206\u7528\u6237\u800c\u8a00\uff0c\u4ed6\u4eec\u65e2\u4e0d\u60f3\u4e5f\u4e0d\u80fd\u6210\u4e3a\u9ad8\u9891\u8bb0\u8d26\u7684\u201c\u8d22\u52a1\u7ba1\u7406\u5458\u201d\uff0c\u53ea\u5e0c\u671b\u5728\u4e0d\u88ab\u590d\u6742\u529f\u80fd\u8f70\u70b8\u7684\u524d\u63d0\u4e0b\uff0c\u907f\u514d\u56e0\u5f02\u5e38\u6263\u8d39\u6216\u8ba2\u9605\u6da8\u4ef7\u9020\u6210\u7684\u9690\u6027\u6d41\u5931\u3002\u4ea7\u54c1\u9009\u62e9\u6781\u7b80\u8def\u5f84\u2014\u2014\u4e0d\u8bbe\u9884\u7b97\u3001\u4e0d\u5f3a\u5236\u5206\u7c7b\uff0c\u53ea\u8f93\u51fa\u201c\u53d8\u5316\u201d\uff0c\u672c\u8d28\u4e0a\u662f\u5728\u505a\u51cf\u6cd5\uff0c\u53cd\u800c\u51f8\u663e\u4e86\u6838\u5fc3\u4ef7\u503c\u7684\u7a7f\u900f\u529b\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u8fd9\u79cd\u201c\u89c2\u5bdf\u5373\u670d\u52a1\u201d\u7684\u5b9a\u4f4d\uff0c\u52a0\u4e0a\u4f34\u4fa3\u95f4\u5185\u5d4c\u7684\u201c\u8d39\u7591\u201d\u5feb\u6377\u6c9f\u901a\u529f\u80fd\uff0c\u89e3\u51b3\u4e86\u957f\u671f\u4ee5\u6765\u91d1\u878dAPP\u7f3a\u4e4f\u793e\u4ea4\u4e92\u52a8\u7684\u75db\u70b9\u3002\u4ece\u8bc4\u8bba\u6765\u770b\uff0c\u7528\u6237\u5bf9\u5b83\u7684\u4fe1\u4efb\u95e8\u69db\u8f83\u4f4e\uff0c\u56e0\u4e3a\u201c\u53ea\u8bfb\u6a21\u5f0f+\u65e0\u5e7f\u544a+\u4e0d\u5356\u6570\u636e\u201d\u7684\u7ec4\u5408\u5c06\u5b89\u5168\u987e\u8651\u964d\u5230\u4e86\u6700\u4f4e\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u4e0d\u8fc7\uff0cCilantro \u4e5f\u9762\u4e34\u201c\u4fe1\u606f\u8fc7\u8f7d\u201d\u7684\u53e6\u4e00\u79cd\u98ce\u9669\uff1a\u5f53\u8d26\u6237\u8d8a\u591a\uff0c\u6d41\u6c34\u8d8a\u590d\u6742\uff0c\u5f02\u5e38\u53d1\u73b0\u7684\u6807\u51c6\u82e5\u8fc7\u4e8e\u5bbd\u6cdb\uff0c\u53ef\u80fd\u53d8\u6210\u65b0\u7684\u9a9a\u6270\u6765\u6e90\u3002\u76ee\u524d\u4ea7\u54c1\u4e3b\u8981\u4f9d\u8d56\u81ea\u52a8\u5316\u89c4\u5219\u4e0e\u7528\u6237\u53cd\u9988\u5b66\u4e60\uff0c\u4f46\u5982\u4f55\u5728\u4e0d\u589e\u52a0\u7528\u6237\u8d1f\u62c5\u7684\u524d\u63d0\u4e0b\u7cbe\u7ec6\u5316\u8c03\u4f18\u8fd9\u4e00\u9608\u503c\uff0c\u5c06\u662f\u51b3\u5b9a\u5b83\u80fd\u5426\u4ece\u201c\u6253\u5361\u7ea7\u4ea7\u54c1\u201d\u8fc8\u5411\u201c\u957f\u671f\u7559\u5b58\u5de5\u5177\u201d\u7684\u5173\u952e\u3002\n            <\/p>\n<p class=\"ai-content\">\n                \u53e6\u5916\uff0c\u4ec5\u9760\u201c\u53d8\u5316\u63d0\u9192\u201d\u4f5c\u4e3a\u8ba2\u9605\u4ed8\u8d39\u70b9\uff0c\u7528\u6237\u662f\u5426\u613f\u610f\u957f\u671f\u4ed8\u8d39\uff0c\u4ecd\u9700\u9a8c\u8bc1\u3002\u6bd5\u7adf\u201c\u4e0d\u62a5\u8b66=\u6ca1\u4ef7\u503c\u201d\u7684\u6f5c\u610f\u8bc6\u5f88\u96be\u88ab\u514b\u670d\u2014\u2014\u9664\u975e\u5b83\u5076\u5c14\u80fd\u5e2e\u7528\u6237\u8ffd\u56de\u4e00\u7b14\u771f\u6b63\u7684\u635f\u5931\u3002\u957f\u671f\u770b\uff0c\u8fd9\u7c7b\u5de5\u5177\u7684\u6700\u4f73\u5f62\u6001\u6216\u8bb8\u662f\u5d4c\u5165\u5230\u5f00\u653e\u94f6\u884c\u751f\u6001\u6216\u652f\u4ed8\u5e73\u53f0\u7684\u589e\u503c\u670d\u52a1\u4e2d\uff0c\u800c\u975e\u72ec\u7acb\u6210app\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">Cilantro<\/span>\n                <\/div>\n<div class=\"comment-content\">Connect your bank accounts once and Cilantro does the watching &#8211; odd charges, bill creep, auto-detected trip recaps, and a weekly &#8220;here&#8217;s what changed.&#8221; No budgets, no tagging. Works solo, better with a partner. Read-only, no ads, no data sales.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">Hey PH, I&#8217;m Gene, I built Cilantro solo.<\/p>\n<p>Every finance app I tried wanted me to *work* &#8211; set budgets, tag transactions, check a dashboard. I just wanted to know when something was off. Cilantro is the inversion of that: link your accounts and it surfaces only what changed &#8211; an unusual charge, a bill that crept up, a duplicate, a trip it recapped for you automatically.<\/p>\n<p>If you share finances with a partner, you can flag a charge and ask them about it inside the app (no more &#8220;what was this $80?&#8221; texts).<\/p>\n<p>It&#8217;s iOS + Android, built on Plaid, completely read-only &#8211; it never moves money and I don&#8217;t sell data. Free to try, subscription after a 7-day preview.<\/p>\n<p>I&#8217;d love feedback, especially on the observe-only bet &#8211; would you trade budgeting controls for &#8220;just tell me what changed&#8221;?<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@highloop\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@highloop<\/a>&nbsp;Upvoted this. The idea of surfacing only what actually changed is refreshing, especially for people who don\u2019t want another dashboard to manage. It feels closer to how most people naturally think about their money in real life. Good work on keeping it simple and read-only, that builds trust fast.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>For me, the most useful part would probably be catching quiet changes: a subscription going up, a weird duplicate charge, or something I forgot I was still paying for. That feels more realistic than expecting people to manage a full personal finance dashboard every week.<\/p>\n<\/p>\n<p>The partner flow is also smart. A lot of money questions are not really budgeting questions, they are just \u201chey, do you know what this was?\u201d<\/p>\n<\/p>\n<p>Curious how Cilantro decides what is actually worth surfacing. Does the user train it over time by dismissing\/confirming alerts, or is it mostly automatic from transaction patterns?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@andrasczeizel\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@andrasczeizel<\/a>&nbsp;it\u2019s both. Cilantro automatically surfaces anomalies, and over time it also learns from user dismissals and confirmations to improve its recommendations.<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>1<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>Congrats on the launch! Can you attach receipts to your transactions?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p>Hi <a href=\"https:\/\/www.producthunt.com\/@luigi_receiptorai\" data-node-type=\"mention\" data-mention-type=\"user\" data-mention-id=\"luigi_receiptorai\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@luigi_receiptorai<\/a> &#8211; we could definitely do that. How would you want receipts to be attached? Would you prefer to upload them one at a time in the app, have us automatically parse your emails and attach them for you, or use some other workflow?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>0<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<article class=\"app-card\">\n<div class=\"app-header\">\n<div class=\"rank\">#20<\/div>\n<div class=\"title-group\">\n            <a href=\"https:\/\/www.producthunt.com\/r\/Y5RQD6YTBBAGKQ\" class=\"app-title\">MCP 2000<\/a><\/p>\n<div class=\"one-liner\">AI Drum Machine MPC in your browser<\/div>\n<\/p><\/div>\n<div class=\"vote-btn\">\n<div class=\"vote-arrow\">\u25b2<\/div>\n<div class=\"vote-count\">81<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"one-liner\"><strong>\u4e00\u53e5\u8bdd\u4ecb\u7ecd\uff1a<\/strong>MCP 2000 \u662f\u4e00\u6b3e\u5728\u6d4f\u89c8\u5668\u4e2d\u8fd0\u884c\u7684AI\u9a71\u52a8MPC\uff0c\u8ba9\u97f3\u4e50\u4eba\u901a\u8fc7\u6587\u5b57\u63cf\u8ff0\u76f4\u63a5\u751f\u6210\u91c7\u6837\u5e76\u5373\u65f6\u7f16\u6392\uff0c\u5f7b\u5e95\u7701\u53bb\u7ffb\u627e\u91c7\u6837\u5305\u7684\u7e41\u7410\u8fc7\u7a0b\uff0c\u89e3\u51b3\u7075\u611f\u6d41\u5931\u7684\u75db\u70b9\u3002<\/div>\n<p>    <!-- \u5a92\u4f53\u753b\u5eca\uff1a\u5305\u542b\u89c6\u9891\u548c\u591a\u5f20\u56fe\u7247 --><\/p>\n<div class=\"media-gallery\">\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/eefda904-d09b-4d43-90a5-4b7ee070c3ef.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/04aa233a-c577-4dfa-beaa-ea8c1ae76fd0.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/fc6a5396-9c09-41e5-afe0-c4a55e85cf9f.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<div class=\"media-item-wrapper\">\n                <img decoding=\"async\" src=\"https:\/\/ph-files.imgix.net\/4a3faa93-77a2-4ef5-a9f5-91fed85ce67b.png?auto=format\" class=\"media-content\" alt=\"\u4ea7\u54c1\u56fe\u7247\">\n            <\/div>\n<\/p><\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">Music<\/span><br \/>\n            <span class=\"tag\">Artificial Intelligence<\/span><br \/>\n            <span class=\"tag\">Tech<\/span>\n        <\/div>\n<div class=\"tags-container\">\n<p>            <span class=\"tag\">AI\u97f3\u4e50\u5236\u4f5c<\/span><br \/>\n            <span class=\"tag\">MPC<\/span><br \/>\n            <span class=\"tag\">\u6d4f\u89c8\u5668\u5de5\u5177<\/span><br \/>\n            <span class=\"tag\">\u97f3\u9891\u751f\u6210<\/span><br \/>\n            <span class=\"tag\">AI\u91c7\u6837<\/span><br \/>\n            <span class=\"tag\">\u8282\u62cd\u5236\u4f5c<\/span><br \/>\n            <span class=\"tag\">ElevenLabs<\/span><br \/>\n            <span class=\"tag\">\u8282\u594f\u5e8f\u5217\u5668<\/span><br \/>\n            <span class=\"tag\">\u514d\u5b89\u88c5<\/span><br \/>\n            <span class=\"tag\">\u97f3\u4e50\u521b\u4f5c<\/span>\n        <\/div>\n<div class=\"reviews-section\">\n<div class=\"review-item\">\n<div class=\"review-bubble\">\n                <strong>\u7528\u6237\u8bc4\u8bba\u6458\u8981\uff1a<\/strong>\u7528\u6237\u6574\u4f53\u53cd\u9988\u79ef\u6781\uff0c\u4eab\u53d7\u5373\u65f6\u751f\u6210\u548c\u6f14\u594f\u7684\u4e50\u8da3\u3002\u6709\u7528\u6237\u8be2\u95ee\u91c7\u6837\u751f\u6210\u548cAI\u6280\u672f\u7ec6\u8282\uff0c\u5f00\u53d1\u8005\u56de\u5e94\u4f7f\u7528\u4e86ElevenLabs\u751f\u6210\u97f3\u9891\uff0cClaude\u751f\u6210\u5e8f\u5217\u3002\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"ai-section\">\n<div class=\"ai-content\" style=\"font-size: large;\"><strong>AI \u9510\u8bc4<\/strong><\/div>\n<p class=\"ai-content\">\n                MCP 2000 \u7cbe\u51c6\u5207\u4e2d\u4e86\u97f3\u4e50\u5236\u4f5c\u4eba\u6700\u6838\u5fc3\u7684\u75db\u70b9\u4e4b\u4e00\uff1a\u201c\u58f0\u97f3\u72e9\u730e\u201d\u4e0e\u521b\u4f5c\u7075\u611f\u7684\u65ad\u88c2\u3002\u5b83\u5e76\u975e\u8bd5\u56fe\u66ff\u4ee3DAW\uff0c\u800c\u662f\u5145\u5f53\u4e00\u4e2a\u6781\u901f\u7684\u7075\u611f\u5b75\u5316\u5668\u2014\u2014\u5c06\u201c\u641c\u7d22-\u7b5b\u9009-\u52a0\u8f7d\u201d\u7684\u5197\u957f\u94fe\u6761\u538b\u7f29\u6210\u4e00\u4e2a\u201c\u63d0\u793a-\u6f14\u594f\u201d\u7684\u77ac\u95f4\u95ed\u73af\u3002\u5176\u4ea7\u54c1\u4ef7\u503c\u5728\u4e8e**\u964d\u4f4e\u4e86\u58f0\u97f3\u8bbe\u8ba1\u7684\u5fc3\u7406\u95e8\u69db**\uff0c\u8ba9\u7528\u6237\u4ece\u201c\u6211\u8be5\u7528\u4ec0\u4e48\u58f0\u97f3\u201d\u7684\u51b3\u7b56\u75b2\u52b3\u4e2d\u89e3\u8131\uff0c\u8f6c\u800c\u4e13\u6ce8\u4e8e\u8282\u594f\u4e0e\u5f8b\u52a8\u7684\u5373\u65f6\u521b\u9020\u3002\u4ece\u6280\u672f\u5b9e\u73b0\u770b\uff0c\u5229\u7528ElevenLabs\u8fdb\u884c\u6587\u672c\u5230\u97f3\u9891\u7684\u751f\u6210\u867d\u7136\u4fbf\u6377\uff0c\u4f46\u751f\u6210\u6837\u672c\u7684\u8d28\u91cf\u3001\u97f3\u8272\u53ef\u63a7\u6027\u53ca\u7248\u6743\u5f52\u5c5e\uff08\u5c24\u5176\u5728\u5546\u4e1a\u5316\u573a\u666f\u4e0b\uff09\u4ecd\u662f\u60ac\u800c\u672a\u51b3\u7684\u95ee\u9898\u3002\u8bc4\u8bba\u4e2d\u4ec5\u670981\u7968\u7684\u70b9\u8d5e\u6570\u4e5f\u6697\u793a\u5176\u76ee\u524d\u66f4\u504f\u5411\u5c0f\u4f17\u9177\u73a9\uff0c\u5c1a\u672a\u5f62\u6210\u5f15\u7206\u5927\u4f17\u7684\u7834\u5708\u6548\u5e94\u3002\u771f\u6b63\u7684\u6311\u6218\u5728\u4e8e\uff0cAI\u751f\u6210\u7684\u201ccrunchy snare\u201d\u80fd\u5426\u6ee1\u8db3\u5236\u4f5c\u4eba\u5bf9\u97f3\u8272\u8d28\u611f\u7684\u6311\u5254\u201c\u91d1\u8033\u6735\u201d\uff0c\u4ee5\u53ca\u4ea7\u54c1\u80fd\u5426\u4ece\u201c\u5feb\u901f\u8d77\u5934\u201d\u7684\u529f\u80fd\u5411\u201c\u6df1\u5ea6\u7f16\u8f91\u4e0e\u5bfc\u51fa\u201d\u7684\u5b8c\u6574\u5de5\u4f5c\u6d41\u6f14\u8fdb\u3002\u82e5\u80fd\u89e3\u51b3\u97f3\u8272\u7684\u7ec6\u817b\u5ea6\u4e0e\u4e13\u4e1a\u5bfc\u51fa\u95ee\u9898\uff0c\u5b83\u6709\u671b\u6210\u4e3aBeatmaker\u7684\u201cAI\u745e\u58eb\u519b\u5200\u201d\uff1b\u53cd\u4e4b\uff0c\u5219\u53ef\u80fd\u6b62\u6b65\u4e8e\u4e00\u4e2a\u6709\u8da3\u7684\u6d4f\u89c8\u5668\u73a9\u5177\u3002\n            <\/p>\n<\/p><\/div>\n<div class=\"comments-section\">\n<div class=\"comments-toggle\">\n            <span>\u67e5\u770b\u539f\u59cb\u4fe1\u606f<\/span><br \/>\n            <span class=\"toggle-arrow\">\u25bc<\/span>\n        <\/div>\n<div class=\"comments-container\">\n<div class=\"comment-item\">\n<div class=\"comment-header\">\n                    <span class=\"comment-author\">MCP 2000<\/span>\n                <\/div>\n<div class=\"comment-content\">MCP2000 is an AI-powered MPC that lives in your browser. Type what you want to hear (&#8220;dusty boom bap kit with crunchy snares,&#8221; &#8220;8-bar afro-house shaker loop at 120 BPM&#8221;) and it generates the samples, drops them onto a 4&#215;4 pad grid, and lets you finger-drum, chop, sequence, and add effects. No crate-digging, no plugins, no install. Just prompt, play, and build a beat.<\/div>\n<\/p><\/div>\n<p>            <!-- \u8bc4\u8bba\u5217\u8868 --><\/p>\n<div class=\"comment-item\">\n<div class=\"comment-content\">I make beats, and the part I always hated was hunting for sounds. You spend 40 minutes scrolling sample packs to find one snare that&#8217;s almost right, and by then you&#8217;ve lost the idea you actually had.<\/p>\n<p>So I made MCP 2000. You type the sound you want and it makes it. &#8220;Crunchy boom bap kit, vinyl hiss on the kick.&#8221; &#8220;Shaker loop, afro-house, 120.&#8221; It loads straight onto the pads and you just start playing. Mouse or keyboard, whatever&#8217;s faster for you.<\/p>\n<p>It&#8217;s a 4&#215;4 MPC layout, so if you&#8217;ve touched an MPC or Maschine it&#8217;ll feel familiar. Chop, pitch, sequence, run it through some effects. All in the browser, nothing to download. You can be making noise about ten seconds after the page loads.<\/p>\n<p>It&#8217;s free. Go make something and tell me what sounds you&#8217;d want it to generate next.<\/p><\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<\/p><\/div>\n<div class=\"comment-item\">\n<div class=\"comment-content\">\n<p>I had fun playing with it \u2764\ufe0f<\/p>\n<\/p>\n<p>How do you generate samples? What AI do you use?<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                        <span>\u25b2<\/span><br \/>\n                        <span>0<\/span>\n                    <\/div>\n<p>                    <span>\u56de\u590d<\/span>\n                <\/div>\n<div class=\"comment-replies\">\n<div class=\"reply-item\">\n<div class=\"reply-content\">\n<p><a href=\"https:\/\/www.producthunt.com\/@dzhlobo\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">@dzhlobo<\/a>&nbsp;Glad to hear it! It&#8217;s using elevenlabs for the audio generation and claude for the sequencer pattern generation<\/p>\n<\/div>\n<div class=\"comment-actions\">\n<div class=\"comment-vote\">\n                                <span>\u25b2<\/span><br \/>\n                                <span>2<\/span>\n                            <\/div>\n<p>                            <span>\u56de\u590d<\/span>\n                        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/article>\n<\/div>\n<p><!-- \u56fe\u7247\u653e\u5927\u6a21\u6001\u6846 --><\/p>\n<div id=\"imageModal\" class=\"modal\">\n    <span class=\"close\">&times;<\/span><br \/>\n    <img class=\"modal-content\" id=\"modalImage\">\n<\/div>\n<p><script>\n    \/\/ \u83b7\u53d6\u6a21\u6001\u6846\u5143\u7d20\n    const modal = document.getElementById(\"imageModal\");\n    const modalImg = document.getElementById(\"modalImage\");\n    const closeBtn = document.getElementsByClassName(\"close\")[0];<\/p>\n<p>    \/\/ \u68c0\u6d4b\u662f\u5426\u4e3a\u79fb\u52a8\u8bbe\u5907\n    const isMobile = \/iPhone|iPad|iPod|Android\/i.test(navigator.userAgent);<\/p>\n<p>    \/\/ \u4e3a\u79fb\u52a8\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u4f18\u5316\n    function addTouchOptimization() {\n        if (isMobile) {\n            \/\/ \u4e3a\u6240\u6709\u53ef\u70b9\u51fb\u5143\u7d20\u6dfb\u52a0\u89e6\u6478\u53cd\u9988\n            const clickableElements = document.querySelectorAll(\n                '.media-content, .close, .video-overlay, .play-icon'\n            );<\/p>\n<p>            clickableElements.forEach(el => {\n                el.style.touchAction = 'manipulation'; \/\/ \u9632\u6b62\u53cc\u51fb\u7f29\u653e\n            });\n        }\n    }<\/p>\n<p>    \/\/ \u4e3a\u6240\u6709\u56fe\u7247\u6dfb\u52a0\u70b9\u51fb\u4e8b\u4ef6\n    const images = document.querySelectorAll(\"img.media-content\");\n    images.forEach(img => {\n        img.onclick = function() {\n            modal.style.display = \"block\";\n            modalImg.src = this.src;\n            \/\/ \u963b\u6b62\u80cc\u666f\u6eda\u52a8\n            document.body.style.overflow = \"hidden\";\n        }<\/p>\n<p>        \/\/ \u4e3a\u79fb\u52a8\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u4e8b\u4ef6\u652f\u6301\n        if (isMobile) {\n            img.addEventListener('touchstart', function(e) {\n                \/\/ \u9632\u6b62\u89e6\u6478\u4e8b\u4ef6\u89e6\u53d1\u4e0d\u5fc5\u8981\u7684\u884c\u4e3a\n                e.preventDefault();\n                this.click();\n            }, { passive: false });\n        }\n    });<\/p>\n<p>    \/\/ \u4e3a\u89c6\u9891\u6dfb\u52a0\u70b9\u51fb\u4e8b\u4ef6 - \u8df3\u8f6c\u5230\u89c6\u9891URL\n    const videos = document.querySelectorAll(\"video.media-content\");\n    videos.forEach(video => {\n        \/\/ \u70b9\u51fb\u89c6\u9891\u672c\u8eab\u65f6\u8df3\u8f6c\u5230\u89c6\u9891URL\n        video.onclick = function(e) {\n            \/\/ \u68c0\u67e5\u70b9\u51fb\u76ee\u6807\u662f\u5426\u662f\u89c6\u9891\u63a7\u4ef6\u6216\u5176\u5b50\u5143\u7d20\n            let isControlClick = false;\n            let target = e.target;<\/p>\n<p>            \/\/ \u5411\u4e0a\u904d\u5386DOM\uff0c\u68c0\u67e5\u662f\u5426\u70b9\u51fb\u4e86\u63a7\u4ef6\u5143\u7d20\n            while (target && target !== this) {\n                \/\/ \u68c0\u67e5\u662f\u5426\u6709\u63a7\u4ef6\u76f8\u5173\u7684\u7c7b\u540d\u6216\u5c5e\u6027\n                if (target.classList.contains('video-js') || \n                    target.tagName.toLowerCase() === 'button' || \n                    target.tagName.toLowerCase() === 'input' || \n                    target.tagName.toLowerCase() === 'select' ||\n                    target.className.includes('control')) {\n                    isControlClick = true;\n                    break;\n                }\n                target = target.parentElement;\n            }<\/p>\n<p>            \/\/ \u53ea\u6709\u5f53\u70b9\u51fb\u7684\u662f\u89c6\u9891\u672c\u8eab\u800c\u975e\u63a7\u4ef6\u65f6\u624d\u8df3\u8f6c\n            if (!isControlClick && e.target.tagName.toLowerCase() === 'video') {\n                const videoUrl = this.getAttribute('data-video-url') || this.querySelector('source').src;\n                window.open(videoUrl, '_blank');\n            }\n        }<\/p>\n<p>        \/\/ \u4e3a\u79fb\u52a8\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u4e8b\u4ef6\u652f\u6301\n        if (isMobile) {\n            video.addEventListener('touchstart', function(e) {\n                \/\/ \u68c0\u67e5\u662f\u5426\u70b9\u51fb\u4e86\u63a7\u4ef6\n                let isControlClick = false;\n                let target = e.target;<\/p>\n<p>                while (target && target !== this) {\n                    if (target.tagName.toLowerCase() === 'button' || \n                        target.tagName.toLowerCase() === 'input' || \n                        target.className.includes('control')) {\n                        isControlClick = true;\n                        break;\n                    }\n                    target = target.parentElement;\n                }<\/p>\n<p>                if (!isControlClick) {\n                    e.preventDefault();\n                    const videoUrl = this.getAttribute('data-video-url') || this.querySelector('source').src;\n                    window.open(videoUrl, '_blank');\n                }\n            }, { passive: false });\n        }\n    });<\/p>\n<p>    \/\/ \u4e3a\u89c6\u9891\u906e\u7f69\u6dfb\u52a0\u70b9\u51fb\u4e8b\u4ef6\uff0c\u786e\u4fdd\u70b9\u51fb\u906e\u7f69\u4e5f\u80fd\u8df3\u8f6c\n    const videoOverlays = document.querySelectorAll('.video-overlay');\n    videoOverlays.forEach(overlay => {\n        overlay.onclick = function(e) {\n            \/\/ \u963b\u6b62\u4e8b\u4ef6\u5192\u6ce1\u5230\u89c6\u9891\u5143\u7d20\n            e.stopPropagation();\n            const video = this.parentElement.querySelector('video.media-content');\n            if (video) {\n                const videoUrl = video.getAttribute('data-video-url') || video.querySelector('source').src;\n                window.open(videoUrl, '_blank');\n            }\n        }<\/p>\n<p>        \/\/ \u4e3a\u79fb\u52a8\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u4e8b\u4ef6\u652f\u6301\n        if (isMobile) {\n            overlay.addEventListener('touchstart', function(e) {\n                e.preventDefault();\n                e.stopPropagation();\n                const video = this.parentElement.querySelector('video.media-content');\n                if (video) {\n                    const videoUrl = video.getAttribute('data-video-url') || video.querySelector('source').src;\n                    window.open(videoUrl, '_blank');\n                }\n            }, { passive: false });\n        }\n    });<\/p>\n<p>    \/\/ \u5173\u95ed\u6a21\u6001\u6846\n    closeBtn.onclick = function() {\n        modal.style.display = \"none\";\n        \/\/ \u6062\u590d\u80cc\u666f\u6eda\u52a8\n        document.body.style.overflow = \"auto\";\n    }<\/p>\n<p>    \/\/ \u4e3a\u79fb\u52a8\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u4e8b\u4ef6\u652f\u6301\n    if (isMobile) {\n        closeBtn.addEventListener('touchstart', function(e) {\n            e.preventDefault();\n            modal.style.display = \"none\";\n            document.body.style.overflow = \"auto\";\n        }, { passive: false });\n    }<\/p>\n<p>    \/\/ \u70b9\u51fb\u6a21\u6001\u6846\u5916\u90e8\u5173\u95ed\n    window.onclick = function(event) {\n        if (event.target === modal) {\n            modal.style.display = \"none\";\n            document.body.style.overflow = \"auto\";\n        }\n    }<\/p>\n<p>    \/\/ \u4e3a\u79fb\u52a8\u8bbe\u5907\u6dfb\u52a0\u89e6\u6478\u4e8b\u4ef6\u652f\u6301\n    if (isMobile) {\n        modal.addEventListener('touchstart', function(e) {\n            if (e.target === modal) {\n                modal.style.display = \"none\";\n                document.body.style.overflow = \"auto\";\n            }\n        }, { passive: true });\n    }<\/p>\n<p>    \/\/ \u6309ESC\u952e\u5173\u95ed\u6a21\u6001\u6846\n    document.addEventListener('keydown', function(event) {\n        if (event.key === 'Escape' && modal.style.display === 'block') {\n            modal.style.display = 'none';\n            document.body.style.overflow = \"auto\";\n        }\n    });<\/p>\n<p>    \/\/ \u68c0\u67e5\u6bcf\u4e2a\u5a92\u4f53\u753b\u5eca\u4e2d\u662f\u5426\u53ea\u6709\u4e00\u4e2a\u9879\u76ee\uff0c\u5982\u679c\u662f\uff0c\u6dfb\u52a0single-item\u7c7b\n    document.querySelectorAll('.media-gallery').forEach(gallery => {\n        if (gallery.querySelectorAll('.media-item-wrapper').length === 1) {\n            gallery.classList.add('single-item');\n        }\n    });<\/p>\n<p>    \/\/ \u521d\u59cb\u5316\u89e6\u6478\u4f18\u5316\n    addTouchOptimization();<\/p>\n<p>    \/\/ \u7a97\u53e3\u5927\u5c0f\u53d8\u5316\u65f6\u91cd\u65b0\u68c0\u67e5\u753b\u5eca\u72b6\u6001\n    window.addEventListener('resize', function() {\n        document.querySelectorAll('.media-gallery').forEach(gallery => {\n            if (gallery.querySelectorAll('.media-item-wrapper').length === 1) {\n                gallery.classList.add('single-item');\n            } else {\n                gallery.classList.remove('single-item');\n            }\n        });\n    });<\/p>\n<p>    \/\/ --- \u8bc4\u8bba\u533a\u57df\u6298\u53e0\/\u5c55\u5f00\u529f\u80fd ---\n    const commentToggles = document.querySelectorAll('.comments-toggle');<\/p>\n<p>    commentToggles.forEach(toggle => {\n        toggle.addEventListener('click', function() {\n            \/\/ \u5207\u6362\u5f53\u524dtoggle\u7684open\u72b6\u6001\n            this.classList.toggle('open');<\/p>\n<p>            \/\/ \u83b7\u53d6\u5bf9\u5e94\u7684\u8bc4\u8bba\u5bb9\u5668\n            const commentsContainer = this.nextElementSibling;\n            if (commentsContainer && commentsContainer.classList.contains('comments-container')) {\n                commentsContainer.classList.toggle('open');\n            }\n        });\n    });\n<\/script><\/p>\n<p><\/body><br \/>\n<\/html><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Product Hunt \u6bcf\u65e5\u70ed\u699c 2026-06-17 PH\u70ed\u699c | 2026-06-17 #1 Frame [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"template-clean-canvas.php","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-255","post","type-post","status-publish","format-standard","hentry","category-producthunt"],"_links":{"self":[{"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/posts\/255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/comments?post=255"}],"version-history":[{"count":0,"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/posts\/255\/revisions"}],"wp:attachment":[{"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/media?parent=255"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/categories?post=255"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ph.listeningo.cn\/index.php\/wp-json\/wp\/v2\/tags?post=255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}