<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>sigpanic (响滩)</title>
    <link>https://beta.w2solo.com/sigpanic</link>
    <description/>
    <language>en-us</language>
    <item>
      <title> 独立开发两年，我做了一个有记忆的 AI 写作系统</title>
      <description>&lt;h2 id="为什么开始"&gt;为什么开始&lt;/h2&gt;
&lt;p&gt;两年前我在用 AI 写网文。GPT 能写出不错的段落，但写到 50 章它就忘了主角为什么复仇。每开一个新对话，要把设定、前文、角色关系重新喂一遍，token 烧得心疼。&lt;/p&gt;

&lt;p&gt;伏笔更惨。第 12 章埋的吊坠，到第 47 章该回收了，我自己都忘了，AI 更不可能记得。写完一章还得手动提醒它"更新角色状态""检查弧线进度"。&lt;/p&gt;

&lt;p&gt;试过市面上的工具——要么是 SaaS，数据上云不放心；要么只是 prompt 模板的封装，没有真正的状态管理。&lt;/p&gt;

&lt;p&gt;于是决定自己做一个。核心思路很简单：&lt;strong&gt;不是给 AI 一个更好的 prompt，而是给 AI 一套它能自己查询和维护的结构化记忆。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;这个项目叫 Goink。&lt;/p&gt;
&lt;h2 id="技术选型"&gt;技术选型&lt;/h2&gt;
&lt;p&gt;选型没有花哨的：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Go + Wails v2&lt;/strong&gt;：桌面应用，单文件分发，启动快。不需要 Electron 的资源开销&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React 19 + TypeScript&lt;/strong&gt;：前端生态成熟，Monaco Editor 和 G6 图可视化都有现成集成&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SQLite&lt;/strong&gt;：结构化记忆的存储，ACID 保障，零配置&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ONNX Runtime&lt;/strong&gt;：本地语义搜索的推理引擎，不需要 GPU&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git&lt;/strong&gt;：内置版本控制，每个小说是独立仓库&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;没有用任何云服务。所有数据在本地——这是做长篇写作工具的前提，作者不会接受把几十万字的稿子放云端。&lt;/p&gt;
&lt;h2 id="核心设计：六维结构化记忆"&gt;核心设计：六维结构化记忆&lt;/h2&gt;
&lt;p&gt;这不是一个 chatbot 套壳。Goink 给 AI 提供了六个维度的结构化数据，AI 在对话中自主查询和维护：&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;角色关系&lt;/strong&gt;：有向图。A 对 B 和 B 对 A 是两条独立记录，关系变化时旧记录保留，可以回顾演变过程&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;伏笔追踪&lt;/strong&gt;：每条伏笔有目标章节和重要度。写新章节时自动注入近处伏笔的完整详情和远处伏笔的压缩索引&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;故事弧线&lt;/strong&gt;：有序节点链，写完一章自动推进。一个故事通常 3-5 条并行弧线&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;地点图谱&lt;/strong&gt;：层级包含 + 空间连通，不是扁平列表&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;读者认知&lt;/strong&gt;：已知/悬念/误解三态，控制信息释放节奏，防止"不小心暴露关键信息"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;创作偏好&lt;/strong&gt;：全局 + 每本小说双层，写到第 37 章依然生效&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;这些数据存在 SQLite 里，跨对话永久保留。AI 不是靠对话窗口的上下文"记住"这些，是靠查数据库。&lt;/p&gt;
&lt;h2 id="31 个工具：AI 的手和眼"&gt;31 个工具：AI 的手和眼&lt;/h2&gt;
&lt;p&gt;给 LLM 提供了 31 个 Function Calling 工具，覆盖写作全流程——读文件、写文件、语义搜索、角色 CRUD、伏笔管理、弧线推进、地点查询、读者认知设置、创作偏好、章节管理、子 Agent 调度、web 搜索。&lt;/p&gt;

&lt;p&gt;核心是一个 ReAct 循环：LLM 拿到上下文后，自主决定调用哪个工具、传什么参数、下一步做什么。不是 pipeline 式的"大纲 Agent → 正文 Agent → 润色 Agent"——那种设计信息在每一步都在丢失。Goink 的 Agent 在一个连续上下文里完成所有操作。&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;用户: 写第37章

