一个以 harness 为中心的 Python AI coding agent
Double-layer agent loop · Tool harness · Context compression · Memory · Task runtime · Skills / MCP / Worktree
XxCode 不是把“对话 + 执行”塞进一个黑盒循环里的聊天机器人。它把 agent 的关键能力拆成清晰的 runtime 边界:对话编排、工具调度、权限判定、任务隔离、上下文压缩和记忆回收,各自独立、各自可测。
双层 Agent LoopQueryEngine 负责外层会话编排,CoreExecutionEngine 负责内层 tool loop,职责分离更清楚,也更容易做二次开发。
|
Tool Harness 工具调度不是“能不能调用”这么简单,而是把并发、预检、权限和结果收集统一进一条执行链。 |
四层上下文压缩Snip -> Micro -> Collapse -> AutoCompact 逐级压缩,而不是直接粗暴截断,保留更多决策信息。
|
Memory System 用 MEMORY.md 做入口索引,按当前 query 召回少量高相关记忆,再注入完整内容;后台 extraction 持续沉淀 user / project / feedback / reference 四类记忆。
|
|
Task Runtime 把子任务、worker、scope 和通知机制做成独立运行时,避免“开个子任务”退化成一次普通递归请求。 |
Skills / MCP / Worktree 扩展能力挂在统一 runtime 上,既能接技能,也能接 MCP,还能做 worktree 隔离。 |
|
Multi-Agent Runtime 支持 Coordinator 编排后台 worker,围绕 task、scope 和通知机制组织多 Agent 协作,而不是简单多开几次模型请求。 |
权限与执行边界 shell、文件编辑和任务执行都有明确权限判断链路,安全模型是 runtime 的一部分,不是事后打补丁。 |
| 维度 | 普通 Agent | XxCode |
|---|---|---|
| 核心关注 | 聊天体验优先 | harness 和 runtime 优先 |
| 执行方式 | 单一大循环 | 编排、执行、工具分层 |
| 安全模型 | 事后补救 | 权限链路前置 |
| 上下文处理 | 截断或堆叠 | 四层渐进压缩 |
| 扩展方式 | 往主循环堆逻辑 | 通过 skills / MCP / worker 挂接 |
| 状态管理 | 常常共享同一上下文 | task、scope、session 分离 |
用户输入
-> CLI 解析配置和参数
-> Memory bootstrap / recall 准备
-> Context pipeline 压缩上下文
-> QueryEngine 处理会话状态与 turn
-> CoreExecutionEngine 进入 tool loop
-> Tool harness 调度工具
-> Permission pipeline 判定是否允许执行
-> Task runtime 处理子任务、worker 和通知
-> 返回结果并进入下一轮
| 模块 | 作用 |
|---|---|
src/xxcode/agent/query_engine.py |
外层会话管理,负责状态初始化、turn 提交、skill 处理和核心循环调度 |
src/xxcode/agent/loop.py |
内层执行引擎,负责 tool loop、上下文准备、恢复与结果回写 |
src/xxcode/agent/tools_executor.py |
工具调度器,负责并发、权限和结果收集 |
src/xxcode/agent/task_runtime.py |
子任务运行时,管理 task、scope、worker 生命周期 |
src/xxcode/tools/agent/tool.py |
子 Agent 入口,支持后续 worker 和 worktree 隔离 |
src/xxcode/tools/BashTool/permissions.py |
shell 命令的多层权限分析与规则建议 |
src/xxcode/context/pipeline.py |
四层上下文压缩管道 |
src/xxcode/memory/recall.py |
基于 MEMORY.md 的记忆回收 |
src/xxcode/memory/index.py |
生成 MEMORY.md 索引并控制入口大小预算 |
pip install -e .
# Required
$env:XXCODE_API_KEY="your_api_key"
$env:XXCODE_API_BASE_URL="your_base_url"
# Optional: defaults to deepseek-v4-pro
$env:XXCODE_API_MODEL="deepseek-v4-pro"
xxcode模型配置:
- 默认模型是
deepseek-v4-pro - 可用环境变量
XXCODE_API_MODEL覆盖 - 兼容
ANTHROPIC_MODEL作为回退变量 - 也可以用
--model按单次会话覆盖 - 代码当前支持
claude-*、deepseek-*、gpt-*、o1、o3、o4
例如:
xxcode --model claude-sonnet-4-6
xxcode --model gpt-4o单次执行:
xxcode --model deepseek-v4-pro -p "帮我分析当前仓库里的测试结构"常用参数:
--model:覆盖默认模型--cwd:指定工作目录--resume:恢复已有会话--list:列出已保存会话--bare:关闭 auto-memory 等持久特性--yolo:跳过权限确认--ui-backend:切换终端 UI 后端--verbose:开启调试日志--max-tokens:限制单轮输出 tokens
使用下面这些命令来运行 benchmark 测试、生成报告,并将当前版本与 baseline profile 进行对比。
仅运行 benchmark 测试:
python -m pytest tests/benchmark -q仅生成 benchmark 报告:
python scripts/run_unified_eval_report.py运行完整 benchmark 套件:
python scripts/run_benchmark_suite.py使用显式指定的报告目录和工作目录来运行完整套件:
python scripts/run_benchmark_suite.py --output-dir .tmp/benchmark-reports --work-dir .tmp/unified-eval-run与 baseline profile 进行对比:
python scripts/run_benchmark_suite.py --baseline-profile memory_off
python scripts/run_benchmark_suite.py --baseline-profile context_off
python scripts/run_benchmark_suite.py --baseline-profile security_relaxed- 想研究 agent 内核、执行链路和 runtime 设计的人。
- 想做二次开发,扩展 tool、memory、task 或多 Agent 能力的人。
- 想直接看一个 harness-first AI coding agent 是怎么落地的人。
后续会继续补充更系统的文档讲解,重点会覆盖 memory、multi-agent、tool harness、权限链路和上下文工程这些部分。
当前已经补充的文档:
docs/agent-loop-query-engine-and-loop-explained.md:从QueryEngine入口到CoreExecutionEngine内层 tool loop,按主执行路径拆解 XxCode 的核心 agent loop。docs/context-engineering-explained.md:解释每轮模型调用前上下文如何被注入、压缩、投影、标准化和缓存标记,重点覆盖ContextPipeline、L1-L4 压缩和_build_messages()。docs/memory-explained.md:解释 memory 如何作为隐式用户消息进入上下文、如何通过双通道召回保持广度与深度,以及它怎样在后台 extraction 中持续沉淀。docs/multi-agent-explained.md:解释 multi-agent runtime 如何派生子 agent、编排 worker、约束权限和工具,并用 scope、通知与 worktree 管住协作边界。
如果你想继续往下看,建议从这些入口开始:
docs/agent-loop-query-engine-and-loop-explained.mddocs/context-engineering-explained.mddocs/memory-explained.mddocs/multi-agent-explained.mdsrc/xxcode/agent/loop.pysrc/xxcode/context/pipeline.pysrc/xxcode/agent/task_runtime.pysrc/xxcode/agent/tools_executor.pysrc/xxcode/tools/agent/tool.pysrc/xxcode/tools/BashTool/permissions.py