The Model Writes the Review Reply. The Owner Keeps the Promises.
本文为原文前 6,000 字符的节选翻译,完整内容请查看原文。
The Model Writes the Review Reply. The Owner Keeps the Promises.
Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle Submission 💸 This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle. What I Built “The coffee was excellent, but I was charged twice. The waiter ignored my question about the bill.” That fictional review has three things worth answering. Thanking the customer for the coffee is easy. Acknowledging the double charge and unanswered question takes more care. Promising a refund introduces a different decision: does the person writing the reply have permission to offer one?
Hacktoberfest 开源 AI 挑战赛第 2 周:副业项目提交 💸 这是 Hacktoberfest 开源 AI 挑战赛第 2 周的副业项目提交。我的作品:“咖啡很棒,但我被重复收费了。服务员忽略了我关于账单的问题。” 这条虚构的评论有三点值得回应。感谢顾客的咖啡很容易。承认重复收费和未回答的问题则需要更谨慎。承诺退款引入了一个不同的决策:撰写回复的人是否有权提供退款?
I built Review Reply Writer for independent cafe and small hospitality operators. Gemma drafts the language locally. The owner supplies the business policy, reads the result, and approves the exact text before copying it for manual posting. The Side Hustle hypothesis is paid installation, policy setup and support for an operator who wants local control without configuring a model. The application code stays free. Demand, willingness to pay and time saved remain unproven.
我为独立咖啡馆和小型酒店经营者构建了“评论回复撰写器”(Review Reply Writer)。Gemma 在本地起草语言。店主提供业务政策,阅读结果,并在复制以供手动发布之前批准确切的文本。该副业项目的假设是:为那些希望在不配置模型的情况下实现本地控制的经营者提供付费安装、政策设置和支持。应用程序代码保持免费。需求、支付意愿和节省的时间仍未得到验证。
Demo Watch the 68-second historical Gemma demonstration. Recorded October 13, 2026 Hawaii time, this earlier build uses a fictional cold coffee and 25-minute-wait complaint. It shows a real local Gemma draft, an added unauthorized refund blocking approval, the correction, approval and copy. The persistent banner identifies the earlier code. Captions were added later. Playback was checked without a Descript login on October 14. This is an automated demonstration, not operator feedback or a recording of the current source.
演示:观看 68 秒的历史 Gemma 演示。该演示录制于 2026 年 10 月 13 日夏威夷时间,使用了关于咖啡变凉和 25 分钟等待时间的虚构投诉。它展示了真实的本地 Gemma 草稿、添加未经授权的退款导致的批准拦截、更正、批准和复制过程。持久横幅标识了较早的代码。字幕是后来添加的。回放于 10 月 14 日在未登录 Descript 的情况下进行了检查。这是一个自动化演示,并非经营者反馈或当前源代码的录制。
The visible Quality Lab screen is not a completed evaluation. To inspect the same approval boundary in the current application, use its fictional Duplicate billing example with no compensation authorized: Generate a draft and show its actual source label. Compare the reply with Details to keep and the customer’s quoted wording. Add “We will give you a full refund.” Choose Save & recheck and show blocked approval. Remove that added promise, save, read the reply, then approve and copy it.
可见的质量实验室屏幕并非完成的评估。要在当前应用程序中检查相同的批准边界,请使用其虚构的“重复计费且未授权赔偿”示例:生成草稿并显示其实际来源标签。将回复与“要保留的详细信息”以及顾客引用的措辞进行比较。添加“我们将全额退款”。选择“保存并重新检查”并显示被拦截的批准。删除该添加的承诺,保存,阅读回复,然后批准并复制它。
The current duplicate-billing path has executed HTTP fixture evidence using labelled templates. It has not been recorded in a current Gemma/browser run. An edited reply is not untouched Gemma output. Code Repository: https://github.com/nolankido/reviewReplyWriter The repository is publicly accessible without a GitHub login. The application is MIT licensed; Gemma’s model terms are separate. Run py -3 rrw_setup.py —launch on Windows or python3 rrw_setup.py —launch on macOS/Linux. The application uses Python’s standard library and local browser assets.
当前的重复计费路径已使用带标签的模板执行了 HTTP 固定证据。它尚未在当前的 Gemma/浏览器运行中记录。编辑过的回复并非未经修改的 Gemma 输出。代码仓库:https://github.com/nolankido/reviewReplyWriter 该仓库无需 GitHub 登录即可公开访问。应用程序采用 MIT 许可;Gemma 的模型条款是独立的。在 Windows 上运行 py -3 rrw_setup.py --launch 或在 macOS/Linux 上运行 python3 rrw_setup.py --launch。该应用程序使用 Python 标准库和本地浏览器资源。
Model-written drafts require Ollama and downloaded gemma3:4b weights. Clearly labelled template preview works without either. How I Built It Original coding began October 13, 2026 at approximately 8 AM Hawaii time, during this challenge’s development window. Keep the customer’s concern visible The editor places the saved review beside the reply. Details to keep links recognized concerns to exact excerpts of the original text. Prompts, fallbacks and checks share a bounded interpretation, so “charged twice” does not quietly become a generic billing apology.
模型撰写的草稿需要 Ollama 和下载的 gemma3:4b 权重。带有清晰标签的模板预览无需两者即可工作。我是如何构建它的:原始编码始于 2026 年 10 月 13 日夏威夷时间上午 8 点左右,即本次挑战的开发窗口期。保持顾客的担忧可见:编辑器将保存的评论放在回复旁边。“要保留的详细信息”将识别出的担忧链接到原始文本的确切摘录。提示、回退和检查共享有限的解释,因此“重复收费”不会悄悄变成通用的账单道歉。
An unanswered question also matters. A reply can mention the coffee and still leave the customer’s main frustration untouched. Unsaved edits mark the checks stale until the owner saves and rechecks. The interface says Mention detected because a phrase match cannot establish understanding. The owner still reads the whole review and reply. Customer wording cannot authorize a business promise The first version required a make-it-right offer in negative replies. That was a bad default: it encouraged commitments without permission.
未回答的问题也很重要。回复可以提到咖啡,但仍可能忽略顾客的主要挫败感。未保存的编辑会使检查标记为过期,直到店主保存并重新检查。界面显示“检测到提及”,因为短语匹配无法建立理解。店主仍需阅读完整的评论和回复。顾客的措辞不能授权商业承诺:第一个版本要求在负面回复中提供补偿方案。这是一个糟糕的默认设置:它在未经许可的情况下鼓励了承诺。
Now authorization is separate from customer text, earlier replies and voice examples. Exact owner statements can permit an offer or action. Detected unauthorized promises block approval, whether introduced by the model, a fallback or an edit. An authorized credit cannot silently become a larger credit plus a refund. Approval is tied to the saved text and check version. Changing the reply requires a new review. Serious allegations are conservatively referred for personal handling before routine generation.
现在,授权与顾客文本、之前的回复和语音示例是分开的。确切的店主声明可以允许提供优惠或采取行动。检测到的未经授权的承诺会拦截批准,无论是模型、回退还是编辑引入的。已授权的信用额度不能悄悄变成更大的信用额度加上退款。批准与保存的文本和检查版本绑定。更改回复需要新的评论。严重的指控在常规生成之前会被保守地转交进行人工处理。
Preserve the work around the words A lost response should not mean a lost draft. Saved generation receipts let the owner check an interrupted request without automatically running it again. Pending edits, private recovery copies and checked backups support recovery. Recovery leaves authorization unchecked and does not resurrect old approval. The recurring workflow includes saved profiles and a one-business CSV inbox. Each reply still needs individual review. Nothing posts automatically.
保留文字周围的工作:丢失的响应不应意味着丢失草稿。保存的生成收据让店主可以检查中断的请求,而无需自动再次运行它。待处理的编辑、私有恢复副本和已检查的备份支持恢复。恢复操作不会检查授权,也不会恢复旧的批准。循环工作流程包括保存的配置文件和单业务 CSV 收件箱。每个回复仍需单独审查。没有任何内容会自动发布。
Keep evidence separate from confidence On October 14, the local release check ran 569 passing Python tests. Linux launcher HTTP workflows and Node state checks also have executed evidence. These checks do not establish current Windows, browser/mobile or model behavior. Two historical three-case Gemma smoke runs remain in the repository. The later run produced three model drafts on first attempts, but both runs predate current drafting-source changes and have no recorded human assessments. They do not validate this version’s reply quality.
将证据与信心分开:10 月 14 日,本地发布检查运行了 569 个通过的 Python 测试。Linux 启动器 HTTP 工作流和 Node 状态检查也执行了证据。这些检查不能确定当前的 Windows、浏览器/移动设备或模型行为。仓库中保留了两次历史性的三案例 Gemma 冒烟测试。后一次运行在首次尝试时产生了三个模型草稿,但两次运行都早于当前的起草来源更改,且没有记录人类评估。它们不能验证此版本的回复质量。
A historical false rejection of “should have addressed” and an accepted reply that softened an exact wait duration helped expose limits in the checks. Quality Lab preserves attempts, rejection reasons, retries, fallbacks and available model receipts so those failures remain inspectable. AI assistance helped implement, test and prepare the project and this write-up. Why Does Open Innovation Matter? Downloaded Gemma weights support inference on the owner’s machine without a hosted-model charge for each draft. Hardware, electricity and setup still cost money.
一次历史性的对“应该解决”的错误拒绝,以及一次软化了确切等待时间的已接受回复,帮助暴露了检查中的局限性。质量实验室保留了尝试、拒绝原因、重试、回退和可用的模型收据,以便这些失败仍然可供检查。AI 辅助帮助实现、测试并准备了该项目及本文档。为什么开放创新很重要?下载的 Gemma 权重支持在店主的机器上进行推理,而无需为每个草稿支付托管模型费用。硬件、电力和设置仍然需要成本。
Local execution gives the owner control over the customer context sent to the model and the runtime processing it. Open application code makes the policy boundary inspectable:
本地执行使店主能够控制发送给模型的顾客上下文以及处理它的运行时。开放的应用程序代码使政策边界可供检查: