Files
dc-docs/output/feishu-docs/HkYPwjIpBiQFeVknIqac7pk4n0e.md
T
2026-06-23 14:43:31 +08:00

33 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HkYPwjIpBiQFeVknIqac7pk4n0e
Source: https://ocnmca6f1o0p.feishu.cn/wiki/HkYPwjIpBiQFeVknIqac7pk4n0e
## 工作内容概述
1、学习分析Claude Code、Hermes Agent、OpenClaw这个AI Agent机制实现的差异
## 一、上下文管理
- **会话内**:围绕当前任务串成一条主线,工具调用结果按时间顺序往里接;快把上下文窗口占满时,会自动压缩整理,并留下能看懂的检查点。遇到子任务会开并行时间线去跑,不让探索过程的细枝末节冲乱主线。权限判断这类旁路工作,会单独用一份裁剪过的对话片段来做,不和主上下文搅在一起。
- **会话外**:没有统一的记忆模块,长期需要记住的东西,就靠仓库里常规的 Markdown 和文档,由人或 Agent 自行维护。好处是灵活、和工程目录融为一体,缺点也很明显:膨胀了没人管,得靠 Git 评审这类手段来兜底。
- **会话内**:按聊天时间线自然推进,内置用量感知,一旦超过比例阈值就触发压缩。压缩时会刻意保留开头几条和末尾几条,中间部分做收束;很早之前的工具长输出,通常被替换成一句简短说明,腾出空间但不假装那部分内容还在。
- **会话外**:在固定位置维护两份 Markdown 笔记——一份记“事实记忆”,一份记“用户偏好”。条目之间用固定分隔符分段管理,像一张张小卡片,方便追加、替换或删除某一条,不用整篇重写。两份文件都有明确的字符上限,超了就直接拒绝写入,逼着模型先精简再存。写入前还会做安全扫描,防止注入或不可见字符混进去。每次会话开始时,会把这些磁盘内容读进来形成一个快照,同一会话中途新写入的记忆,不一定立刻反映到当前对话里,得新开一次会话才会稳定对齐。此外还配有 SQLite 加全文检索,专门用来搜历史会话,和那两份日记是两个独立层次。
- **会话内**:照常维护当前通道的对话时间线,同时在后台按分钟级周期做整理,把短期积攒的候选记忆排序、晋升或清扫掉,不让整理动作卡在用户每句话的响应上。像心跳检测、后台唤醒这类维护任务,会单独用一个独立会话身份去跑,完全不会搅乱主对话的上下文。
- **会话外**:把 MEMORY.md 当成工作区的核心记忆文件来对待,和插件状态联动管理;另外还会维护一份 USER.md 用户档案。需要更强记忆能力时,可以接入向量库,实现自动捕获和按需召回,精准补充到上下文里。还有一个记忆巩固系统,会周期性地把短期候选记忆整理成连贯的叙事,沉淀到 Markdown 长期层。
- **风险**:MEMORY.md 如果长期只追加不清理,会有膨胀隐患,需要自己制定归档和压缩策略。
## **二、技能与工具**
- **技能**:以技能包的形式存在,能感知文件变化,避免改完还用旧缓存。元数据里可以指定想用的模型,系统会自动对齐上下文窗口和压缩策略,不会出现“换了技能却配了短上下文模型”的情况。调用上,有专门入口,用到时拉进会话,不会一直占着上下文。
- **工具**:按文件、终端、检索、浏览器、MCP 桥接、子代理等领域拆分实现。权限是第一公民,每个调用都落到“允许/拒绝/询问”的框里;MCP 工具名有可预测的规则,方便批量设置策略。工具返回结果有体积限制,防止撑爆窗口。
- **优势**:安全逻辑一致,工具再多也容易说清边界;技能和模型深度绑定,适合按技能切换模型或成本策略;编码场景工具链完整,MCP 生态接入顺畅。
- **技能**:技能统一放在用户目录下的技能库里,首次安装可以把自带技能拷进去。格式上兼容社区规范,方便复用别人写好的技能包。加载方式是渐进披露:先只给模型一份很短的名录或摘要,必要时再展开某个技能的详细说明,再往下才按需加载子文档,这样避免了技能说明一口气填满上下文。元数据还支持条件激活,比如只在特定工具集可用时才让技能出现,减少无效干扰。
- **工具**:启动时会把所有工具模块扫描注册到一个中心表里,记录名字、参数、处理逻辑、可用性探测和结果最大长度。有些工具依赖本地环境(比如有没有容器、浏览器),会先探测再短暂缓存,决定这次要不要暴露给模型,避免列一堆用不了的工具。执行都在持久事件循环上异步跑,结果回填并限长。内置工具数量不少,需要留意工具定义占用的系统指令体积。
- **优势**:技能生态友好,目录固定、格式兼容、渐进加载,适合走技能市场路线;工具治理清晰,注册表统一管着定义、执行和上限;自托管和网关组合场景下,仍然有一套中心化的装配逻辑。
- **技能**:没有单独建一套类似 Hermes 的三级技能体系,更偏向让模型直接用“读文件”的能力,按名称去加载工作区里的技能文档(技能内容还是 Markdown,只是入口偏工具化)。插件带来的能力会作为插件工具合并进总工具列表,和核心工具一起做去重,避免同名重复注册。
- **工具**:工具集通过工厂模式组装,先形成核心集合,再按运行模式(比如是否嵌入式)裁掉不合适的,最后合并插件工具。提供显式的 allow/deny 列表,在工厂阶段就可以拒绝暴露某些工具,属于“默认面宽、部署时可收紧”的思路。统一调用前钩子可以挂审计、限流等横切逻辑。工具实际落地时绑定工作区沙箱和文件桥,防止网关工具越界。并行通过会话衍生或子代理类工具实现,与主会话的边界由产品设计约束。
- **优势**:部署时能很方便地控制最小工具面,运维友好;新能力常以扩展包加工具的形式分发,和网关定位契合;核心与插件职责分得清楚,主仓和扩展的边界明确。
## **三、多智能体协作**
通过子任务的方式把工作交给另一套Agent,创建时就带上权限参数,防止子任务拿到比父任务更宽的权限。可以是在进程内协作、终端独立面板、IDE 窗格等隔离载体,本质是找个干净环境跑子任务,不堆在同一条消息里。子任务有自己独立的上下文,和主任务对话列表分离,这样探索过程的细枝末节不会冲乱主线。跑完后结果压缩回填,父任务只看到提炼结论,这样就不被中间噪声污染。
模型通过委托工具发起子任务,系统会发出事件信号,方便 UI 或网关展示进度。子代理独立上下文,必要时配合代码执行等隔离环境。设计上明确限制子代理不碰父子共享的长期记忆文件,避免多个代理同时改同一本笔记产生冲突或泄露。子代理产出以普通工具结果的形式回填,父模型继续编排,整体仍走统一工具注册和消息时间线。
通过子代理工具或会话衍生工具在网关侧创建子会话,子会话在网关内运行,完成后结果回投主会话,用户在对应通道看到汇总。
## 四、开发语言
全栈 TypeScript,从 CLI、IDE 插件到底层协议都用同一门语言。复杂工具链里类型系统是实打实的好处。schema、权限枚举、消息结构这些在重构时不容易悄悄崩掉,前后端还能共用一套类型定义。打包成单入口 CLI、跟编辑器深度集成,也都是 TS、JS 生态里很成熟的路径。
核心用 Python 做 Agent 的逻辑编排,异步 IO、胶水脚本、对接各类 HTTP、IM、任务队列库都很顺手,迭代 prompt 或适配新工具时改起来快。前端和 UI 部分则用 TypeScript,各自发挥强项。代价是要同时维护两套技术栈,CI、依赖升级、类型共享都得双线作战,更适合愿意接受“前后端分离”的团队。
使用TypeScript语言开发,网关、插件、配置 UI 全放在一个仓库里。核心协议一改,所有依赖包立刻感知,不会出现接口变了但 UI 没跟上的尴尬。插件边界靠显式导出划定,工程化程度高,对多人协作和长期维护插件生态很友好。