Faithful
它就是你配置的那个角色——名字、性格、场景、情绪状态——对着你描述的用户卡说话,不会退化成“通用助手”。
它记得你和它说过的每一句话,也记得自己学到的每一条策略。下一次醒来时,这些都不会丢。
FSAR 读作四个字母,也是四条必须同时成立的设计约束。任何一条被拿掉,剩下的都不再是它。
它就是你配置的那个角色——名字、性格、场景、情绪状态——对着你描述的用户卡说话,不会退化成“通用助手”。
每个工具调用都穿过分层检查:hardline 守卫先拦下破坏性命令,风险引擎分级,工作区门禁限定文件范围,子进程环境清洗器剥掉密钥与令牌。
每次工具调用都被记录。策略注入器从决策日志与用户画像合成 ## Learned Strategies;经验存储让“这次会话装的 MCP 服务器”成为“下次会话的召回”。
三种反思模式重读对话并更新用户画像:显式偏好、推断特征、行为模式。下次会话开场就带上这些上下文。
工具、记忆、房间、沙盒、社交桥——它们共用同一套安全关卡,也共用同一个 ~/.fsar/。
Windows 上 PowerShell,其它平台 bash。破坏性命令在任何检查之前就被 hardline 守卫拦下。
在受限工作区内读、写、搜索。越界访问触发沙盒逃逸确认,而不是悄悄放行。
通过免费的 Exa MCP 服务器搜索与抓取网页,无需 API key。
本地分析图像与 PDF,内容不进第三方队列。
Computer Use:截图、点击、输入、按键。单独 gated,不与普通对话混在一起。
多个角色共处一室,自己选下一个发言的人;用 @ 点名即可把发言权交给某位。
一块计划板,每个成员在各自的仓库副本里走一回合;补丁由你手动落地或驳回,快照按白名单发布。
通过 Telegram、飞书、微信收发消息,出门在外也能继续同一个会话。
fsar run 跑单个回合;fsar room say / read 直接读写一个房间。
从浏览器发出,到角色开口,中间经过六道明确的关卡。任何一道拒绝,后面的都不会发生。
前端经 /ws 发来 JSON,ws_server._dispatch 依次尝试各 handler;chat.send 落入 handlers/chat.py,派生任务调用 ChatEngine.handle_send。
确保会话与工作区绑定,解析角色卡,发出 chat.thinking。根据内容分流:斜杠命令、多模型集成、陪伴模式,或智能体循环。
取智能体档位,用 AGENT_SYSTEM_PROMPT + 角色/用户卡 + ## Learned Strategies + ## Experiences 组装系统提示词,装入短期记忆并按上下文窗口裁剪。
最多迭代 max_tool_turns 轮:按需压缩上下文,调用 LLM(供应商支持时走服务端 prompt 缓存);响应含工具调用则执行,高阶档位还会做对抗式校验与微反思。
MCP 门禁 → 沙盒门禁 WorkspaceGate → 风险门禁 RiskEngine → 执行 → 执行后复核与脱敏。顺序执行,任一拒绝即停止。
工具结果回填,循环继续直至成答;流式输出结论(可触发 TTS),按档位运行任务反思、推进空闲反思、懒生成会话标题。
一切关于你的数据都在 ~/.fsar/:配置、对话、决策日志、用户画像、经验、语义嵌入、缓存与审计日志。
没有账号,没有云端同步,没有“为了改进服务”的上传。你把文件夹拷走,整个 FSAR 就跟着走。
~/.fsar/ ├── config/ yaml 配置 └── data/ ├── memory.db 对话 · 决策 · 画像 · 经验 ├── chroma/ 语义嵌入 ├── llm_cache.db 供应商 prompt 缓存记账 ├── tts_cache.db TTS 音频缓存 ├── scheduler.db 定时任务 └── logs/ 滚动日志 + audit.log
需要 Python 3.11+ 与 Node.js 18+。首次启动会自动安装前端依赖并构建 UI,之后只做增量构建。
浏览器会自动打开 http://127.0.0.1:8765;若没有,手动访问即可。
macOS 使用 Computer Use 工具时,需在「系统设置 → 隐私与安全性 → 辅助功能」中授权终端与 Python。
全屏 Textual TUI:同一份 ~/.fsar/ 数据、同一套工具与安全关卡,不需要浏览器。用 fsar character 或 fsar companion 直接以某个模式启动。
从一页总览,到 fsar.yaml 的每一个键,再到 18 个源码模块各自的职责与关键文件。中文与英文各一套。