把陪伴智能体做成可研究的运行时
项目把 persona、context、state、reality background、human appraisal、structured output 和 trace 拆成可观察模块,用工程边界承载长期交互假设。
Shion Runtime 的核心问题是:如果一个 AI 不是一次性问答工具,而是长期存在的陪伴型 agent,它的连续性、表达、记忆、现实感、通道迁移和隐私边界应该落在工程系统里,而不应该只压在一个 prompt 里。
项目把 persona、context、state、reality background、human appraisal、structured output 和 trace 拆成可观察模块,用工程边界承载长期交互假设。
当前版本包含 React/Vite PWA、Node HTTP/WebSocket 服务、统一核心运行时、Message DSL、脚本模式、托管/本地 OpenAI 兼容路线、trace 和 smoke tests。
下一步重点不是堆功能,而是把假设变成指标:连续性是否提升、通道迁移是否稳定、表达控制是否可解释、隐私边界是否可验证。
这是从私人维护工作区整理出的公开发布包。它保留了核心工程骨架和可运行体验,去掉真实记忆、日志、凭据、自动化记录、精确位置和模型下载内容。
shion-runtime 下执行 npm install、复制 .env.example 到 .env.local,再运行 npm run dev。
SHION_LLM_ROUTE=scripted 可离线开发;也支持 hosted 和 local_openai_compatible 两条 OpenAI 兼容路线。
main/docs 发布。
这个项目目前更准确的定位是 research prototype,而不是已经完成的产品。它提出一组关于长期 companion agent 的工程假设,并把这些假设落到可观测的 runtime 结构里。
长期连续性需要外部化状态。 如果 persona、memory summary、relationship state、reality state 和 response traces 被显式建模,agent 的连续性会比单 prompt 或纯聊天历史更稳定。
期待验证:跨会话恢复、窗口重开、模型切换后,核心身份和交互策略仍保持一致;失败时 trace 能指出丢失的状态层。
陪伴型 agent 需要先判断人类行为信号,再生成话语。 task intent、情绪信号、connection bid、boundary test、safety route 应该在生成前进入可解释的 appraisal 层。
期待验证:同一句输入在工作模式、陪伴模式、疲劳/深夜、情绪求助等状态下得到不同但可解释的响应计划。
结构化回复比裸文本更适合多通道 agent。 回复应拆成 message segments、emotion、expression state、typing performance、actions 和 state patch,而不是把 UI 语义藏进自然语言。
期待验证:同一 ShionResponse 可以被 PWA、未来聊天通道、debug renderer 复用,只在渲染层降级能力。
“人格表现”可以被部分工程化为受限认知机制。 AttentionGate、affective residue、ExpressionGate、repair loop 不是声称模型有主观体验,而是把偏置、遗漏、抑制、修复这些现象做成可检查变量。
期待验证:当系统显得冷淡、过度迎合、误解亲密信号或丢失上下文时,trace 能定位到 attention budget、dominant bias、lost signals 或 expression gate。
local-first 是亲密型 agent 的前提,不是附加功能。 越多真实生活上下文进入系统,越需要把敏感记忆、日志、位置、凭据和自动化状态留在用户控制的本地边界内。
期待验证:公开代码可复现架构,私人部署可保留个人连续性,两者通过明确文件边界和配置边界分离。
如果结构化状态不能改善跨会话稳定性,human appraisal 不能提升交互判断,DSL 不能降低通道耦合,trace 不能帮助定位失败,那么项目的核心假设就需要被修正。
很多 agent 失败不是单次模型输出差,而是上下文选择、记忆污染、通道丢语义、表达层失控、隐私边界不清共同造成。这个 runtime 优先让这些失败有名字、有位置、有记录。
表达状态和受限认知机制是交互建模与系统控制变量,不是主观体验证明。项目目标是建出可运行、可观察、可讨论的 companion-agent architecture。
Shion Runtime 不是孤立的幻想式设计,它更像把近几年 language agents、memory-augmented agents、cognitive architectures、affective computing 和 agent-computer interface 的若干线索合并到一个本地优先 companion-agent 原型里。
CoALA 把 language agent 放进认知架构视角:模块化记忆、结构化 action space、与内部记忆和外部环境交互的决策过程。Shion Runtime 对应地把 persona/context、state store、runtime actions、renderer capabilities 和 trace 拆成明确组件。
ReAct 强调 reasoning traces 与 actions 交错;SWE-agent 的 ACI 思路说明 agent 能力会受到接口形状强烈影响。本项目把“前端聊天”降级为 transport,把核心交互能力放在 ShionEvent、ShionResponse 和 tool/action-like payload 的接口设计上。
Generative Agents 展示了记忆记录、反思和检索对 believable behavior 的价值;MemGPT 从虚拟上下文管理角度处理有限 context;Reflexion 用语言反馈改进后续行为。Shion Runtime 当前对应为显式状态、context activation、reflection check、reroute 和 trace-first debugging。
Affective computing 的重点不是让机器“真的有情绪”,而是识别、建模、表达和回应 affective signals。项目中的 human appraisal、emotion、companion state、relationship move、expression state 属于这一脉络下的交互变量。
传统 chatbot 常把人格、记忆、风格和安全策略压在 system prompt 与聊天历史里。Shion Runtime 把这些拆到 runtime control plane:输入事件、上下文激活、状态补丁、回复 DSL、trace、renderer 降级。
task agent 优先优化任务完成率。companion agent 还要优化连续性、关系语境、表达节奏、现实感、边界感和不打扰策略,因此需要不同的 evaluation surface。
虚拟角色系统常强调视觉和剧情设定。这里的关键不是角色皮肤,而是长期运行时:persona source of truth、state evolution、model-provider abstraction、privacy boundary 和 traceability。
核心思路是让每个前端或未来通道都归一化成同一种事件,再走同一条运行时路径。这样人格、状态、模型、表达和调试不会被散落到不同 UI 里。
PWA 或未来 transport 把用户输入转成 ShionEvent。
核心运行时加载 persona/context 文件、关系状态、背景现实状态和历史状态。
脚本或 OpenAI 兼容模型生成内容,再经过反思、表达状态和 DSL 约束。
输出 ShionResponse、Message DSL、CharacterState 和 trace,前端按结构渲染。
core/负责事件处理、上下文加载、状态存储、Message DSL、trace、LLM provider、human behavior appraisal、reflection loop、expression shaping 和 reality background。
server/提供 HTTP/WebSocket 服务、认证配置、运行时配置和前端连接点。公开版保留通用配置,移除了私有部署路径。
frontends/pwa/React/Vite 应用负责登录、聊天体验、角色视觉资产、表达状态、debug 面板和 trace 查看。它不直接持有人格逻辑。
transports/ 与 renderers/通道和渲染器是适配层。未来 WeChat、桌面端或其他前端应该接入同一套 runtime,而不是复制一份人格系统。
人格和交互规则是显式文件,可版本化、可审查、可替换。
运行时维护本地状态,支撑长期互动,而不是只依赖模型上下文窗口。
回复不是裸文本,可包含分段、动作、表达状态和调试元数据。
trace 是一等输出,方便排查生成、状态、上下文和路由问题。
这一层面向 agent 开发者:重点不是“用了哪个模型”,而是模型前后的控制面怎么设计。Shion Runtime 把 LLM 当作可替换生成器,核心能力来自事件协议、状态演化、上下文激活、表达约束和 trace。
ShionEvent 是所有通道的入口它包含 source、conversationId、userText、attachments、RealityContext、ChannelCapabilities、session metadata 和 client state。这样 PWA、WeChat、Codex、automation 不需要各自发明一套人格逻辑。
ShionResponse 不只是文本输出包含 dialogue、emotion、expressionState、interactionMode、companionState、relationshipMove、statePatch 和 actions。自然语言只是其中一个字段。
MessageDSL 支持 dialogue/system/scene,content 可包含 text、small_text、status_card、button;performance 可描述 typing、pause、send gap;emotion 和 sticker/live2d 字段服务前端表达。
CharacterState 是长期交互的低维投影状态包含 emotion、mode、interactionMode、companionState、relationshipMove、memorySummary、cognition、lastInteractionAt、lastSource。它不是完整记忆库,而是每轮交互后的 runtime control state。
当前实现以 deterministic triage 为主,输出 surfaceIntent、emotionalSignal、relationshipDelta、safetyRoute、bidForConnection、stanceTest、confidence、evidence。它的作用是让系统先形成交互判断,再决定生成路线。
runtime 会根据 appraisal、用户输入、work-like signals、是否询问 Shion、现实相关信号等决定激活哪些 persona/context 模块。目标是避免每轮都塞入全部背景,同时让上下文选择可解释。
AttentionGate 会估计 attentionQuality、attentionBudget、dominantBias、intentDetection、salienceWeights;perceivedContext 记录 noticed/lost/distorted signals;affectiveResidue 带 charge、suppression、decay。
ExpressionGate 会根据 safety override、work/companion mode、attention state、residue pressure 决定 preferredOutput 和 blockedOutputs,再对 draft 施加约束,避免模型把表达风格和任务目标混在一起。
如果 draft 与 human appraisal、context activation 或 safety route 不一致,runtime 可以记录 reflection issues 并触发 reroute/revision。这个机制接近语言反馈式改错,而不是单次采样定生死。
trace 记录 inbound_received、triage、state_before、human_appraisal、context_loaded、attention_gate、expression_gate、llm_route、reflection、state_patch、response_ready、state_after 等节点。
公开版保留三条路线:scripted 用于离线开发和确定性测试,hosted 面向托管 OpenAI-compatible endpoint,local_openai_compatible 面向本地模型服务。provider 负责把 runtime context 编码成结构化 JSON 生成任务,并从不完美 JSON 中恢复可用 reply。
ChannelCapabilities 显式声明 richDsl、stickers、buttons、stateCards、live2d、cameraSignals。PWA 可以显示完整 DSL;弱通道可以只渲染文本和少量状态。这让多通道扩展不破坏核心协议。
Shion Runtime 的贡献点不在单个模型能力,而在一套 companion-agent runtime decomposition:把长期人格系统拆成显式协议、状态机、上下文选择器、情绪/关系 appraisal、表达 DSL、可替换模型 route 和调试 trace。它使“陪伴感”从纯 prompt craft 迁移到可测试、可审查、可迭代的工程对象上。
公开发布前已在本地完成一次工程检查。这里列的是这份公开包当前可复现的检查点,不包含私人工作区的敏感测试材料。
| 检查项 | 命令或范围 | 结果 | 说明 |
|---|---|---|---|
| TypeScript 类型检查 | npm run typecheck |
通过 | 确认公开包的 TypeScript 编译约束没有被整理过程破坏。 |
| 生产构建 | npm run build |
通过 | Vite PWA 可完成生产构建,静态前端资产生成正常。 |
| 运行时 smoke suite | npm run smoke 与各专项 smoke 脚本 |
通过 | 覆盖 context、human appraisal、LLM parse、reflection、world reroute、reality background 等路径。 |
| GitHub Pages | main/docs |
已构建 | 文档站点已配置为从仓库 docs 目录发布。 |
| 公开边界检查 | 手动整理与文件范围审查 | 通过 | 真实记忆、原始聊天记录、凭据、自动化记录、精确位置、日志和模型下载内容已从公开包移除。 |
这些 smoke tests 不是在证明“人格真实”或“长期关系成功”,而是在检查协议、上下文激活、LLM 解析、human appraisal、reflection、world-context reroute、reality background 等关键路径不会在公开包中断裂。
后续应该增加 longitudinal conversation sets、cross-channel replay、state recovery tests、privacy boundary tests、expression consistency scoring,以及人工标注的 interaction-quality rubric。
仓库已有 GitHub Actions 配置,后续可以在 README 与本页加入 CI badge,降低读者判断成本。
下一步建议补一组 PWA 首页、聊天界面、trace 面板截图,让项目理解速度更快。
可以补充 Windows/macOS/Linux 的安装差异说明,以及常见 npm、Node、环境变量问题排查。
这个项目最重要的发布原则是:展示系统设计,不展示真实用户生活。公开仓库应该只包含可复用工程、示例人格、示例配置和非敏感资产。
.env.example 与公开文档路线图按对外展示、工程成熟度、研究评估、长期生态四层推进。短期让别人更快看懂和跑起来,中期让 runtime 更稳定,长期把假设变成可复现实验。
补 README 截图、3 分钟 demo、CI badge、常见问题、首次运行检查脚本、GitHub issue labels、public trace examples,以及一个清晰的 “good first issue” 列表。
补 setup wizard、跨平台环境检查、记忆导入导出、隐私审计脚本、adapter API 文档、trace 浏览器、可配置模型路由、cross-channel replay 和 state recovery tests。
构建带人工标注的对话集,评估 continuity、attunement、boundary handling、task/companion mode switch、reality grounding、expression consistency、privacy leakage risk。
形成版本化 persona packs、更多 transport 插件、本地模型优化路线、可复现 benchmark、长期记忆安全策略,以及稳定 release tag 策略。
长期陪伴智能体需要工程化边界:人格、记忆、表达、状态、隐私和调试都应该可维护。
统一事件模型、Message DSL、expression state、trace-first debugging、local-first privacy boundary。