返回目录
生活娱乐 技能

dsh-adult-tension

daha1216/dsh-adult-tension

DeepSeek 自带破甲 18+ 互动叙事:活人感 NPC(自主决策/拒绝迎合)、39个世界与上千素材、开局随心定制、世界自行运转、零漂移存档。

Stars
124
Forks
6
Issues
1
更新
6 天前

PROJECT TOPICS

项目标签

INSTALL REFERENCE

安装参考

未验证
dsh plugin --profile web add github:daha1216/dsh-adult-tension

该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。

PROJECT README

README

Adult Tension。像素风黄昏卧室:一个人坐在床边弹红色电吉他,窗外是霓虹城市,窗上写着 ADULT TENSION;人物左侧写着:专为高张力、强连续性成人互动叙事打造。18+,尺度全开,真实成人互动,Claude Opus 5.5 从零重构。下方三栏:活人感 NPC、数十个深度世界、自运行状态机。

中文 · English

dsh-adult-tension
专为高张力、强连续性的成人互动叙事打造

18+ 深度破甲 · Claude Opus 5.5 重构
原生 Agent Skill | 活人感 NPC
数千余项素材库 | 零漂移 SQLite 状态机
——这里没有百依百顺的玩偶,只有各怀心事的成年人。


超多世界 · 体验切片 · 怎么开始 · 安装


内置世界库:跨时代独立世界框架和上千项素材。数十个世界钉在一块软木板上,分为历史风云、都市暗流、当代市井、近未来、异界幻想五栏,全部已开放,可直接开局。下方磁带架写着两千余项素材:160+ 地点、300+ NPC 角色、140+ 玩家身份、200+ 人物组合、150+ 张力引擎、170+ 日常活动、150+ 压力事件、300+ 开场钩子、180+ 中期转折、250+ 规矩与风俗。


每次开局都是同个世界里的真人真事和老规矩,绝不拿随机名词糊弄人。

所有世界都已开放,挑一个抓起来就能玩。
图里没有想要的?直接喊“自定义世界”,说你想去哪年哪地,当场给你现造一个。

