DeepSeek Harness 事件域语义:会话是事实日志,agent 是实时事件通道
DeepSeek Harness 事件域语义会话是事实日志agent 是实时事件通道【免费下载链接】deepseek-harnessDeepSeek Harness: Everything is a Plugin.项目地址: https://gitcode.com/gh_mirrors/de/deepseek-harness本篇技术指南解析 DeepSeek Harness 内部一条贯穿智能体循环agent loop、持久化与会话回放的架构约定session/*、agent/*、tools/*三个事件域如何各司其职以及持久的可回放事实是SessionEvent实时拦截或瞬态/活对象信号是agent/toolsCordis 事件这条边界规则。读完你将掌握事件到底应该写入会话日志还是作为实时事件发出、轮次/步骤边界为什么只能从session/event读取、以及作为插件作者或 Claude Code / Codex 钩子桥接的开发者在编写监听器时应如何选择订阅面。本文以仓库内已实现的架构决策记录 2026-06-30-event-domain-semantics.zh.md 为核心骨架并结合packages/core/session与packages/core/agent-loop的源码实现加以印证。背景事件域边界为何需要被固定DeepSeek Harness 通过 Cordis 事件分类体系扩展 agent loop详见微内核事件分类体系 Agent Note。随着该分类体系不断增长三个事件域之间的界限开始变得模糊session/*承载持久的、事件溯源的日志SessionEventMap。agent/*承载运行时实时信号向插件传递Agent句柄。tools/*承载工具注册表与执行流水线。两个具体问题促使团队固定语义。第一若干轮次/步骤边界此前同时作为持久的SessionEventturn/start、turn/end、step/start、step/end和镜像的agent/*emitagent/turn-start、agent/turn-end、agent/step-start、agent/step-end存在。消费方对同一事实拥有两个真源每次生命周期变更都必须同时更新两处极易产生不一致。第二钩子子系统需要一个连贯且有文档的订阅表面——插件作者以及基于其上的 Claude Code / Codex 钩子桥接必须在不阅读循环代码的情况下知道应该监听会话事件还是 agent 事件以及为什么。这套词汇是拦截决策、持久的hook/*日志以及 Claude Code 和 Codex 桥接的共同基础。决策三个域各司其职session/*——持久的、可回放的事实日志session/*域拥有SessionEventMap。在源码中该映射定义于 packages/core/session/src/types.ts其中四个边界事件被明确声明为持久事实export interface SessionEventMap { // ... turn/start: { turn: number } turn/end: { turn: number; reason: TurnEndReason } step/start: { turn: number; step: number } step/end: { turn: number; step: number } }该域遵循三条约束每条记录仅含 JSON不含活对象——事件可以序列化、落盘、回放不依赖运行时内存中的对象身份。每次追加触发一次session/eventemit并伴随session/flush并行持久性检查点保证日志在持久化层面可被安全追踪。它是实时 transcript文本记录的唯一源想渲染或响应已发生事件的消费方在此订阅因此实时渲染与回放投影共享同一条路径——实时看到的、与回放得到的是同一份数据不存在两个真源。此外轮次中途的 steering转向指令作为持久的user/message存在于会话日志中Assistant stream 的证据只在一个assistant/message或assistant/attemptsettlement 内才变为持久事实。这些事件类型同样定义在 types.ts。agent/*——运行时实时表面agent/*域始终携带活的Agent用于实时拦截与观测。从 packages/core/agent-loop/src/agent.ts 的实现可以归纳出它的具体成员拦截 waterfall瀑布式事件agent/pre-step见 agent.ts、agent/request见 agent.ts、agent/request-error见 agent.ts负责变换、拒绝或恢复请求。awaited 停止观测agent/turn-stopping通过dispatch.serial被串行等待见 agent.ts用于观察停止边界。瞬态 emit报告生命周期、状态、inbox 插入、领取与丢弃、错误以及进程本地的agent/assistant-streamframe见 agent.ts。关键界限轮次和步骤边界不在此处——它们是从session/event读取的持久 Session event不再由agent/*镜像。tools/*——工具注册表与执行流水线该域负责工具注册表与执行流水线相关信号与持久会话日志无关本文不展开。边界规则用一条规则统一三个域持久的、可回放的事实是SessionEvent实时拦截或瞬态/活对象信号是agent/toolsCordis 事件。推论轮次或步骤边界是持久事实因此存在于会话日志中并从session/event源读取——不会被镜像为agent/*emit。这条规则是判断一切事件归属的决策判据信号特征归属域典型事件持久、可回放、纯 JSONsession/*turn/start、turn/end、step/start、step/end、user/message、assistant/message实时拦截、变换、拒绝/恢复agent/*agent/pre-step、agent/request、agent/request-error瞬态/活对象信号、进程本地流agent/*agent/turn-stopping、agent/assistant-stream、生命周期与 inbox 相关 emit工具注册与执行流水线tools/*工具注册表相关事件将规则应用于边界镜像四个镜像事件被移除将上述边界规则落到曾经的双重记录实现上结论非常明确全部四个边界镜像——agent/turn-start、agent/turn-end、agent/step-start、agent/step-end——被移除。原因与证据如下没有生产消费方需要在边界处获取活的Agent。ACPAgent Client Protocol桥接将其进行中的提示词与精确对应的session/eventturn/start/turn/end事件对关联其他 transcript 消费方同样从持久流派生边界。这一决策由移除边界镜像事件 Agent Note 负责记录与执行。移除 emit 简化了循环的closeStep/closeTurn各只需一次 append无需配对 emit。closeStep仅追加step/endcloseTurn仅追加turn/end不再存在日志一份、实时一份的双写问题。在 packages/core/agent-loop/src/agent.ts 中可以验证当前实时事件集合只包含agent/pre-step、agent/turn-stopping、agent/assistant-stream、agent/request、agent/request-error等而四个边界镜像事件不再出现——与文档所述已移除状态一致。后果与实现细节循环行为从双写到单写循环不再 emit 任何边界镜像closeStep仅追加step/endcloseTurn仅追加turn/end。Session.append负责post-commit observer 隔离抛出异常的边界 observer 无法改变轮次结果也不会饿死后续消费方但事件接纳失败或内部校验失败仍会在边界进入日志之前向外抛出——失败可见性没有被吞掉只是与 observer 的行为解耦。stepOpen标记的语义变得精确循环仅在append(step/start)返回后才标记步骤已打开stepOpen true。内部分发校验在日志推入之前运行可能在不打开步骤的情况下拒绝post-commitsession/eventobserver 的失败被隔离在Session.append内部。因此该标记精确表示已提交的、欠一个后续step/end的边界。测试迁移行为随测试一同迁移之前通过已移除 emit 观察边界的测试现在观察持久的turn/start/turn/end/step/start/step/end会话事件——它们所锁定的行为边界顺序、步骤计数不变只是读取的源移到了规范源。而那些抛出异常的轮次边界 emit 监听器的用例被删除因为该代码路径不再存在没有 emit 可供抛出。这遵循了根目录 AGENTS.md 中测试记录行为而非黄金真相的原则行为与其测试一同迁移或一同消亡测试断言的是行为本身而不是某个实现巧合。事件表面收敛生成的 Cordis 事件表面docs/subsystems 各页不再列出镜像事件。这意味着所有面向插件作者的事件文档都与实际运行时行为一致不存在文档里写着、代码里没有的幻影事件。例外agent/steering单独处理agent/steering它不是边界镜像不在本文档的移除范围内它由后续的移除agent/steering镜像 emit Agent Note 单独移除——因为它镜像的是持久的中途 steeringuser/message属于同一类持久事实被重复实时镜像的问题但生命周期与边界事件不同需要独立决策与迁移。对插件与桥接开发者的订阅指南基于上述语义订阅决策可以简化为一条经验法则需要渲染、回放、统计或审计已经发生的事情包括轮次/步骤边界、消息、转向指令→ 订阅session/event从持久SessionEventMap读取。需要在事情发生前拦截、变换或拒绝请求级→ 订阅agent/pre-step、agent/request、agent/request-error这类 waterfall。需要观测停止边界或进程本地的流式帧→ 订阅agent/turn-stopping、agent/assistant-stream。只要遵循持久事实进会话日志、实时信号走 agent 事件的规则插件作者和 Claude Code / Codex 钩子桥接就不需要阅读 agent loop 的实现代码也能准确判断监听对象。延伸阅读事件域划分的上游依据微内核事件分类体系 Agent Note会话事件溯源的总体设计事件溯源会话 Agent Note移除边界镜像事件的完整实现说明移除边界镜像事件 Agent Note移除agent/steering镜像的后续决策移除agent/steering镜像 emit Agent Note事件类型与SessionEventMap的源码定义packages/core/session/src/types.tsagent 实时事件的实际实现packages/core/agent-loop/src/agent.ts测试与实现的原则约定AGENTS.md【免费下载链接】deepseek-harnessDeepSeek Harness: Everything is a Plugin.项目地址: https://gitcode.com/gh_mirrors/de/deepseek-harness创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