Agent 内部:
  → 查角色状态 → 搜前文线索 → 查伏笔 → 读上一章 → 写正文 → 更新角色 → 推进弧线 → 自检
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;还有子 Agent 系统：审稿 Agent 做四维检查（角色一致性/情节逻辑/伏笔管理/读者认知），记忆 Agent 做多维度检索。Sub-agent 的工具调用对主 Agent 不可见，只有最终报告回传，不污染主写作上下文。&lt;/p&gt;
&lt;h2 id="本地语义搜索：几十万字里找一句话"&gt;本地语义搜索：几十万字里找一句话&lt;/h2&gt;
&lt;p&gt;这是开发过程中花时间最多的一块。&lt;/p&gt;

&lt;p&gt;写到第 50 章，主角见到一个吊坠，AI 需要确认"这个吊坠第一次出现是第几章"。调 &lt;code&gt;search_story_memory("吊坠的来历")&lt;/code&gt;，1 秒返回最相关段落——不是关键词匹配，是按语义搜索。&lt;/p&gt;

&lt;p&gt;技术栈：BGE-small-zh-v1.5 int8 量化，ONNX Runtime 本地 CPU 推理，sqlite-vec 做向量索引。中文感知分句（在句号感叹号处切分），420 token 窗口，50 重叠。混合搜索三路并发：实体名模糊 + 正文精确 + 语义搜索。&lt;/p&gt;

&lt;p&gt;最麻烦的是增量索引——写完章节后台自动刷新，但要去重合并 500ms 内的重复任务，否则连点几次保存会触发多次索引重建。&lt;/p&gt;

&lt;p&gt;整套引擎不需要网络、不需要 GPU。一个安装包，打开就用。&lt;/p&gt;
&lt;h2 id="Diff 审批：AI 不会直接改你的稿"&gt;Diff 审批：AI 不会直接改你的稿&lt;/h2&gt;
&lt;p&gt;默认 AI 不会直接修改正文。每次编辑生成 Diff，Monaco Editor 展示对比，用户批准后写入。写入前还会重读文件比对——如果审批期间文件被其他程序改了，拒绝写入，防止覆盖手动修改。&lt;/p&gt;

&lt;p&gt;也有自动模式，AI 连续多轮自由写作，适合信任 AI 发挥的场景。&lt;/p&gt;
&lt;h2 id="Git 内置：每次对话自动提交"&gt;Git 内置：每次对话自动提交&lt;/h2&gt;
&lt;p&gt;每个小说是独立 git 仓库。每次对话自动 commit，commit message 包含 session ID 和模型名。支持按 turn 粒度回退——DB 元数据 + git revert 同步原子操作。&lt;/p&gt;

&lt;p&gt;"AI 写了一堆东西，我想回到三天前的版本"——这个场景在实际使用中比想象中频繁。&lt;/p&gt;
&lt;h2 id="Skill 系统：Markdown 文件即方法论"&gt;Skill 系统：Markdown 文件即方法论&lt;/h2&gt;
&lt;p&gt;12 个内置写作技能（场景节拍、对白潜台词、节奏控制、悬念钩子等），&lt;code&gt;/技能名&lt;/code&gt; 一键加载。自定义 Skill 只需创建 Markdown 文件放到 &lt;code&gt;~/.goink/skills/&lt;/code&gt;，系统热加载。三层覆盖：小说级 &amp;gt; 用户级 &amp;gt; 内置级。&lt;/p&gt;