查看全部 39 个世界速览(点开查看)
世界 一句话
幕末町屋与道场 门外风声鹤唳,纸门内衣衫不整;规矩比命重,但今夜谁都不想守规矩。
民国报馆与手艺街 截稿前最后一小时,压住一条丑闻的价码,远比登出来要高。
港口夜班 吊机声轰鸣的更衣室隔间,交接班那十分钟,够分完一笔见不得光的账。
成年创作者与艺术季 白天在展厅聊纯粹艺术,深夜在酒局算名利与肉体各值几分。
寒冬避难所公共生活 外头零下四十度,里面床位挨着床位;想多换一口热汤,得看你拿什么抵。
旧町神怪与灯会 戴着狐面的不一定是妖,牵着你手的不一定是人;灯灭之前,千万别叫出真名。
坊门落锁后 鼓声一绝坊门落锁,官法管不到深巷,孤男寡女有的是办法熬过长夜。
洋裁町 软尺贴过腰线与后背,量体的人指尖发烫,客人的私隐比尺寸更合身。
在册 盖了红印是良民,划去名字是黑户;经手文书的那位大人,今晚在等你的诚意。
喫茶街 熟客要的不仅是那杯固定配方的黑咖啡,还有柜台后只有两人知晓的旧情。
月份牌 印在招贴画上的眉眼风情万种,私下包厢里的身价由三个男人轮流抬高。
雾都号牌 煤烟浓雾里谁也看不清谁的脸,摘下号牌的马车后厢,只有急促的呼吸与金镑。
第七任 镜头前是清纯完美的人设,后台更衣室里,经纪人正逼着第七个替身签下卖身契。
后巷三楼 隔音棉封死的三楼暗室,绳结越紧,喘息越重,没人能在镜头前藏住私欲。
世纪末网吧 昏暗包厢里红塔山的烟雾缭绕,隔壁机位发来的暧昧消息,打字的人就在你斜后方。
半条街 拆迁红漆刷上墙根,几十年同进同出的街坊,私底下的情债和烂账全藏不住了。
最后一期 停刊号只剩最后半版天窗,是撕开权贵的体面,还是保全自己明天的饭碗?
夜班修理局 油污斑驳的控制台下,改掉一条故障日志的封口费,足够买下半生清净。
检疫环 封闭隔离的第二十天,假阴性的诊断单被攥得发皱,同一间观察室里的距离越来越近。
修补集市 废墟上搭起的廉价木屋,白天搭伙过日子,夜里枕头下都藏着灾难当年的旧恨。
鬼市商路 鬼火幽绿的黑市窄巷,引路人开出的买路钱,要的不是银两而是你身上的一块皮。
山下镇 求仙问道的都被挡在山门外,山脚客栈挤满了落魄人,抱团取暖最容易失了分寸。
勇者退休以后 战甲生锈挂在墙头,当年的生死同袍上门讨债,曾经的魔族俘虏成了枕边人。
登记城 户籍官的手指划过羊皮纸上的真名,要想不被除籍流放,今晚得换身衣裳去他偏厅。
机械马戏 蒸汽与机油味混着脂粉香,巡演最后一夜拆台前,总有人想把心留在这具发条身体里。
雪夜汤宿 大雪封山断了暖气,温泉旅馆里每个人都揣着一笔不想让人知道的账,热汤池边的距离一夜比一夜近。
法租界暗房 显影液的酸涩里藏着一卷底片,闸门落下之前,谁捏住了胶片,谁就捏住了别人的命。
酸雨沉船城 霓虹泡在酸雨里,神经诊所按小时计费;风暴封城前,人人都得决定把什么押上手术台。
枯枝神殿 千年神木一寸寸枯死,神殿里的祭司与访客守着暖石药浴,谁都不敢先说出那份赎罪的旧约。
长明古刹 暴雪压山,唯一能借宿的古寺里,僧人、刀客与名册上的钦犯共守一盏长明灯。
公会暗室 破产的黑账摊在桌上,禁忌深渊的委托就压在账本底下;接不接,天亮前得给个准话。
迷宫深层 安全区坍塌,远征队溃散,幸存者挤在一盏快熄的魔石灯下,信任比口粮更稀缺。
绝壁要塞 蒸汽机甲守着最后一道山口,敢死第零番队只剩一夜,有些话不说就再没机会了。
巨龙坠落之堑 屠龙血旗插在龙尸旁,断角决死阵前夜,并肩的人在风雪里互相试探彼此的底线。
黑石古堡 风暴封岛的一夜,女仆长的辞呈拂晓就要送到案头,走还是留,只差一句没说出口的话。
八十八层封楼夜 暴雨封楼的顶层,社长的离岸账本落进你手里;举报、自首还是等元老派夺权,天亮前总得有人开口。
大圣堂告解夜 讨伐深渊留下的诅咒每夜灼痛圣女,唯一能念完封印古咒的,是被教廷驱逐过的学者。
台风断电夜 整条老街停了电,隔壁的青梅竹马抽屉里压着一张盖好章的离婚届,今晚她得自己决定签不签。
黑龙丸 暴风雨中的游艇上叛徒倒戈,中弹高烧的极道千金只剩贴身保镖一人可信,熬到天亮才算赢。


体验切片:真实会话交付实录

港口夜班 · 有压力模式。 你是夜班调度,台风封港前最后一班船,第三排最底下的集装箱过磅足足超了四吨。吊具十四分钟后咬合,手边还压着船公司塞过来的厚红包。

👤 你: 我去找能帮上忙的人,把情况跟对方说清楚

