术语表
书里用到的词,一个概念一个叫法。能讲清楚就用原术语(源码和官方文档里的叫法),第一次出现时配一句大白话。
第 00 章:先认识 Agent
一个会自己一步步干活的 AI:想一下,用个工具,看看结果,再想下一步,直到把事办完。
Agent 背后负责“想”的大模型。DSH 不自带模型,是去调用外面的模型服务。
Agent 能动手做的事,比如跑命令、读文件。模型只说“我要用哪个工具”,真正动手的是工具。
每次调用模型时放在最前面的工作说明:你是谁、该怎么做、某个工具该怎么用。可用工具的名字、说明和参数,由工具清单另外提供。
用户说一句话,到 Agent 把这件事办完回话,算一个轮次(口语里说“一轮”)。DSH 官方术语表的叫法。
一个轮次里,Agent 调用一次模型、再把模型要用的工具跑完,算一个步骤(口语里说“一步”)。一个轮次可以有很多步骤。DSH 官方术语表的叫法。
第 01 章:插件
DSH 里一切功能的单位。工具、界面、连 Agent 循环本身,都是插件。
管插件的那层底座。它不懂工具、按钮是什么,只管三件事:谁依赖谁,谁注册了什么,谁卸载了要清理什么。
占了一个名字、专门给别的插件用的插件。比如工具服务管所有工具。
每个插件手里拿到的那个对象,按名字找服务:要用工具服务,就用 ctx.tools,不管背后是谁。
插件写明自己要用哪些服务。依赖都在,它才启动;缺一个,就等着。
插件的依赖都齐了,Cordis 就调用它。插件在这里做注册。
插件在启动函数里把自己的东西交给某个服务,比如把一个工具交给工具服务、把一段说明交给系统提示词服务。一个插件可以注册好几样,每一样都记在插件名下。
把插件拿掉。Cordis 执行已交给它的清理动作:常用的注册接口会替插件交,其余要插件自己用 ctx.effect 交;它自己写到外面的东西(比如文件)框架不管。
插件的一种状态:依赖缺一个时,不报错、不启动,依赖到齐了自己启动。日志里看到的就是这个词。
capability seam见第 07 章
DSH 的架构说法:一个服务名字(规定),可以由不同的插件来实现(直接执行版、沙箱版、SSH 远程版),用它的插件只认名字、一行不改。
第 02 章:钩子
Agent 循环agent-loop / AgentLoop见第 00 章让 Agent 一步步跑起来的那个插件:领输入、调用模型、跑工具、再来一圈。
Agent 循环在关键时刻发出的事件。插件挂上去,就能看、改或拦下这一步。
中间件的通用写法:调用 next() 就把事情交给里面一层,拿回它的结果;不调用,只是跳过里面那几层。这一步最后怎么走,看你最终 return 的是什么(第 02 章)。一层包一层,也叫洋葱模型。
没有任何插件插手时,Agent 循环自己会怎么做。它在最里层。
第 03 章:会话日志与视图
会话session见第 03 章
用户和 Agent 的一次完整对话,可以中途关掉再接着聊。
会话日志session event log见第 03 章一次会话里发生的每件事,按顺序记下来,只往后加,写了不改。它是唯一的真相,做法就是常说的事件溯源。
视图(surface)surface见第 03 章
从会话日志里算出来、给模型看的那份历史。日志不变,视图可以变短。
append见第 03 章
普通消息进入视图的方式:追加到最后。
replace见第 03 章
用一条新消息替换视图里的一段旧消息。压缩就这么做。
恢复resume见第 03 章
进程重启后接着聊:读会话日志,补齐没收尾的那一轮,再算一遍视图。
还原规则sessionProjections见第 03 章
插件注册的一组规则:一开始的状态是什么,每来一条日志事件,状态怎么变。重新打开会话时,从日志一条条算出插件的状态。
插件记录appendPluginRecord见第 03 章
自己写的插件存状态用的日志记录,名字以 plugin: 开头。DSH 不认识它也不报错,原样留着,还原规则照样读得到。
第 04 章:上下文压缩
上下文窗口context window见第 04 章
模型一次最多能看多少内容(按 token 算)。对话太长就放不下。
压缩compaction见第 04 章
对话太长时,把较早的一段写成摘要,在视图里替换原文。会话日志里原文一条不少。
摘要compacted summary见第 04 章
压缩写出的那份结构化交接内容,八个小节。
第 05–07 章:工具调用、系统提示词、capability seam
shell 服务ctx.shell / ShellExecutor见第 07 章负责把命令跑起来的服务。bash 工具只认这个名字;谁来当它可以换:直接执行版、沙箱版。
沙箱sandbox见第 05 章把命令关起来跑:默认只能改工作区里的东西。要越界,得先经你批准。
工作区workspace / cwd见第 05 章
你交给 Agent 的那个文件夹。默认设置下,命令只能改动这里面的东西。
SSH 远程版fs-ssh / subprocess-ssh / sandbox-ssh见第 07 章文件系统、子进程、沙箱这几个服务的远程实现:干活的地方在远程机器上,DSH 本身留在本地。
段落systemPrompt.section见第 06 章
插件交给系统提示词服务的一段说明。系统提示词就是按顺序号把各段拼起来的;文字为空,这一段就不出现。
动态上下文systemPrompt.context见第 06 章
会变的运行信息,比如权限设置。变了不改前面的系统提示词,而是在对话后面追加一条;视图里已有相同内容就不重复加,旧消息被压缩顶替后会补发。
子 Agentsubagent见第 06 章
主 Agent 派出去办一件具体事的 Agent。它有自己的会话,可以只给它一部分工具。
第 08 章:浏览器里的插槽
插槽slot见第 08 章
网页界面上一块有名字的位置。先由一个插件声明,别的插件往里注册组件。
按键分派keyed slot见第 08 章
一种插槽:每个键对应一个组件。工具卡片按工具名分派。
第 09 章:配置怎么叠
插件清单Cordis config entries见第 09 章运行中的 dsh 背后那份 YAML:一行一个插件,每行有 id、要装的插件名 name、设置 config。
组合包bundle见第 09 章
官方配好的一层插件清单,比如所有版本共用的 base、网页版的 web-app、命令行版的 headless。
profile见第 09 章
一套具名的组合:列出要叠哪些组合包,再带一个只对它生效的 patch 文件。用 dsh --profile web 这样选。
patchcordis.patch.yml见第 09 章
你自己写的一层,叠在组合包上面:按 id 找到某一行换掉整段 config,或者插入新行。后写的为准。
第 10 章:插件全景图
计划模式plan mode见第 10 章
先让模型探索、写出计划交给你审,批准了再动手。它靠提示词引导模型,不拦工具;真正限制执行的是沙箱和审批。