&lt;p&gt;后来又做了技能市场——社区仓库 &lt;a href="https://github.com/sigpanic/goink-skills" rel="nofollow" target="_blank" title=""&gt;sigpanic/goink-skills&lt;/a&gt;，App 内浏览、搜索、一键安装。你写的好套路，别人一键就能用。&lt;/p&gt;
&lt;h2 id="一些数字"&gt;一些数字&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;安装包 &amp;lt; 60MB，零外部依赖&lt;/li&gt;
&lt;li&gt;31 个 Function Calling 工具&lt;/li&gt;
&lt;li&gt;7 个内置 LLM Provider 模板（DeepSeek/GLM/MiniMax/MiMo/Kimi/Qwen/豆包）&lt;/li&gt;
&lt;li&gt;12 个内置写作技能 + 社区技能市场&lt;/li&gt;
&lt;li&gt;6 套可视化面板（角色关系图/地点图谱/弧线泳道图等）&lt;/li&gt;
&lt;li&gt;AGPL v3 开源&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="开发过程中的一些感受"&gt;开发过程中的一些感受&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;最难的不是技术，是产品决策。&lt;/strong&gt; 比如"AI 应该自动维护记忆还是等用户提醒"——一开始做成自动的，后来发现用户需要控制感，又加了审批流程。再比如"伏笔应该怎么注入"——全量注入会淹没上下文，最终做成近处完整 + 远处索引的两级方案。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Go + Wails 是个好组合。&lt;/strong&gt; 单文件分发，启动快，内存占用低。唯一痛点是 CGO——ONNX Runtime 和 sqlite-vec 都需要 cgo，交叉编译比较麻烦。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;本地优先是个正确的选择。&lt;/strong&gt; 写作工具的用户对隐私敏感，数据在本地是个硬需求。虽然开发成本比 SaaS 高（要处理本地文件、本地索引、本地推理），但产品定位更清晰。&lt;/p&gt;
&lt;h2 id="项目信息"&gt;项目信息&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;：&lt;a href="https://github.com/sigpanic/goink" rel="nofollow" target="_blank" title=""&gt;github.com/sigpanic/goink&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;技能市场&lt;/strong&gt;：&lt;a href="https://github.com/sigpanic/goink-skills" rel="nofollow" target="_blank" title=""&gt;github.com/sigpanic/goink-skills&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;协议&lt;/strong&gt;：AGPL v3&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;平台&lt;/strong&gt;：Windows / macOS / Linux&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;安装包&lt;/strong&gt;：&amp;lt; 60MB，零依赖&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;如果你也在用 AI 写长文，被"写到后面忘了前面"折磨过，欢迎试试。&lt;/p&gt;</description>
      <author>sigpanic</author>
      <pubDate>Mon, 31 Aug 2026 20:28:12 +0800</pubDate>
      <link>https://beta.w2solo.com/topics/8414</link>
      <guid>https://beta.w2solo.com/topics/8414</guid>
    </item>
    <item>
      <title>一个人做了个桌面 AI 写作工具，最近把风格提取和 Skill 市场搞上线了</title>
      <description>&lt;p&gt;去年开始写网文，发现通用 AI 聊天写长篇完全是灾难——写到第五章忘了第三章的角色，伏笔散落在几百条聊天记录里，prompt 调好了关窗口就没。市面上没有趁手的桌面工具，决定自己做一个。&lt;/p&gt;

