Folio(兰亭)@nyantused/folio-dsh-events:会话协议事件插件——新会话入口提醒 + 会话关闭自动 save;与 @nyantused/folio-dsh-tools 配套使用。
安装
# npm 包(预构建)
dsh plugin --profile web add @nyantused/folio-dsh-events
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:nyantused-cpun/folio#path:/plugins/folio-events
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
P1 实施 M3(2026-08-14)。把 AGENTS.md 会话纪律机械化(「纪律变机械」第一步)。
1. 行为面(v1.0.1 两条)
| 触发 | 事件(官方词汇) | 行为 |
|---|---|---|
| 新会话 | agent/session-start(notification) |
agent.followup(createUserMessage(...)) 注入入口协议提醒,唤醒模型跑 folio_session_start |
| 会话关闭 | agent/disposed(notification) |
从 agent.session.events 倒序扫描 tool/call(folio_session_start/folio_save 的 arguments)提取客户名,自动 spawn .venv python _cli.py save <client>(60s 冷却防重复事件)——会话结束协议机械触发 |
作用域隔离(2026-08-15):本插件挂在 pre-sales preset 层,仅「售前助手」模式生效;原
session/event实时观察依赖 root scope 广播,preset 内收不到,故改为 disposed 时扫描会话事件。
2. 接口依据(rc.8 逐行核实)
agent/session-start/agent/disposed:dsh-agent 官方 live 词汇(non-vetoing);tool/call会话事件形状{turn, step, callId, name, arguments}:dsh-agent-loopappendToolCall(session.append("tool/call", ...));agent.followup(message):dsh-agent 入队原语(next-turn FIFO 唤醒);createUserMessage:dsh-llm/message 依赖最小入口(mint MessageId,形状正确);- spawn 形态保持 guard CLI 白名单契约(
.venv python _cli.py)。
3. v1 刻意不做(v2 候选)
turn/end中途冷却 save:中途 save 与模型手动 folio_save 写竞态(task_history/context.md 无跨进程锁),dispose 时机是协议正点,先只做它;agent/session-start自动执行入口协议(自动跑 recall/load):v1 只注入提醒(客户名需模型从用户消息判断);v2 可在提醒被消费后由模型行为数据驱动自动化。
4. 验证
- 沙箱内:
node --check index.js state.js+node test/run-check.mjs(2026-08-14:7/7 通过;2026-08-20:rc.8 源码复核 + import 冒烟通过); - 运行级(待 dsh web 重启):新会话第一条消息后应出现【兰亭入口协议】提醒;会话关闭后宿主日志出现
[folio-events] auto-save行。
5. 已知限制
- host 插件改动需重启
dsh web生效; - 客户名提取依赖模型调用过 folio_session_start/folio_save(否则 dispose 时无客户名、跳过自动 save——日志会注明);
- 事件 payload 形状按 rc.8 源码 + 防御式解析编写,DSH 升级后需按漂移复测(verifiedAgainst 记录在 package.json)。
6. 目录
plugins/folio-events/
index.js 插件体
state.js 纯逻辑(extractClientFromToolCall/makeCooldown,零依赖)
cordis.patch.yml 激活 patch(preset 层挂载由 install-folio-plugins.ps1 管理,此文件仅供参考)
package.json
test/run-check.mjs
README.md
7. 变更记录
- 0.1.0-rc.1(2026-08-14):M3 初版——三条行为 + 纯逻辑单测;冷却器首次调用放行 bug 当场修复。
- 1.0.1(2026-08-15):作用域隔离改造——插件移入 pre-sales preset 层;
session/event实时观察改为agent/disposed扫描agent.session.events提取客户名;发布版保留FOLIO_HOME/上溯_cli.py路径解析,不硬编码作者路径。
链接
同类插件
Q00/ouroboros#integrations/dsh-plugin★ 6128
通过 DSH MCP 客户端挂载 Ouroboros 的纯配置包,在 DSH 中提供 36 个涵盖需求访谈、Seed、执行、评估与演化流程的工具。
loopx-project/loopx#dsh-loopx-plugin★ 6087
LoopX——面向长周期 Agent 的提供商中立、本地优先状态内核与控制平面:在 DeepSeek Harness 执行层之上持久化 Goal、Todo、门禁、证据、配额、恢复与交接状态;插件负责引导安装 CLI 与技能、准入有界的同会话续跑,并为精确绑定的工作循环提供本地 GoalBar。
chuspeeism/dashi-taskboard#deepseek-harness★ 3253
把当前已安装并运行中的 Codex Taskboard 嵌入 DeepSeek Harness 侧边栏,并通过 Launcher 运行时描述文件连接,而不是使用固定端口。
NanmiCoder/dsh-agent-teams★ 1839
AgentTeams 多智能体团队。
EthanYoQ/AI-Novel-Writer#dsh-ai-novel-writer★ 1181
安装专用 AI 小说创作预设与工作台:提供带修订号的本地项目资产、紧凑侧边工作台,以及需要原生审批的逐文件变更。
tong-io/tongflow#dsh-tongflow★ 1034
基于 TongFlow 的“片场”插件,用于图片、配音、音乐与视频制作:agent 为每个资产生成 TongFlow 工作流文件(.tongflow.json)并通过 TongFlow 插件执行,内嵌工作流画布,按镜头/角色/take 组织项目,附漫剧模板;以 @tongflow 开头的会话进入 Studio 界面。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。