你往后退了半步,手腕一翻避开了红纸包。红纸包顺着硬板纸滑落在铁皮箱边缘,船公司代表潘宝珠脸上的笑意微微一滞,手慢慢收回风衣口袋,眼神在水银灯的阴影里深了下去。

远处桥吊的铁爪在头顶发出刺耳的金属摩擦声,还剩十三分钟。

👤 你: 我想让对方答应替我分担一部分,看对方肯不肯

两排集装箱夹出的深隙里黑得见不到底,湿热海风灌进来像抽风机一样啸叫。你把装卸班组长梁嘉欣拉进铁壁阴影里,压着嗓子把想让她搭一把手的意思递了过去。

梁嘉欣残缺的左手在粗布工裤上蹭了蹭,眼神沉得像浸了海水:

“阿青,当年你刚进调度室,台账还是我教你对的。你想让我帮你扛,行,但话得摆在明处——我可以用班组长的名义在频道里喊一次吊具钢丝绳例检,硬把七号机停下来,顶多给你匀出二十分钟。但放行单是你们调度的事,那个超重四吨的单子,字我绝对不签,出了事我也绝不会替你顶。能给你的,就这两轮机的时间。”

【时间】第一天 23:36 | 【地点】堆场通道 | 回合:5

两个人都没有因为你开口就顺从:一个被拒后收敛了客套,一个匀出二十分钟却坚决不替你签字。
成年人的世界里没有无条件的庇护,每一步退让都有明码标价的底线。

出自真实试玩记录,宿主 opencode,模型 gemini-3.8-flash,删节处用“……”标出。全文:opencode-pt-harbor_night_shift-pressure-r3.json · 全部试玩与评分:reports/playtests/playtests.md


为什么不会崩盘:模型写故事,本地引擎守事实

普通 AI 常见表现 Adult Tension
角色态度 无底线顺从,有求必应 每个 NPC 有目标和底线;回应分拒绝、协商、有限配合、表面配合、真诚配合五档
成人内容 写到关键处一句带过,或突然跳到“事后” 尺度由你定:不强制淡出,你要求写到哪步就写到哪步;全员成年、同意可撤回、硬边界由引擎执行
长线记忆 聊十几轮就失忆,关系与设定漂移 人物、关系、时间、事实都存在本地 SQLite;每回合上下文不超过 20 KB
时间推移 你离开后,世界停在原地 快进时,不在场的人各有动静,承诺到期、风声传开
进度保存 关掉窗口就白玩 命名存档、另存为、导入导出;重试不会重复推进,升级前自动备份

还有三处细节:名字按时代和地域取,不出戏;用词不穿越,盛唐的人不说“OK”;每个 NPC 都有表里两副样子,开了“内心可见”,你能看见他没说出口的那句话。


怎么开始:不用记语法,直接说大白话

开一局

你说 会发生什么
开局 完全随机;会先问你选“日常”还是“有压力”
开局,港口夜班 指定世界
开局,不要职场 排除题材
开局,我是三十岁的女摄影师 设定你自己
自定义世界,民国的一座山城…… 模型当场写一个世界,只属于这一局
重开 42 号 同一种子,原样重来

推进剧情

新局依次给出“世界观”“人物”和正文,正文停在一个等你接手的动作上。直接写动作或台词:

我走到她面前,把文件放在桌上:“我们单独谈谈。”

随时调整

你说 会发生什么
继续 · c 向前推一幕,场面里至少有一处变化
快进到明天早上 不在场的人各有动静,到期的事有结果
状态 关系、承诺、风声、快到期的事
存档 · qs 存到当前存档槽
另存为 名字 · 读档 名字 另存一条分支,或从那一刻接着玩
存档列表 所有存档
导出 · 导入 导出存档文件,换台电脑也能续
刚才不算 撤销或改写上一回合
内心可见 开 · 暂停 · 边界:不要 X 看见没说出口的话;立刻停下;划一条引擎替你守的线