&lt;p&gt;大半年下来，Goink 跑到了 v1.1.1，GitHub 99 个 Star。来社区分享一下最近的进展，求试用反馈。&lt;/p&gt;
&lt;h3 id="这次更新的核心功能"&gt;这次更新的核心功能&lt;/h3&gt;
&lt;p&gt;之前发过帖子介绍基本的 Agent 引擎和六维记忆系统，这次主要说三个新东西——&lt;strong&gt;Skill 系统、风格提取、套路提取&lt;/strong&gt;。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Skill 系统&lt;/strong&gt;：写作方法论变成可持久化的 Markdown 文件。有 YAML 元数据头（name、description、mode），正文就是给 AI 的工作手册。内置了 13 个（角色设计、对白技巧、节奏控制、去 AI 味等），用户可以自己写，也可以从市场装。三种触发模式：auto（AI 自己判断何时用）、manual（/ 手动触发）、always（每轮常驻）。还做了三层覆盖——小说级 &amp;gt; 用户级 &amp;gt; 内置级，同名的按优先级覆盖。有点像 VS Code 的插件系统，不过是给 AI 看的。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;风格提取&lt;/strong&gt;：贴几段你满意的文字，AI 从六个维度拆解你的文风（句式、用词、修辞、节奏、视角、语调）。关键设计是先做一轮确定性文本统计（句长分布、标点密度等），然后用这些硬数据给 LLM 的分析当锚点，避免 AI 胡说八道。输出一份标准的「风格仿写」Skill，你可以直接设为 auto 模式，之后 AI 写东西自动按你的风格来。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;套路提取&lt;/strong&gt;：选你小说里至少 5 章，AI 跑一个四阶段 Pipeline——分析章节边界 → 生成摘要 → 递归压缩 → 输出叙事套路模板。最终会告诉你比如"你的小说每 10 章一个爽点循环，反派出场前有 2-3 章侧面铺垫，主角成长节点每 25 章一次"。结果也是一份 Skill 文件，可以复用、可以迭代、可以分享。
&lt;img src="https://img.way2solo.com/photo/sigpanic/2a2a9276-e611-468f-8cc2-f096a1e2c853.png?imageView2/2/w/1920/q/100" title="" alt=""&gt;&lt;/p&gt;
&lt;h3 id="为什么选这个技术栈"&gt;为什么选这个技术栈&lt;/h3&gt;
&lt;p&gt;Wails v2（Go + React 19）+ SQLite + ONNX Runtime。没选 Electron，空壳太大了。没选 Python，用户不想装环境。Go 编译成一个二进制文件，安装包不到 60MB，三平台通用。ONNX 跑的是 BAAI 的 bge-small-zh-v1.5，语义搜索完全在本地，不用连网。&lt;/p&gt;

&lt;p&gt;内置了 7 个国产大模型——DeepSeek、通义千问、GLM、MiniMax、小米 MiMo、Kimi、豆包——填 API Key 就能用。都是 OpenAI 兼容接口，但每个有自己的毛刺，适配花了不少时间。&lt;/p&gt;
&lt;h3 id="一个人开发的真实感受"&gt;一个人开发的真实感受&lt;/h3&gt;
&lt;p&gt;累是真的累。前端 React + TypeScript + Tailwind + shadcn/ui 整套，后端 Go 自研 Agent 引擎 + 30 多个 MCP 工具 + ONNX 集成 + SQLite ORM，两边都要维护。版本迭代快的时候一天能发两个版。&lt;/p&gt;

&lt;p&gt;但也有爽的地方。因为前后端都是自己写的，改架构不需要开会。想到风格提取加一层统计锚点的方案，两小时就写完了。三层覆盖的优先级机制，中午想的下午就上线了。这种自由度是大厂给不了的。&lt;/p&gt;
&lt;h3 id="Skill市场"&gt;Skill 市场&lt;/h3&gt;
&lt;p&gt;我觉得一个好的 skill 应当被大家所看到，被更多人使用，所以在此基础上也做了一个 skill 的市场，用于给大家分享各自的 skill，让更多人体验到 skill 的能力。欢迎大家上传你的写作 skill。
&lt;img src="https://img.way2solo.com/photo/sigpanic/e517ec06-7707-430b-bbf7-601b31be21c9.png?imageView2/2/w/1920/q/100" title="" alt=""&gt;&lt;/p&gt;
&lt;h3 id="求反馈"&gt;求反馈&lt;/h3&gt;
&lt;p&gt;GitHub: &lt;a href="https://github.com/sigpanic/goink" rel="nofollow" target="_blank" title=""&gt;github.com/sigpanic/goink&lt;/a&gt;
Skill 市场: &lt;a href="https://github.com/sigpanic/goink-skills" rel="nofollow" target="_blank" title=""&gt;github.com/sigpanic/goink-skills&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;目前 Windows 版最稳定（80% 的用户是 Windows），macOS 和 Linux 也能跑。如果你也在写东西，或者对 AI Agent 方向感兴趣，欢迎下载试试、提 issue、给 Star。&lt;/p&gt;</description>
      <author>sigpanic</author>
      <pubDate>Sun, 19 Jul 2026 21:41:45 +0800</pubDate>
      <link>https://beta.w2solo.com/topics/7801</link>
      <guid>https://beta.w2solo.com/topics/7801</guid>
    </item>
    <item>
      <title>做了个中文长篇写作的 AI Agent，免费开源，求试用反馈</title>
      <description>&lt;p&gt;做了大半年的一个项目，最近终于发到 v1.0.0 了，来社区求一波试用和反馈。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Goink&lt;/strong&gt; —— 一个桌面 AI 写作 Agent，专门为中文长篇创作（网文、传统长篇、系列作品）设计的。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;为什么做这个&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;用通用 AI 写过长篇的人应该都有体会：写几十章之后 AI 根本不记得前面写了什么，每次都得重新喂设定、贴前文、交代伏笔，token 烧得心疼。而市面上的 AI 写作工具大部分只是在卷「怎么让 AI 写出更漂亮的句子」，没人解决「记忆」的问题。&lt;/p&gt;

