【开源】Liyuan,基于pi内核并结合sillytavern的角色扮演agent

JSW 2026-07-13 21:29 1

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:



  • 我的帖子已经打上 开源推广 标签:

  • 我的开源项目完整开源,无未开源部分:

  • 我的开源项目已链接认可 LINUX DO 社区:

  • 我帖子内的项目介绍,AI生成、润色内容部分已截图发出:

  • 以上选择我承诺是永久有效的,接受社区和佬友监督:


以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出




众所周知,agent = LLM + harness + tools。而 SillyTavern,它的架构其实与agent有着惊人的相似:预设对应系统提示词,世界书对应知识库,各类扩展对应 skill 和 MCP。但 ST 终究只是一个调用 AI 的软件,把提示词拼好发出去,剩下的全看模型自觉,并不是真正的 agent。


而我们一旦把 harness 这一层真正补上,ST 的很多问题——长程记忆、上下文压缩、状态提醒、生图、TTS 等等等等其实都可以迎刃而解:不靠提示词的堆砌,由harness架构层面直接保证。


于是我做了梨园(Liyuan),借助 pi 现成的 agent 内核,加上 SillyTavern 沉淀多年的成熟设计,做出了一个真正的 RP agent。


为什么选 pi?因为它和一般 agent 框架最大的差异,就是 harness 层完全开放、可以被高度自定义,属于是一个现成的好轮子(图方便,懒)。


github链接:weidu12123/Liyuan


已添加友链:http://linux.do


那么第一个板块,我的功能与创新点


1.记忆优化——通过修改harness从源头拔高记忆的上限


上下文是rp(角色扮演)中最重要的资源没有之一,而传统ai角色扮演会将整个过程中的所有过程全部放在上下文,对于ai编程,这是正向提升,但对于rp,中间的各种冗余会严重占用上下文并降低模型智商,而引入harness后,我们能够在harness层面直接将中间的各种操作过滤,在架构层每轮重新剪辑上下文,让模型最后看到的只保留叙事正文于各种快照,数据库等等,过程性内容在代码层被确定性裁掉,实测每轮省 53%–63%。同样的窗口,有效剧情容量翻倍,直接从源头拔高上限。


2.agent询问模式的引入——让用户深度参与并决定剧情走向


在coding agent 中大多数都有这样一种模式,agent在做出操作例如删文件前会停下来问你。而梨园把这套东西翻译进了 RP:重要新角色如何定型、关键设定定死、难以回头的重大转折(死亡、背叛、关系质变)等等的情况下,agent 会停笔,在上下文里弹出一张选择卡:它构思的几个方向、一个自由输入框(你自己写走向)。选完剧情按你定的走,卡片永久留痕,日后回看每个岔路口都清清楚楚。


这个功能主要解决的是传统 RP 里只能不停的拆盲盒,通过不停的重新roll来祈祷ai生成一个优质且满意的剧情。梨园直接让用户深度参与,决定走向。



3.ai自定义面板——让ai自己生成各种面板来优化体验


梨园直接把前端操作权交给 agent,agent能够生成各种面板导入面板板块,并且随着后续的扮演而实时更新。玩rpg类型的卡时,让自己建一间装备库;地图复杂时,让ai画一张 SVG 地图,走一步更新一步,让扮演不再停留于想象,直接可视化。



4.扩展——agent的经典能力skill于mcp


既然是agent那就自然少不了经典的skill于mcp了,不同于传统ai扮演的各种复杂扩展,因为引入了agent,各种复杂的扩展能力都能够很简单的实现。

例如文生图,传统的插件很复杂,得想各种办法在上下文中抠出关键词,得调试各种接口。而引入了agent后,他可能变成了很简单的一句话,帮我调用哪个api根据上下文内容来生成哪个角色的图片,并打包为skill。


还有MCP,其一个特点就是会话级,在后台常驻,利用这个特性,其实是可以开发向量记忆库的,agent全自动向量采集,适合长期卡,这个自己研究吧。



(别问我为什么生成失败了,问多了就不礼貌了哦 ^-^ )


5.世界线——包括回档 分支各种能力,体验一张卡在不同选择下的不同结局

传统的ai扮演想要体会不同的结局的做法只有重开或翻旧楼层改写。


梨园给的是游戏级存档:/store 钉存档,/back 回档,/line 看世界线全景。关键在于回档回的是整个世界——剧情正文、状态账本、agent 建的地图和装备库、知识库挂载,全部一致地回到那个时间点。桌上的信物从正文和账本里同步消失,地图回到你还没探开的样子。


而且存档零损耗:哪怕经历过上下文压缩,回到压缩前的存档,上下文自动恢复为未压缩的全量原文——压缩留在旧分支上,不跟过来。同一张卡,活出完全不同的结局。


6.知识库——自定义知识库,随时填充随时挂载


剧情里的新奇设定,不了解的新知识,可以直接让ai把它写入自定义的知识库,知识库由人与agent共同操控,用户也可以自己更改,可以随意挂载。


7.素材库——储存你输入的和ai生成的各种文件 图片等素材

因为是agent,他具有后端的各种能力,那么在这个前提下,我们可以把上传文件和图片给改一下,让内容不进上下文,我们上传到vps的文件夹里面,而消息里只附一行路径,在让agent 知道素材库里有什么的同时不让图片和文件大幅度占用上下文,甚至后续你可以随时拖动素材库里面的图片到输入框发送给agent,你看到的的图片,但其实agent看到的是文件路径。



第二个板块就是对ST的兼容了


1.角色卡:PNG 卡和 JSON 卡可以直接导入,卡内嵌的世界书一并读取;


2.世界书:支持导入,蓝灯 / 绿灯关键词激活语义保留,多本挂载。而且是双向的——梨园知识库可以导出回 ST 世界书格式,数据进出都自由,不搞单向锁定;


3.聊天记录:jsonl 旧档直接导入续玩。导入时自动清洗(剥离旧状态栏和思维链,避免带坏文风),旧剧情自动摘要、自动建账——几百楼的老婆可以无缝接到梨园继续过日子;


4.预设:提供转换器,提示词块搬入对应位置、采样参数照常生效。但如实说:预设是为一问一答的旧架构设计的,其中相当一部分块(思维链模板、状态栏指令、各种装配技巧)本质是在补偿旧架构的缺陷——这些问题在梨园已经被架构本身解决,对应的块失去了作用对象。能带进来,效果请自行实。

(其实大部分预设的效果都是能够发挥的,甚至因为把预设搬到了harness层,很多功能的效果会更好,例如人称和字数。另外,我测试过,我用反重力的4.6opus是成功输出了内容的,至于是什么内容,懂的都懂)


5。明确不兼容:正则脚本、STscript、前端插件、角色卡自带的 HTML 界面。这些不是数据,是绑定旧架构的玩法——正则脚本修的那些问题(裁思维链、修格式),梨园在 harness 层直接就做了。

另外声明一句:梨园没有使用任何 SillyTavern 代码,全部格式解析按公开规范独立实现。兼容的是数据生态,不是搬运代码。


那么就这些了,酒馆的故事是否听的足够多了,不妨步入梨园,看一场戏吧。祝大家玩的愉快!


(推荐用grok,别问我为什么。当然是因为现在grok便宜啊,你以为是什么 ^-^

最新回复 (1)
  • 等风 07-13 22:42
    1

    感觉大佬的分享 我去试试 ^-^^-^

* 帖子来源Linux.do
返回