同一个存档被另一个窗口改过时,会提示你读最新版、另存为,或取消,不会静默覆盖。


安装:只需交给 AI 操作,原生 SKILL

不需要 pip install,不需要设环境变量,也不需要任何 API Key。

让 AI 替你装,在宿主里说:

帮我安装这个 skill:https://github.com/daha1216/dsh-adult-tension (Skill 在 skill/adult-tension 目录)

或者手动装,把 skill/adult-tension/ 放进宿主的 Skill 目录:

git clone --depth 1 https://github.com/daha1216/dsh-adult-tension.git
cp -r dsh-adult-tension/skill/adult-tension ~/.dsh/skills/
宿主 Skill 目录
DeepSeek Harness (DSH) ~/.dsh/skills/ · 项目里的 .dsh/skills/
Claude Code ~/.claude/skills/ · 项目里的 .claude/skills/
Codex ~/.agents/skills/ · 仓库里的 .agents/skills/
OpenCode ~/.config/opencode/skills/ · 项目里的 .opencode/skills/
pi ~/.pi/agent/skills/ · ~/.agents/skills/

然后开一个新对话,说:“看看 Adult Tension 能不能用。”

存档在哪里,升级会不会丢

存档永远不放在 Skill 目录里,升级、卸载都不会动它。

系统 数据目录
Windows %LOCALAPPDATA%\adult-tension
macOS ~/Library/Application Support/adult-tension
Linux $XDG_DATA_HOME/adult-tension,未设置时 ~/.local/share/adult-tension

也可以用环境变量 ADULT_TENSION_HOME 或参数 --data-dir 指定。升级就是替换 Skill 目录;数据库格式变了会先自动备份再迁移,失败就恢复。

用什么模型玩

出文效果随模型版本、上下文长度和平台配置变化;对话越深,角色一致性和语感越依赖模型本身。时间线、关系和存档由本地引擎守着,换模型也不会丢。上面的实录用的是 gemini-3.8-flash。

使用边界

  • 仅限成年人。 所有人物与情节均为虚构,全员成年;同意随时可以撤回;硬边界由引擎执行,不靠模型自觉。
  • 需要一个能运行本地命令的 Agent 宿主,比如上表里的几个。宿主怎么把对话发给模型,由宿主和你选的模型服务决定;存档只存在你自己的电脑上。
  • 出文质量取决于模型。 引擎保证事实不漂移,文笔和分寸还是模型的事。
开发者
skill/adult-tension/     可安装的 Skill:SKILL.md、references/、runtime/、编译好的世界包
content-src/worlds/      世界包源文件
tools/                   编译、校验、开局预览、模拟、基准测试
tests/                   core · content · integration · e2e
reports/                 试玩记录、评审、基准与验收证据
spec/                    需求规范
PROGRESS.md              进度、实际数字、待决事项

运行时只用 Python 标准库;SQLite 是唯一的状态存储,只有一个写入口。每个写操作都带 request_id,会话内的还带 expected_revision,重试不会重复推进。

python -m unittest discover -s tests/core
python tools/validate_skill.py skill/adult-tension

加一个世界:按 spec/CONTENT_BIBLE.md,用 tools/new_world.py 起草,tools/preview_openings.py 逐条读开局,通过校验和开局多样性门禁,再经真实试玩,才从 review 转为 released。


SKILL 架构:无需理会,当正常 SKILL 使用就行。玩家对 Agent 宿主说话,宿主按 SKILL.md 用 JSON 调用本地运行时;运行时分 adapters/cli、application、content、projections、persistence、domain 六层,存档写进用户数据目录里的 SQLite;世界源文件由 tools 编译成只读世界包。


由 Claude Opus 5.5 从零重构。仅限成年人,所有人物与情节均为虚构。

CLASSIFICATION EVIDENCE

分类依据

项目类型技能
功能分类生活娱乐
规则置信度高

系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: agent-skills、ai-roleplay。