&lt;p&gt;于是我在底层搞了一套六维结构化记忆引擎——角色关系有向图、伏笔追踪 + 回收提醒、弧线泳道、地点拓扑、读者认知控制面板——全部持久化在 SQLite 里。Agent 在需要时自己调用工具查库，不靠 prompt 硬背。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;怎么用的&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;你输入「写第 37 章，主角在黑暗森林遇到神秘老人，暗示身世真相」，Agent 自己完成全部执行链：查角色→搜伏笔→读前一章→生成正文→出 Diff 等你审批→自动维护（更新角色状态、标记伏笔回收、推进弧线、刷新读者认知）。整条链全自主跑通，不用在旁边一步步指挥。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;几个我觉得比较有意思的点&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;31 个工具全由 AI 自主决策调用，不是手动点按钮的工具箱&lt;/li&gt;
&lt;li&gt;写完每章系统强制 AI 自查六维状态变化，还有独立审稿子 Agent 二次审查&lt;/li&gt;
&lt;li&gt;本地语义搜索基于 ONNX Runtime + sqlite-vec，断网也能按意思搜几十万字&lt;/li&gt;
&lt;li&gt;每次对话自动 Git commit，Diff 逐行审批，写坏了随时回退&lt;/li&gt;
&lt;li&gt;Markdown 文件就是写作方法论，热重载，还能从旧稿反向提取文风生成仿写 Skill&lt;/li&gt;
&lt;li&gt;7 个国产大模型开箱即用，10 万字 API 成本不到一瓶可乐&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;技术栈&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Wails v2（Go + React 19）+ Tailwind CSS 4 + shadcn/ui + SQLite + ONNX Runtime + G6 可视化 + Monaco Editor&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;现在是这样的&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub：&lt;a href="https://github.com/sigpanic/goink" rel="nofollow" target="_blank"&gt;https://github.com/sigpanic/goink&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;MIT 开源，永久免费，安装包 &amp;lt;60MB，全平台&lt;/li&gt;
&lt;li&gt;目前 v1.0.0，还在快速迭代中&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;一个人开发，精力有限，很多地方还不够完善。求各位试用、提 issue、给建议，感谢！&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;演示图片&lt;/strong&gt;
&lt;img src="https://img.way2solo.com/photo/sigpanic/d0419e63-918f-4222-a873-07ac56054d4d.png?imageView2/2/w/1920/q/100" title="" alt=""&gt;
&lt;img src="https://img.way2solo.com/photo/sigpanic/3cadde41-2fd7-4aaf-a199-8309d497d6a7.png?imageView2/2/w/1920/q/100" title="" alt=""&gt;
&lt;img src="https://img.way2solo.com/photo/sigpanic/c98ce858-7d90-413d-bc1b-2da850d0cf5d.png?imageView2/2/w/1920/q/100" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>sigpanic</author>
      <pubDate>Mon, 29 Jun 2026 22:19:12 +0800</pubDate>
      <link>https://beta.w2solo.com/topics/7618</link>
      <guid>https://beta.w2solo.com/topics/7618</guid>
    </item>
  </channel>
</rss>
