学术相关
技术技巧
腾讯技术工程丨技术教科书:顶级开发团队设计的Harness工程项目源码什么样
- 运行时:
Bun启动速度快 - 语言:
TypeScript确保类型安全 - UI:
React+Ink - CLI解析:
Commander.js - Schema校验:
Zod v4 - 代码搜索:
ripgrep - 协议:
MCP SDK + LSP - 遥测:
OpenTelemetry + gRPC - 特征标记:
GrowthBook支持A/B测试和渐进式发布
快速启动
分层启动架构
- 入口分发 & lazy import
- 重量级模块懒加载
- Paralle Prefetch
- 全局初始化
- 保证
memorize即便多次import也只执行一次
- 保证
- 会话级初始化
工具系统
- 接口:
Tool<Input, Output, Progress>inputSchemaPydantic模型定义,Zod v4 shchema验证checkPermissions权限校验isConcurrencySafe并发安全控制流标记isDestructive标记危险操作isAutoClassifierInput为auto模式的安全分类器提供紧凑表示
buildTool工厂函数- 所有tool必须通过工厂函数创建,提供安全默认值(默认假设不安全)
- 统一工具注册
- 通过
assembleToolPool()将内建工具与MCP工具集成,构建通过工具池出口 StreamingToolExecutor流式并行执行
查询系统
Agent Loop的核心
- 异步生成器驱动主循环
- 流式UI更新
- 中途中断
- 背压控制
- 消息独立持久化
- 循环状态管理
State对象transition字段记录上次迭代的持续原因
- 四级上下文压缩管道 —— 渐进降级
- Snip Compact 基于标记的历史剪裁(无需API调用)
- Micro Compact 缓存编辑压缩(不破坏整体缓存的情况下删除特定工具调用结果)
- Context Collapse 上下文折叠(多轮工具调用结果折叠为摘要,保留结构)
- Auto Compact 全量摘要压缩(上下文接近窗口限制时使用生成摘要替换历史消息)
- 输出截断恢复机制
stop_reason === 'max_output_tokens'输出截断有三层恢复机制- Token升级:尝试提高token预算上限
- 多轮恢复(最终3次):注入恢复消息,要求模型从中断处继续
- 放弃:surface错误
- 模型降级容错
- QueryEngine封装完整的查询生命周期
- 查询配置快照
QueryConfig- 实时读取不能保证一个查询内部每次迭代行为一致
task_budgetToken预算
Multi-Agent编排与任务系统
七种任务类型,独立生命周期管理;每种任务ID具有独立前缀字母和8个字符随机后缀
local_bashShell命令 -> 后台进程local_agent本地subagent -> 独立进程remote_agent远程subagent -> WebSocket连接in_process_teammate进程内teammate -> 共享内存local_workflow本地工作流脚本monitor_mcpMCP监控任务dream“梦境”任务 -> 后台分析
Agent Tool —— Subagent生成
subagent具有独立的对话历史和工具池
关键约束:
- 工具白名单
- 禁止使用agent生成相关管理工具
- 权限继承
- 独立的AbortController
Coordinator模式
当AGENT_COORDINATOR_MODE=1时,主线程变成协调器,仅负责分配任务
此时,协调器线程仅有AgentTool+TaskStopTool+SendMessageTool,而Bash,File Read/Edit/Write,Grep,Glob等工具由Worker线程拥有
工具分离保证协调器不参与任务执行
Agent Swarms
进程内Teammate通过Unix Domain Socket进行通信
本地快速通信
DreamTask —— 后台分析
TUI
内置Ink渲染引擎
Harness Engineering
- 上下文价格
- 架构约束
- 代码和工具的硬约束
- Deny Rules -> Tool-level Permissions -> Generic Rules -> Permission Mode -> Auto Classifier
- 默认配置最严格的限制避免遗忘造成漏洞
- 自验证循环
- 上下文隔离
- 进程级隔离:subagent具有独立的进程
- 通信接口化
- Coordinator模式控制&数据分离
- 熵治理:对抗系统自然熵增(上下文、记忆、文档混乱)
- 上下文蒸镏
/compact+Auto Compact - 知识沉淀
memdir/持久化写入 - 状态清理 Session记忆自动失效
- 后台整理 AutoDream
- 碎片整理 Dream Phase 4: Prune & Index
- 上下文蒸镏
- 模块化:防止与特定模型深度偶合
cloc丨Count Lines of Code
- file & directory & archive & git repo:
cloc [path] - Iterative
for d in ./*/ ; do (cd "$d" && echo "$d" && cloc --vcs git); done - help
cloc --help
有输入输出控制options,支持diff对比
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
prompt> cloc perl-5.22.0.tar.gz
5605 text files.
5386 unique files.
2176 files ignored.
https://github.com/AlDanial/cloc v 1.65 T=25.49 s (134.7 files/s, 51980.3 lines/s)
-----------------------------------------------------------------------------------
Language files blank comment code
-----------------------------------------------------------------------------------
Perl 2892 136396 184362 536445
C 130 24676 33684 155648
C/C++ Header 148 9766 16569 147858
Bourne Shell 112 4044 6796 42668
Pascal 8 458 1603 8592
XML 33 142 0 2410
YAML 49 20 15 2078
C++ 10 313 277 2033
make 4 426 488 1986
Prolog 12 438 2 1146
JSON 14 1 0 1037
yacc 1 85 76 998
Windows Message File 1 102 11 489
DOS Batch 14 92 41 389
Windows Resource File 3 10 0 85
D 1 5 7 8
Lisp 2 0 3 4
-----------------------------------------------------------------------------------
SUM: 3434 176974 243934 903874
-----------------------------------------------------------------------------------
Tree-Sitter]
增量式代码解析器生成器,将源代码转换为抽象语法树AST,并提供Tree Query Language (TQL)进行查询
VS Code、Neovim等均使用Tree-Sitter进行语法高亮
娱乐
DeepScientist & PaperOrchestra
主要关注Harness