<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
<channel>
<atom:link href="https://www.duya25446.top/feed" rel="self" type="application/rss+xml"/>
<title>宏世界资讯终端</title>
<link>https://www.duya25446.top</link>
<description>你好，我是渡鸦25446</description>
<language>zh-CN</language>
<copyright>© 渡鸦25446 </copyright>
<pubDate>Tue, 28 Apr 2026 12:13:25 GMT</pubDate>
<generator>Mix Space CMS (https://github.com/mx-space)</generator>
<docs>https://mx-space.js.org</docs>
<image>
    <url>https://www.duya25446.top/api/v2/objects/avatar/wj9x46a9x0b7filpf4.jpg</url>
    <title>宏世界资讯终端</title>
    <link>https://www.duya25446.top</link>
</image>
<item>
    <title>海虾之馆-目前的线索</title>
    <link>https://www.duya25446.top/posts/coc/clues</link>
    <pubDate>Mon, 11 Aug 2025 06:19:08 GMT</pubDate>
    <description>线索合集

* 核心谜团*  
海虾与黄金之谜  
   10年前活跃于欧洲的匿名画家，风格写实但色</description>
    <content:encoded><![CDATA[
      <blockquote>该渲染由 marked 生成，可能存在排版问题，最佳体验请前往：<a href='https://www.duya25446.top/posts/coc/clues'>https://www.duya25446.top/posts/coc/clues</a></blockquote>
      <h1>线索合集</h1>
<hr>
<h3>** 核心谜团**</h3>
<ol>
<li><p><strong>海虾与黄金之谜</strong>  </p>
<ul>
<li>10年前活跃于欧洲的匿名画家，风格写实但色彩超现实  </li>
<li>5年前携财富定居顺普镇，2年前失踪前兑换巨额黄金（下落不明）  </li>
<li>传闻黄金藏在宅邸的 <strong>「隐秘房间」</strong> 中</li>
</ul>
</li>
<li><p><strong>失踪事件链</strong>  </p>
<ul>
<li>所有失踪者共通点：参观过海虾之馆（签有免责协议）  </li>
<li>乔治在艺术协会三楼发现 <strong>22人名单</strong>（07-26）：  </li>
<li>受害者马克身份：克里斯同事，调查东海岸艺术品走私案时遇害（警局告示，08-10）</li>
</ul>
</li>
</ol>
<hr>
<h3>** 地点与势力**</h3>
<h4><strong>顺普市分区</strong></h4>
<table>
<thead>
<tr>
<th>区域</th>
<th>特征</th>
<th>关键场所</th>
</tr>
</thead>
<tbody><tr>
<td><strong>西城区</strong></td>
<td>富人区/艺术旅游区，外来者聚集</td>
<td>高级酒店、鸟语俱乐部、海虾艺术协会</td>
</tr>
<tr>
<td><strong>东城区</strong></td>
<td>贫民区/渔业区，本地人聚居，排斥外来者</td>
<td>码头、渔业帮会</td>
</tr>
<tr>
<td><strong>中城区</strong></td>
<td>行政中心，东西区矛盾缓冲带</td>
<td>警局、市政厅、医院、教堂</td>
</tr>
</tbody></table>
<h4><strong>地图</strong></h4>
<p></p>
<hr>
<h3><strong>乔治潜入三楼办公室线索</strong></h3>
<h4><strong>1. 异常衣柜</strong></h4>
<ul>
<li>办公室内有巨大衣柜，柜内墙贴满 <strong>密密麻麻的颜色标签</strong>  </li>
<li>标签内容为各类色彩名称的色块，视觉冲击强烈  </li>
<li>暗示与海虾的 <strong>彩色颜料</strong> 或 <strong>精神控制</strong> 相关（后证实颜料具超自然吸引力）</li>
</ul>
<h4><strong>2. 失踪者名单（关键证据）</strong></h4>
<ul>
<li>书桌抽屉发现 <strong>黑色笔记本</strong>，内藏两年间按月记录的名单  </li>
<li>名单规律：  <ul>
<li>总人数 <strong>22人</strong>，均为 <strong>月中记录</strong>    </li>
<li>乔治抄录部分姓名：首尾名+1年前节点名（暂未公开具体名）</li>
</ul>
</li>
</ul>
<h4><strong>3. 警察罗恩的警告</strong></h4>
<ul>
<li>下楼时被罗恩警官发现，追问后透露：  <ul>
<li>名单中人物均与 <strong>游客失踪案</strong> 相关  </li>
<li>上一名失踪者最后现身 <strong>城市公墓</strong>  </li>
<li>警局有无头尸体未认领（后确认为马克）  </li>
<li>强调：<strong>“窥探海虾秘密有生命危险”</strong></li>
</ul>
</li>
</ul>
<hr>
<h3><strong>线索关联分析</strong></h3>
<table>
<thead>
<tr>
<th>发现线索</th>
<th>后续验证</th>
<th>谜题指向</th>
</tr>
</thead>
<tbody><tr>
<td><strong>颜色标签墙</strong></td>
<td>海虾画作颜料含同类反光颗粒（沙拉/画室）</td>
<td>颜料来源与超自然效应</td>
</tr>
<tr>
<td><strong>22人名单</strong></td>
<td>埃文袭击玩家、马克死亡、罗恩确认关联失踪案</td>
<td>艺术协会系统性卷入失踪事件</td>
</tr>
<tr>
<td><strong>罗恩的警告</strong></td>
<td>海虾之馆《月亮》画作隐喻“献祭”</td>
<td>禁室深井或为仪式场所</td>
</tr>
</tbody></table>
<blockquote>
<h3>行动建议</h3>
<ol>
<li><strong>名单核对</strong>：将乔治所记姓名与罗恩处失踪档案交叉比对  </li>
<li><strong>标签墙解析</strong>：结合海虾颜料配方书籍（画室）分析色彩作用  </li>
<li><strong>埃文追踪</strong>：以“袭击案”为由通过警局施压艺术协会</li>
</ol>
</blockquote>
<p>此为乔治潜入段的完整综述，后续进展（如螳螂虾、禁室壁画）已归档至主线。</p>
<h4><strong>海虾之馆（重点！）</strong></h4>
<ul>
<li><strong>禁止进入的房间（08-08）</strong>：  <ul>
<li>铅制墙壁（防辐射？），中央有深井  </li>
<li>壁画描绘海妖斯库拉（需6祭品），井中爬出 <strong>彩色螳螂虾</strong>，当前由斯特林保管</li>
</ul>
</li>
<li><strong>其他房间线索</strong>：  <ul>
<li>书房：印第安捕梦网（关联商店街店铺）、古格温家族史册（10年前亡于瘟疫）  </li>
<li>画室：白色粉末颜料（与酒店沙拉异物成分相同）  </li>
<li>收藏室：眼球模型（标签显示制作者：<code>海虾 &amp; 凯瑟琳医生</code>）</li>
</ul>
</li>
</ul>
<hr>
<h3>** 关键人物档案**</h3>
<table>
<thead>
<tr>
<th>姓名</th>
<th>身份</th>
<th>线索与秘密</th>
</tr>
</thead>
<tbody><tr>
<td><strong>西蒙</strong></td>
<td>艺术协会会长</td>
<td>继承海虾遗产，行踪神秘，从未露面（朱斯蒂娜代管事务）</td>
</tr>
<tr>
<td><strong>朱斯蒂娜</strong></td>
<td>西蒙秘书</td>
<td>透漏东西城区矛盾，轻视本地人，否认协会与失踪案关联</td>
</tr>
<tr>
<td><strong>凯瑟琳医生</strong></td>
<td>眼科医生/海虾合作者</td>
<td>提供眼球模型医学支持，海虾失踪后入职顺普医院（需调查）</td>
</tr>
<tr>
<td><strong>罗恩警官</strong></td>
<td>新人警员（可信赖）</td>
<td>调查失踪案受阻，提供关键信息：<strong>尸体无头切口平滑</strong>、鸟语俱乐部涉艺术品走私</td>
</tr>
<tr>
<td><strong>亚历克斯</strong></td>
<td>酒店老板/鸟语俱乐部会员</td>
<td>可能提供俱乐部入场渠道（前台已传话待回复）</td>
</tr>
<tr>
<td><strong>埃文</strong></td>
<td>袭击者/名单末位</td>
<td>在海虾之馆引导玩家进禁室，疑似神志不清</td>
</tr>
</tbody></table>
<hr>
<h3>** 海虾画作线索**</h3>
<ol>
<li><p><strong>超自然特性</strong></p>
<ul>
<li>色彩能吸引鸟类/蛇类等多色视觉生物（斯特林展示真迹时鸟群聚集）  </li>
<li>颜料含 <strong>白色反光颗粒</strong>（酒店食物、画室残留物、颜料书籍均出现）</li>
</ul>
</li>
<li><p><strong>关键作品解析</strong></p>
<table>
<thead>
<tr>
<th>画作</th>
<th>地点</th>
<th>隐喻与线索</th>
</tr>
</thead>
<tbody><tr>
<td>《自画像》</td>
<td>宅邸门厅</td>
<td>戴面具手套的未知男性，面具边缘泛五彩反光</td>
</tr>
<tr>
<td>《山坡上的巨人》</td>
<td>艺术馆1楼</td>
<td>疑似宅邸所在地山坡，月光下怪物轮廓</td>
</tr>
<tr>
<td>《无名渔村》</td>
<td>艺术馆1楼</td>
<td>燃烧状苍白冷光海水→可能关联渔业畸形</td>
</tr>
<tr>
<td>《阿萨谢尔》</td>
<td>艺术馆2楼</td>
<td>异端构图：堕天使高于上帝，暗示海虾反叛信仰</td>
</tr>
<tr>
<td>《月亮》</td>
<td>宅邸走廊</td>
<td>塔罗牌隐喻+巨虾象征（深层欲望）</td>
</tr>
</tbody></table>
</li>
</ol>
<hr>
<p>以下是log中所有画作的 <strong>完整原文描述</strong> 整理：</p>
<hr>
<h3><strong>1. 海虾自画像（07-25 22:43:04）</strong></h3>
<blockquote>
<p><strong>位置</strong>：海虾之馆门厅楼梯墙面<br><strong>描述</strong>：<br>“这是一张2m※1.5m的巨大人像，人像做出微微俯视的姿势，像是在居高临下地和欣赏这幅画的人对视。<br>画中男人的全身都被罩在一件黑色的大衣之中，甚至连手腕都被白色的手套隐藏起来。脸上戴着只露出双眼的骨白色硬质面具。面具的边缘，在从二楼传来的阳光的照耀下，透出不可思议的五彩反光。”  </p>
</blockquote>
<hr>
<h3><strong>2. 《山坡上的巨人》（07-26 22:07:20）</strong></h3>
<blockquote>
<p><strong>位置</strong>：艺术协会一楼展厅<br><strong>描述</strong>：<br>“这幅画的背景是靠海的山坡，夜晚的天空像是一片无光之海，高高低低的影子背着光立于山坡之上，月光勾勒出了他们的轮廓，像极了画本中充满压迫感的怪物。”<br><strong>补充</strong>：玩家发现画中山坡与海虾之馆所在地形高度相似。</p>
</blockquote>
<hr>
<h3><strong>3. 《无名画作》（07-26 22:07:20）</strong></h3>
<blockquote>
<p><strong>位置</strong>：艺术协会一楼展厅<br><strong>描述</strong>：<br>“这幅的内容是俯瞰视角下的马塞诸州海边渔村的风景，无数简陋的木质棚屋沿着歪歪斜斜的海岸线分布，海水像在燃烧一般升腾着，规律地蔓延在整片海域，背景则是一团模糊的绿色。<br>作品中所绘制的火焰和正常的也有所出入，颜色看起来淡了一些，边缘泛着神秘的色彩，没有火焰的鲜亮感觉，倒像是苍白的一团冷光。”  </p>
</blockquote>
<hr>
<h3><strong>4. 《阿萨谢尔（Azazil）》（07-26 22:23:19）</strong></h3>
<blockquote>
<p><strong>位置</strong>：艺术协会二楼展厅<br><strong>描述</strong>：<br>“画作的中心站着三个人。  </p>
<ul>
<li>一个是看不出年纪，身后有着辉煌晕轮，体魄完美的威严人形；  </li>
<li>一个是青年的裸体男人，两人并肩背对观者而立。<br>他们的对面，则是正对观者与两人，垂落洁白羽翼的高大年轻男子，似乎因为视点的问题，他看上去站在比对着的两人更高的位置，脸因正视威严人形头上的光辉而模糊不清。<br>整幅画的背景是布满云与光辉的天空。”<br><strong>隐喻</strong>：堕天使阿萨谢尔拒绝跪拜亚当而堕天，构图将堕天使置于上帝之上，隐含异端思想。</li>
</ul>
</blockquote>
<hr>
<h3><strong>5. 《月亮》（08-08 22:56:07）</strong></h3>
<blockquote>
<p><strong>位置</strong>：海虾之馆走廊<br><strong>描述</strong>：<br>“整幅画的背景是夜空下的海边荒野，两座灰色的灯塔相对着位于画面的左右两侧，仿佛组成了虚幻的门扉。<br>画作的正中是巨大的月亮，同时展现出弦月、半月与圆月三个状态。<br>月亮之下则是一对吠叫的狗和狼，被置于背景远处次要的位置，再下方，则是从海中爬出的，鳞甲峥嵘的青灰色的虾。”<br><strong>原型</strong>：韦特塔罗牌《月亮》，虾象征“从黑暗之海涌现的欲望”。</p>
</blockquote>
<hr>
<h3><strong>6. 铅房壁画「斯库拉」（08-08 23:21:34）</strong></h3>
<blockquote>
<p><strong>位置</strong>：海虾之馆禁室（铅房）<br><strong>描述</strong>：<br>“暗室四周的岩石墙壁及天花板上用夸张的颜色和手法描绘出了一整幅壁画：  </p>
<ul>
<li>四面是汹涌的海水中翻涌的鲜红色触手；  </li>
<li>头顶则是纠缠于一座凸起的峭壁之上的怪物，它的上半身是散发裸体的妖魅女人，在腰间长着六颗野兽的头颅，下半身则是十二条鲜红触手的根部；<br>四面墙上的触手即是它延伸而来。”<br><strong>隐喻</strong>：希腊海妖斯库拉，六兽头需六祭品喂食，视线聚焦于房间中央的深井。</li>
</ul>
</blockquote>
<hr>
<p></p>
<h3>** 待解谜题与行动方向**</h3>
<ol>
<li><strong>金属密室</strong>：海虾宅邸铅室下的井是否通往什么地方？  </li>
<li><strong>颜料来源</strong>：白色颗粒是否与渔业畸形（水产品变异）相关？颜料来源是什么，怎么制作的？  </li>
<li><strong>鸟语俱乐部</strong>：艺术品走私链核心，怀疑和调查与寻宝人员失踪有关，可能和艺术协会勾结。目前打算参加调查，需通过酒店老板获取邀请函，待寻找其他方法</li>
<li><strong>凯瑟琳医生</strong>：作为海虾合作者，掌握眼球模型的制作方法，值得调查  </li>
<li><strong>古格温家族</strong>：十年前瘟疫团灭，宅邸被海虾翻新</li>
<li><strong>下一步行动</strong>：  <ul>
<li>赴酒店等亚历克斯回复  </li>
<li>调查捕梦网店铺（朱斯蒂娜提及）  </li>
<li>接触医院凯瑟琳医生  </li>
<li>与罗恩共享线索</li>
</ul>
</li>
</ol>
<blockquote>
<p>此归档基于log更新至 <strong>08-10</strong>，新线索可随时补充。</p>
</blockquote>
<p>以下是 <strong>08-12 至 08-13</strong> 新增线索的完整归档，按「人物」「地点」「行动方向」分类整合，并标注关键伏笔：</p>
<hr>
<h3><strong>新增核心线索</strong></h3>
<h4><strong>1. 亚历克斯的交易条件</strong></h4>
<ul>
<li><strong>邀请函获取方式</strong>：  <ul>
<li>需说服 <strong>凯瑟琳医生</strong> 参加明晚鸟语俱乐部拍卖会（展示未面世海虾画作）  </li>
<li>凯瑟琳可带 <strong>1名同行者</strong>（即玩家可借此入场）</li>
</ul>
</li>
<li><strong>亚历克斯的异常</strong>：  <ul>
<li>因 <strong>多次骚扰凯瑟琳</strong> 被医院禁止进入 → 暗示偏执意图  </li>
<li>称古格温家族为 <strong>&quot;美的反面&quot;</strong>（畸形 vs 艺术之都的讽刺）</li>
</ul>
</li>
</ul>
<h4><strong>2. 古格温家族秘闻（亚历克斯补充）</strong></h4>
<ul>
<li><strong>灭绝真相</strong>：  <ul>
<li>10年前亡于瘟疫，全族有 <strong>先天生理畸形</strong>（具体形态未知）  </li>
<li>住所位于海虾之馆同一山坡 → <strong>铅房壁画或与之关联</strong></li>
</ul>
</li>
<li><strong>本地态度</strong>：  <ul>
<li>亚历克斯轻蔑称其为 <strong>&quot;怪物&quot;</strong>，暗示价值观对立（畸形原生 vs 艺术外来）</li>
</ul>
</li>
</ul>
<h4><strong>3. 克里斯失踪事件（紧急！）</strong></h4>
<ul>
<li><strong>时间线</strong>：</li>
<li><pre class="mermaid">timeline
  title 克里斯最后行踪
  section 警局登记
    16:00-17:00 ： 完成马克身份登记后离开
  section 失踪时段
    17:00后 ： 未返回酒店，无联络
  section 玩家行动
    23:00 ： 报警确认失踪</pre></li>
<li><strong>关键细节</strong>：  <ul>
<li>罗恩证实离开时无异样 → 排除警局内部嫌疑  </li>
<li>乔治提议 <strong>沿警局→酒店路线调查</strong>（优先行动方向）</li>
</ul>
</li>
</ul>
<h4><strong>4. 新NPC登场：亚瑟侦探</strong></h4>
<ul>
<li><strong>身份</strong>：斯特林旧识，经营 <strong>亚瑟侦探事务所</strong>  </li>
<li><strong>特征</strong>：  <ul>
<li>酗酒（电话中疑似醉酒摔倒）  </li>
<li>异常生理： <strong>复眼结构</strong>（&quot;撑开复眼&quot;）、 <strong>嘴唇开裂</strong> → 疑非人类</li>
</ul>
</li>
<li><strong>作用</strong>：被斯特林紧急召集协助调查克里斯失踪</li>
</ul>
<hr>
<h3><strong>待解谜题升级</strong></h3>
<ol>
<li><strong>克里斯安危</strong>：是否符合 <strong>22人名单</strong> 规律？（月中记录期临近）  </li>
<li><strong>凯瑟琳困境</strong>：  <ul>
<li>如何说服被亚历克斯骚扰过的目标？  </li>
<li>她手中是否掌握 <strong>未面世画作</strong> 的秘密？</li>
</ul>
</li>
<li><strong>古格温畸形</strong>：与渔业畸形、颜料颗粒是否存在 <strong>污染链关联</strong>？  </li>
<li><strong>亚瑟的异常</strong>：生理特征是否与 <strong>海虾画作超自然元素</strong> 有关？</li>
</ol>
<hr>
<h3><strong>下一步行动建议</strong></h3>
<p>graph LR
A[紧急行动] --&gt; B[沿警局-酒店路线<br/>搜寻克里斯痕迹]
A --&gt; C[联络罗恩调取路面监控]
D[主线任务] --&gt; E[拜访凯瑟琳医生<br/>提及“亚历克斯邀请”]
D --&gt; F[筹备明晚俱乐部渗透<br/>需决定谁陪同凯瑟琳]
G[新情报网] --&gt; H[亚瑟能力评估<br/>探明其生物特征真相]</p>
<blockquote>
<p><strong>风险提示</strong>：克里斯失踪意味着玩家组已暴露在对方视野中，建议携带防身武器行动<br><strong>归档更新至log时间</strong>：08-12 23:55:46（亚瑟介入节点）</p>
</blockquote>

      <p style='text-align: right'>
      <a href='https://www.duya25446.top/posts/coc/clues#comments'>看完了？说点什么呢</a>
      </p>
    ]]>
    </content:encoded>
  <guid isPermaLink="false">68998b5ccb153657275afe74</guid>
  <category>posts</category>
<category>COC相关</category>
 </item>
  <item>
    <title>海虾之馆log</title>
    <link>https://www.duya25446.top/posts/coc/hxlog</link>
    <pubDate>Mon, 11 Aug 2025 05:41:48 GMT</pubDate>
    <description>COC剧情线索归档（07-18至07-25）  

07-18 12:52:44 KP（鹤涧）  
</description>
    <content:encoded><![CDATA[
      <blockquote>该渲染由 marked 生成，可能存在排版问题，最佳体验请前往：<a href='https://www.duya25446.top/posts/coc/hxlog'>https://www.duya25446.top/posts/coc/hxlog</a></blockquote>
      <h3>COC剧情线索归档（07-18至07-25）</h3>
<h4><strong>07-18 12:52:44 KP（鹤涧）</strong></h4>
<p>关于海虾：海虾是10年前开始活跃于欧洲地下收藏界的匿名画家，他的作品一般从现实中取景，在形体描绘上偏向于写实主义，着重于细部的描绘，色彩的选取却十分多变而大胆，有一种朦胧之美。除此之外，他也乐于去描绘神秘学和梦境的超现实主义题材。因为独树一帜的风格，他的作品很快备受追捧，并多以极高的价格成交，但他本人却深居简出，平时一直以身穿大衣戴白色手套和只露出双眼的面具的形象示人，无人见过他的真正面目。在5年前，他离开了欧洲，带着多年积累的财富定居在了马塞诸州的一个名叫顺普的小镇，并于2年前失踪。而他和银行唯一的一笔交易记录，就是他于失踪前向银行兑换了巨额的黄金。而那笔黄金也不翼而飞。据说那些黄金现在还藏在他位于顺普家中的隐秘房间之中，调查员被委托的任务就是找到这位颇具神秘色彩的画家留下的巨额财富。  </p>
<h4><strong>07-18 12:52:58 KP（鹤涧）</strong></h4>
<p>关于目的地：顺普市原为顺普镇，就如名字一样，曾经的顺普市是以渔业出名的。但在海虾到来之后，随着钟情海虾艺术的人不断来到小镇，加上海虾慕名者的投资，这座小镇的支柱逐渐转为艺术品贩卖和旅游业，规模也扩大为小型城市。现在顺普市最出名的则是海虾的艺术展览馆及海虾故居的观光服务。  </p>
<h4><strong>07-18 12:54:27 KP（鹤涧）</strong></h4>
<p>然后侦探，选侦探的话需要设定一个同为侦探的朋友，不过你们最近没什么联系。  </p>
<h4><strong>07-21 17:47:53 KP（鹤涧）</strong></h4>
<p>克里斯的事前信息：事务所的同事马克在一个月前前往美国东海岸调查艺术品走私事件，在那之后就失去了联系。你接下委托也有一部分原因是为了打听马克的下落，因为目的地顺普市就属于那一带。  </p>
<h4><strong>07-21 17:54:13 KP（鹤涧）</strong></h4>
<p>（回应角色背景动机）既然为了宝藏的传言特地跑过去，应该更多出于对海虾的兴趣。专心搞艺术就行。  </p>
<h4><strong>07-21 17:59:08 KP（鹤涧）</strong></h4>
<p>（确认角色设定）好的，反正合理即可。  </p>
<h4><strong>07-21 18:07:34 KP（鹤涧）</strong></h4>
<p>（补充设定）海虾作品特点是用色大胆，色彩甚至可以吸引鸟类或昆虫，是很好的艺术收藏品。不过因为渠道有限，最多只能有一幅真作在手上。  </p>
<h4><strong>07-25 21:02:24 KP（鹤涧）</strong></h4>
<p>召集玩家准备开始剧情。  </p>
<h3>COC剧情线索归档（07-25）</h3>
<h4><strong>07-25 21:29:03 KP（鹤涧）</strong></h4>
<p>.log new  </p>
<h4><strong>07-25 21:29:04 广东蟑螂粤语骰（系统提示）</strong></h4>
<p>新的故事开始了，祝旅途愉快！<br>记录已经开启  </p>
<h4><strong>07-25 21:34:22 KP（鹤涧）</strong></h4>
<p>现在是六月份，正值夏季，你们在接下了斯特林的委托后，在出发前在他的办公室汇合了。他在大致跟你们说明了委托的内容后，进一步补充了一些你们事先没有了解的细节。  </p>
<h4><strong>07-25 21:36:23 KP（鹤涧）扮演 斯特林</strong></h4>
<p>“那么，关于这位海虾…经过我的调查后，还有一些需要告知你们的内容。”他确认你们都已经到位后，继续说道，“海虾奉行秘密主义，无论任何季节他总是穿着足以覆盖全身皮肤的大衣，并戴着手套，以及他招牌的白色面具。自然，也就无人见过他的真实面目。他甚至不允许别人留下有关他形象的照片或是任何记录。任何偷偷留下记录或是意图对海虾不轨的人，都在一个月内遭遇了各种各样的事故。因此人们在小心地遵守他的规定的同时，将其与魔鬼与巫术联系起来，再加上他长久以来毫无变化的形象特征，就更令人心生畏惧。”  </p>
<h4><strong>07-25 21:38:02 KP（鹤涧）扮演 斯特林</strong></h4>
<p>“以及，窥探海虾的秘密可能会有生命危险，我了解到诸多前去寻找海虾宝藏的人于顺普市失踪的传闻，而他们的共同点，就是都曾参观过海虾的故居。所以，我会准备好足够的报酬，就算没有结果，你们也会拿到基本的委托金。”  </p>
<h4><strong>07-25 21:40:53 其他猫男角色01（克里斯）</strong></h4>
<p>“按这个说法去过的人都消失了，我们很显然也没有任何安全保障……老板，我们的委托金是否应该再协商？当然如果我们违约我也会支付相应的违约金。”  </p>
<h4><strong>07-25 21:42:17 冬日（乔治）</strong></h4>
<p>“这个得加钱”  </p>
<h4><strong>07-25 21:43:42 KP（鹤涧）扮演 斯特林</strong></h4>
<p>“…………”他沉默了一下，“好吧，那么就在之前答应的基础上增加到两倍，如何呢？”  </p>
<h4><strong>07-25 21:44:13 其他猫男角色01（克里斯）</strong></h4>
<p>“成交。同时路上的各类费用也需要您负责。”  </p>
<h4><strong>07-25 21:48:06 KP（鹤涧）扮演 斯特林</strong></h4>
<p>“没问题。那么就继续下一个话题吧。”他拿出了一幅用白布盖着的画，揭开白布后，你们看到是一幅色彩优雅的作品。“这是我收藏的唯一一张海虾的真迹，你们应该并不了解他笔下的作品有何特别之处，所以在出发前，我准备用一种直观的方式向你们展示一下。”  </p>
<h4><strong>07-25 21:49:42 KP（鹤涧）扮演 斯特林</strong></h4>
<p>他同时打开了窗户，你们看到几只掠过窗外的飞鸟，被作品吸引着落在了画布前，甚至忽略了你们这些人类的存在。  </p>
<h4><strong>07-25 21:50:31 KP（鹤涧）扮演 斯特林</strong></h4>
<p>“他的画作会吸引鸟类和蛇类这种拥有多色视觉的动物，也就是说，不仅仅是作为人类的我们可以进行欣赏，对于自然界的生灵来说，他的作品同样有着吸引力。越是拥有卓越的视力，就越会被海虾的画吸引注意。”  </p>
<h4><strong>07-25 21:52:50 其他猫男角色01（克里斯）</strong></h4>
<p>“……了解。我会注意这类异常现象。还有别的情报吗？”  </p>
<h4><strong>07-25 21:52:53 冬日（乔治）</strong></h4>
<p>“这是人类能达到的技法吗？”  </p>
<h4><strong>07-25 21:55:59 KP（鹤涧）扮演 斯特林</strong></h4>
<p>“其他的暂时没有了，毕竟我身在外地，能了解到的情报很有限。”他闻言思考片刻，“我无法下定论，他身上还有太多的谜团，而此行就是去寻找一切问题的答案。”  </p>
<h4><strong>07-25 21:58:36 其他猫男角色01（克里斯）</strong></h4>
<p>我看看旁边的人有没有别的意见，如果无事发生那我点头示意我没问题了，可以准备出发。  </p>
<h4><strong>07-25 21:58:48 冬日（乔治）</strong></h4>
<p>“我接受这个委托，感觉很有挑战性，我们什么时候出发？”  </p>
<h4><strong>07-25 21:59:15 冬日（乔治）</strong></h4>
<p>“老板我来开车”  </p>
<h4><strong>07-25 22:03:04 KP（鹤涧）</strong></h4>
<p>现在是六月中旬，你们驾车驶在前往顺普市的路上。此时已经是晚上九点，沿着靠近美国东海岸的公路一路向前，你们能时不时听到海鸥的鸣叫和规律的阵阵潮汐。  </p>
<h4><strong>07-25 22:04:00 KP（鹤涧）</strong></h4>
<p>你们来到公路尽头的时候，看到了一处岔道，道路边上竖着有些老旧的指示牌“欢迎来到顺普市”，这个岔路往前是一片闪烁着光点的城市远景，前面应该就是顺普市了。  </p>
<h4><strong>07-25 22:06:49 渡鸦25446（斯特林博士）</strong></h4>
<p>“布莱克先生，前面是顺普市的招牌吗？”斯特林博士感受到周围景色变动，从沉思中脱离出来。他揉了下自己的额头，望向前方的同时开口向司机询问道。  </p>
<h4><strong>07-25 22:08:22 其他猫男角色01（克里斯）</strong></h4>
<p>我欣赏一下风景先，这座城市大致地形如何能看出来吗，以及如果我们需要离开是否只有这一条公路和坐船两种选择？  </p>
<h4><strong>07-25 22:08:33 渡鸦25446（斯特林博士）</strong></h4>
<p>斯特林博士细细的整理了一下自己因为旅途稍微有些褶皱的轻薄外套，挺直身子从躺姿中坐立了起来，向左右观望。  </p>
<h4><strong>07-25 22:08:40 冬日（乔治）</strong></h4>
<p>“是的老爷，上面写着欢迎来到顺普市。我们要找家餐馆先吃饭吗，开车半天都饿了吧。”  </p>
<h4><strong>07-25 22:09:50 KP（鹤涧）</strong></h4>
<p>车窗外公路边就是海洋，黄昏的晚霞照应在公路旁的无边大海中，印下闪耀的光辉。  </p>
<h4><strong>07-25 22:13:04 KP（鹤涧）</strong></h4>
<p>你只能看出这是一个海滨城市，暂时没看到类似交通港口一类的地方，前方就是公路的尽头，来去应该只有这一条路，这段公路很新，像是近几年为了城市发展新修的。  </p>
<h4><strong>07-25 22:14:41 渡鸦25446（斯特林博士）</strong></h4>
<p>“布莱克，加速吧，马上步入黑夜了。”斯特林博士收回了目光，用相对低沉平稳的声音向司机吩咐道。  </p>
<h4><strong>07-25 22:17:14 冬日（乔治）</strong></h4>
<p>脚猛踩油门一口气开进了城市里，边开边找餐馆。  </p>
<h4><strong>07-25 22:20:37 KP（鹤涧）</strong></h4>
<p>那克里斯憋不住了，就在经过最后一个拐角的时候没忍住吐在了斯特林精致的小车上。  </p>
<h4><strong>07-25 22:23:03 KP（鹤涧）</strong></h4>
<p>你们看到在入口附近有几家看起来都还不错的旅馆，其中有一家装潢非常高级，一看就是那种给有钱人住的昂贵酒店，在一堆平庸的旅店中显得鹤立鸡群。  </p>
<h4><strong>07-25 22:24:02 渡鸦25446（斯特林博士）</strong></h4>
<p>“克里斯先生？下次有这种事希望你可以提前说明一下。”斯特林博士冷眼看着身边的克里斯侦探，声音稍微有些颤抖。  </p>
<h4><strong>07-25 22:24:07 冬日（乔治）</strong></h4>
<p>乔治想也不想的直接往高级旅馆的方向开。  </p>
<h4><strong>07-25 22:25:33 其他猫男角色01（克里斯）</strong></h4>
<p>“下次有如此个性的司机也拜托您提前告知，我们的人身安全可都押在您身上了。”  </p>
<h4><strong>07-25 22:25:39 渡鸦25446（斯特林博士）</strong></h4>
<p>“布莱克，在前面的酒店停下吧，我们今天就在这里住下吧。”  </p>
<h4><strong>07-25 22:25:51 渡鸦25446（斯特林博士）</strong></h4>
<p>斯特林博士伸手指了指前面的高级酒店。  </p>
<h4><strong>07-25 22:26:01 渡鸦25446（斯特林博士）</strong></h4>
<p>他脸上的表情似乎因为气味有点扭曲。  </p>
<h4><strong>07-25 22:26:13 冬日（乔治）</strong></h4>
<p>“得令。”  </p>
<h4><strong>07-25 22:28:07 冬日（乔治）</strong></h4>
<p>乔治把车停到了高档旅馆，“我们下车吧。”乔治识相的先下车给老板打开车门。  </p>
<h4><strong>07-25 22:30:52 KP（鹤涧）扮演 工作人员</strong></h4>
<p>“啊好的，没有问题。”出来迎接的工作人员热情地接待了你们，点着头向你保证会尽快清洁干净，“几位直接去前台办理入住就好，会有人引导你们的。”  </p>
<h4><strong>07-25 22:38:43 渡鸦25446（斯特林博士）</strong></h4>
<p>“这位女士，我们很喜欢海虾和他的作品，对他的故事也比较感兴趣，所以前来这里旅游，但是我们对这里也不是特别了解，关于海虾的事情，有什么可以详细和我们说说吗？”拿过房间钥匙，斯特林博士向前台的小姐微笑着讯问道，笑容很亲和，就像面对学生那样。  </p>
<h4><strong>07-25 22:39:23 KP（鹤涧）</strong></h4>
<p>你们看到宣传单上有城市的地图和简单介绍。  </p>
<h4><strong>07-25 22:39:37 KP（鹤涧）</strong></h4>
<p>顺普市发展到今天，根据贫富划分为了东城区和西城区，东城区以靠海的码头和以捕鱼为主业的渔业帮会为中心，是较为贫穷、治安情况较差的城区，与之相对的是西城区，多是繁华的街道和富人的宅邸，上流人士钟爱的鸟语俱乐部也在这个地段。城市的中心则是中城区，海虾艺术协会，市医院，警局，市政厅，教堂都在这附近。  </p>
<h4><strong>07-25 22:46:18 KP（鹤涧）扮演 前台小姐</strong></h4>
<p>“虽然身为海滨城市，水产品应当是最为常见的……”她似乎想到了些什么，停顿了一下，“现在因为一些特殊原因，渔业已经严重衰败，供应链很不稳定，所以…各位还是自己去附近街上逛逛，找自己吃得习惯的菜色就好。”  </p>
<h4><strong>07-25 22:48:14 冬日（乔治）</strong></h4>
<p>“特殊原因？是什么特殊原因呢？”乔治感到一丝莫名的违和感，于是追问了下去。  </p>
<h4><strong>07-25 22:48:20 其他猫男角色01（克里斯）</strong></h4>
<p>“噢？那请问小姐你是否知道渔业衰败的原因？是海产大量减产还是别的……例如政府管理问题？”  </p>
<h4><strong>07-25 22:48:25 渡鸦25446（斯特林博士）</strong></h4>
<p>“渔业衰败？作为一个海滨城市，为什么？”斯特林博士感觉很诧异，有点好奇的发问。  </p>
<h4><strong>07-25 22:49:11 KP（鹤涧）扮演 前台小姐</strong></h4>
<p>“你们也是因为海虾慕名而来的游客啊，那么可以先去艺术协会进行参观，那里展示了大量海虾的作品，并且，海虾之馆的参观服务也需要通过艺术协会才能开放给游客。”  </p>
<h4><strong>07-25 22:49:50 KP（鹤涧）扮演 前台小姐</strong></h4>
<p>“海虾的事情，还是你们亲自去了解吧，毕竟探索也是游览的乐趣之一嘛。”  </p>
<h4><strong>07-25 22:52:38 KP（鹤涧）扮演 前台小姐</strong></h4>
<p>“这个…不仅仅是大量减产，据说捕捞上来的很多水产品都出现了畸形，并不适合作为食材。这个是渔业帮会那边的问题，我也不是很了解。”  </p>
<h4><strong>07-25 22:54:37 其他猫男角色01（克里斯）</strong></h4>
<p>“我听说有一些和海虾相关的灵异事件，这是真的吗？小姐，你们本地居民会不会受到什么困扰？至少这些事件在传闻里显得相当糟糕。”  </p>
<h4><strong>07-25 22:57:50 KP（鹤涧）扮演 前台小姐</strong></h4>
<p>“灵异事件？是指这两年一些游客失踪的事吗？”前台小姐显得有些尴尬，“警察先生们一直在调查，我们酒店的安保系统也很完善，大可不用担心。”  </p>
<h4><strong>07-25 22:58:58 KP（鹤涧）扮演 前台小姐</strong></h4>
<p>“我并不是本地人，一年前才来到这里工作，西城区大部分人都是近几年才来到这里的。”  </p>
<h4><strong>07-25 23:00:07 其他猫男角色01（克里斯）</strong></h4>
<p>“哦不不不……您误会了，我们并不担心这个问题，恰恰相反我只是感到好奇，如果小姐你不了解倒也不必感到自责。”  </p>
<h4><strong>07-25 23:03:50 其他猫男角色01（克里斯）</strong></h4>
<p>“啊，不过说到这个，小姐你一年前是通过什么契机来到这座城市的呢？我是否有这个荣幸可以了解你的故事……有如此气质和礼节的人在这样的小城市可不多见。”  </p>
<h4><strong>07-25 23:06:27 KP（鹤涧）扮演 前台小姐</strong></h4>
<p>“诶？我的故事？我是这家酒店的老板雇来的，他是这里有名的富豪，原本我对这座城市包括海虾都没有什么兴趣…但是他给出的薪资非常可观，我就来这里工作了。”  </p>
<h4><strong>07-25 23:08:28 冬日（乔治）</strong></h4>
<p>“水产畸形可是个严重的问题，你们这里工业污染严重吗？”  </p>
<h4><strong>07-25 23:08:32 KP（鹤涧）扮演 前台小姐</strong></h4>
<p>“他也是鸟语俱乐部的会员，啊，说起来，如果各位对艺术品感兴趣，可以关注一下鸟语俱乐部开办的活动，听说定期会举办艺术品拍卖或者爱好者们的舞会。”  </p>
<h4><strong>07-25 23:09:51 渡鸦25446（斯特林博士）</strong></h4>
<p>“女士，算算时间你是海虾失踪之后才来到这里的，我想请问一下，在这里生活的一年间，你知道有什么人亲眼见过海虾本人或者与他交流过吗？”斯特林微笑着向前台小姐询问。  </p>
<h4><strong>07-25 23:10:30 KP（鹤涧）扮演 前台小姐</strong></h4>
<p>“据我所知并没有工业污染，郊区确实有工厂，不过只是为市政厅进行玻璃生产的，我想…并不会有什么影响？”  </p>
<h4><strong>07-25 23:11:59 其他猫男角色01（克里斯）</strong></h4>
<p>“希望我们的问题没有太打扰到你，亲爱的小姐。我比较好奇你们老板是否会常来酒店巡视，我们有机会见到他吗？”  </p>
<h4><strong>07-25 23:13:55 KP（鹤涧）扮演 前台小姐</strong></h4>
<p>“那或许只有艺术协会的人能做到了。我听说艺术协会的会长是唯一与海虾有接触的人，并且海虾失踪后继承了他的遗产，也就是大量的画作。”  </p>
<h4><strong>07-25 23:17:24 KP（鹤涧）扮演 前台小姐</strong></h4>
<p>“这个我就说不准了，总之，他叫亚历克斯，有需要的话我可以帮忙传话。”  </p>
<h4><strong>07-25 23:18:11 渡鸦25446（斯特林博士）</strong></h4>
<p>“女士，刚刚你有提到鸟语协会？我比较好奇，这里一座海滨城市为什么会有一个鸟语协会？可以稍微向我们介绍一下吗？”斯特林教授低头思考了一下，然后抬头向前台小姐询问道。  </p>
<h4><strong>07-25 23:21:04 KP（鹤涧）扮演 前台小姐</strong></h4>
<p>“具体的原因我不清楚，这是他们为自己选的名字，毕竟是上流聚集的高档场所，我连进场的门槛都达不到，自然也不会了解太多。”  </p>
<h4><strong>07-25 23:22:27 渡鸦25446（斯特林博士）</strong></h4>
<p>“好的，了解了，感谢你的解答，女士，祝你有美好的一天。”  </p>
<h4><strong>07-25 23:23:35 其他猫男角色01（克里斯）</strong></h4>
<p>“是吗，那太感谢了。如果小姐你对这个俱乐部感兴趣的话，说不定我能有幸邀请你一同前往？我相信这个机会会出现的——无论如何刚才的问题都劳烦你了。”  </p>
<h4><strong>07-25 23:25:51 KP（鹤涧）扮演 前台小姐</strong></h4>
<p>“那还是算了，我就算有机会去到那样的场所，也是绝对应付不来的。”  </p>
<h4><strong>07-25 23:28:07 其他猫男角色01（克里斯）</strong></h4>
<p>“没关系，亲爱的小姐，不过鸟语俱乐部的活动通常在什么时段我们还不太了解，不知道你能不能提供一些建议？毕竟我们都不希望白跑一趟，或许还需要你向你的老板请求一下……我记得这类俱乐部都需要邀请人吧？”  </p>
<h4><strong>07-25 23:30:42 KP（鹤涧）扮演 前台小姐</strong></h4>
<p>“大概是傍晚六点左右到凌晨吧。”她思考了一下，“据我所知…参加鸟语的活动是需要会员邀请函的。”  </p>
<h4><strong>07-25 23:33:30 渡鸦25446（斯特林博士）</strong></h4>
<p>“那可以麻烦女士为我们和酒店的老板传下话吗？我来自波士顿的xx家族，有意参加他们的集会。”  </p>
<h4><strong>07-25 23:35:35 其他猫男角色01（克里斯）</strong></h4>
<p>“啊，那我的猜测没错，感谢你的证实。天色已晚我们就不再打扰你了，祝你的每一天阳光明媚，小姐。”  </p>
<h4><strong>07-25 23:36:55 KP（鹤涧）扮演 前台小姐</strong></h4>
<p>“我知道了，晚点会帮您留一下信息。”她记下了你说的名字，看你们打算休息了，就招呼了工作人员过来帮你们搬行李。“行李就交给我们吧，你们可以做自己的事情，或者回房休息了。”  </p>
<h4><strong>07-25 23:37:46 渡鸦25446（斯特林博士）</strong></h4>
<p>“酒店有餐厅提供送餐服务吗？”临行之前斯特林教授向前台小姐询问道。  </p>
<h4><strong>07-25 23:39:18 KP（鹤涧）扮演 前台小姐</strong></h4>
<p>“那几位想吃些什么？酒店可以提供一些基本的日常料理，不确定合不合各位的口味。”“在确定餐点内容后，大概半小时左右会有专人送来。”  </p>
<h4><strong>07-25 23:42:14 渡鸦25446（斯特林博士）</strong></h4>
<p>斯特林教授转头看向大家“你们想在这里点餐到房间食用？还是出去觅食？”  </p>
<h4><strong>07-25 23:42:31 冬日（乔治）</strong></h4>
<p>想到前台说过海产畸形的话变得犹豫起来“除了海鲜以外……番茄肉酱面吧。”  </p>
<h4><strong>07-25 23:45:11 其他猫男角色01（克里斯）</strong></h4>
<p>“常规的食物就可以，考虑到海产品的现状，我可以接受素食，凯撒沙拉吧。不过我在想我们是否可以点一些海鲜看看？我的确很好奇所谓的畸形……”  </p>
<h4><strong>07-25 23:48:00 渡鸦25446（斯特林博士）</strong></h4>
<p>“我要惠灵顿牛排配罐装进口橄榄油烤菜，酱汁请用玻璃盏单独盛放。对了…”教授靠近前台小姐，压低声音向她问道“厨房也收到渔业工会的‘特殊配送’吗？”，说到”特殊配送”的时候教授一边微笑一边用手指比了个引号的动作。  </p>
<h4><strong>07-25 23:48:01 KP（鹤涧）扮演 前台小姐</strong></h4>
<p>“恕我直言，畸形的水产品是不能被做成食物的，没有人会接受这样的食材。”  </p>
<h4><strong>07-25 23:52:33 KP（鹤涧）扮演 前台小姐</strong></h4>
<p>“您的要求我们会尽量满足，不过，毕竟已经是晚上了，口感可能不会是最佳的状态，希望您不要介意。”“我们的食材肯定是没有问题的，并且，几位的餐点似乎也不涉及水产品，放心食用就好。”  </p>
<h4><strong>07-25 23:54:38 渡鸦25446（斯特林博士）</strong></h4>
<p>“好的，那我们就先回房间静候佳音了。”教授说完，拿上钥匙，招呼两位同伴上楼。  </p>
<h4><strong>07-25 23:57:15 冬日（乔治）</strong></h4>
<p>“又饿又累了，赶快去房间吧。”跟着老板准备上楼。  </p>
<h4><strong>07-25 23:59:07 KP（鹤涧）</strong></h4>
<p>你们回到自己的房间，映入眼帘的是一面落地玻璃窗，能远远靠到西城区靠海的山坡，山坡上有一座孤零零的宅邸正对着海的方向，而那里对应的正是地图上海虾之馆的位置。房间确实如前台所说，有着绝佳的观景角度，床具整洁干净，设施也很齐全。  </p>
<h4><strong>07-26 00:00:42 KP（鹤涧）</strong></h4>
<p>并且大约半个小时左右，你们点的餐也送到了。  </p>
<h4><strong>07-26 00:01:13 其他猫男角色01（克里斯）</strong></h4>
<p>我在一众菜品里找到我的那份先，其他人的我也看看咋样。  </p>
<h4><strong>07-26 00:05:35 其他猫男角色01（克里斯）</strong></h4>
<p>你在沙拉中找到了一小块白色的固体，不过无色无味，在灯照下隐约可见边缘泛出彩色的光。  </p>
<h4><strong>07-26 00:12:21 其他猫男角色01（克里斯）</strong></h4>
<p>我拿叉子挑出来看看，不影响食用我就吃饭了。  </p>
<h4><strong>07-26 00:14:06 冬日（乔治）</strong></h4>
<p>“你扒拉啥呢？”乔治好奇的看了过来，“还是彩色的。”看完乔治也去扒拉扒拉意面。  </p>
<h4><strong>07-26 00:14:22 渡鸦25446（斯特林博士）</strong></h4>
<p>擦了擦嘴。  </p>
<h4><strong>07-26 00:15:01 其他猫男角色01（克里斯）</strong></h4>
<p>“我也很想知道。至少暂时看不出来这是什么，别的东西也没问题，先吃饭吧。”我晃晃叉子把那块小玩意放在餐巾纸上，然后快速把剩下的东西吃完。  </p>
<h4><strong>07-26 00:15:52 渡鸦25446（斯特林博士）</strong></h4>
<p>教授将餐巾收拾好后整齐码放，按铃通知了酒店人员前来回收，转身对生后的同伴说道“时间差不多了，我们清洁个护后就休眠罢，为了明天有精力调查。”  </p>
<h4><strong>07-26 00:18:27 冬日（乔治）</strong></h4>
<p>擦了擦嘴准备洗个澡，很在意同伴吃出来的异物，“这玩意是啥啊，就连高级酒店做饭也不干净啊，明天我去找前台。”  </p>
<h4><strong>07-26 00:21:31 其他猫男角色01（克里斯）</strong></h4>
<p>“没事，谢谢你的关心但是先不要找前台，刚来这里就大动干戈不太好。”我拿餐巾纸把它卷好收起来，暂时不知道是什么，但看反光有点像贝母。  </p>
<h4><strong>07-26 00:22:45 冬日（乔治）</strong></h4>
<p>“确实，这里给我感觉怪怪的，晚上还是别睡得太死。”  </p>
<h4><strong>07-26 00:24:14 渡鸦25446（斯特林博士）</strong></h4>
<p>斯特林教授洗漱后进入了套房内自己的房间，套房暖光灯下，天鹅绒窗帘隔绝了深紫夜幕。教授将黄铜怀表链扣在床头，秒针行走声成为房间里唯一的时间刻度，门外海洋的咸涩腥风与门内薰衣草香膏形成割裂的结界。斯特林教授躺下前又突然想起了点什么，再次起身往门缝塞入了一张折叠的酒店信笺作为一点简单却贫弱的防护措施，然后又重新俯身卧床。闭上眼前，嘴里无声的念了一句：“愿理性守护诸位的梦境”。  </p>
<h4><strong>07-26 00:24:30 其他猫男角色01（克里斯）</strong></h4>
<p>“需要我把枪放在枕头下吗？”开玩笑性质地随便说两句，“也别太紧绷，还是好好休息更重要……第一天应该不会有太大的麻烦找上我们，而且各位现在暂且只是游客身份，并不瞩目。”  </p>
<h4><strong>07-26 00:26:16 KP（鹤涧）</strong></h4>
<p>你只能看出这是一个海滨城市，暂时没看到类似交通港口一类的地方，前方就是公路的尽头，来去应该只有这一条路，这段公路很新，像是近几年为了城市发展新修的。  </p>
<h4><strong>07-26 00:59:59 KP（鹤涧）</strong></h4>
<p>.log off  </p>
<h3>COC剧情线索归档（07-26至08-02）</h3>
<h4><strong>07-26 21:05:47 KP（鹤涧）</strong></h4>
<p>你醒来了，不，或许不应该称之为醒来。你回到了自己的办公室，回到了旅途的起点，然而，眼前的世界却是灰暗的，黑白的，色彩被剥去，目之所及只剩下空洞的轮廓，你看到克里斯和乔治站在你面前，同样没有颜色，甚至五官都像被涂改般无法看清，如坠冰窖般的恐惧扼住了喉咙，你开始无法呼吸。一直以来，你太过于习惯颜色的存在，或许正因如此，当“色彩”消失之时，你的一切都将天翻地覆。……你猛地睁开眼睛，视野中的景象一切正常，早晨的阳光洒在了宽敞明亮的房间中，这似乎只是个让人不安的梦境。现在是第二天的早上九点，你们各自在自己的房间醒来了。  </p>
<h4><strong>07-26 21:08:39 克里斯</strong></h4>
<p>我拉开窗帘看看外面的海和天气，今天看起来怎么样？  </p>
<h4><strong>07-26 21:09:00 乔治</strong></h4>
<p>乔治起来之后先去看看老板怎么样了。  </p>
<h4><strong>07-26 21:11:17 斯特林</strong></h4>
<p>斯特林从床上起身，重新穿着一身行头，他的动作如同骑士披挂铠甲般沉稳有力，他起身推门而出。  </p>
<h4><strong>07-26 21:11:22 KP（鹤涧）</strong></h4>
<p>今天是个阳光明媚的晴天，这里的海水确实无愧于顺普旅游胜地的标签，如同光滑的蓝宝石一般。  </p>
<h4><strong>07-26 21:13:46 KP（鹤涧）</strong></h4>
<p>那么过了一会后，推着餐车的服务生来到了门口，展示了一下酒店的免费早餐，有牛奶，三明治，还有现炸的薯饼。  </p>
<h4><strong>07-26 21:14:46 克里斯</strong></h4>
<p>我洗漱完毕整理一下衣服也加入，早餐看起来很丰盛啊，相对于这个小城市的物产来说。  </p>
<h4><strong>07-26 21:17:39 乔治</strong></h4>
<p>老爷我们今天有什么安排，看向斯特林。  </p>
<h4><strong>07-26 21:24:08 斯特林</strong></h4>
<p>“我觉得我们可以先前往海虾艺术协会调查，如果时间还够的话，我对这里的教堂比较好奇？天色到下午近晚上的时候我们再返回这里来询问前台传话的情况吧？这样安排如何呢？各位。”教授完成进食，用亚麻餐巾擦了下嘴，然后开口说道。  </p>
<h4><strong>07-26 21:25:13 克里斯</strong></h4>
<p>“我没有意见，这个安排很合理。如果今天内还有时间说不定晚些时候可以去鸟语俱乐部看看？”  </p>
<h4><strong>07-26 21:25:46 斯特林</strong></h4>
<p>“那就要看前台的传话结果了，这位神秘的酒店老板会允许我们参与的罢。”  </p>
<h4><strong>07-26 21:32:54 乔治</strong></h4>
<p>点头，没有意见，老板说去哪就去哪。  </p>
<h4><strong>07-26 21:34:04 斯特林</strong></h4>
<p>“那我们就出发吧，布莱克，还是你来开车，这次开稳妥一点。”  </p>
<h4><strong>07-26 21:34:44 乔治</strong></h4>
<p>“yes,sir。”  </p>
<h4><strong>07-26 21:37:13 KP（鹤涧）</strong></h4>
<p>你们来到了艺术协会。位于市中心的海虾艺术协会是一栋四层的石质建筑，前两层为海虾作品的展馆，上面两层则是员工专属区域，游客不能进入。展馆位于建筑的中央，四面都是无窗的墙壁，依靠天顶的吊灯进行照明。里面已经有一些艺术爱好者进进出出，还有些背着画板的孩子。场馆的服务已经很完善了，随处可见负责解说的馆内人员。  </p>
<h4><strong>07-26 21:39:27 克里斯</strong></h4>
<p>我先四处张望一下看看能不能找到这个地方比较有话语权的人。  </p>
<h4><strong>07-26 21:40:42 KP（鹤涧）</strong></h4>
<p>参观似乎是可以直接进场的，你暂时没有看到类似主管一样的人物。  </p>
<h4><strong>07-26 21:42:42 斯特林</strong></h4>
<p>“这位先生/女士，请问你在这里工作有多久了呢？”  </p>
<h4><strong>07-26 21:43:35 艺术协会解说员</strong></h4>
<p>“大概两年多吧。”  </p>
<h4><strong>07-26 21:44:49 斯特林</strong></h4>
<p>“哦，那你是海虾消失以后才来这里工作的吗？”  </p>
<h4><strong>07-26 21:48:06 艺术协会解说员</strong></h4>
<p>“不是的，他失踪是两年前的事情，原本艺术协会只是展出了他少量的作品作为馆内招牌，在会长正式继承遗产后，这里就全都换成了海虾的真迹。”  </p>
<h4><strong>07-26 21:49:48 斯特林</strong></h4>
<p>“会长正式继承遗产大概是在什么时间呢？”  </p>
<h4><strong>07-26 21:52:38 艺术协会解说员</strong></h4>
<p>“就在海虾失踪后的几天。虽然接受了遗产的事实是会长单方面宣布的，但他确实拥有大量海虾的画作呀，所以并没有遭到质疑。”  </p>
<h4><strong>07-26 21:53:48 斯特林</strong></h4>
<p>“原来如此，我是从波士顿来的海虾作品爱好者，也有收藏海虾本人的真迹，不知道能不能介绍我和你们的会长交流一番？感激不尽。”  </p>
<h4><strong>07-26 21:59:13 艺术协会解说员</strong></h4>
<p>“这么跟你说吧，这位先生。会长的神秘程度不逊于海虾，就连我这种几年前就在艺术协会工作的人，都不曾见到他本人，更别提联系方式了。我们只知道他名叫西蒙，艺术协会的事宜大多都是由他的秘书朱斯蒂娜完成的，会长平时根本就不在艺术协会。”  </p>
<h4><strong>07-26 22:00:05 斯特林</strong></h4>
<p>“那我可以联系到这位秘书小姐吗？”  </p>
<h4><strong>07-26 22:00:51 艺术协会解说员</strong></h4>
<p>“朱斯蒂娜小姐的话，应该就在馆里帮忙。”  </p>
<h4><strong>07-26 22:01:37 克里斯</strong></h4>
<p>“非常感谢，如果可以的话您可否引导我们去见见这位朱斯蒂娜小姐？我们是海虾艺术的收藏者，拥有他的一些真迹……我们很希望能为馆藏贡献一份力量。”  </p>
<h4><strong>07-26 22:04:01 艺术协会解说员</strong></h4>
<p>“原来是这样，艺术协会很欢迎各位的到来。你们先去随意逛逛吧。她还有点事要忙，需要稍等一会。”  </p>
<h4><strong>07-26 22:07:20 KP（鹤涧）</strong></h4>
<p>展馆的一层大多都是写实的风景画。虽然大部分的画作描写的对象都是日常的风景或是经典的取景素材，但依旧有几幅画选取的素材十分特殊，也许和海虾自身的经历有关。《山坡上的巨人》：这幅画的背景是靠海的山坡，夜晚的天空像是一片无光之海，高高低低的影子背着光立于山坡之上，月光勾勒出了他们的轮廓，像极了画本中充满压迫感的怪物。你们发现画中的山坡和海虾之馆所在的山坡极其相似。《无名画作》：这幅的内容是俯瞰视角下的马塞诸州海边渔村的风景，无数简陋的木质棚屋沿着歪歪斜斜的海岸线分布，海水像在燃烧一般升腾着，规律地蔓延在整片海域，背景则是一团模糊的绿色。作品中所绘制的火焰和正常的也有所出入，颜色看起来淡了一些，边缘泛着神秘的色彩，没有火焰的鲜亮感觉，倒像是苍白的一团冷光。  </p>
<h4><strong>07-26 22:15:53 斯特林</strong></h4>
<p>我要靠近这两幅画，辨别一下这是否是真迹。  </p>
<h4><strong>07-26 22:19:52 斯特林</strong></h4>
<p>我不相信自己的艺术素养失效，我持有真迹很长时间同时又研究了几十年的艺术史和作画手法，不可能会无法辨认，我想将这幅画的色彩与我持有的真迹的回忆再细细对比，辨认一番。  </p>
<h4><strong>07-26 22:20:57 KP（鹤涧）</strong></h4>
<p>那你仔细观察后，从中看出了熟悉的笔触和极具海虾个人特征的颜料痕迹，这确实是本人手笔没错。  </p>
<h4><strong>07-26 22:22:23 斯特林</strong></h4>
<p>“和我持有的真迹细细对比后，我确定这些都是真迹，难以想象这里居然有那么多海虾作品真迹存世。我们再上二楼看看吧。”说完，我起身招呼同伴们走向二楼。  </p>
<h4><strong>07-26 22:23:19 KP（鹤涧）</strong></h4>
<p>展馆的二层摆放的是各种神话和神秘学题材的作品，来到二楼的人可以发现一副形象和视角都十分独特的画。《阿萨谢尔（Azazil）》：画作的中心站着三个人。一个是看不出年纪，身后有着辉煌晕轮，体魄完美的威严人形；一个是青年的裸体男人，两人并肩背对观者而立。他们的对面，则是正对观者与两人，垂落洁白羽翼的高大年轻男子，似乎因为视点的问题，他看上去站在比对着的两人更高的位置，脸因正视威严人形头上的光辉而模糊不清。整幅画的背景是布满云与光辉的天空。  </p>
<h4><strong>07-26 22:27:17 KP（鹤涧）</strong></h4>
<p>那你们想到画作表现的是天使阿萨谢尔因“火之子不拜土之子”的理由拒绝向阿丹下跪而堕天的典故。阿萨谢尔在伊斯玛义信仰中其为了证明自己拥有着与神同等的能力，傲慢地创造出与天堂同等的世界，却被神剥夺了色彩而变得灰暗，沦为了劣化的物质世界。从典故可以很轻易地推断，那个头顶辉煌晕轮的威严人形无疑表示全知全能的上帝，但只露出后背的他并不是画作的真正中心，甚至也没有被置于最为崇高的位置——本作的主角无疑是那位占据了最高点，即将堕天的阿萨谢尔。同时，从背景推断，阿萨谢尔脸上的光的源头并非来自近处的上帝，而更像是从观者所在的方向而来。你们意识到，画作中构想了超越上帝的未知光芒，并将堕天使置于高于上帝的崇高位置，几乎称得上异端之作。  </p>
<h4><strong>07-26 22:31:55 KP（鹤涧）</strong></h4>
<p>在你们参观的时候，广播里传来了一个女声。“各位好，我是艺术协会会长秘书朱斯蒂娜，本周是海虾之馆开放期，在参观结束后，有意向的人可以去出口那里排队，我会负责登记参观人员的信息。”  </p>
<h4><strong>07-26 22:35:45 克里斯</strong></h4>
<p>“我们是否应该去排队……？或者说老板你希望我们和馆方接触后获得内部渠道，也是一种好办法。”  </p>
<h4><strong>07-26 22:36:20 斯特林</strong></h4>
<p>我把乔治悄悄拉到一边，小声的对他说“这里还挺神秘的，我对楼上有什么比较在意，你等一下找机会偷偷混上去看看？发现什么下来找我汇报下，没什么就迅速回来回合，不要被人抓到了。”  </p>
<h4><strong>07-26 22:39:30 乔治</strong></h4>
<p>听到老板的要求有些惊讶，不过想到斯特林对艺术的追求和死讲究的性格倒也觉得正常“中嘞，老板。”乔治准备找个机会溜到楼上去。  </p>
<h4><strong>07-26 22:40:18 乔治</strong></h4>
<p>乔治准备找个机会溜到楼上去。  </p>
<h4><strong>07-26 22:47:24 KP（鹤涧）</strong></h4>
<p>你成功来到了被封起来的三楼员工专属区域，而这似乎是你潜入行为能够做到的极限了。这里除了员工休息室外，还有会议室，接待室，走廊的尽头是一间办公室，并没有特别的标注，你看不出来这是属于谁的。  </p>
<h4><strong>07-26 22:48:37 乔治</strong></h4>
<p>时间紧任务重，我直接往办公室摸去。  </p>
<h4><strong>07-26 22:49:35 KP（鹤涧）</strong></h4>
<p>这间办公室十分朴素，四面墙上没有悬挂任何东西，同时也没有任何装饰品和景观植物，除了一个巨大的衣柜，办公用的桌椅以外，没有任何东西。  </p>
<h4><strong>07-26 22:51:13 乔治</strong></h4>
<p>谁家正经办公室里面有一个这么大的衣柜啊，我要看看里面装的什么。  </p>
<h4><strong>07-26 22:55:10 KP（鹤涧）</strong></h4>
<p>衣柜里面的内容物本身并没有什么异常，都是一些堆放整齐的衣物和正装，但是衣柜的墙上密密麻麻贴满了写有颜色名称的标签纸，如此大量的色块让你一时间有些头晕目眩。  </p>
<h4><strong>07-26 23:01:04 KP（鹤涧）</strong></h4>
<p>你在桌子的抽屉里找到了一份记录，特地用黑色封皮的笔记本包裹了起来。  </p>
<h4><strong>07-26 23:02:13 乔治</strong></h4>
<p>翻开看看是什么。  </p>
<h4><strong>07-26 23:04:20 KP（鹤涧）</strong></h4>
<p>这是从两年前开始记录的名单。你发现每次名单更新的时候，都是月中这几天，上面的人名你并不认识，也没能看出什么特别的规律，到现在为止，总共有二十二个名字被记录。  </p>
<h4><strong>07-26 23:07:07 乔治</strong></h4>
<p>掏出兜里的笔记本记上第一个和最后一个名字还有一年前这个节点的名字然后把东西摆放原位赶紧溜了。  </p>
<h4><strong>07-26 23:10:57 KP（鹤涧）</strong></h4>
<p>你们来到海虾之馆入口处的地方，看到门口已经有两个参观者正在排队。负责登记的是一位红发女性，从打扮上看应该就是之前提到的朱斯蒂娜小姐。  </p>
<h4><strong>07-26 23:18:50 KP（鹤涧）</strong></h4>
<p>你尝试自然地融入人群回到同伴那里，不过你突然被一个声音喊住了，声音来自于一个警察打扮的青年，他看起来不像是来欣赏艺术的，不然也不会四处留意像你这样可疑的身影。“你在干什么？”  </p>
<h4><strong>07-26 23:25:56 乔治</strong></h4>
<p>“我想找我的同伴们，走着走着迷路了警察先生。”  </p>
<h4><strong>07-26 23:27:15 警察罗恩</strong></h4>
<p>“可你是从三楼下来的，我看见了。你的同伴在三楼吗？”  </p>
<h4><strong>07-26 23:31:15 乔治</strong></h4>
<p>“到处都找不到，我的朋友是那种，你知道的就是那种，海虾的超级狂热粉丝，为了知道偶像的一切奋不顾身的那种，我觉得他可能会以为三楼有什么更了不得的作品想去看看于是才上去的，我只看了一眼走廊什么都没有就知道他不会去三楼所以下来了。”  </p>
<h4><strong>07-26 23:34:49 警察罗恩</strong></h4>
<p>他似乎本身注意力也不在你的身上，算是接受了你的说辞。“不要在艺术协会做什么会引起注意的事情，窥探海虾的秘密可能会有危险，请转告你的朋友，务必事事小心，注意分寸。”  </p>
<h4><strong>07-26 23:39:27 乔治</strong></h4>
<p>“一定，我会如实转告他的。警察先生不是来看艺术展的吧？我们都是外地来的游客，有听传闻说不少人在这失踪，请问这是真的吗。”  </p>
<h4><strong>07-26 23:42:54 警察罗恩</strong></h4>
<p>“是的，就这样销声匿迹了，哪怕是找回尸体也好…他没有继续说下去，看起来有些迷茫。即便如此，艺术协会仍然没有受到影响，真是狡猾，因为签了免责协议，就可以不需要为那些人的失踪承担责任。”  </p>
<h4><strong>07-26 23:44:23 警察罗恩</strong></h4>
<p>“那个，我还只是个刚入警的新人，在我看来这一切都乱套了，但是大家都像是已经习惯了一样？这让我觉得很不舒服。”  </p>
<h4><strong>07-26 23:46:41 乔治</strong></h4>
<p>“免责协议是什么？签了这个就不用对人的生命安全负责了吗？竟然还有这种事，真是太过分了！失踪的人最后一次出现是在什么地方？”  </p>
<h4><strong>07-26 23:51:17 警察罗恩</strong></h4>
<p>“上一个失踪的人最后被目击是在城市的公墓，他在进行非法挖掘。另外，警局里还有一句尚未有人认领的无头尸体，不知道和那些人的失踪有没有关系。”  </p>
<h4><strong>07-26 23:53:45 警察罗恩</strong></h4>
<p>“我只是在做警察应该做的事情，如果连警察都不在乎这些…又有谁能来维护正义呢？”  </p>
<h4><strong>07-26 23:53:48 乔治</strong></h4>
<p>“呜哇，盗墓和无头尸体！？失踪的人都是游客吗？”  </p>
<h4><strong>07-26 23:54:46 乔治</strong></h4>
<p>“你真是个好警察，我叫乔治，请问你的名字是？”  </p>
<h4><strong>07-26 23:55:28 警察罗恩</strong></h4>
<p>“确实失踪的人共同点都是参观过海虾之馆。”  </p>
<h4><strong>07-26 23:59:32 警察罗恩</strong></h4>
<p>“我叫罗恩。你找朋友去吧，别忘了我嘱咐的事情。”  </p>
<h4><strong>07-27 00:01:33 乔治</strong></h4>
<p>“好的罗恩先生，你也要注意安全。”乔治下楼去找斯特林和克里斯汇合。  </p>
<h4><strong>08-02 20:59:18 克里斯</strong></h4>
<p>（通过文字参与）我可以来听听嘛？  </p>
<h4><strong>08-02 21:14:54 乔治</strong></h4>
<p>俺回来了老爷，如此这般，说了下名单和警察。  </p>
<h4><strong>08-02 21:15:26 KP（鹤涧）</strong></h4>
<p>海虾之馆的参观注意事项：<br>1、禁止携带枪支，管制刀具，以及任何可能带来危险的物品，请出发前交给工作人员，工作人员会妥善保管，在参观结束后返还。<br>2、禁止破坏场馆内的任何陈设和布置<br>3、参观后不得将场内的所见所闻告知他人，请务必保密<br>4、禁止对他人做出攻击性的举动<br>5、禁 止 进入一楼最后一个房间<br>在阅读完须知后，请在各自的协议书上签下自己的姓名，这表示您已经获悉全部注意事项，并将绝对遵守，并且，结束参观后，您的身 上 无论发生任何事情，都不属于艺术协会需承担的责任，只有参观期间会保证您的安全。请认真考虑是否继续。  </p>
<h4><strong>08-02 21:24:21 乔治</strong></h4>
<p>我拉克里斯和斯特林到了一个没人的角落说悄悄话“我摸上楼发现几个怪事，一个大衣柜里面贴满了颜色的标签，我从没见过这么多色彩。”  </p>
<h4><strong>08-02 21:27:02 乔治</strong></h4>
<p>“我看不懂办公室怎么会放这个，然后翻了一下有一个莫名其妙的名单，时间紧只记了这几个名字。”乔治向同伴展示自己的笔记本。  </p>
<h4><strong>08-02 21:29:07 乔治</strong></h4>
<p>“后来下楼的时候还被警察发现了，还好是个好警察，他正在调查这里的游客失踪案，看来我们听到的传言是真的，他的名字叫罗恩，我们有需要可以去找他。”  </p>
<h4><strong>08-02 21:48:57 乔治</strong></h4>
<p>乔治点点头签下名字。  </p>
<h4><strong>08-02 21:50:22 乔治</strong></h4>
<p>疑惑地问助理小姐：“为什么不让说所见所闻呢？你们这里是旅游景点不是吗？还有最后一个房间是什么？有什么不能让人见到的东西放在旅游景点里吗？”  </p>
<h4><strong>08-02 21:53:03 斯特林</strong></h4>
<p>“女士，还有，我想请问一下您，等一下有空吗？我们有一些事情想向您询问一下？”  </p>
<h4><strong>08-02 21:57:07 朱斯蒂娜</strong></h4>
<p>“因为这是会长的规定。艺术协会尊重游客的决定，如果因为规定感到怀疑的话，可以直接放弃参观。至于最后一个房间，是海虾之馆的秘密，能现在就告知详细内容的话，秘密就不是秘密了。我现在就有空，请问吧。”  </p>
<h4><strong>08-02 21:59:48 斯特林</strong></h4>
<p>“我是来自波士顿的艺术收藏家，也有海虾的真迹被我收藏，我对你们会长很感兴趣，作为同道中人，请问有没有什么方式可以和你们会长交流讨论一下呢？”  </p>
<h4><strong>08-02 22:01:09 朱斯蒂娜</strong></h4>
<p>“因为一些原因，会长需要隐藏行踪，你们作为游客可能不了解当地的情况，东城区的人对艺术协会以及海虾都抱有敌意，所以我可以理解他这种做法，毕竟作为继承海虾遗产的人，是不能出事的。”  </p>
<h4><strong>08-02 22:03:00 朱斯蒂娜</strong></h4>
<p>“东城区和西城区的矛盾长期存在，不过，游客活动区域一般只在西城区，所以不需要考虑这些。”  </p>
<h4><strong>08-02 22:09:59 斯特林</strong></h4>
<p>“好吧，您作为一个艺术工作者，也能感受到海虾的画作，色彩中有一些神奇的，令人惊叹的力量吧？这也是他出名的原因。这边打听到有一些游客参观了海虾故居后就失踪了，这也为海虾添加了一些恐怖神秘的色彩，关于这些您有什么看法吗？”  </p>
<h4><strong>08-02 22:12:40 朱斯蒂娜</strong></h4>
<p>“我认为他们的失踪与艺术协会无关。或者说…因为他们的共同点都是参观过海虾之馆，所以警察会觉得是我们造成的。虽然这导致了游客数量的减少，但是并没有影响协会的运作，所以我们也没必要做出什么措施。”  </p>
<h4><strong>08-02 22:14:39 斯特林</strong></h4>
<p>“当然，我也不是警察派来的便衣。”  </p>
<h4><strong>08-02 22:14:35 朱斯蒂娜</strong></h4>
<p>“便衣？那个烦人的警察干不来这么聪明的事情，他今天又来了，真烦。”  </p>
<h4><strong>08-02 22:16:28 乔治</strong></h4>
<p>听到了烦人的警察关键字看着助理小姐“你是说罗恩警官？”  </p>
<h4><strong>08-02 22:21:48 朱斯蒂娜</strong></h4>
<p>她说起警察心情正差着呢，看你拿出这么多钱出来重重地哼了一声：“不知道，我就是个帮会长干活的工具人。”  </p>
<h4><strong>08-02 22:22:42 斯特林</strong></h4>
<p>“哎，真可惜呢，那这边也就不强求啦。”  </p>
<h4><strong>08-02 22:25:19 乔治</strong></h4>
<p>“罗恩警察在这调查了什么事？”  </p>
<h4><strong>08-02 22:25:47 朱斯蒂娜</strong></h4>
<p>“是，他来过好几次了，每次都要吵上一架，他自己都没查到什么线索，居然希望艺术协会关停，真是个混蛋。”  </p>
<h4><strong>08-02 22:31:34 朱斯蒂娜</strong></h4>
<p>“………她也没有再多说什么。“这样啊。行了，回到正题吧，如果没什么问题的话，可以出发了。我会负责带你们过去。”</p>
<h3>COC剧情线索归档（08-02至08-09）</h3>
<h4><strong>08-02 22:31:59 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>“好吧，我们没什么问题了，百闻不如一见，我们就一起出发去吧”我摆了摆手，整理了一下外套，向助理小姐说道“  </p>
<h4><strong>08-02 22:34:34 KP (鹤涧)</strong></h4>
<p>海虾之馆位于一处视野开阔的海边高坡上，是一栋被精心翻新过的老式建筑，建筑分两层。在柱式的细部雕刻和结构上都有意地模仿了洛可可繁复细腻的风格，灰色为主体的朴素配色让整个宅邸显得严肃而阴郁。<br>在这山坡可以感受到潮起潮落，带着湿气的海风，是个相当惬意的地方。  </p>
<h4><strong>08-02 22:34:58 KP (鹤涧)</strong></h4>
<p>馆外贴有内部的布局，二层因为是以日常起居用的房间为主，所以是不开放的。可探索区域：【门厅】【书房】【画室】【收藏室】【走廊】  </p>
<h4><strong>08-02 22:41:52 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>我环顾一下门厅，想知道海虾平时生活的地方是什么风格的  </p>
<h4><strong>08-02 22:43:04 KP (鹤涧)</strong></h4>
<p>门厅之后是通向二楼的宽大双楼梯，靠近楼梯中间的停歇平台的墙上，是一张2m※1.5m的巨大人像，人像做出微微俯视的姿势，像是在居高临下地和欣赏这幅画的人对视。<br>这是海虾本人的自画像，通过人像的身形可以判断出，他是个成年的男性。男人的全身都被罩在一件黑色的大衣之中，甚至连手腕都被白色的手套隐藏起来。脸上戴着只露出双眼的骨白色硬质面具。面具的边缘，在从二楼传来的阳光的照耀下，透出不可思议的五彩反光。据工作人员介绍，画中的这位不明男人，就是海虾之馆的主人，神秘的画家。  </p>
<h4><strong>08-02 22:46:12 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>我盯着门厅的这幅画，有些惊叹，向附近的助理小姐询问“这幅画是海虾的自画像吗？虽然是自画像但是却没有露出一点自己，好奇特的风格”  </p>
<h4><strong>08-02 22:46:12 KP (鹤涧)</strong></h4>
<p>除了你们之外，馆内还有大约三四个同时期参观的游客。  </p>
<h4><strong>08-02 22:47:30 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“是啊，他本就是个神秘的人，所以才有无限可供探索的空间，不是吗？”  </p>
<h4><strong>08-02 22:48:10 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>朱斯蒂娜微微一笑，又回到了工作时候的正常状态，像在介绍自家招牌一样。  </p>
<h4><strong>08-02 22:49:07 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>我靠近这幅画仔细观察一下  </p>
<h4><strong>08-02 22:50:20 KP (鹤涧)</strong></h4>
<p>你觉得画上使用的颜料很特别，所以才能在阳光下如此绚烂多彩，不过这也是海虾一贯的风格，你没看出什么奇怪的地方。  </p>
<h4><strong>08-02 22:50:25 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>“还是那样完美的色彩搭配啊”我入迷的小声感叹了一下  </p>
<h4><strong>08-02 22:52:38 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>我环绕着门厅逛了一圈，仔细观察了一下房间建筑  </p>
<h4><strong>08-02 22:52:43 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>有什么值得在意的事情吗  </p>
<h4><strong>08-02 22:52:58 KP (鹤涧)</strong></h4>
<p>门厅没有其他值得注意的了。  </p>
<h4><strong>08-02 22:53:34 KP (鹤涧)</strong></h4>
<p>不过，这个过程你更明显感觉到，这个建筑是经过翻新的。  </p>
<h4><strong>08-02 22:54:21 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>“我注意到，这里的建筑似乎，有翻新的痕迹？艺术协会改造了这里吗？”我向旁边的助理小姐问道  </p>
<h4><strong>08-02 22:55:15 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“是海虾自己进行翻新的，这里原本是一栋海边的废宅，属于一个古老的家族，不过关于那个家族的事情我不是很了解，而且他们十年前就消亡了。”  </p>
<h4><strong>08-02 22:55:56 冬日 (乔治)</strong></h4>
<p>“这个会馆还有前主人吗？好令人在意”  </p>
<h4><strong>08-02 22:56:09 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“也不知道海虾选择这里作为住处的理由…或许是因为视野开阔，风景也很出色吧。”  </p>
<h4><strong>08-02 22:56:56 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“是的，但应该只是一些不值一提的旧事。”  </p>
<h4><strong>08-02 22:57:33 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>“古老家族？这部分可以详细说说吗？”我露出了很感兴趣的表情  </p>
<h4><strong>08-02 22:58:33 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“……我说过并不了解这件事相关了吧？不过，硬要回忆的话，哦，那个家族叫做古格温。”  </p>
<h4><strong>08-02 22:58:38 冬日 (乔治)</strong></h4>
<p>“必须一听”  </p>
<h4><strong>08-02 23:01:02 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>“好吧，我记下了“我向助理小姐笑了笑，然后说道”门厅参观也结束了，我们继续向前？拜托助理小姐领路一下了”  </p>
<h4><strong>08-08 20:49:19 KP (鹤涧)</strong></h4>
<p>故事&quot;2025_07_25_21_29_03&quot;的记录已经继续开启，当前已记录文本540  </p>
<h4><strong>08-08 21:03:54 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>教授和两位同伴向门厅内部走去，我向助理小姐搭话“按照导览图，下一个地点是，海虾的书房吗？”  </p>
<h4><strong>08-08 21:04:48 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“是的，你们可以按自己的想法随意游览，如果有什么疑问再来找我就行。”  </p>
<h4><strong>08-08 21:07:21 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>我耸了耸肩膀，对助理小姐说“那就先带我们去书房游览吧，麻烦小姐你带路了”  </p>
<h4><strong>08-08 21:09:51 KP (鹤涧)</strong></h4>
<p>书房位于海虾之馆靠海的一侧。这里的生活气息很浓郁，在几座包漆书柜中央，放置着一具面向窗户的沙发。连地上也铺着柔软的簇绒地毯。透过窗户，可以看到大海的景色，并且，窗边挂着一个棕色羽毛坠饰的网状物，可以过神秘学。  </p>
<h4><strong>08-08 21:14:25 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>“这个羽毛构成的网状物品，好眼熟。。”我盯着那个窗边的饰品，陷入沉思  </p>
<h4><strong>08-08 21:16:08 KP (鹤涧)</strong></h4>
<p>你看出这是印第安人风格的捕梦网。在印第安人的传统中，捕梦网会困住可怕的噩梦，当太阳再次升起，所有阴影都将会烟消云散。  </p>
<h4><strong>08-08 21:17:36 其他猫男角色01 (克里斯·费恩伯格)</strong></h4>
<p>那我观察一下书架上，有没有值得注意的，不太常见的书籍？  </p>
<h4><strong>08-08 21:18:20 KP (鹤涧)</strong></h4>
<p>检查海虾的藏书，可以发现除了一些零散的人文历史书籍和小说以外，海虾的藏书大致分为三大类，一类是艺术原理及技法相关的书籍，一类和他收藏眼球的兴趣相关，是生物及医学，解剖学相关的书籍，最后一类为他的神秘学题材作品提供原型和理论的各类美洲、亚洲和欧洲的地方神话，及《金花的秘密》这样的神秘学书籍。<br>你在其中发现了一本封面已经破损的册子，和其他书籍相比显然不是同一个时期的，似乎可以从中了解这座城市的前身。  </p>
<h4><strong>08-08 21:20:18 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>&quot;这个饰品，好眼熟，我记得是是北美奥吉布瓦族的文化中一种手工艺品？奥吉布瓦人相信在床头挂上捕梦网能够让好梦从线之间的小洞穿过，而将恶梦拒于门外。助理小姐，看起来海虾经常做噩梦？&quot;  </p>
<h4><strong>08-08 21:21:10 其他猫男角色01 (克里斯·费恩伯格)</strong></h4>
<p>我问问助手小姐这里的书能抽出来看看吗？我对海虾的阅读习惯和阅读偏向很好奇。如果不能的话我就过一会找个没人的时间把书偷偷抽走。  </p>
<h4><strong>08-08 21:24:22 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“捕梦网在当地很常见，是从几百年前流传至今的地方习俗，不仅出现在家中，船只上也会有，海虾是否受到噩梦侵扰我并不清楚，不过我知道海虾很喜欢收集和解读捕梦网，是一家捕梦网店铺的常客。”朱斯蒂娜回忆了一下，看起来不以为然，“毕竟也有不少人只是当做普通的装饰品挂在家里。”  </p>
<h4><strong>08-08 21:25:55 冬日 (乔治)</strong></h4>
<p>“这家店在哪里啊？我有点感兴趣，买回去当伴手礼蛮不错的。”  </p>
<h4><strong>08-08 21:26:02 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“看书的话无所谓，不过要是造成损坏了麻烦自费赔偿，提醒一句，这里的东西价值都超出你的想象。”  </p>
<h4><strong>08-08 21:27:07 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“好像是在商店街吧，去打听一下就知道了，这年头还在卖捕梦网的很少见。”  </p>
<h4><strong>08-08 21:27:21 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>&quot;在波士顿可不常见，这个东西发展在艺术与神秘学的边界上，很有趣&quot;我笑了笑，走向书架  </p>
<h4><strong>08-08 21:27:28 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>“这些书都可以随便看吗”  </p>
<h4><strong>08-08 21:28:13 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>她点点头表示默许了。  </p>
<h4><strong>08-08 21:28:44 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>我拿起书架上的书快速翻动，想在短时间找到一些有用的信息  </p>
<h4><strong>08-08 21:29:43 其他猫男角色01 (克里斯·费恩伯格)</strong></h4>
<p>得到肯定后我拿起那本破损的册子小心翻看，有什么值得注意的信息吗？  </p>
<h4><strong>08-08 21:30:02 KP (鹤涧)</strong></h4>
<p>这里原先只是一座海边的小镇，人们以打渔为生，所以把这里称为“ship（顺普）”。顺普发生改变的节点是几百年前，一个以古格温为姓氏的家族迁来了顺普，他们建造了气派的宅邸，在海边的山坡定居了下来。<br>……<br>记录停止于十年前，在这之前几乎都是空白的内容，且都是些无关紧要的小事，古格温家族在这里的存在痕迹像是被刻意抹去了。你们只能了解到这个神秘的古格温家族最后所有人都在十年前死于一场可怕的瘟疫，也就是记录停止的时间节点。  </p>
<h4><strong>08-08 21:31:09 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>我把这本册子举起来，对着助理小姐摇了下手  </p>
<h4><strong>08-08 21:31:41 冬日 (乔治)</strong></h4>
<p>“是什么引发的瘟疫，好可怕，整个家族一个人都没了吗？”  </p>
<h4><strong>08-08 21:31:58 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>”小姐，你知道这本册子的存在嘛？这记载的是真实的历史吗？“  </p>
<h4><strong>08-08 21:34:04 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“十年前这里确实发生过瘟疫没错，不过我不是本地人，不知道当时到底发生了什么…我也没兴趣跟那些本地人交流。”  </p>
<h4><strong>08-08 21:34:52 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>“哦？听你的语气，你对本地人，不是很友好？”  </p>
<h4><strong>08-08 21:35:10 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“至于这册子，说实话我没什么印象，海虾之馆的东西艺术协会基本上没有做什么改动，这原本就是属于海虾的藏品。”  </p>
<h4><strong>08-08 21:38:42 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“本地人都集中在东城区，我之前就说过两个城区之间存在矛盾，非必要的情况都会避免接触，更别提聊天了。”  </p>
<h4><strong>08-08 21:40:02 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>“哦哦，想起来了，老的本地人之前说过对艺术馆比较有意见？”  </p>
<h4><strong>08-08 21:45:18 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“……不止是艺术馆吧，感觉那些本地人都很排斥外来者，加上镇子原先以捕鱼业为主，都是些粗俗的渔民，也理解不了艺术。”她思索片刻，“嗯，这其中应该还有一些更复杂的内情，比如贫富差距拉大，生存空间被挤压一类的现实问题。”  </p>
<h4><strong>08-08 21:46:11 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“但是关我们什么事。”她耸耸肩，显得很是无所谓。  </p>
<h4><strong>08-08 21:46:56 其他猫男角色01 (克里斯·费恩伯格)</strong></h4>
<p>“也能理解，不过那样我们去东城区调查就会困难重重。”我小声跟乔治聊天。  </p>
<h4><strong>08-08 21:47:11 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>“看起来你不是很在意本地人的想法？”  </p>
<h4><strong>08-08 21:47:26 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>“他们对你们做出过什么恶劣的行为吗？”  </p>
<h4><strong>08-08 21:51:20 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“目前两边只是僵持状态，各过各的，那我自然没必要担心太多，再说了，西城区聚集了不少有钱有地位的人，甚至会受到政府的庇护，就算本地人有所不满，直接动手激发冲突也是不理智的行为。”  </p>
<h4><strong>08-08 21:52:30 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>&quot;哦，顺谱镇的市政没有派系斗争嘛？没有采取什么行动吗？&quot;  </p>
<h4><strong>08-08 21:55:00 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“他们采取行动干什么？这种矛盾只能从根源解决吧？政府都已经开始发展旅游业了，怎么可能为了协调东城区中断这件事呢？”  </p>
<h4><strong>08-08 21:57:14 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>&quot;突然想问，我们前往的时候在地图上看到了一个教堂，这个教堂是东城区的历史建筑还是近几年来由外来者新建的？&quot;  </p>
<h4><strong>08-08 21:59:27 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“教堂是原先就有的，不过近几年为了配合城市化进行了改建翻新，这里的人普遍信奉天主教，教堂对他们而言是必需的精神寄托。”  </p>
<h4><strong>08-08 22:00:08 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>&quot;天主教堂吗？嘿嘿嘿&quot;  </p>
<h4><strong>08-08 22:01:15 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>“我暂时没有疑问了，感谢你的回答”教授向助理小姐道谢以后，停止了对话  </p>
<h4><strong>08-08 22:01:26 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>我再在书房里面细致的观察一圈，确认没有什么值得在意的东西以后，便向助理小姐说道“我们可以前往下一个游览点了，可以请你带路吗？”  </p>
<h4><strong>08-08 22:05:46 KP (鹤涧)</strong></h4>
<p>画室分为两部分，一部分摆放着画架及一些画具，另一部分是摆放着诸多研磨工具的石桌，石桌上还残留着一些白色的粉末，在石桌旁边的小柜子里摆放着诸多和从植物矿物中提取颜料有关的书籍。  </p>
<h4><strong>08-08 22:06:11 KP (鹤涧)</strong></h4>
<p>你们注意到白色的粉末有些眼熟，似乎之前在哪里见过。  </p>
<h4><strong>08-08 22:06:15 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>“哦？白色粉末？”我一眼就看到了这个白色粉末  </p>
<h4><strong>08-08 22:06:19 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>我走过去细细观察  </p>
<h4><strong>08-08 22:06:57 KP (鹤涧)</strong></h4>
<p>似乎和克里斯之前吃出来的小颗粒是差不多的材质。  </p>
<h4><strong>08-08 22:08:05 其他猫男角色01 (克里斯·费恩伯格)</strong></h4>
<p>太奇怪了，是这个城市里的植物都带有这种白色粉末吗？我想趁没人注意的时候用手帕沾一点带走。  </p>
<h4><strong>08-08 22:08:07 冬日 (乔治)</strong></h4>
<p>“这是什么？有点眼熟”  </p>
<h4><strong>08-08 22:08:26 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>&quot;助理小姐，这个白色粉末是什么，很值得在意啊？&quot;  </p>
<h4><strong>08-08 22:10:09 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“是特制颜料的原材料之一，海虾使用的颜料是他自己制作的，也就是独创的秘法，似乎是因为市场上工业化生产出的颜料不够细腻，满足不了他的需求。”  </p>
<h4><strong>08-08 22:10:39 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“不过就算得到了同样的颜料，其他人也画不出他的那种感觉吧。”  </p>
<h4><strong>08-08 22:12:10 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>&quot;居然是自制颜料吗？我可以稍微拿走几粒嘛？作为标本&quot;  </p>
<h4><strong>08-08 22:12:33 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“当然不可以。”她微笑着一口回绝。  </p>
<h4><strong>08-08 22:12:35 冬日 (乔治)</strong></h4>
<p>“是什么样的原料制成的呢？”  </p>
<h4><strong>08-08 22:12:47 其他猫男角色01 (克里斯·费恩伯格)</strong></h4>
<p>“这种颜料似乎需要用特定的植物制作……冒昧地问一句，你们艺术馆的工作人员是否有了解？”  </p>
<h4><strong>08-08 22:13:33 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“要是我知道的话，这就不是秘法了，看起来像沙子，说不定是海里找来的呢。”  </p>
<h4><strong>08-08 22:13:36 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>&quot;诶，你看这里那么多呢，我就拿走几粒，几万分之一也不行吗？&quot;我尝试说服助理小姐  </p>
<h4><strong>08-08 22:15:10 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>她无语地笑了一下，脸上表情保持不变：“你说呢？”  </p>
<h4><strong>08-08 22:16:41 冬日 (乔治)</strong></h4>
<p>乔治去看了看石桌旁边的小柜子里的书籍  </p>
<h4><strong>08-08 22:16:48 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>“好吧好吧，那我可以看看那些颜料相关的书籍吗？”我耸了耸肩，无奈的说道  </p>
<h4><strong>08-08 22:17:23 KP (鹤涧)</strong></h4>
<p>是一些人体解剖和颜料制作相关的书籍。  </p>
<h4><strong>08-08 22:22:37 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>惯例的再次搜寻房间，没有额外的收获之后，我呼唤同伴，走向了下一个景点  </p>
<h4><strong>08-08 22:24:34 KP (鹤涧)</strong></h4>
<p>收藏室和其他房间相比更加宽阔，四面墙都摆满了玻璃柜，里面则摆放着各种各样半透明的椭圆体，椭圆体的内部有着和椭圆体的颜色不相同的其他几何形状。每个椭圆体之间底色各不相同，内里的形状也各异。在椭圆体的底座上有类似标签的东西。  </p>
<h4><strong>08-08 22:25:06 KP (鹤涧)</strong></h4>
<p>你们发现这些椭圆体都是生物的眼球模型。  </p>
<h4><strong>08-08 22:26:07 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>“居然都是眼睛吗？”斯特林教授的面色有的不适  </p>
<h4><strong>08-08 22:26:25 其他猫男角色01 (克里斯·费恩伯格)</strong></h4>
<p>“这种收集眼球的癖好倒是不多见。”  </p>
<h4><strong>08-08 22:27:29 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“这些是海虾对各类生物眼球模型的收藏，他向生物学家求取眼球的正确结构，再用橡胶和天然树脂制作出模型。除了认为动物的眼球本身的构造十分美丽之外，海虾还执迷于对动物视界的探索，他很好奇在其他生物，甚至两个不同的个体眼中，世界是否各不相同。”似乎在工作人员看来，这并没有什么奇怪的。  </p>
<h4><strong>08-08 22:29:08 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>我细细观察眼前这些眼球收藏，想要判断出他们是什么生物的眼睛  </p>
<h4><strong>08-08 22:30:30 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>我想尝试判断这些眼睛究竟是模型，还是实物呢  </p>
<h4><strong>08-08 22:32:36 KP (鹤涧)</strong></h4>
<p>经过观察后，你可以确定这只是模型，并且包括了各个人种，动物的各个科目，都经过了放大，所以看起来是奇怪且繁复的特殊形状。下方的标签上写着各种动物的名字，甚至不同人种的标签，你在其中一些标签的底部可以看到一行写明制作者的小字：海虾及医生凯瑟琳。  </p>
<h4><strong>08-08 22:33:47 冬日 (乔治)</strong></h4>
<p>“凯瑟琳是谁”  </p>
<h4><strong>08-08 22:33:55 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>&quot;凯瑟琳？海虾居然还和别人合作创作作品吗？这倒是闻所未闻&quot;  </p>
<h4><strong>08-08 22:40:44 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>我转头寻找助理小姐，对着她提出了疑问  </p>
<h4><strong>08-08 22:40:51 冬日 (乔治)</strong></h4>
<p>乔治转头看向助理小姐  </p>
<h4><strong>08-08 22:42:32 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“那是给海虾制作模型提供医学和解剖学支援的医生，他们一直有书信来往。我听说海虾失踪后，凯瑟琳医生也来到了顺普市的医院工作。”  </p>
<h4><strong>08-08 22:43:47 其他猫男角色01 (克里斯·费恩伯格)</strong></h4>
<p>”咦，那海虾的崇拜者岂不是会慕名去探访她？这位凯瑟琳医生不会为游客的好奇心所困扰吗？“  </p>
<h4><strong>08-08 22:45:53 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>&quot;那我想问问朱斯蒂娜小姐，你知道这位凯瑟琳医生是什么科目的医生嘛？居然那么了解眼球相关？是眼科医生吗？&quot;我带着一些好奇的神色向助理小姐询问  </p>
<h4><strong>08-08 22:48:09 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“毕竟是有地位的专家，并不是谁去了医院都能见到的，凯瑟琳医生既然选择来到这里，那自然有她自己的应对方式。”  </p>
<h4><strong>08-08 22:48:09 冬日 (乔治)</strong></h4>
<p>“凯瑟琳医生既然选择来到这里，那自然有她自己的应对方式”  </p>
<h4><strong>08-08 22:49:19 其他猫男角色01 (克里斯·费恩伯格)</strong></h4>
<p>”原来如此，那助理小姐你们有见过这位医生吗？她大概是个什么样的人？“  </p>
<h4><strong>08-08 22:49:25 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“大概是的，嗯，仔细一想，眼科也不是随便就能挂上号的吧。”  </p>
<h4><strong>08-08 22:50:27 KP (鹤涧) 扮演 助理小姐朱斯蒂娜</strong></h4>
<p>“我只知道是位很有能力的年轻女医生。”  </p>
<h4><strong>08-08 22:54:33 冬日 (乔治)</strong></h4>
<p>“咱们去走廊转转吧，这里有点瘸人。”  </p>
<h4><strong>08-08 22:54:41 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>“好像没有更多可以参观的房间了，我们去走廊？”  </p>
<h4><strong>08-08 22:55:14 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>“别那么胆小，乔治，这些可都是艺术品”  </p>
<h4><strong>08-08 22:55:30 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>我拍了拍乔治的肩膀，往外面的走廊走去  </p>
<h4><strong>08-08 22:55:49 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>在海虾之馆的走廊上详细逛一圈，我看到了什么？  </p>
<h4><strong>08-08 22:56:07 KP (鹤涧)</strong></h4>
<p>你们经过走廊时，注意到墙上还有另一幅和海虾的自画像差不多尺寸的巨型画作，名叫《月亮》。整幅画的背景是夜空下的海边荒野，两座灰色的灯塔相对着位于画面的左右两侧，仿佛组成了虚幻的门扉。画作的正中是巨大的月亮，同时展现出弦月、半月与圆月三个状态。月亮之下则是一对吠叫的狗和狼，被置于背景远处次要的位置，再下方，则是从海中爬出的，鳞甲峥嵘的青灰色的虾。  </p>
<h4><strong>08-08 22:57:14 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>我尝试解读画的内涵和象征意义  </p>
<h4><strong>08-08 22:57:35 KP (鹤涧)</strong></h4>
<p>你认出这幅画的原型应该是韦特塔罗牌的《月亮》，和原图相比，这幅画在构图上刻意放大了虾和月亮。月亮这张牌代表人心中潜藏的恐惧，怪诞，与现实相对的另一面，而虾则代表着从原初的无意识黑暗之海中逐渐显现的深层欲望。  </p>
<h4><strong>08-08 22:59:14 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>&quot;原来是这样吗？你的遭遇&quot;我看着画，像是想到了什么，低头沉思  </p>
<h4><strong>08-08 23:08:25 冬日 (乔治)</strong></h4>
<p>乔治用手肘悄悄戳了一下斯特林，在斯特林看过来的眼神中往走廊最后一个房间看了看  </p>
<h4><strong>08-08 23:09:27 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>斯特林教授看了一眼乔治的动作，立刻明白了些什么，对着乔治点了点头，然后也用手戳了戳克里斯，对着他做了一样的动作  </p>
<h4><strong>08-08 23:12:19 其他猫男角色01 (克里斯·费恩伯格)</strong></h4>
<p>我心领神会，老板说什么就是什么，走！  </p>
<h4><strong>08-08 23:14:02 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>我们找了一个朱斯蒂娜小姐给别人解说的时机，靠近了那个不能进入的房间  </p>
<h4><strong>08-08 23:14:08 渡鸦25446 (斯特林·万斯教授)</strong></h4>
<p>尝试开门潜入  </p>
<h4><strong>08-08 23:17:28 KP (鹤涧)</strong></h4>
<p>你们来到最后一个房间的门口，然而此时，另外一个游客也走到了这里，他似乎还有些犹豫，等待着你们做出行动。 这个房间的门相较于其他房间显得笨重许多，材质是厚重的铅层，开门的机关则是老旧的门阀。铅门像是嵌入了墙壁一样，哪怕随手一抹都会落下灰色的粉尘。  </p>
<h4><strong>08-08 23:18:07 冬日 (乔治)</strong></h4>
<p>试图打开铅门  </p>
<h4><strong>08-08 23:19:49 KP (鹤涧)</strong></h4>
<p>门被成功转动打开。  </p>
<h3>COC剧情线索归档（08-08至08-09）</h3>
<h4><strong>08-08 23:21:34 KP（鹤涧）</strong></h4>
<p>你成功转开了门。这个房间阴暗而无窗，似乎原本是作为储藏室而使用。因为长久不通风的缘故，你们可以闻到淡淡的潮味。透过光源可以看到，暗室四周的岩石墙壁及天花板上用夸张的颜色和手法描绘出了一整幅壁画，四面是汹涌的海水中翻涌的鲜红色触手，头顶则是纠缠于一座凸起的峭壁之上的怪物，它的上半身是散发裸体的妖魅女人，在腰间长着六颗野兽的头颅，下半身则是十二条鲜红触手的根部，四面墙上的触手即是它延伸而来。  </p>
<h4><strong>08-08 23:21:41 KP（鹤涧）</strong></h4>
<p>可以过教育或神秘学。  </p>
<h4><strong>08-08 23:22:17 渡鸦25446（斯特林教授）</strong></h4>
<p>我被墙上的绘画所震惊，立刻移动到墙边，开始细细观察这些绘画。  </p>
<h4><strong>08-08 23:22:38 KP（鹤涧）</strong></h4>
<p>你看出这是希腊神话中的海妖斯库拉，奥德修斯曾献祭六个人喂饱她的六个兽头，才得以通过它盘踞的海域。斯库拉的视线汇集之处，是一口深入地下的井。她腰间六只野兽的头颅簇拥在井边，露出等待饵食的饥渴目光。  </p>
<h4><strong>08-08 23:23:56 KP（鹤涧）</strong></h4>
<p>另外，你凑近墙壁的时候，发现墙壁上有很多斑驳的痕迹，那些油画颜料被层层堆砌风化，似乎轻易就可以剥落。  </p>
<h4><strong>08-08 23:24:19 渡鸦25446（斯特林教授）</strong></h4>
<p>我下意识的尝试去剥落颜料。  </p>
<h4><strong>08-08 23:25:27 KP（鹤涧）</strong></h4>
<p>你发现颜料掩盖着的，是墙壁内部的厚重铅层，不仅是四周，天花板和脚下似乎原本都是铅层，整个房间唯一没有铺设铅层的地方，就是中间那口井。  </p>
<h4><strong>08-08 23:27:18 KP（鹤涧）</strong></h4>
<p>如此厚重的铅层显得很怪异，并不像是普通储藏室会铺设的，像是为了特地防护什么一样。  </p>
<h4><strong>08-08 23:28:08 渡鸦25446（斯特林教授）</strong></h4>
<p>我要靠近井边看看，伸头看！拿出手电筒看！  </p>
<h4><strong>08-08 23:30:15 KP（鹤涧）</strong></h4>
<p>向井中观看，可以看到井的深处有积水，但无法推测积水和井深度。从味道判断，这里通向的也不是下水道。就在你往里看的时候，有什么东西从里面迅速爬出，差点直接冲到你的脸上。  </p>
<h4><strong>08-08 23:31:49 渡鸦25446（斯特林教授）</strong></h4>
<p>&quot;什么东西&quot;斯特林教授在被吓到前，下意识的极力观察冲出来的东西。  </p>
<h4><strong>08-08 23:32:39 KP（鹤涧）</strong></h4>
<p>这是一只色彩极为艳丽的凤尾螳螂虾，它停在了井口，暂时没有下一步的动作了。  </p>
<h4><strong>08-08 23:33:06 KP（鹤涧）</strong></h4>
<p>这种动物在温暖的热带海水中才能生存，顺普市周边的海域应该不符合它们的生存要求。  </p>
<h4><strong>08-08 23:33:38 渡鸦25446（斯特林教授）</strong></h4>
<p>我立刻退开，并且小声警告同伴。  </p>
<h4><strong>08-08 23:34:08 渡鸦25446（斯特林教授）</strong></h4>
<p>“小心这个生物，他能用超音速的打击瞬间打碎你的骨头”。  </p>
<h4><strong>08-08 23:35:08 冬日（乔治）</strong></h4>
<p>“危险，我们该离开这了”。  </p>
<h4><strong>08-08 23:36:17 渡鸦25446（斯特林教授）</strong></h4>
<p>“乔治，你可以带走他吗，我觉得他很重要”。  </p>
<h4><strong>08-08 23:36:31 渡鸦25446（斯特林教授）</strong></h4>
<p>“你看，他也没有要攻击我们的样子”。  </p>
<h4><strong>08-08 23:36:57 渡鸦25446（斯特林教授）</strong></h4>
<p>教授带着略微狂热的眼神小声和乔治说道。  </p>
<h4><strong>08-08 23:37:07 KP（鹤涧）扮演 游客</strong></h4>
<p>“这口井是做什么的？”那个游客喃喃自语，看着墙上的壁画若有所思，“是希望有人重复神话中的桥段吗？”。  </p>
<h4><strong>08-08 23:37:21 冬日（乔治）</strong></h4>
<p>“靠北啦，要去你自己去”。  </p>
<h4><strong>08-08 23:37:38 冬日（乔治）</strong></h4>
<p>“什么神话故事。”。  </p>
<h4><strong>08-08 23:38:19 渡鸦25446（斯特林教授）</strong></h4>
<p>&quot;你知道些什么吗？话说你为什么要跟进来，你知道这里受到诅咒的对吧&quot;。  </p>
<h4><strong>08-08 23:38:24 KP（鹤涧）扮演 游客</strong></h4>
<p>“……献上六个祭品后才能通过试炼的故事。”。  </p>
<h4><strong>08-08 23:39:41 KP（鹤涧）扮演 游客</strong></h4>
<p>“只是好奇罢了，你们不也若无其事地进来了吗？”这个看起来有些憔悴的中年男人没好气地答道。  </p>
<h4><strong>08-08 23:40:23 渡鸦25446（斯特林教授）</strong></h4>
<p>“详细说说你知道的故事？”。  </p>
<h4><strong>08-08 23:40:55 KP（鹤涧）扮演 游客</strong></h4>
<p>他最后看了你们一圈，像是确认人数般打量了一遍，然后直接离开了房间，没有继续和你们交谈了。  </p>
<h4><strong>08-08 23:41:59 冬日（乔治）</strong></h4>
<p>“欸，你给我站住”。  </p>
<h4><strong>08-08 23:42:46 冬日（乔治）</strong></h4>
<p>乔治目露凶光，伸出tm熊的力量的手掌要抓住试图溜走的游客。  </p>
<h4><strong>08-08 23:42:54 渡鸦25446（斯特林教授）</strong></h4>
<p>这时候我尝试靠近虾蛄，看看他有没有攻击性。  </p>
<h4><strong>08-08 23:43:38 KP（鹤涧）</strong></h4>
<p>螳螂虾只是静静地趴在井边，暂时没有攻击你的意图。  </p>
<h4><strong>08-08 23:44:37 渡鸦25446（斯特林教授）</strong></h4>
<p>我尝试把虾蛄塞兜里。  </p>
<h4><strong>08-08 23:46:12 KP（鹤涧）</strong></h4>
<p>他见你还敢挑衅，跟你在走廊上拉扯了起来，并尝试给你一拳。  </p>
<h4><strong>08-08 23:47:13 KP（鹤涧）</strong></h4>
<p>你们两个打了一轮王八拳，谁也没打着谁。  </p>
<h4><strong>08-08 23:48:07 KP（鹤涧）</strong></h4>
<p>就在这时，你们听到了由远及近的脚步声，似乎是朱斯蒂娜察觉到动静正在赶过来。  </p>
<h4><strong>08-08 23:48:23 渡鸦25446（斯特林教授）</strong></h4>
<p>我要揣着虾蛄跑出来，顺带和克里斯一起复原门。  </p>
<h4><strong>08-08 23:48:47 冬日（乔治）</strong></h4>
<p>乔治听到了脚步声，装作喝多了啪一下倒在地上。  </p>
<h4><strong>08-08 23:49:04 冬日（乔治）</strong></h4>
<p>“就是你打的我，你别想跑，赔钱”。  </p>
<h4><strong>08-08 23:49:41 冬日（乔治）</strong></h4>
<p>嘴里叽里咕噜装作神志不清的自言自语。  </p>
<h4><strong>08-08 23:52:17 KP（鹤涧）</strong></h4>
<p>他骂骂咧咧地又踹了你一脚，然后趁其他人来之前跑开了。  </p>
<h4><strong>08-08 23:53:45 KP（鹤涧）</strong></h4>
<p>你把螳螂虾带了出去。  </p>
<h4><strong>08-08 23:56:18 其他猫男角色01（克里斯）</strong></h4>
<p>我手忙脚乱地把门在后面合上。  </p>
<h4><strong>08-08 23:58:06 KP（鹤涧）</strong></h4>
<p>朱斯蒂娜过来刚好看到乔治倒在地上胡言乱语，她挑挑眉看向你们，表情有些意味深长。  </p>
<h4><strong>08-08 23:58:54 渡鸦25446（斯特林教授）</strong></h4>
<p>“啊啊，蛛丝蒂娜小姐，你来的正好”。  </p>
<h4><strong>08-08 23:59:08 KP（鹤涧）扮演 朱斯蒂娜</strong></h4>
<p>“干什么呢？起来。”她又不轻不重踹了乔治一脚。  </p>
<h4><strong>08-08 23:59:38 渡鸦25446（斯特林教授）</strong></h4>
<p>“我的同伴突然被另一位游客袭击了啊，倒地不起”。  </p>
<h4><strong>08-09 00:00:34 冬日（乔治）</strong></h4>
<p>乔治捂着被踹的地方哼哼唧唧的叫。  </p>
<h4><strong>08-09 00:01:24 其他猫男角色01（克里斯）</strong></h4>
<p>“刚刚有一位奇怪的游客打开了这扇门，似乎还想让我们进去，我们本想问问究竟怎么回事，他却猛然攻击了乔治并逃跑了。”。  </p>
<h4><strong>08-09 00:03:29 其他猫男角色01（克里斯）</strong></h4>
<p>“而且那位先生的状态看起来很不对劲……说话仿佛梦游，恐怕会对艺术馆造成一些不好的影响，我恳请你们的工作人员早些找到他吧……希望能及时止损。”我把乔治先拉起来，做出一副担忧的表情。  </p>
<h4><strong>08-09 00:05:50 KP（鹤涧）扮演 朱斯蒂娜</strong></h4>
<p>“毕竟来这里的什么人都有。”她像是已经见怪不怪了，“被袭击这件事你们打算追究到底么？那正好，警察有活干了。”。  </p>
<h4><strong>08-09 00:05:52 KP（鹤涧）扮演 朱斯蒂娜</strong></h4>
<p>“不过事先说好，跟协会没关系，这是你们参观者之间产生的个人矛盾，别把我们扯进去就行。”。  </p>
<h4><strong>08-09 00:07:16 渡鸦25446（斯特林教授）</strong></h4>
<p>“好的，那我们也参观完了，可以拿回物品了吗？我们希望尽快去警局报案”。  </p>
<h4><strong>08-09 00:07:57 渡鸦25446（斯特林教授）</strong></h4>
<p>我装作有些急迫的和蛛丝蒂娜小姐说到。  </p>
<h4><strong>08-09 00:08:00 其他猫男角色01（克里斯）</strong></h4>
<p>“被袭击事小，艺术藏品的安全更重要。没关系，朱丝蒂娜女士，不必有这种多余的担心，警局那边我们可以自行对接。”。  </p>
<h4><strong>08-09 00:09:17 KP（鹤涧）扮演 朱斯蒂娜</strong></h4>
<p>“可以。”她点点头，“你们回协会取走自己的物品就好。我还要做一些善后的工作，就不继续陪着各位了。”。  </p>
<h4><strong>08-09 00:09:36 其他猫男角色01（克里斯）</strong></h4>
<p>“不过我相信你们这儿有今天的访客记录表吧？如果报警，我们可能会需要这件东西，也方便警察锁定袭击者。您是否能够提供呢？”。  </p>
<h4><strong>08-09 00:12:04 KP（鹤涧）扮演 朱斯蒂娜</strong></h4>
<p>“那位参观者的信息我倒是可以直接给你，不过参观只需要填个名字就行了，没有其他有价值的内容。那个人叫埃文，只有这个了。”。  </p>
<h4><strong>08-09 00:12:53 KP（鹤涧）</strong></h4>
<p>.log off  </p>
<h3>COC剧情线索归档（08-10）</h3>
<h4><strong>08-10 21:05:07 广东蟑螂粤语骰（系统提示）</strong></h4>
<p>故事&quot;2025_07_25_21_29_03&quot;的记录已经继续开启，当前已记录文本841  </p>
<h4><strong>08-10 21:09:08 冬日（乔治）</strong></h4>
<p>乔治熟练的拿上老板的车钥匙  </p>
<h4><strong>08-10 21:09:37 其他猫男角色01（克里斯）</strong></h4>
<p>我看乔治打着火就抱着一种对上次坐车的畏惧坐进车里……不往窗外看应该不会晕车吧？  </p>
<h4><strong>08-10 21:09:39 冬日（乔治）</strong></h4>
<p>打火，踩油门，开别人的车就像呼吸一样自然  </p>
<h4><strong>08-10 21:09:49 冬日（乔治）</strong></h4>
<p>“别怕啊，我的朋友”  </p>
<h4><strong>08-10 21:10:55 冬日（乔治）</strong></h4>
<p>“上次是我太心急了，这次一定安安稳稳的，来吧，不要留遗憾大胆的上车，咱们警局let&#39;s go。”  </p>
<h4><strong>08-10 21:11:15 渡鸦25446（斯特林）</strong></h4>
<p>&quot;别那么多话，快开车&quot;  </p>
<h4><strong>08-10 21:11:25 其他猫男角色01（克里斯）</strong></h4>
<p>“哈哈，”干笑两声表示自嘲，“看来做侦探也有很高的身体素质要求啊。”  </p>
<h4><strong>08-10 21:11:30 渡鸦25446（斯特林）</strong></h4>
<p>斯特林教授摸了摸兜里的虾  </p>
<h4><strong>08-10 21:11:55 冬日（乔治）</strong></h4>
<p>然后开车前往警局，嘀嘀嘀  </p>
<h4><strong>08-10 21:13:24 KP（鹤涧）</strong></h4>
<p>警局位于中城区的边缘，属于更为贴近东城区的一侧，环境也相对杂乱。<br>你们来到警局的门口，看到揭示板上最近张贴的一张告示。告示的内容为：半月前顺普市中城区下水道发现了一具无头尸体，经调查，死者名为马克·鲁索，身份不明。目前凶手尚逃逸在外，请广大市民注意自身安全。如有相关线索欢迎向警方提供。  </p>
<h4><strong>08-10 21:13:41 其他猫男角色01（克里斯）</strong></h4>
<p>啊？卧槽  </p>
<h4><strong>08-10 21:15:57 冬日（乔治）</strong></h4>
<p>“呜哇，无头尸体，”乔治咋舌，“这里还真是不太平。”  </p>
<h4><strong>08-10 21:17:34 渡鸦25446（斯特林）</strong></h4>
<p>&quot;下车吧，我们进去看看&quot;斯特林教授整理了一下衣服，拉开车门走下  </p>
<h4><strong>08-10 21:18:57 其他猫男角色01（克里斯）</strong></h4>
<p>我先拉住另外两人。“等等……这个人，不对，不可能是同名，没有这种巧合……”我看看老板和同事，“这个人是我……事务所的合伙人。前几天还有些事想问他，上次见到还在纽约。他怎么会出现在这里？”  </p>
<h4><strong>08-10 21:19:01 冬日（乔治）</strong></h4>
<p>乔治停好车下车锁好门跟着同伴一起进入警局  </p>
<h4><strong>08-10 21:19:35 渡鸦25446（斯特林）</strong></h4>
<p>“嗯？你认识这个尸体吗？”教授疑惑的看向同伴克里斯  </p>
<h4><strong>08-10 21:19:50 冬日（乔治）</strong></h4>
<p>“这人居然是你的熟人？”  </p>
<h4><strong>08-10 21:22:06 渡鸦25446（斯特林）</strong></h4>
<p>&quot;他有和你说他最近做了什么吗？你们最后一次交流的内容是？&quot;我疑惑的看向克里斯“在纽约的合伙人，怎么会莫名其妙的死在这里了呢，距离也太远了？”  </p>
<h4><strong>08-10 21:24:13 其他猫男角色01（克里斯）</strong></h4>
<p>“没有，实际上他很少告诉我他那边的状况，我们只是有需要才进行合作，大部分时间我们的案件涵盖领域也不重合。”<br>“这才是诡异之处……”  </p>
<h4><strong>08-10 21:24:23 冬日（乔治）</strong></h4>
<p>乔治意识到事情可能比自己想象的要严重许多，但还是安慰说到：“咱们要不先去看看尸体，万一只是同名呢。”  </p>
<h4><strong>08-10 21:25:39 其他猫男角色01（克里斯）</strong></h4>
<p>“但是如果要说所有相关线索……我不确定算不算最近，毕竟发生了那么多事……让人感觉时间都延长了。上个月他在查一件东海岸的艺术品走私案，虽说后来我们没再联系——但老板你的委托和这个案件似乎有些重合之处，这也是我来到这里的原因之一。”<br>“这消息太突如其来了……我可能得停下来想想，刚刚一问三不知真是抱歉。”  </p>
<h4><strong>08-10 21:34:01 渡鸦25446（斯特林）</strong></h4>
<p>“艺术品走私案？总感觉冥冥之中自有对应啊”教授摸了摸下巴，思考了一下  </p>
<h4><strong>08-10 21:34:19 渡鸦25446（斯特林）</strong></h4>
<p>“那我们就先进去报案，然后随机应变询问一些信息吧”  </p>
<h4><strong>08-10 21:36:42 冬日（乔治）</strong></h4>
<p>乔治点点头，“这里四处都透露着不自然的感觉，我们小心行事。”  </p>
<h4><strong>08-10 21:37:04 渡鸦25446（斯特林）</strong></h4>
<p>教授对两位同伴挥了下手，然后转身向警局里面走去  </p>
<h4><strong>08-10 21:37:20 渡鸦25446（斯特林）</strong></h4>
<p>“我有预感，这里会有很重要的信息”  </p>
<h4><strong>08-10 21:38:06 其他猫男角色01（克里斯）</strong></h4>
<p>我沉思着跟上，现在海虾这位艺术家更是疑点重重了。  </p>
<h4><strong>08-10 21:38:54 冬日（乔治）</strong></h4>
<p>“咱们先去看看和你朋友同名的无头尸体吧，万一只是同名呢。”  </p>
<h4><strong>08-10 21:39:11 渡鸦25446（斯特林）</strong></h4>
<p>我和接待的警官开口对话“这位警察先生，请问门口粘贴的那个告示，尸体还在这里吗？”  </p>
<h4><strong>08-10 21:41:06 KP（鹤涧）扮演 警局值班员</strong></h4>
<p>接待处的警员打量了你们一会，然后有些敷衍地做出了回应：“对，还在停尸间。你们是为了这事来的？”  </p>
<h4><strong>08-10 21:43:14 其他猫男角色01（克里斯）</strong></h4>
<p>”是的，但同时我们还要报案。有一个奇怪的成年男子在海虾艺术馆无缘无故地攻击了我们，并且试图把我们关进一个不开放的房间。这里有他的姓名和一些个人特征……希望你们能够调查。”  </p>
<h4><strong>08-10 21:43:37 冬日（乔治）</strong></h4>
<p>“还有我要报案！我在海虾之馆被人袭击了！那个人叫埃文！太可恶了他居然打了我就跑，我要让他赔钱！”  </p>
<h4><strong>08-10 21:48:27 KP（鹤涧）扮演 警局值班员</strong></h4>
<p>他们并没有因此切换到工作状态，反而面对面面相觑传递起了眼神，随后不怀好意地回头大喊一声：“嘿！菜鸟！快感谢上帝，你有活干了！”在一片哄笑声中，之间出现过的警员罗恩默默地走了出来，然后在你们面前坐下，拿出了接警单开始记录。  </p>
<h4><strong>08-10 21:49:25 冬日（乔治）</strong></h4>
<p>看见了老熟人乔治眼前一亮，“又见面了警官。”  </p>
<h4><strong>08-10 21:50:27 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“是你啊…”他看向其他两人，“他们就是你说过的朋友吧？呃……海虾的两位狂热粉丝？从表面看不太出来呢。”  </p>
<h4><strong>08-10 21:52:17 渡鸦25446（斯特林）</strong></h4>
<p>&quot;你们认识吗？&quot;我略带惊讶的戳了戳乔治“怎么我们一起到的顺普,你在这里就有熟人了？”  </p>
<h4><strong>08-10 21:53:17 其他猫男角色01（克里斯）</strong></h4>
<p>“狂热是一方面，另一方面我们都是有礼貌的好人。”我笑着跟罗恩说，“不过你们二位是怎么认识的？”  </p>
<h4><strong>08-10 21:53:19 冬日（乔治）</strong></h4>
<p>“你忘了你在艺术协会让我陪你上厕所我没答应的事了吗？”乔治对斯特林挤眉弄眼  </p>
<h4><strong>08-10 21:53:44 冬日（乔治）</strong></h4>
<p>“就是那时候认识的罗恩警官。”  </p>
<h4><strong>08-10 21:53:51 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“你们认识那具尸体吗？我可以带你们去认领一下，其他的事情稍后再说吧。”他看起来不太自在。  </p>
<h4><strong>08-10 21:54:31 渡鸦25446（斯特林）</strong></h4>
<p>“原来如此”我若有所思的点点头  </p>
<h4><strong>08-10 21:55:15 冬日（乔治）</strong></h4>
<p>“好的，我们先去看看。”能赌心理学看出他为啥不自在吗  </p>
<h4><strong>08-10 21:55:17 渡鸦25446（斯特林）</strong></h4>
<p>“看上去我的同伴克里斯似乎和这位马克是朋友，但更希望只是同名罢”我拍了拍克里斯的肩膀，和罗恩说道  </p>
<h4><strong>08-10 21:58:31 其他猫男角色01（克里斯）</strong></h4>
<p>“希望如此吧。”我担忧地笑一下，但这会着实笑不出来，看着只是像挤了挤眼睛。“如果真是他……恐怕我们也很危险。”  </p>
<h4><strong>08-10 21:59:22 KP（鹤涧）扮演 罗恩</strong></h4>
<p>他虽然无视了同事的嘲笑，但是身处同一个地方大概还是感到了不舒服。  </p>
<h4><strong>08-10 22:01:59 渡鸦25446（斯特林）</strong></h4>
<p>跟着罗恩警官移动  </p>
<h4><strong>08-10 22:02:02 冬日（乔治）</strong></h4>
<p>“怎么说？什么危险。”乔治边走边观察四周，感受到罗恩的职场环境真是小刀拉屁股，开了大眼了，给了他一个同情的眼神，“你真是幸苦了。”  </p>
<h4><strong>08-10 22:03:50 KP（鹤涧）扮演 罗恩</strong></h4>
<p>他带你们来到了警局的停尸间，并从中找到了名为马克之人的尸体。尸体表面有一些淤青和挫伤，虽然没有头颅，但是表面衣物在克里斯看来很熟悉，确实是马克本人的东西。另外，尸体脖颈处的切口极为平整，只有极其锋利的锐器和干脆利落的技巧才能做到这一点。  </p>
<h4><strong>08-10 22:04:01 其他猫男角色01（克里斯）</strong></h4>
<p>“他在查艺术品，我们的工作也与艺术品相关……如果他被某些人，或者某些组织盯上并被暗杀，我们大概也很容易出事。谨慎行事吧。”  </p>
<h4><strong>08-10 22:04:42 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“致命伤就是被断首，但是这个切口太平滑了，简直不像是人类能做到的。”他有些不忍地移开了视线。  </p>
<h4><strong>08-10 22:05:25 其他猫男角色01（克里斯）</strong></h4>
<p>“你们法医的鉴定结果如何？这的确是我的朋友，我侦探事务所的合伙人。有别的资料能提供给我们吗？”  </p>
<h4><strong>08-10 22:05:28 冬日（乔治）</strong></h4>
<p>乔治别过头不去看。  </p>
<h4><strong>08-10 22:05:57 渡鸦25446（斯特林）</strong></h4>
<p>我盯着尸体的端口处，有点愣神  </p>
<h4><strong>08-10 22:06:17 渡鸦25446（斯特林）</strong></h4>
<p>“切口也太过于。。。。干净利落了，像是在切菜一样”  </p>
<h4><strong>08-10 22:08:06 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“我只能根据衣物的线索查到这人来到顺普登记入住时用的名字，除此之外，没有其他的线索，因为凶手处理了他所有的随身物品，并且他的住处也被闯入过，有价值的文件全被带走了。”  </p>
<h4><strong>08-10 22:08:24 渡鸦25446（斯特林）</strong></h4>
<p>“死亡时间呢？大概是什么时间到达顺普,什么时间死亡的呢？”  </p>
<h4><strong>08-10 22:08:30 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“我想先询问一下你，知道他最近的行踪吗？”  </p>
<h4><strong>08-10 22:10:19 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“在受到致命伤之前，他应该还经历过搏斗，腿部也有一些奔跑造成的剐蹭，可能是被追杀了。”  </p>
<h4><strong>08-10 22:10:35 其他猫男角色01（克里斯）</strong></h4>
<p>“我只知道他最近大概在查一个关于艺术品走私的案件，就在东海岸区域，剩下的我就不是很清楚了。最后一次联系也是一个月前……”  </p>
<h4><strong>08-10 22:12:25 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“死亡时间就是尸体发现的前一晚，他的尸体在第二天早上被冲出了下水道，然后被清洁工发现了。正是因为我不知道他来到顺普的目的，也不知道身份，所以才需要发出告示等待知情人认领。”罗恩叹了口气，“调查艺术品走私吗……”  </p>
<h4><strong>08-10 22:14:04 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“他有可能因为深入调查遭到了黑帮的处理，不过为什么会找不到头呢？”  </p>
<h4><strong>08-10 22:16:19 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“你们听说过鸟语俱乐部吗？”  </p>
<h4><strong>08-10 22:16:32 其他猫男角色01（克里斯）</strong></h4>
<p>“或许是一种警告？让后来者停止调查这个案件……”  </p>
<h4><strong>08-10 22:18:20 冬日（乔治）</strong></h4>
<p>“罗恩警官，之前你跟我提起过上一个失踪者最后目击地点在城市公墓，这人的名字叫什么？还有一些名字你是否有印象？”乔治想起他当时记下的笔记本中的名字，试探着对罗恩提起来这几个人名。  </p>
<h4><strong>08-10 22:19:22 KP（鹤涧）扮演 罗恩</strong></h4>
<p>他想了想，告知了最后一个失踪者的姓名，你发现这与你笔记本中最后一个名字对上了。  </p>
<h4><strong>08-10 22:19:25 冬日（乔治）</strong></h4>
<p>“听这里的酒店前台说过这个地方，是当地有钱人聚集的场所。”  </p>
<h4><strong>08-10 22:19:49 渡鸦25446（斯特林）</strong></h4>
<p>&quot;我听说过鸟语俱乐部，说实话，我还正打算参与他们的活动呢&quot;  </p>
<h4><strong>08-10 22:21:16 冬日（乔治）</strong></h4>
<p>“竟然真的对上了……”乔治思索了一下，不知道该不该告诉罗恩这是在海虾艺术协会的三楼发现的名单，自己当时对他撒了谎。  </p>
<h4><strong>08-10 22:22:13 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“鸟语俱乐部最主要的产业是艺术品拍卖，也就是说，对于艺术品的需求是极大的，如果说这里有什么势力会与艺术品走私有关，鸟语是最值得怀疑的。”他说到这里，也只是有些泄气地补充道，“不过，鸟语毕竟是上流人士的乐园，调查他们的难度很高。”  </p>
<h4><strong>08-10 22:24:19 渡鸦25446（斯特林）</strong></h4>
<p>“哦，在你面前就有一位所谓的“上流社会人士”呢”教授一脸讽刺的向罗恩说到，并在说出“High society”这个词的时候比了个引号的手势  </p>
<h4><strong>08-10 22:25:11 其他猫男角色01（克里斯）</strong></h4>
<p>我看向老板，”我们大概没问题，如果能和警方合作相信会推进得更顺利些。如果我们提供鸟语俱乐部的情报，你们当地警力是否能在关键时候提供一些帮助？“  </p>
<h4><strong>08-10 22:30:26 渡鸦25446（斯特林）</strong></h4>
<p>“警官，关于鸟语俱乐部，你知道些什么吗？”我思考了一下，对罗恩警官开口到“我也是一名艺术收藏家，但是他们这些本地的“上流社会”人士还挺神秘的，也没能收集到什么信息，你有什么了解的情报吗？”  </p>
<h4><strong>08-10 22:30:45 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“………”他欲言又止，过了一会才答道，“我并不能代表警局的其他人，但是我个人很乐意帮忙，也希望能得到更多有用的线索。我想改变一些事情…这并不是嘴上空谈的理想。”  </p>
<h4><strong>08-10 22:34:12 渡鸦25446（斯特林）</strong></h4>
<p>“对于事情的真相我们也非常关心，毕竟重要的朋友死在了这里，或许我们可以互相协助一下？”我对着警官耸了耸肩膀，微笑着说  </p>
<h4><strong>08-10 22:35:35 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“抱歉，我没去过，毕竟根本没有进入的渠道，手头也没有切实的证据。”  </p>
<h4><strong>08-10 22:35:56 渡鸦25446（斯特林）</strong></h4>
<p>“我看得出来，其他人对工作没有那么上心吧，他们这群虫豸视公共安全为无物，安于现状，毫无作为，我相信你也不想和他们同流合污吧？”我靠近罗恩警官，凑在他耳边小声说到  </p>
<h4><strong>08-10 22:36:15 渡鸦25446（斯特林）</strong></h4>
<p>“和这样的虫豸在一起怎么能搞好公共安全呢！”  </p>
<h4><strong>08-10 22:37:18 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“不过他们定期举办的拍卖会…会以海虾真迹作为噱头，按理来说海虾作品集中在艺术协会，很少会流入市场，他们都是从哪搞到的。”  </p>
<h4><strong>08-10 22:40:11 渡鸦25446（斯特林）</strong></h4>
<p>&quot;join us! and fight with them!&quot;  </p>
<h4><strong>08-10 22:41:16 渡鸦25446（斯特林）</strong></h4>
<p>“要不要和我们一起合作呢？一起调查出真相，把真相还给大众吧！”  </p>
<h4><strong>08-10 22:46:19 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“……一开始我还以为你们只是普通的游客。不过合作是指？”  </p>
<h4><strong>08-10 22:47:23 其他猫男角色01（克里斯）</strong></h4>
<p>”我的同事是侦探，很显然我也是，先不说别的，我相信你们也想抓到真凶，毕竟是恶性案件。那这样以来我们的目的就是相同的——我需要找到我同事的死因。”  </p>
<h4><strong>08-10 22:48:48 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“这倒是没错。”他有些担忧地看向你，“克里斯先生，死者的信息和身份应该已经完全暴露了，身为关联人员的你可能也会被盯上，请…一定要多加小心。”  </p>
<h4><strong>08-10 22:49:19 其他猫男角色01（克里斯）</strong></h4>
<p>“……我会注意的，不过相比之下调查也很重要。”  </p>
<h4><strong>08-10 22:49:29 冬日（乔治）</strong></h4>
<p>“关于刚刚跟你提到的名字，”乔治欲言又止，“其实那是我当时在海虾艺术协会三楼的办公室发现的，一开始我以为只是个莫名其妙的记录，但是跟你说的失踪人员名单对上了，我认为这不是巧合。很抱歉当时跟你扯了谎，这里真是疑团重重。”  </p>
<h4><strong>08-10 22:50:03 渡鸦25446（斯特林）</strong></h4>
<p>“我本身是艺术收藏家，对海虾及背后的事情非常感兴趣，现在这个事情也牵扯到了我们的朋友，没有不调查到底的理由呢”  </p>
<h4><strong>08-10 22:50:40 渡鸦25446（斯特林）</strong></h4>
<p>“乔治。。。这。。。不好吧”我看了看乔治，扶了下额头  </p>
<h4><strong>08-10 22:52:13 渡鸦25446（斯特林）</strong></h4>
<p>“好了，现在你知道我们的一些秘密了，我相信这会是合作的基础”我看着罗恩的眼睛，认真的和他说  </p>
<h4><strong>08-10 22:54:32 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“啊。”罗恩短促地啊了一声，震惊过后，他挠了挠头，“这确实是疑点，说不定也能作为证据的一部分，但是前提有点……”  </p>
<h4><strong>08-10 22:55:29 渡鸦25446（斯特林）</strong></h4>
<p>&quot;这是必要之恶啊，少年&quot;  </p>
<h4><strong>08-10 22:57:14 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“主要是艺术协会的会长西蒙会刻意隐藏自己的行踪，我或许应该想办法联系一下他，稍微试探一下态度。总之…会尽量不把你的行为说出去的。”  </p>
<h4><strong>08-10 22:58:15 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“等调查结束之后，再追究这种小事…比较好。”  </p>
<h4><strong>08-10 22:59:25 冬日（乔治）</strong></h4>
<p>“罗恩真是个尽职尽责的好警察，警界之星，人民的希望与英雄，”乔治赞赏的看着他  </p>
<h4><strong>08-10 23:00:50 其他猫男角色01（克里斯）</strong></h4>
<p>“既然是小事了，难道不应该既往不咎？开玩笑的，你是警官都听你的，不过希望你能给我的朋友一个机会。”  </p>
<h4><strong>08-10 23:03:02 渡鸦25446（斯特林）</strong></h4>
<p>“那么，我觉得我们可以先从鸟语俱乐部入手？尝试参与一次他们的活动？你觉得呢，警官先生”我向罗恩征求意见道  </p>
<h4><strong>08-10 23:05:35 KP（鹤涧）扮演 罗恩</strong></h4>
<p>他有些不知道说什么好了，别过脸去轻咳了一声：“没问题。对了，因为结案后尸体需要妥善安置，最好是能够送回故乡，告知亲友，所以我需要克里斯先生留下来补充一下死者信息。”  </p>
<h4><strong>08-10 23:07:34 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“如果后续有什么需要帮忙的，直接联系我就好。”他递给你们一张名片。  </p>
<h4><strong>08-10 23:09:39 渡鸦25446（斯特林）</strong></h4>
<p>“好的，那么从 现在开始我们是同伴了哦”我伸手接过名牌，笑着和他说  </p>
<h4><strong>08-10 23:15:37 渡鸦25446（斯特林）</strong></h4>
<p>&quot;你要不要和我们一起去鸟语俱乐部现场调查一下？以私人的身份&quot;  </p>
<h4><strong>08-10 23:17:28 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“带我去的话不会太过显眼吗？而且，我听说要进入鸟语是需要特定邀请函的。”  </p>
<h4><strong>08-10 23:17:52 渡鸦25446（斯特林）</strong></h4>
<p>“邀请函？你知道怎么去获得吗？&quot;  </p>
<h4><strong>08-10 23:19:08 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“邀请函只能由俱乐部会员给出，也就是需要有会员的邀请才行。”  </p>
<h4><strong>08-10 23:19:35 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“不过很遗憾，我并不认识这样的人。”  </p>
<h4><strong>08-10 23:19:47 渡鸦25446（斯特林）</strong></h4>
<p>“好吧，那也没关系”  </p>
<h4><strong>08-10 23:20:03 渡鸦25446（斯特林）</strong></h4>
<p>“我还有别的路子”我耸了耸肩，露出无奈的表情  </p>
<h4><strong>08-10 23:24:03 冬日（乔治）</strong></h4>
<p>“那老板和我先回一下酒店吧，不知道前台小姐那边怎么样了。”  </p>
<h4><strong>08-10 23:24:10 其他猫男角色01（克里斯）</strong></h4>
<p>我等老板说完话才开口。“你们达成协议了就好。没问题，死者身份信息我可以提供，联系家人……我会去的。”  </p>
<h4><strong>08-10 23:30:06 KP（鹤涧）</strong></h4>
<p>.log off</p>
<h3>COC剧情线索归档（08-12至08-13）</h3>
<h4><strong>08-12 21:18:02 KP（鹤涧）</strong></h4>
<p>你们离开警局，天色渐晚，现在大概是下午六点左右。  </p>
<h4><strong>08-12 21:22:14 斯特林（渡鸦25446）</strong></h4>
<p>斯特林教授走出警局，抬头看了看天色，然后低头看了下表。  </p>
<h4><strong>08-12 21:24:36 乔治（冬日）</strong></h4>
<p>“咱们现在回旅馆，去问问昨天那个前台关于鸟语俱乐部联络的怎么样了吗老板？”乔治询问斯特林。  </p>
<h4><strong>08-12 21:27:03 斯特林（渡鸦25446）</strong></h4>
<p>“时间也差不多了，我们正好应该回去休息了，需要保障足够的休息时间。”我转头对着乔治说。  </p>
<h4><strong>08-12 21:27:29 斯特林（渡鸦25446）</strong></h4>
<p>“正好，鸟语俱乐部的重要性在来到警局调查以后提升了不少。”  </p>
<h4><strong>08-12 21:27:43 斯特林（渡鸦25446）</strong></h4>
<p>“是时候去询问前台的联络情况了。”  </p>
<h4><strong>08-12 21:28:08 斯特林（渡鸦25446）</strong></h4>
<p>斯特林教授拉开车门，缓慢地坐了进去。  </p>
<h4><strong>08-12 21:28:52 斯特林（渡鸦25446）</strong></h4>
<p>“走吧，开车吧，乔治。”  </p>
<h4><strong>08-12 21:28:57 乔治（冬日）</strong></h4>
<p>“滴滴。”  </p>
<h4><strong>08-12 21:29:45 KP（鹤涧）</strong></h4>
<p>你们回到了酒馆。前台小姐因为轮班换成了另一个人，在见到你们的时候，她主动开口了：“打扰了，请问是斯特林先生一行吗？”  </p>
<h4><strong>08-12 21:32:01 斯特林（渡鸦25446）</strong></h4>
<p>“你好，小姐，我是斯特林万斯教授，请问有什么事情吗？”我看到了前台小姐向我搭话，向她行礼后回应道。  </p>
<h4><strong>08-12 21:33:19 KP（鹤涧）扮演 前台小姐</strong></h4>
<p>“我们老板想和你聊一聊，如果方便的话请移步会客室吧。”  </p>
<h4><strong>08-12 21:35:27 斯特林（渡鸦25446）</strong></h4>
<p>“看样子消息传来了，我也正想与他会谈呢，带路吧，小姐。”斯特林博士露出了不出所料的笑容。  </p>
<h4><strong>08-12 21:35:36 斯特林（渡鸦25446）</strong></h4>
<p>“乔治，跟上。”  </p>
<h4><strong>08-12 21:35:49 斯特林（渡鸦25446）</strong></h4>
<p>说完就跟随前台小姐向内走去。  </p>
<h4><strong>08-12 21:35:56 乔治（冬日）</strong></h4>
<p>乔治点点头跟上老板。  </p>
<h4><strong>08-12 21:40:47 KP（鹤涧）</strong></h4>
<p>你们在会客室等待大约半小时后，一个打扮得体的男人走了进来，径直坐在了对面，脸上笑眯眯的，看上去心情很好。  </p>
<h4><strong>08-12 21:41:04 KP（鹤涧）扮演 亚历克斯</strong></h4>
<p>“哎呀，抱歉——昨晚有些事情要忙，没能好好招待贵客。”他打了个响指，用游刃有余的语气自我介绍道，“我就是亚历克斯，欢迎来到顺普市。”  </p>
<h4><strong>08-12 21:42:46 斯特林（渡鸦25446）</strong></h4>
<p>“alex老板，幸会，我是斯特林万斯，相信您已经了解过我了。”我站起来向alex行礼。  </p>
<h4><strong>08-12 21:44:43 乔治（冬日）</strong></h4>
<p>乔治自动进入了保镖角色。  </p>
<h4><strong>08-12 21:46:59 KP（鹤涧）扮演 亚历克斯</strong></h4>
<p>“不如有话直说吧，你特地自报家门，是想谈些什么？我一直都很热衷于结识艺术收藏界的人士，听说斯特林先生是为了海虾而来，如何，有什么进展了吗？”他撑着脸微笑着问了起来。  </p>
<h4><strong>08-12 21:53:41 斯特林（渡鸦25446）</strong></h4>
<p>“在下确实为海虾艺术作品而来，今天去参观了海虾艺术协会和海虾故居，对于旅游来说确实是不错的经历呢。”斯特林教授笑着向alex老板回答，说到“旅游”两个字的时候伸出双手比了个双引号的手势，然后接着说道：“我呢，平日里就对艺术作品很感兴趣，也有不少略有价值的艺术收藏品，包括一幅海虾的真迹。”斯特林教授顿了顿，看向了alex老板的眼睛，接着开口说到：“这边道听途说了一些鸟语俱乐部的活动，也是非常感兴趣呢，不知道我是否有机会加入你们进行一次活动？”  </p>
<h4><strong>08-12 21:58:38 KP（鹤涧）扮演 亚历克斯</strong></h4>
<p>“哈哈，没问题。”他意外爽快地答应了，“不过我需要你帮我个忙。我是个生意人，无论是海虾的作品还是情报都是很有价值的东西，既然你是主动提出了要求，那我自然也不会客气。”  </p>
<h4><strong>08-12 21:59:50 KP（鹤涧）扮演 亚历克斯</strong></h4>
<p>“哦对了，如果你手里的海虾真迹有转卖需求的话也可以交给我，保证能回本。”  </p>
<h4><strong>08-12 21:59:56 斯特林（渡鸦25446）</strong></h4>
<p>“哦，请问我能帮您做什么呢？”我稍微扬了下头，笑着说道。  </p>
<h4><strong>08-12 22:01:28 斯特林（渡鸦25446）</strong></h4>
<p>“您说笑了，能持有一幅真迹已经是难得的幸运了，在下也不至于落魄到转手的程度。”  </p>
<h4><strong>08-12 22:07:00 KP（鹤涧）扮演 亚历克斯</strong></h4>
<p>“近两年来到这里的一位名叫凯瑟琳的医生，她是海虾的好友。如果她能参与我们的拍卖会，事情会更有意思，因为明天晚上将会有一幅海虾从未面世的画作参与活动，噱头和宣传材料越多越好。”他摊手表示遗憾，“嗯，可惜我已经因为先前多次的骚扰被医院禁止进入了，麻烦你帮我邀请一下吧。我会准备她的邀请函，除了她可以进入鸟语俱乐部以外，还可以另外带一个同行者，对我来说是两全其美的事情，既请来了凯瑟琳，也满足了你的要求。”  </p>
<h4><strong>08-12 22:08:35 KP（鹤涧）扮演 亚历克斯</strong></h4>
<p>他迅速给出了利益最大化的解决方案，脸上露出了狐狸般狡黠的笑容。  </p>
<h4><strong>08-12 22:12:53 斯特林（渡鸦25446）</strong></h4>
<p>“哦？凯瑟琳医生这个名字，这边不是第一次听到了啊，她这个人有什么神秘之处嘛？您那么希望她来参会。”我面带疑惑地看向alex。  </p>
<h4><strong>08-12 22:13:22 乔治（冬日）</strong></h4>
<p>“在海虾艺术协会那边听说过她是海虾的朋友。”  </p>
<h4><strong>08-12 22:13:53 KP（鹤涧）扮演 亚历克斯</strong></h4>
<p>“只是因为她与海虾有关，仅仅只是这个理由。”  </p>
<h4><strong>08-12 22:15:05 斯特林（渡鸦25446）</strong></h4>
<p>“只是因为这个理由吗？”我说出这句话的时候摆正了坐姿，盯住了alex的眼睛。  </p>
<h4><strong>08-12 22:15:16 斯特林（渡鸦25446）</strong></h4>
<p>我要看看他有没有什么隐藏的情绪。  </p>
<h4><strong>08-12 22:17:59 KP（鹤涧）扮演 亚历克斯</strong></h4>
<p>“也有一些我个人的原因，我很欣赏这位女士，想交个朋友，这应该算是人之常情？”  </p>
<h4><strong>08-12 22:19:54 KP（鹤涧）扮演 亚历克斯</strong></h4>
<p>他看起来很轻松，像是根本就没有把你们当回事，无论是你们还是凯瑟琳。  </p>
<h4><strong>08-12 22:22:58 斯特林（渡鸦25446）</strong></h4>
<p>我观察完他的反应，又立刻从严肃中转变出陪笑的笑脸，对着alex说到：“那当然没问题呀，alex老板，我们很乐意为您做这点举手之劳。”  </p>
<h4><strong>08-12 22:23:28 斯特林（渡鸦25446）</strong></h4>
<p>“不过，这边也有一些来到此地就有的疑惑，不知您能否为我们答疑解惑一下？”  </p>
<h4><strong>08-12 22:25:18 乔治（冬日）</strong></h4>
<p>乔治也露出谄媚的笑搓了搓手。  </p>
<h4><strong>08-12 22:25:23 KP（鹤涧）扮演 亚历克斯</strong></h4>
<p>“可以呀？”他做了个请的手势。  </p>
<h4><strong>08-12 22:27:45 斯特林（渡鸦25446）</strong></h4>
<p>“那我也就不客气了，不知道您是否听说过古格温家族？”我笑了笑提问到。  </p>
<h4><strong>08-12 22:31:05 KP（鹤涧）扮演 亚历克斯</strong></h4>
<p>“从外地人嘴里说出这个名字还真是稀奇。”他想了想，“这个家族在十年前就已经灭绝了，不过据说他们曾住在海边的山坡上，并且所有人都有着天生的畸形，简直就像一群怪物。”  </p>
<h4><strong>08-12 22:32:45 斯特林（渡鸦25446）</strong></h4>
<p>“您是本地人吗？”我好奇地追问道。  </p>
<h4><strong>08-12 22:32:48 KP（鹤涧）扮演 亚历克斯</strong></h4>
<p>“一整个家族都这样的话，只能用诅咒或者神秘力量来解释了吧，可惜人都已经死完了，根本没有调查的机会。”  </p>
<h4><strong>08-12 22:33:55 乔治（冬日）</strong></h4>
<p>“什么样的畸形？”乔治好奇地问道。  </p>
<h4><strong>08-12 22:36:29 KP（鹤涧）扮演 亚历克斯</strong></h4>
<p>“我只是察觉到商机后来到这里的生意人罢了，不要把我和那些粗俗愚蠢的本地人归为一谈。”他哼笑了一声，“畸形是什么样子…我也想亲眼看看啊。大概是丑陋到极致的，美的反面吧，如今这里却成了艺术之都，真是讽刺。”  </p>
<h4><strong>08-12 22:43:56 斯特林（渡鸦25446）</strong></h4>
<p>“那还有最后一个问题了，alex老板。”我突然又转向严肃，盯着他的眼睛：“关于来这里调查海虾的人失踪的事情，您知道些什么呢？”  </p>
<h4><strong>08-12 22:44:57 斯特林（渡鸦25446）</strong></h4>
<p>“当然，毕竟我也是为追寻海虾的艺术作品而来，这些比较恐怖的小传闻，这边也是比较在意呢。”  </p>
<h4><strong>08-12 22:45:45 斯特林（渡鸦25446）</strong></h4>
<p>“我不会成为他们的一员的，对吧？”我用开玩笑的语气把这句话说了出来，但表情却没有变动。  </p>
<h4><strong>08-12 22:48:48 乔治（冬日）</strong></h4>
<p>“您如果不是本地人的话，来这里的这段时间有没有发生一些奇怪的事。”  </p>
<h4><strong>08-12 22:52:59 KP（鹤涧）扮演 亚历克斯</strong></h4>
<p>“真是的，这么突然说起这么可怕的事情？”他挂着的笑意不减，“总之有一点我可以保证，只要在我的酒店那就是绝对安全的，毕竟这酒店是我的招牌，在安保上可是下足血本。”随后，他站起身，仪式性地向你举了一下茶杯：“希望我们合作顺利，其他的以后再说吧，我已经回答了你们的一些问题，按理来说你们也应该带来同等价值的回报，不然，我就亏了，不是吗？”  </p>
<h4><strong>08-12 22:54:03 斯特林（渡鸦25446）</strong></h4>
<p>“哦，那您想从我们身上得到什么呢？”我玩味地笑了笑。  </p>
<h4><strong>08-12 22:59:15 KP（鹤涧）扮演 亚历克斯</strong></h4>
<p>“我现在还没想好，也许是乐趣吧。”他留下了一个意义不明的回答，便挥挥手离开了会客室。  </p>
<h4><strong>08-12 23:02:20 斯特林（渡鸦25446）</strong></h4>
<p>“好吧，看来对方逐客了呢，那我们还是回去等克里斯回来再商讨吧。”我耸了耸肩，向乔治说道。  </p>
<h4><strong>08-12 23:03:05 KP（鹤涧）</strong></h4>
<p>你们回去修整了一段时间，然而，一直到了夜里，克里斯都没有回来，也没有任何消息。  </p>
<h4><strong>08-12 23:04:42 斯特林（渡鸦25446）</strong></h4>
<p>“天色已经很晚了，按理来说早就超出问询的可能的时间了，克里斯为什么还没回来？”我一边吃晚餐，一边和乔治询问道。  </p>
<h4><strong>08-12 23:06:28 乔治（冬日）</strong></h4>
<p>“记录信息需要那么久吗？感觉不太对劲，我打电话问问怎么回事，我有不好的预感。”乔治有些不安地说道。  </p>
<h4><strong>08-12 23:07:17 乔治（冬日）</strong></h4>
<p>“罗恩当时给的名片我记得在……”  </p>
<h4><strong>08-12 23:07:25 斯特林（渡鸦25446）</strong></h4>
<p>“在我这里。”  </p>
<h4><strong>08-12 23:07:47 斯特林（渡鸦25446）</strong></h4>
<p>我拿出名牌，走到固定电话处，拨通了罗恩的电话。  </p>
<h4><strong>08-12 23:08:45 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“……你好。”那边传来了罗恩的声音，“请问是哪位？”  </p>
<h4><strong>08-12 23:09:10 斯特林（渡鸦25446）</strong></h4>
<p>“是我，斯特林万斯教授，我们今天见过的，还记得我吗。”  </p>
<h4><strong>08-12 23:10:35 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“是你啊，这么晚打过来是有什么事吗？”他停顿了一下，语气有些困惑。  </p>
<h4><strong>08-12 23:11:30 斯特林（渡鸦25446）</strong></h4>
<p>“罗恩警官，请问克里斯还在警局吗？我们没有等到他回酒店。”  </p>
<h4><strong>08-12 23:13:02 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“克里斯？他登记完不是直接去找你们了吗？登记好像只花了一个小时不到。”  </p>
<h4><strong>08-12 23:14:06 斯特林（渡鸦25446）</strong></h4>
<p>“很可惜，罗恩警官，如果是这样的话，我们就得考虑他失踪的可能了。”我沉默了一下，慢慢地说出了这句话。  </p>
<h4><strong>08-12 23:15:57 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“………”那头也沉默了一会，他语气干涩了起来，“抱歉，如果我当时多注意一下的话…或许……真的很抱歉，我会去打听他的行踪。”  </p>
<h4><strong>08-12 23:18:37 乔治（冬日）</strong></h4>
<p>“天都黑了一点消息都没有肯定是出事了，”乔治联想到那些失踪的人，“我去这里到警局路上打听打听说不定会有什么线索。”  </p>
<h4><strong>08-12 23:21:01 斯特林（渡鸦25446）</strong></h4>
<p>“看来事情的严重性已经超出了我们的预期。”我看了一眼乔治。  </p>
<h4><strong>08-12 23:21:42 斯特林（渡鸦25446）</strong></h4>
<p>“罗恩警官，我们就先挂断了，我们先自己做一下能做的探查吧。”  </p>
<h4><strong>08-12 23:25:32 KP（鹤涧）扮演 罗恩</strong></h4>
<p>“你们尽量待在酒店吧，我担心…”他话说到一半停住了，“好，先这样吧。我们晚点再联系。”  </p>
<h4><strong>08-12 23:26:06 斯特林（渡鸦25446）</strong></h4>
<p>“乔治，我们需要更多的人手。”  </p>
<h4><strong>08-12 23:26:54 斯特林（渡鸦25446）</strong></h4>
<p>“我还认识一位住在附近的，可信的侦探……就是他的专业素养可能没有那么……你看到他就明白了，不过好消息是他大概率可信。”  </p>
<h4><strong>08-12 23:27:08 乔治（冬日）</strong></h4>
<p>“怎么会，这么突然，克里斯不会也，”乔治想到今天警局看到的无头尸体，预想到自己认识的人也有可能会变成这样，心里有些恐慌。  </p>
<h4><strong>08-12 23:27:20 乔治（冬日）</strong></h4>
<p>“对，您说的对。”  </p>
<h4><strong>08-12 23:27:34 乔治（冬日）</strong></h4>
<p>“我们需要人手，我们得找到克里斯。”  </p>
<h4><strong>08-12 23:28:53 斯特林（渡鸦25446）</strong></h4>
<p>“没时间为克里斯的失踪感到悲伤了，我们需要立刻召集新的人手，不然我们可能也会落得。”我顿了顿，接着说：“那具尸体的下场。”  </p>
<h4><strong>08-12 23:33:30 乔治（冬日）</strong></h4>
<p>“别这么说，或许，或许他只是发现了什么线索没来得及联络我们。”  </p>
<h4><strong>08-12 23:33:40 乔治（冬日）</strong></h4>
<p>“不过你说得对，我们明天再说。”  </p>
<h4><strong>08-12 23:33:47 乔治（冬日）</strong></h4>
<p>“这里不安全。”  </p>
<h4><strong>08-12 23:35:04 斯特林（渡鸦25446）</strong></h4>
<p>我拿起电话，拨号给那个虽然不愿意想起，但是记忆深刻的电话。  </p>
<h4><strong>08-12 23:48:46 亚瑟（Dorwa多尔瓦）</strong></h4>
<p>亚瑟在迷糊之间支撑着身体回到了事务所，正准备把外套搭在衣架上，恍惚间听到了角落里那个蒙尘的座机发出了声响。在激动中他一个踉跄扑倒在座机前，和台子一起翻倒在地上：“哦唔……喂，啊，这里是亚瑟侦探事务所，请问有什么我能为您做的？”  </p>
<h4><strong>08-12 23:49:14 斯特林（渡鸦25446）</strong></h4>
<p>“亚瑟，是我。”  </p>
<h4><strong>08-12 23:49:51 斯特林（渡鸦25446）</strong></h4>
<p>“我遇到了很大的麻烦，你可以先醒醒你那该死的酒精中毒然后听我说吗？”  </p>
<h4><strong>08-12 23:51:14 亚瑟（Dorwa多尔瓦）</strong></h4>
<p>“万斯？”亚瑟抬起头，然后一改之前的对客户的声线，变成了某种嘲弄的声线：“还能有事情难到你吗？”  </p>
<h4><strong>08-12 23:52:50 斯特林（渡鸦25446）</strong></h4>
<p>“是吗？几个小时前我刚刚看到同伴的同伴刚刚变成了无头尸体，几个小时后这位同伴也消失了，你觉得呢？”我咧了下嘴，冷笑道。  </p>
<h4><strong>08-12 23:54:04 亚瑟（Dorwa多尔瓦）</strong></h4>
<p>“哦？然后你们就怕了？”虽然还是那种嘲弄的语气，但是亚瑟半撑开了他的复眼，略感兴趣地舔了舔开裂的嘴唇。  </p>
<h4><strong>08-12 23:55:08 斯特林（渡鸦25446）</strong></h4>
<p>“收起你那个傻逼的姿态，听好了，事情是这样的……”  </p>
<h4><strong>08-12 23:55:46 斯特林（渡鸦25446）</strong></h4>
<p>“综上所述，我们可能惹上了些不得了的东西，现在需要可信的人手，你懂吗？”</p>

      <p style='text-align: right'>
      <a href='https://www.duya25446.top/posts/coc/hxlog#comments'>看完了？说点什么呢</a>
      </p>
    ]]>
    </content:encoded>
  <guid isPermaLink="false">6899829ca535709965ef6aae</guid>
  <category>posts</category>
<category>COC相关</category>
 </item>
  <item>
    <title>【LLM应用开发系列1】消息数据库设计</title>
    <link>https://www.duya25446.top/posts/llm/database</link>
    <pubDate>Wed, 09 Apr 2025 13:29:45 GMT</pubDate>
    <description>LLM消息记录数据库设计（SQLite + UUID主键）

核心字段设计
主键与标识
messag</description>
    <content:encoded><![CDATA[
      <blockquote>该渲染由 marked 生成，可能存在排版问题，最佳体验请前往：<a href='https://www.duya25446.top/posts/llm/database'>https://www.duya25446.top/posts/llm/database</a></blockquote>
      <h1>LLM消息记录数据库设计（SQLite + UUID主键）</h1>
<h2>核心字段设计</h2>
<h3>主键与标识</h3>
<ol>
<li><strong>message_id (UUID)</strong>  <ul>
<li>类型：BLOB/BINARY(16)或TEXT  </li>
<li>理由：全局唯一主键，避免ID冲突  </li>
<li>优化：将UUID存为二进制格式（16字节）节省空间，用索引加速查询</li>
</ul>
</li>
</ol>
<h3>多模态支持</h3>
<ol start="2">
<li><p><strong>input_type (TEXT)</strong>  </p>
<ul>
<li>值示例：text, image, audio, video, file  </li>
<li>理由：标记输入数据类型，支持动态解析</li>
</ul>
</li>
<li><p><strong>input_content (TEXT/BLOB)</strong>  </p>
<ul>
<li>若为文本：直接存储为TEXT  </li>
<li>若为二进制（图片/音频）：存储本地文件路径（推荐）或BLOB  </li>
<li>理由：路径方式避免数据库膨胀，路径长度需限制（如VARCHAR(512)）</li>
</ul>
</li>
<li><p><strong>output_type (TEXT)</strong>  </p>
<ul>
<li>值示例：text, image, audio, graph  </li>
<li>理由：支持输出不同类型内容组合（如文本+图表）</li>
</ul>
</li>
<li><p><strong>output_content (TEXT/BLOB)</strong>  </p>
<ul>
<li>存储策略同<code>input_content</code></li>
</ul>
</li>
</ol>
<h3>元数据</h3>
<ol start="6">
<li><p><strong>created_at (DATETIME)</strong>  </p>
<ul>
<li>默认值：CURRENT_TIMESTAMP  </li>
<li>理由：严格记录消息生成时间，用于时间序列分析</li>
</ul>
</li>
<li><p><strong>modified_at (DATETIME)</strong>  </p>
<ul>
<li>自动更新：通过触发器维护  </li>
<li>理由：跟踪修改历史（如异步编辑消息内容）</li>
</ul>
</li>
<li><p><strong>user_id (TEXT)</strong>  </p>
<ul>
<li>外键：可选关联用户表  </li>
<li>理由：支持多用户场景（如企业级应用）</li>
</ul>
</li>
<li><p><strong>session_id (UUID)</strong>  </p>
<ul>
<li>类型：同<code>message_id</code>  </li>
<li>理由：建立对话会话链（例如持续30分钟的聊天上下文）</li>
</ul>
</li>
<li><p><strong>status (INTEGER/TEXT)</strong>  </p>
<ul>
<li>枚举值：sent(0)/delivered(1)/processed(2)/failed(3)  </li>
<li>理由：监控消息生命周期，用于重试机制</li>
</ul>
</li>
</ol>
<h3>关联关系</h3>
<ol start="11">
<li><p><strong>parent_message_id (UUID)</strong>  </p>
<ul>
<li>外键引用本表<code>message_id</code>  </li>
<li>理由：构建树状对话结构（追问与答复）</li>
</ul>
</li>
<li><p><strong>group_id (UUID)</strong>  </p>
<ul>
<li>类型：同<code>message_id</code>  </li>
<li>理由：绑定多模态输入输出组（如用户同时上传图片+提问文本）</li>
</ul>
</li>
</ol>
<h2>高级功能字段</h2>
<h3>性能优化</h3>
<ol start="13">
<li><p><strong>compression_flag (BOOLEAN)</strong>  </p>
<ul>
<li>默认值：0  </li>
<li>理由：标记二进制内容是否压缩（如对BLOB启用LZ4）</li>
</ul>
</li>
<li><p><strong>cache_expiration (DATETIME)</strong>  </p>
<ul>
<li>理由：设置临时缓存数据的自动清理时间（如临时生成的预览图）</li>
</ul>
</li>
</ol>
<h3>安全监控</h3>
<ol start="15">
<li><p><strong>integrity_hash (TEXT)</strong>  </p>
<ul>
<li>算法示例：SHA-256  </li>
<li>理由：防止数据篡改（存储前对content计算哈希值）</li>
</ul>
</li>
<li><p><strong>encryption_flag (BOOLEAN)</strong>  </p>
<ul>
<li>默认值：0  </li>
<li>理由：标记敏感内容是否加密（如医疗问诊记录）</li>
</ul>
</li>
</ol>
<h3>扩展性</h3>
<ol start="17">
<li><strong>custom_metadata (JSON)</strong>  <ul>
<li>类型：JSON/TEXT  </li>
<li>理由：灵活存储扩展数据（设备信息、API版本等）  </li>
<li>示例：  <pre><code class="language-json">{"device": "iOS 17.5", "model_version": "gpt-4o"}</code></pre></li>
</ul>
</li>
</ol>
<h2>推荐索引</h2>
<ul>
<li>主键：自动建立唯一索引</li>
<li>组合索引：<code>(session_id, created_at)</code> 用于快速检索会话历史</li>
<li>单独索引：<code>user_id</code> + <code>status</code> 用于用户行为分析</li>
</ul>
<h2>设计原则</h2>
<ol>
<li><strong>空间效率</strong>：优先用文件路径代替BLOB，避免数据库膨胀（临界点建议：单文件&gt;1MB时存路径）</li>
<li><strong>读写分离</strong>：高频更新的状态字段与稳定内容分开存储</li>
<li><strong>范式平衡</strong>：适度反范式化以减少JOIN操作（SQLite对复杂JOIN性能有限）</li>
<li><strong>版本兼容</strong>：通过<code>ALTER TABLE</code>增量升级表结构（SQLite支持有限，需预先规划）</li>
</ol>

      <p style='text-align: right'>
      <a href='https://www.duya25446.top/posts/llm/database#comments'>看完了？说点什么呢</a>
      </p>
    ]]>
    </content:encoded>
  <guid isPermaLink="false">67f67649c6b6c28f3aff9795</guid>
  <category>posts</category>
<category>LLM应用开发</category>
 </item>
  <item>
    <title>STM32使用CMake+VSCode实现全平台开发</title>
    <link>https://www.duya25446.top/posts/mcu/STM32WithCMake</link>
    <pubDate>Mon, 07 Apr 2025 15:42:01 GMT</pubDate>
    <description>STM32使用CMake+VSCode实现全平台开发

STM32和VSCode开发环境

Tips</description>
    <content:encoded><![CDATA[
      <blockquote>该渲染由 marked 生成，可能存在排版问题，最佳体验请前往：<a href='https://www.duya25446.top/posts/mcu/STM32WithCMake'>https://www.duya25446.top/posts/mcu/STM32WithCMake</a></blockquote>
      <h1>STM32使用CMake+VSCode实现全平台开发</h1>
<p></p>
<blockquote>
<p><strong>Tips</strong>：本文章撰写环境为Archlinux和STLinker调试器，Windows版本的配置理论上一致，只需要在VSC里面手动选择STM32CubeClt和内部工具链的路径即可（实测）。DAPLink和JLink等SWD调试器也可以使用，但需要自行修改配置文件（本人推荐STLinkerV3 MINIE，价格实惠且性能卓越）</p>
</blockquote>
<h2>1. 背景</h2>
<p>众所周知，自固件库停止维护和CubeMX盛行以来，STM32开发主要依赖几种IDE：</p>
<ul>
<li><strong>Keil MDK</strong> - 最广为人知，99%的嵌入式初学者首选</li>
<li><strong>IAR</strong> - 商业工具链，功能强大但价格昂贵</li>
<li><strong>STM32CubeIDE</strong> - ST官方基于Eclipse开发的IDE</li>
</ul>
<p>然而，Keil MDK由于ARM公司更新缓慢（半年到一年才修个小版本）以及开发方向的摆烂（Keil6文档不全，功能难用），已成为跟不上时代步伐的老古董。其中的痛点包括：</p>
<ul>
<li>编码乱码问题严重</li>
<li>智能提示卡顿（你先别管智能不智能吧，打错一个字母就卡IDE十多秒也太逆天了）</li>
<li>与现代IDE相比功能落后</li>
</ul>
<p>虽然Keil的AC5和AC6编译器仍然性能不错，配置简单，但ARM&quot;贴心&quot;地只允许你使用随Keil捆绑的编译器，单独下载则需要商业License，这样的做法也就杜绝了Linux的配置使用可能，因为Keil以及配套的编译器只提供了Windows的版本。STM32CubeIDE同样存在智能提示不佳、配置繁琐、缺乏现代化体验等问题</p>
<blockquote>
<p>最新悲报，亲测最新版本的Keil 5.42a破解License失效了，编译大小还是受限，必须降级回去使用，但是没有License的情况下ARM不提供在官网的旧版本下载，只能找第三方下载站，又要和下崽站斗智斗勇惹。。。。</p>
</blockquote>
<h2>2. 解决方案</h2>
<p>那么，能否使用更现代化的VSCode来进行STM32开发呢？答案是肯定的！</p>
<h3>2.1 历史尝试</h3>
<ol>
<li><p><strong>Keil6 VSCode扩展</strong>：ARM曾尝试将Keil做成VSCode插件系列，但实用性差，配置文档至今仍是TODO状态。</p>
</li>
<li><p><strong>EIDE插件</strong>：通过逆向KEIL、IAR、Eclipse的工程配置文件来创建VSCode工作空间。</p>
<ul>
<li>可使用Keil的AC编译器和STM32CubeIDE工具链</li>
<li>Debug功能存在诸多问题（无法调试、运行异常、芯片卡启动）</li>
<li>开发时需VSCode写代码，Keil专门Debug</li>
<li>Keil的AC编译器仅限Windows使用，Linux用户需切换系统</li>
</ul>
</li>
</ol>
<h3>2.2 官方解决方案</h3>
<blockquote>
<p><strong>重大进展</strong>：2024年7月1日，ST发布了STM32CubeMX 6.12.0版本！</p>
</blockquote>
<p>这次更新带来了两项关键功能：</p>
<ol>
<li><strong>CMake工程生成选项</strong>：在CubeMX中直接生成CMake项目</li>
<li><strong>STM32 VS Code Extension</strong>：官方VSCode插件，支持CMake工程</li>
</ol>
<p>虽然插件看起来相对简陋，但它能自动根据STM32工程生成配置文件和脚本，提供必要的编译、调试和下载功能，且允许用户自定义CMake文件以实现个性化配置</p>
<p>这种方案的最大优势在于：</p>
<ul>
<li><strong>跨平台支持</strong>：摆脱Windows限制</li>
<li><strong>现代开发体验</strong>：利用VSCode的插件生态</li>
<li><strong>完全自定义</strong>：通过CMake控制编译过程</li>
<li><strong>全套功能</strong>：编译、调试、烧录一应俱全</li>
</ul>
<p>经过实测，编译下载调试功能完全无问题，但是下载程序默认下载在用户空间起始地址，如果想要分散加载的话可以使用不同工程编译后将文件使用STM32CubePrg下载到对应地址即可（分散加载、BOOT和OTA实现另开文章叙述）</p>
<h2>3. 安装</h2>
<h3>3.1 插件安装与环境配置</h3>
<p>首先，我们需要在VSC里面安装ST的官方插件、Cortex-Debug（用于Debug）、C/C++和CMake插件（这两当然不用我说），扩展商店搜索STM32 VS Code Extension</p>
<p></p>
<p>根据STM32插件描述的内容，我们需要准备4个东西</p>
<ul>
<li>STM32CubeCLT v1.15.0 or later</li>
<li>STM32CubeMX v6.11.0 or later </li>
<li>ST-MCU-FINDER</li>
<li>Libncurses</li>
</ul>
<p></p>
<p>其实必要的是两个，STM32CubeCLT和Libncurses，STM32CubeCLT提供工具链。</p>
<p>Libncurses提供linux上使用的UI，使用 Linux 时必须安装此要求。（Win不需要）</p>
<p>STM32CubeCLT可以在Arch的AUR里面直接安装，也可以从ST官网手动下载然后配置环境变量，这里推荐AUR直接装（Win可以从官网直接下载解压）</p>
<pre><code class="language-bash">yay -Sy stm32cubeclt</code></pre><p>STM32CubeMX原则上不需要作为插件工作的依赖，插件可以独立使用STM32CubeCLT完成编译、下载、调试等工作，但是你不可能开发不使用STM32CubeMX，所以还是装一下，使用Arch也是可以AUR直接装（如果出现校验出错问题说明ST又不让没登陆的用户下载了，需要手动从ST官网下载包安装，具体方法在stm32cubemx的AUR仓库下的评论区里有，照做就行）</p>
<p>至于STM32Finder其实已经内置在STM32CubeMX里面了，只是一个选型工具，有最新的芯片信息，不安装也无所谓</p>
<pre><code class="language-bash">yay -Sy stm32cubeclt</code></pre><p>Windows的STM32CubeMX的安装和登陆就不在这里赘述了</p>
<p>关于Libncurses，Arch可以直接在pacman的core里面安装ncurses</p>
<pre><code class="language-bash">sudo pacman -Sy ncurses</code></pre><p>ubuntu用户可以使用APT安装</p>
<pre><code class="language-bash">sudo apt install libncurses </code></pre><p>安装插件后打开配置，将STM32CubeCLT的目录填写进设置中</p>
<p></p>
<p>Arch AUR安装的STM32CubeCLT默认目录在/opt/stm32cubeclt，另外两个可以不填写，因为作用只是从扩展启动一下，不是很有必要，想填也行，AUR安装的都在/opt/下。Windows就填写自己选择的安装/解压的目录即可</p>
<p>至此，我们就完成了环境的配置</p>
<h3>3.2 工程的创建</h3>
<p>插件创建工程的方式非常简单，也和我们传统使用Keil的工作流大差不差</p>
<p>首先，打开STM32CubeMX,登陆账号</p>
<p></p>
<blockquote>
<p>(可以看到左下角写的大大的CMake支持（笑）)</p>
</blockquote>
<p>然后按照基本流程，选择MCU，我这里使用我最常用的STM32G431CBU6作为演示</p>
<p></p>
<blockquote>
<p>Tips:这个页面其实就是STM32Finder，单独下载的Finder只有这个按条件查询和介绍的选型功能，所以说不是很有必要，而且CubeMX也包含在内了。</p>
</blockquote>
<p>双击打开，进入配置页面，然后按照大家平常自己的习惯配置晶振、时钟 And so on.....</p>
<p>我自己的板子一般喜欢用YXC的25MHz的有源晶振，贵一点点钱但是极大程度的确保了时钟系统的稳定性和试错Debug成本，所以就按有源配置了，配置如图所示（开发板硬件设计以后再出一篇文章讲讲吧～～）</p>
<p></p>
<p></p>
<p>然后就可以直接生产工程了，我们选到ProjetManager页面，决定工程名字和目录</p>
<p></p>
<p>填写好路径和名称后，这里和Keil不一样的地方就来了，我们把工具链选择的选项选到CMake，然后再选择生成，就会得到一个配置好CMake的工程目录</p>
<p></p>
<p>打开工程文件夹，你会看见：</p>
<p></p>
<p>现在可以从这个文件夹打开VSC了</p>
<p></p>
<p>打开以后就是这个样子，第一次打开CMake工程的时候，CMake插件会让你选择编译类型，这一步先别管，随便点一下外面就会消失</p>
<blockquote>
<p>Tips：我遇到的问题，就是ESP-IDF插件会和STM32的官方插件冲突，如果你使用ESP-IDF记得在工作空间禁用一下
顺带说一个好玩的事情，这两的工程结构都差不多，而且编译工具都是ninja，所以当我不小心在STM32的工程下用了ESP-IDF的编译按钮，他居然成功编译了，而且因为之后会提到的一个ST非常逆天的CMake配置上的问题，STM32插件自己的编译还失败了，就很戏剧性（</p>
</blockquote>
<p>之后我们打开左侧的STM32拓展页面，选择Import CMake Project</p>
<p></p>
<p>然后在弹出来的目录选择里面选取CubeMX生成的工程目录</p>
<p></p>
<p>点击确定以后，就会看到STM32的拓展弹出来的配置窗口，正常情况下就确认一下信息是否正确就好了，一般不会有问题，确认没问题直接点最下面的导入</p>
<p></p>
<p>这时候左下角会显示一个✅和Import down的字样，就说明导入成功了，这个时候我们就可以在左边CMake扩展的窗口选择编译类型，开始选择Debug就好，之后程序定稿了我们再选择Release</p>
<blockquote>
<p>Tips：这里要注意，选择了Release编译出来的程序是没有调试信息的，所以你使用Release版本Debug会找不到调试信息和断点，点运行就跑飞，如果需要Release版本又要能Debug的话请选择RelWithDebInfo配置</p>
</blockquote>
<p></p>
<p>然后我们就可以点击页面最下面的生成来测试编译能否通过啦～</p>
<p>点击编译按钮，看到右边出现这个ROM和RAM占用的信息就说明编译成功了</p>
<blockquote>
<p>Tips：这里会出现因为环境变量错乱的问题导致工具链指向不正确，因为这里使用的编译工具全部都是Cubeclt内置的，如果你电脑本身也装了这些工具就有可能导致环境变量冲突、版本冲突、目录冲突等问题导致编译失败，这种时候需要在环境变量里面明确指向Cubeclt文件夹内的工具链，这个问题已经是我很久很久以前遇到的了，后来再新配好像也没有复现，怎么配置环境变量解决的具体操作忘了（诶嘿～），所以如果又遇到了请留言给我我</p>
</blockquote>
<p></p>
<p>至此，工程的创建和初步的编译就已经完成了</p>
<h3>3.3 工程配置相关</h3>
<h4>3.3.1 目录结构</h4>
<p>这里需要了解一下工程目录的顶层目录结构</p>
<p></p>
<pre><code class="language-markdown">📁 CMAKEPROJECTDEMO
├── 📁 .vscode                  # VS Code 配置文件夹
├── 📁 build                    # 构建输出目录
├── 📁 cmake                    # CMake 相关配置文件
├── 📁 CMakeFiles               # CMake 生成的中间文件
├── 📁 Core                     # 核心代码
├── 📁 Drivers                  # STM32 驱动
├── 📄 .mxproject               # STM32CubeMX 项目文件
├── 📄 build.ninja              # Ninja 构建系统文件
├── 📄 cmake_install.cmake      # CMake 安装脚本
├── 📄 CMakeCache.txt           # CMake 缓存
├── 📄 CMakeLists.txt           # 主 CMake 项目文件
├── 📄 CMakePresets.json        # CMake 预设
├── 📄 CMakeProjectDemo.ioc     # STM32CubeMX 配置文件
├── 📄 compile_commands.json    # 编译命令数据库（用于代码智能提示）
├── 📄 startup_stm32g431xx.s    # 启动汇编代码
└── 📄 stm32g431cbux_flash.ld   # 链接器脚本</code></pre><p>VS Code 配置文件</p>
<pre><code class="language-markdown">📁 .vscode
├── 📄 c_cpp_properties.json    # C/C++ 配置
├── 📄 extensions.json          # 推荐扩展
├── 📄 launch.json              # 调试配置
└── 📄 tasks.json               # 任务配置</code></pre><p>核心代码结构</p>
<pre><code class="language-markdown">📁 Core
├── 📁 Inc                      # 头文件目录
│   ├── 📄 main.h               # 主头文件
│   ├── 📄 stm32g4xx_hal_conf.h # HAL 库配置
│   └── 📄 stm32g4xx_it.h       # 中断处理函数声明
└── 📁 Src                      # 源文件目录
    ├── 📄 main.c               # 主源文件
    ├── 📄 stm32g4xx_hal_msp.c  # MSP (MCU Support Package) 初始化
    ├── 📄 stm32g4xx_it.c       # 中断处理函数实现
    ├── 📄 syscalls.c           # 系统调用实现
    ├── 📄 sysmem.c             # 内存管理
    └── 📄 system_stm32g4xx.c   # 系统初始化</code></pre><p>驱动文件结构</p>
<pre><code class="language-markdown">📁 Drivers
├── 📁 CMSIS                    # Cortex 微控制器软件接口标准
│   └── ...
└── 📁 STM32G4xx_HAL_Driver     # 硬件抽象层驱动
    └── ...</code></pre><p>主要文件说明</p>
<ul>
<li><strong>CMakeLists.txt</strong>: 项目的主 CMake 文件，定义项目设置、源文件、包含路径等</li>
<li><strong>CMakeProjectDemo.ioc</strong>: STM32CubeMX 配置文件，包含芯片配置信息</li>
<li><strong>stm32g431cbux_flash.ld</strong>: 链接器脚本，定义内存布局</li>
<li><strong>startup_stm32g431xx.s</strong>: 启动文件，包含启动代码和向量表</li>
<li><strong>main.c</strong>: 包含程序入口点和主循环</li>
</ul>
<h4>3.3.2 文件添加</h4>
<p>这里要注意的是，添加源文件和配置文件需要在CMakeLists.txt文件里面添加包含路径，分头文件和源文件，如图所示，CMakeLists.txt文件里面已经标注好了如果需要添加文件在哪里添加</p>
<p></p>
<p>对于头文件来说，如果只是单一文件可以直接塞到Inc目录下，不需要做修改；如果是要添加一个新的头文件目录，就在对应target_include_directories位置添加目录的相对路径，要注意的是，.h文件是以目录为单位添加的，所以填写的是目录路径，而.c源文件是以文件为单位添加的，所以就算是在Src目录下添加.c文件，也需要在这里的target_sources下填写相对路径，下面给出一个我的工程例子</p>
<p></p>
<p>这里我没用到独立的头文件目录，所以头文件就留空了，而自己添加了两个源文件，就把相对路径填写在了这里。</p>
<h4>3.3.3 编译配置</h4>
<p>在STM32生成的cmake目录下的cmake/gcc-arm-none-eabi.cmake配置中，我们可以看到ST已经帮我们写好了完善的编译器配置选项，包括启用硬件浮点，Debug和Rel的优化级别，如果需要修改的话可以在这里修改，但一般不需要</p>
<p></p>
<p>这里需要注意一件事情，也是我自己遇到的，默认情况下编译的工程没法打印浮点数到字符串，也就是sprintf函数没法用于浮点数，需要手动在CMakeLists.txt文件中添加</p>
<pre><code class="language-cmake">target_link_options(${PROJECT_NAME} PRIVATE
    -u _printf_float  # 如果需要浮点打印支持
)</code></pre><p>才可以开启浮点数打印支持</p>
<p>至此，配置相关的问题就说完了</p>
<h2>4. 开发、下载与调试</h2>
<h3>4.1 开发</h3>
<p>在VSC的开发和Keil也差不多，也是从main.c开始运行程序</p>
<p>使用CubeMX修改后重新生成，VSC也会自动重新读入文件，这里建议打开VSC的自动保存选项，在右上角选项的文件-&gt;自动保存，防止忘记保存时CubeMX修改后重新生成覆盖我们写的代码，也增加代码的同步性</p>
<p>然后其他内容也和Keil方法一致，编译点下面的生成即可，但是可以看出，用这套工具链我们的编译速度不Keil不知道高到哪里去了～</p>
<p>建议打开GitHub Copilot获得最佳极致体验哦～</p>
<h3>4.2 下载</h3>
<p>下载的实现很简单，就是给VSC写了个Task配置文件来调用STM32Cubeclt来选中编译好的文件进行下载，那我们下载的时候只要插上STLinker并确定识别，然后使用VSC运行Task即可</p>
<blockquote>
<p>刚刚研究使用的时候我找了很久没找到怎么下载，插件也没设计按钮，后来翻生成的VSC配置文件才找到，所以我说插件简陋，按钮UI都舍不得做点（（（（</p>
</blockquote>
<p>使用快捷键 Ctrl + Shift + P 我们可以打开VSC的运行页面，输入Task，选择如图所示的运行任务</p>
<blockquote>
<p>Tips:如果使用过运行任务的话，之后按Ctrl + Shift + P 打开运行界面第一个就会是运行任务，此时直接按回车就可以直接调用了</p>
</blockquote>
<p></p>
<p>然后我们连接STLinker和开发板，这里我使用自制的IMU板子和ST官方的STLinkerV3 MINIE来演示</p>
<p></p>
<p>这里可以使用STM32CubePrg来检查调试器和开发板的连接状态，STLinker如果连接成功就会直接显示，点击Connect有数据就说明连接正常，这里我们成功正常连接</p>
<p></p>
<p>然后关闭STM32CubePrg，回到我们的VSC工程，Ctrl + Shift + P 输入Task ，选择运行任务，然后不出意外的话Build and Flash就会是第一个，这个选项就是编译并下载，我们直接按回车就可以完成下载</p>
<p></p>
<p>也就是说，当你运行过一次以后，下次按 Ctrl + Shift + P 加上两次回车就可以直接编译并下载了，很方便吧～</p>
<p>如果成功下载，下面的控制台会输出如下所示画面</p>
<p></p>
<p>没错，我的输出那么完整是因为我拉开了截图的，滚动查看一样就行</p>
<p>如此，我们就完成了一次下载</p>
<h3>4.3 调试</h3>
<p>完成了下载，接下来我们就需要调试了，确定插件Cortex-Debug已经安装，并且编译选项选择Debug，然后我们可以直接切换到VSC左侧选项栏的Debug界面直接点击Debug,理论上不出意外的话就可以直接开始调试了</p>
<p></p>
<p>很正常的获取到了调试信息，运行到断点也没有问题，变量值也可以正常显示和监控</p>
<p>至此，调试部分也就结束了，很简单对吧～</p>
<h2>Q&amp;A</h2>
<h3>CMake清理</h3>
<p>前面我提到过 <del>“而且因为之后会提到的一个ST非常逆天的CMake配置上的问题，STM32插件自己的编译还失败了”</del> 这个这句话，那你一定很好奇是什么问题吧？</p>
<p>没错，这个工程没有配置CMake缓存清理类的脚本或者CMake任务，而他的缓存保存的是 <strong>绝对路径</strong> </p>
<p><strong>没错！绝对路径！！！！</strong></p>
<p>也就是说，一旦你第一次编译后，把工程移动一下位置，诶，这个工程就不能编译了，我第一次发现是在两台电脑上开发，一台推上GitHub另一台拉下来</p>
<p>诶，编译不能</p>
<p>就很逆天，然后我研究了半天他的缓存机制，总算手动解决这个问题，于是乎现在，我写了一个bash脚本来自动化解决这个问题，只要把这个脚本放在工程目录下，每次移动完以后运行一下，就可以正常编译了</p>
<pre><code class="language-bash">
#!/bin/bash
#获取当前脚本所在目录作为项目根目录

PROJECT_ROOT=$(cd `dirname $0` && pwd)
BUILD_DIR="$PROJECT_ROOT/build/Debug"

echo "=== 清理旧构建缓存 ==="
if [ -d "$BUILD_DIR" ]; then
    rm -rf "$BUILD_DIR" && echo "已删除旧构建目录"
fi

echo -e "\n=== 生成新构建系统 ==="
cmake -DCMAKE_BUILD_TYPE=Debug \
      -DCMAKE_TOOLCHAIN_FILE="$PROJECT_ROOT/cmake/gcc-arm-none-eabi.cmake" \
      -S "$PROJECT_ROOT" \
      -B "$BUILD_DIR" \
      -G Ninja

echo -e "\n=== 开始编译 ==="
cmake --build "$BUILD_DIR" 
</code></pre><p>在工程下新建文件，名字随意后缀为.sh，把这个脚本复制进去保存，然后别忘了</p>
<pre><code class="language-bash">chmod +x xxx.sh</code></pre><p>然后运行即可，下面给出运行结果</p>
<p></p>
<h2>尾声</h2>
<p>至此，本篇教程就结束啦，希望你通过本篇教程可以得到一个舒适完美的STM32开发环境！</p>
<p>Q&amp;A部分目前就想到这个，很多问题我可能自己解决了但是忘记遇到过了，后续如果再遇到相关的会在这个部分持续更新，如果有遇到问题也可以留言给我，我会把问题在Q&amp;A部分继续更新</p>
<p>感谢您的观看！</p>
<h3>相关链接</h3>
<ul>
<li><a href="https://www.duya25446.top/">个人主页</a></li>
<li><a href="https://github.com/duya25446">GitHub</a></li>
</ul>

      <p style='text-align: right'>
      <a href='https://www.duya25446.top/posts/mcu/STM32WithCMake#comments'>看完了？说点什么呢</a>
      </p>
    ]]>
    </content:encoded>
  <guid isPermaLink="false">67f3f249c6b6c28f3aff788d</guid>
  <category>posts</category>
<category>MCU开发</category>
 </item>
  <item>
    <title>一个理论上高性能高并发的简单图床设计</title>
    <link>https://www.duya25446.top/posts/backend/imageServer</link>
    <pubDate>Sat, 29 Mar 2025 16:16:41 GMT</pubDate>
    <description>Tips: 本文的工程开源在 ImageServer

概述

一直想要一个自己的个人站，平时也没有</description>
    <content:encoded><![CDATA[
      <blockquote>该渲染由 marked 生成，可能存在排版问题，最佳体验请前往：<a href='https://www.duya25446.top/posts/backend/imageServer'>https://www.duya25446.top/posts/backend/imageServer</a></blockquote>
      <blockquote>
<p><strong>Tips</strong>: 本文的工程开源在 <a href="https://github.com/duya25446/ImageServer">ImageServer</a></p>
</blockquote>
<h2>概述</h2>
<p>一直想要一个自己的个人站，平时也没有注意整理归纳文章，正好遇到了心仪的开源博客站（感谢 innei 大大的开源喵），就想着开始做一下个人站吧！完成部署以后就遇到了第一个难题，找不到一个合适的图床。</p>
<p>选择互联网上的不知名免费小图床如果挂了，又会为我付出很多很极端的维护成本，但是大运营商的对象存储的售价又是我无法承担的，秉承着买不如造的想法，我决定自己开发一个图床服务器。</p>
<h2>原理介绍</h2>
<h3>背景</h3>
<p>这个项目一开始想的比较简单，向着一个小工具的方向去开发的。取 HTTP GET 请求的 URL 的路径部分，然后直接把这个图床程序所在目录相对路径下存放的图片返回回去，如果不存在这个文件或者路径就返回 404。</p>
<p>掏出我最擅长的 C#，直接使用最简单的 HTTPListener，写了几十行就搞定了，测试也顺利成功。</p>
<pre><code class="language-c">using System;
using System.IO;
using System.Net;
using System.Threading.Tasks;

namespace SimpleImageServer
{
    class Program
    {
        static async Task Main(string[] args)
        {
            var baseDir = Directory.GetCurrentDirectory();
            string prefix = "http://*:23564/";
            
            using var listener = new HttpListener();
            listener.Prefixes.Add(prefix);
            listener.Start();
            
            Console.WriteLine($"Server started on {prefix}");
            Console.WriteLine($"Serving images from: {baseDir}");
            Console.WriteLine("Press Ctrl+C to stop...");
            
            while (true)
            {
                var context = await listener.GetContextAsync();
                _ = Task.Run(() =&gt; HandleRequest(context, baseDir));
            }
        }
        
        static async Task HandleRequest(HttpListenerContext context, string baseDir)
        {
            var requestPath = context.Request.Url.LocalPath.TrimStart('/');
            var response = context.Response;
            
            try
            {
                // 构建并验证文件路径（防止目录遍历攻击）
                var fullPath = Path.GetFullPath(Path.Combine(baseDir, requestPath));
                if (!fullPath.StartsWith(baseDir, StringComparison.OrdinalIgnoreCase))
                {
                    response.StatusCode = 403;
                    response.Close();
                    return;
                }
                
                // 检查文件是否存在
                if (!File.Exists(fullPath))
                {
                    response.StatusCode = 404;
                    response.Close();
                    return;
                }
                
                // 设置内容类型
                var extension = Path.GetExtension(fullPath).ToLower();
                response.ContentType = extension switch
                {
                    ".jpg" or ".jpeg" =&gt; "image/jpeg",
                    ".png" =&gt; "image/png",
                    ".gif" =&gt; "image/gif",
                    ".bmp" =&gt; "image/bmp",
                    ".webp" =&gt; "image/webp",
                    _ =&gt; "application/octet-stream"
                };
                
                // 返回文件内容
                using var fileStream = new FileStream(fullPath, FileMode.Open, FileAccess.Read);
                response.ContentLength64 = fileStream.Length;
                await fileStream.CopyToAsync(response.OutputStream);
                response.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error serving image: {ex.Message}");
                if (response.StatusCode == 200) response.StatusCode = 500;
                response.Close();
            }
        }
    }
}</code></pre><h4>工作流程</h4>
<ol>
<li><p><strong>服务器初始化</strong>：</p>
<ul>
<li>确定基础目录（程序运行目录）</li>
<li>配置 HTTP 监听地址和端口（<code>*:23564</code>）</li>
<li>创建并启动 <code>HttpListener</code> 实例</li>
</ul>
</li>
<li><p><strong>请求监听循环</strong>：</p>
<ul>
<li>服务器进入无限循环，等待传入请求</li>
<li>使用 <code>await listener.GetContextAsync()</code> 异步等待客户端连接</li>
<li>当接收到请求时，为每个请求创建一个新任务</li>
</ul>
</li>
<li><p><strong>请求处理</strong>：</p>
<ul>
<li>从 URL 提取请求路径</li>
<li>构建完整文件路径</li>
<li>验证路径安全性（防止目录遍历攻击）</li>
<li>检查请求的文件是否存在</li>
<li>根据文件扩展名设置适当的 MIME 类型</li>
<li>将文件内容流式传输到响应流</li>
<li>关闭响应连接</li>
</ul>
</li>
<li><p><strong>错误处理</strong>：</p>
<ul>
<li>使用 try-catch 块捕获处理过程中可能发生的异常</li>
<li>对应不同情况返回适当的 HTTP 状态码</li>
<li>记录错误信息到控制台</li>
</ul>
</li>
</ol>
<p>特别注意的是，服务器上需要考虑别人使用../之类的方式对你进行遍历攻击，所以需要有所防范</p>
<pre><code class="language-c">var fullPath = Path.GetFullPath(Path.Combine(baseDir, requestPath));
if (!fullPath.StartsWith(baseDir, StringComparison.OrdinalIgnoreCase))
{
    response.StatusCode = 403;
    response.Close();
    return;
}</code></pre><p>这段代码是防止目录遍历攻击的关键安全措施：</p>
<ul>
<li><code>Path.GetFullPath()</code> 解析所有相对路径符号（如 <code>../</code>）</li>
<li>验证最终路径必须位于服务根目录之内</li>
<li>使用不区分大小写的比较（Windows 文件系统不区分大小写）</li>
</ul>
<p>同时，需要使用 C# 模式匹配（switch 表达式）根据文件扩展名设置适当的 MIME 类型，确保浏览器能正确解释和渲染图像文件。</p>
<pre><code class="language-c">response.ContentType = extension switch
{
    ".jpg" or ".jpeg" =&gt; "image/jpeg",
    ".png" =&gt; "image/png",
    ".gif" =&gt; "image/gif",
    ".bmp" =&gt; "image/bmp",
    ".webp" =&gt; "image/webp",
    _ =&gt; "application/octet-stream"
};</code></pre><p>以上代码看上去是不是简洁明了好用了？但是我深入思考了一下，事情似乎没那么简单：</p>
<ul>
<li><strong>性能和吞吐量</strong>：HTTPListener 似乎并不是一个吞吐很好的库，经过资料查找，发现 HTTPListener 在 Windows 的实现和 Linux 上的实现完全不同。Windows 实现基于 HTTP.sys 内核组件，内核处理 TCP 和 HTTP 协议，而 Linux 实现是纯托管代码实现，用户空间处理全部协议栈。这个类的设计理念就是为简单 HTTP 服务需求提供直接 API，较少抽象层，但其实并不适用于服务器级别的高并发应用。</li>
</ul>
<h3>改进目标</h3>
<p>秉承着写都写了，不如写好一些的思想，我希望实现一个相对专业的，理论上可以高并发，处理大量数据，减轻 IO 瓶颈的代码。
由此我需要实现：</p>
<ul>
<li>基于 ASP.NET Core 处理 HTTP 请求</li>
<li>使用 Microsoft.Extensions.Caching.Memory 实现缓存</li>
<li>内存缓存小文件以提高性能</li>
<li>大文件流式处理以节省内存</li>
<li>HTTP 条件请求支持（ETag/304 响应）</li>
<li>线程池优化</li>
<li>CORS 支持</li>
<li>客户端缓存控制</li>
</ul>
<h2>新版本完整实现代码</h2>
<pre><code class="language-c">using System.Net;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace ImageServer;

/// <summary>
/// Entry point for the Image Server application.
/// </summary>
public static class Program
{
    /// <summary>
    /// Application entry point.
    /// </summary>
    /// &lt;param name="args"&gt;Command line arguments.&lt;/param&gt;
    public static void Main(string[] args)
    {
        // Optimize thread pool settings
        ThreadPool.SetMinThreads(100, 100);

        var baseDir = Directory.GetCurrentDirectory();
        var port = 23564;

        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =&gt;
            {
                webBuilder.UseKestrel(options =&gt;
                    {
                        options.Limits.MaxConcurrentConnections = 1000;
                        options.Limits.MaxRequestBodySize = null; // No request size limit
                        options.Listen(IPAddress.Any, port);
                    })
                    .UseStartup&lt;Startup&gt;();
            })
            .ConfigureServices(services =&gt;
            {
                services.AddSingleton(baseDir);
                services.AddMemoryCache(options =&gt;
                {
                    options.SizeLimit = 200 * 1024 * 1024; // 200MB cache limit
                });
                services.AddSingleton&lt;ImageService&gt;();
                services.AddCors();
            })
            .Build()
            .Run();
    }
}

/// <summary>
/// Configures the application's HTTP pipeline.
/// </summary>
public class Startup
{
    /// <summary>
    /// Configures the application's request pipeline.
    /// </summary>
    /// &lt;param name="app"&gt;The application builder.&lt;/param&gt;
    /// &lt;param name="env"&gt;The hosting environment.&lt;/param&gt;
    /// &lt;param name="imageService"&gt;The image service.&lt;/param&gt;
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ImageService imageService)
    {
        if (env.IsDevelopment()) app.UseDeveloperExceptionPage();

        app.UseRouting();

        // Configure CORS
        app.UseCors(builder =&gt; builder
            .AllowAnyOrigin()
            .AllowAnyMethod()
            .AllowAnyHeader());

        app.UseEndpoints(endpoints =&gt;
        {
            endpoints.MapGet("/{**path}", async context =&gt; { await imageService.ServeImageAsync(context); });
        });

        Console.WriteLine($"Server started on http://*:{23564}/");
        Console.WriteLine($"Serving files from: {imageService.BaseDirectory}");
        Console.WriteLine("Press Ctrl+C to stop the server...");
    }
}

/// <summary>
/// Service responsible for serving image files with caching capabilities.
/// </summary>
public class ImageService
{
    // Only cache files smaller than this size to avoid memory pressure
    private const int MaxCacheFileSize = 5 * 1024 * 1024; // 5MB

    // Cache duration
    private static readonly TimeSpan CacheDuration = TimeSpan.FromMinutes(30);
    private readonly IMemoryCache _cache;
    
    /// <summary>
    /// Gets the base directory from which files are served.
    /// </summary>
    public readonly string BaseDirectory;

    /// <summary>
    /// Initializes a new instance of the &lt;see cref="ImageService"/&gt; class.
    /// </summary>
    /// &lt;param name="cache"&gt;The memory cache to use.&lt;/param&gt;
    /// &lt;param name="baseDirectory"&gt;The base directory to serve files from.&lt;/param&gt;
    public ImageService(IMemoryCache cache, string baseDirectory)
    {
        _cache = cache;
        BaseDirectory = Path.GetFullPath(baseDirectory);
        Directory.CreateDirectory(BaseDirectory); // Ensure directory exists
    }

    /// <summary>
    /// Serves an image file in response to an HTTP request.
    /// </summary>
    /// &lt;param name="context"&gt;The HTTP context for the request.&lt;/param&gt;
    /// &lt;returns&gt;A task representing the asynchronous operation.&lt;/returns&gt;
    public async Task ServeImageAsync(HttpContext context)
    {
        var request = context.Request;
        var response = context.Response;

        try
        {
            // Get requested path
            var requestedPath = request.Path.Value?.TrimStart('/') ?? string.Empty;

            if (string.IsNullOrEmpty(requestedPath))
            {
                response.StatusCode = StatusCodes.Status400BadRequest;
                return;
            }

            // Construct and validate file path (prevent directory traversal attacks)
            var fullPath = Path.GetFullPath(Path.Combine(BaseDirectory, requestedPath));
            if (!fullPath.StartsWith(BaseDirectory, StringComparison.OrdinalIgnoreCase))
            {
                response.StatusCode = StatusCodes.Status403Forbidden;
                return;
            }

            // Check if file exists
            if (!File.Exists(fullPath))
            {
                response.StatusCode = StatusCodes.Status404NotFound;
                return;
            }

            // Get file information
            var fileInfo = new FileInfo(fullPath);
            var extension = Path.GetExtension(fullPath).ToLower();
            var mimeType = GetMimeType(extension);

            // Set Content-Type
            response.ContentType = mimeType;

            // Set cache control headers
            var lastModified = fileInfo.LastWriteTimeUtc;
            var etag = $"\"{lastModified.Ticks:X}-{fileInfo.Length:X}\"";

            response.Headers["ETag"] = etag;
            response.Headers["Last-Modified"] = lastModified.ToString("R");
            response.Headers["Cache-Control"] = "public, max-age=86400"; // Client cache for 1 day

            // Check conditional request (304 Not Modified handling)
            var ifNoneMatch = request.Headers["If-None-Match"].ToString();
            if (!string.IsNullOrEmpty(ifNoneMatch) && ifNoneMatch == etag)
            {
                response.StatusCode = StatusCodes.Status304NotModified;
                return;
            }

            // Cache key
            var cacheKey = $"file:{fullPath}:{lastModified.Ticks}";

            // Determine if file size is suitable for caching
            if (fileInfo.Length &lt;= MaxCacheFileSize)
            {
                // Try to get from cache
                if (!_cache.TryGetValue(cacheKey, out byte[]? cachedContent))
                {
                    // Cache miss, read file content
                    cachedContent = await File.ReadAllBytesAsync(fullPath);

                    // Set cache options
                    var cacheOptions = new MemoryCacheEntryOptions()
                        .SetSize(cachedContent.Length) // Set cache item size
                        .SetAbsoluteExpiration(CacheDuration);

                    // Store in cache
                    _cache.Set(cacheKey, cachedContent, cacheOptions);
                }

                // Send file from cache
                if (cachedContent != null)
                {
                    response.ContentLength = cachedContent.Length;
                    await response.Body.WriteAsync(cachedContent);
                }
            }
            else
            {
                // Stream large files directly, without caching
                response.ContentLength = fileInfo.Length;
                await using var fileStream = new FileStream(
                    fullPath,
                    FileMode.Open,
                    FileAccess.Read,
                    FileShare.Read,
                    64 * 1024, // 64KB buffer
                    true);

                await fileStream.CopyToAsync(response.Body);
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error serving image: {ex.Message}");

            if (!response.HasStarted) response.StatusCode = StatusCodes.Status500InternalServerError;
        }
    }

    /// <summary>
    /// Gets the MIME type for a given file extension.
    /// </summary>
    /// &lt;param name="extension"&gt;The file extension.&lt;/param&gt;
    /// &lt;returns&gt;The corresponding MIME type.&lt;/returns&gt;
    private string GetMimeType(string extension)
    {
        return extension switch
        {
            ".jpg" =&gt; "image/jpeg",
            ".jpeg" =&gt; "image/jpeg",
            ".png" =&gt; "image/png",
            ".gif" =&gt; "image/gif",
            ".bmp" =&gt; "image/bmp",
            ".webp" =&gt; "image/webp",
            _ =&gt; "application/octet-stream"
        };
    }
}</code></pre><p>让我们深入了解这个实现的每个部分。</p>
<h3>程序入口与配置</h3>
<p>程序入口点在 <code>Program</code> 类中，它设置和启动 Web 主机：</p>
<pre><code class="language-c">public static void Main(string[] args)
{
    // 优化线程池设置
    ThreadPool.SetMinThreads(100, 100);
    
    // 创建并运行Web主机
    // ...
}</code></pre><p><strong>线程池优化</strong>是高并发应用的关键。通过 <code>SetMinThreads(100, 100)</code>，我们确保至少有 100 个工作线程和 100 个 I/O 完成端口线程立即可用，而不是等待 .NET 运行时逐渐增加线程数量。这减少了高负载时的线程不足问题。</p>
<p><strong>Kestrel 配置</strong>专注于高性能：</p>
<pre><code class="language-c">options.Limits.MaxConcurrentConnections = 1000;
options.Limits.MaxRequestBodySize = null; // 无请求大小限制
options.Listen(IPAddress.Any, port);</code></pre><p>这限制了最大并发连接数（防止资源耗尽），移除了请求大小限制，并配置服务器监听所有网络接口的指定端口。</p>
<p><strong>依赖注入配置</strong>添加了三个关键服务：</p>
<ul>
<li>基础目录路径（作为单例）</li>
<li>内存缓存（限制为 200MB）</li>
<li>图像服务（包含主要逻辑）</li>
</ul>
<h3>HTTP 管道配置</h3>
<p><code>Startup</code> 类配置了 HTTP 请求处理管道：</p>
<pre><code class="language-c">public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ImageService imageService)
{
    // 配置中间件
    // ...
}</code></pre><p>管道包含以下中间件：</p>
<ul>
<li>开发环境下的异常页面</li>
<li>路由中间件</li>
<li>CORS 中间件（允许来自任何源的请求）</li>
<li>端点映射（所有 GET 请求路由到图像服务）</li>
</ul>
<p>这里的路由配置很简单但很强大 - <code>&quot;/{**path}&quot;</code> 捕获所有路径，使我们能够处理任意深度的文件路径。</p>
<h3>图像服务实现</h3>
<p><code>ImageService</code> 类是核心，处理图像请求并实现缓存策略：</p>
<pre><code class="language-c">public class ImageService
{
    private const int MaxCacheFileSize = 5 * 1024 * 1024; // 5MB
    private static readonly TimeSpan CacheDuration = TimeSpan.FromMinutes(30);
    private readonly IMemoryCache _cache;
    public readonly string BaseDirectory;
    
    // ...
}</code></pre><p><strong>关键常量</strong>：</p>
<ul>
<li><code>MaxCacheFileSize</code>：只缓存 5MB 以下的文件，避免大文件占用过多内存</li>
<li><code>CacheDuration</code>：缓存项有效期为 30 分钟</li>
</ul>
<p><strong>文件请求处理流程</strong>：</p>
<pre><code class="language-c">public async Task ServeImageAsync(HttpContext context)
{
    // 获取和验证请求路径
    // 构建安全的文件路径
    // 检查文件是否存在
    // 设置 MIME 类型和缓存头
    // 处理条件请求
    // 从缓存或磁盘提供文件
}</code></pre><p><strong>安全路径验证</strong>防止目录遍历攻击：</p>
<pre><code class="language-c">var fullPath = Path.GetFullPath(Path.Combine(BaseDirectory, requestedPath));
if (!fullPath.StartsWith(BaseDirectory, StringComparison.OrdinalIgnoreCase))
{
    response.StatusCode = StatusCodes.Status403Forbidden;
    return;
}</code></pre><p>这确保请求不能访问基础目录之外的文件。</p>
<p><strong>HTTP 缓存控制</strong>通过 ETag 和 Last-Modified 头实现：</p>
<pre><code class="language-c">var lastModified = fileInfo.LastWriteTimeUtc;
var etag = $"\"{lastModified.Ticks:X}-{fileInfo.Length:X}\"";

response.Headers["ETag"] = etag;
response.Headers["Last-Modified"] = lastModified.ToString("R");
response.Headers["Cache-Control"] = "public, max-age=86400"; // 客户端缓存 1 天</code></pre><p>这允许浏览器缓存内容并通过条件请求验证缓存有效性。</p>
<p><strong>二级缓存策略</strong>是这个服务器的核心特性：</p>
<pre><code class="language-c">// 小文件使用内存缓存
if (fileInfo.Length &lt;= MaxCacheFileSize)
{
    // 尝试从缓存获取
    if (!_cache.TryGetValue(cacheKey, out byte[]? cachedContent))
    {
        // 缓存未命中，读取文件内容
        cachedContent = await File.ReadAllBytesAsync(fullPath);
        
        // 设置缓存选项
        var cacheOptions = new MemoryCacheEntryOptions()
            .SetSize(cachedContent.Length)
            .SetAbsoluteExpiration(CacheDuration);
            
        // 存入缓存
        _cache.Set(cacheKey, cachedContent, cacheOptions);
    }
    
    // 从缓存发送文件
    await response.Body.WriteAsync(cachedContent);
}
else {
    // 大文件直接流式处理
    await using var fileStream = new FileStream(
        fullPath,
        FileMode.Open,
        FileAccess.Read,
        FileShare.Read,
        64 * 1024, // 64KB 缓冲区
        true);
        
    await fileStream.CopyToAsync(response.Body);
}</code></pre><p>这种方法具有多个优势：</p>
<ul>
<li>小文件被缓存在内存中以加速访问</li>
<li>大文件直接流式传输以避免内存压力</li>
<li>使用 64KB 的缓冲区进行高效的文件传输</li>
<li>异步 I/O 操作保持服务器的响应能力</li>
</ul>
<p><strong>MIME 类型检测</strong>通过文件扩展名实现：</p>
<pre><code class="language-c">private string GetMimeType(string extension)
{
    return extension switch
    {
        ".jpg" =&gt; "image/jpeg",
        ".jpeg" =&gt; "image/jpeg",
        ".png" =&gt; "image/png",
        // ...其他类型
        _ =&gt; "application/octet-stream"
    };
}</code></pre><p>这确保浏览器能正确解释和渲染内容。</p>
<h3>性能优化总结</h3>
<p>这个图像服务器通过多种技术实现高性能：</p>
<ul>
<li><strong>内存缓存</strong>：避免频繁的磁盘 I/O</li>
<li><strong>流式处理</strong>：高效处理大文件</li>
<li><strong>线程池优化</strong>：确保足够的线程处理并发请求</li>
<li><strong>异步 I/O</strong>：提高系统资源利用率</li>
<li><strong>HTTP 条件请求</strong>：减少不必要的传输</li>
<li><strong>客户端缓存</strong>：减轻服务器负载</li>
</ul>
<p>这些技术的组合使得该服务器能够高效地处理大量并发请求，同时保持较低的资源消耗。</p>
<h2>结语</h2>
<p>由此，我们就完成了我们的目标，实现了一个理论上高性能高并发并且可配置资源和性能的图床服务器，可喜可贺！</p>
<hr>
<h3>相关链接</h3>
<ul>
<li><a href="https://www.duya25446.top/">个人主页</a></li>
<li><a href="https://github.com/duya25446">GitHub</a></li>
</ul>

      <p style='text-align: right'>
      <a href='https://www.duya25446.top/posts/backend/imageServer#comments'>看完了？说点什么呢</a>
      </p>
    ]]>
    </content:encoded>
  <guid isPermaLink="false">67e81ce9c6b6c28f3aff517c</guid>
  <category>posts</category>
<category>后端相关</category>
 </item>
  
</channel>
</rss>