搞懂c4d渲染设置图解原理,这3个坑让你少熬3个通宵

搞懂c4d渲染设置图解原理,这3个坑让你少熬3个通宵

搞懂c4d渲染设置图解原理,这3个坑让你少熬3个通宵 看了一堆教程还是不会写项目?别急,问题不在你笨,在于那些视频只教了“怎么点”,没讲透“为什么”。今天咱们不背参数,直接上 图解原理 ,把C4D渲染设置里最折磨人的三个深坑挖开。…

2026/9/21 19:42:07 阅读更多 →
快播伦理电影下载源码解析:3个坑教你搞定后端调试

快播伦理电影下载源码解析:3个坑教你搞定后端调试

快播伦理电影下载源码解析:3个坑教你搞定后端调试 复制来的代码跑不通不知道怎么调?别急着删库,90%的问题出在环境依赖和配置上。今天用 快播伦理电影下载 这个典型场景做 源码解析 ,从后端视角拆解下载逻辑,帮你3分钟定位错误根源。…

2026/9/21 19:42:07 阅读更多 →
69bj实战项目避坑:3个底层原理救你面试

69bj实战项目避坑:3个底层原理救你面试

69bj实战项目避坑:3个底层原理救你面试 刚毕业找工作的同学,是不是经常遇到这种尴尬?简历上写着“精通MySQL”,面试官问一句“索引失效的场景有哪些”,你大脑一片空白;或者写着“熟悉Spring”,问个“循环依赖怎么解决”,你只能支支吾…

2026/9/21 19:41:07 阅读更多 →

最新新闻

可再生能源与电动汽车协同调度模型研究

可再生能源与电动汽车协同调度模型研究

1. 项目背景与核心价值去年参与某省级电网的智慧能源项目时,我第一次深刻体会到电动汽车充电负荷对配电网的冲击。当某小区同时有30辆电动车在晚高峰充电时,变压器温度报警触发了三次。这促使我开始关注如何利用可再生能源的波动特性来平抑充电负荷曲线&…

2026/9/21 20:19:24 阅读更多 →
天天好逼网性能优化从入门到精通:3步解决面试原理卡壳难题

天天好逼网性能优化从入门到精通:3步解决面试原理卡壳难题

天天好逼网性能优化从入门到精通:3步解决面试原理卡壳难题 面试被问“天天好逼网”底层并发模型,你脑子一片空白?别慌,这不仅是你的问题,也是无数开发者从入门到精通路上的坎。很多人盯着业务代码写,却忽略了性能瓶颈背后的原理,导致一到面试就露怯。…

2026/9/21 20:19:24 阅读更多 →
Pixel一键刷入KernelSU自动化工具实测:原理、踩坑与配置

Pixel一键刷入KernelSU自动化工具实测:原理、踩坑与配置

如果你手上的 Pixel 还在走“下工厂镜像 → 解包 payload.bin → 抠 boot.img → patcher 修补 → 再 fastboot 塞回去”这条老路,我强烈建议你停下来看完这篇。磨了一下午得到的结果,往往只是把一台设备从 A 版本升到 B 版本,下个 OTA 一来又…

2026/9/21 20:19:24 阅读更多 →
3个坑解决网站公司环境卡死,手写实现核心逻辑

3个坑解决网站公司环境卡死,手写实现核心逻辑

3个坑解决网站公司环境卡死,手写实现核心逻辑 配置环境就卡半天,依赖包冲突、版本不匹配、端口占用,这些问题在接手【网站公司】遗留项目时简直是家常便饭。很多新人对着报错日志抓耳挠腮,其实核心问题往往出在启动流程的隐性依赖上。与其反复重装…

2026/9/21 20:19:24 阅读更多 →
解决未能恢复iphone发生未知错误3194的完整示例

解决未能恢复iphone发生未知错误3194的完整示例

解决未能恢复iphone发生未知错误3194的完整示例 学会语法却不知怎么搭项目,是无数开发者从新手迈向工程师的坎。今天咱们不聊虚的,直接拆解【未能恢复iphone发生未知错误3194】这个让无数果粉抓狂的报错。这不是玄学,是底层机制在抗议…

2026/9/21 20:19:24 阅读更多 →
WSL2与云服务器部署Hermes Agent实战:从环境搭建到调试

WSL2与云服务器部署Hermes Agent实战:从环境搭建到调试

先交代一下背景。如果你最近在折腾本地大模型、自动化工作流,或者想把 Agent 类服务从笔记本迁到服务器上跑,那你大概率听过 Hermes Agent 这个名字。它本质上是一个能承载工具调用、多轮任务编排、模型调度的运行时框架,底层可以对接 OpenAI…

2026/9/21 20:18:24 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →