Skip to content

liguwe/harnessx

Repository files navigation

HarnessX

用 Node.js 从零写一个最小 Agent 课程。

现在只参考一个项目:

当前课程:

  • 00:Node.js 命令入口 + DeepSeek 对话
  • 01:Agent 循环 + Bash 工具调用
  • 02:工具分发 + 文件工具
  • 03:Permission 权限判断
  • 04:Hooks 扩展点

Notes

  • [HarnessX 第 4 课:把权限、日志和收尾统计挂到 Hooks 上,让 Agent Loop 保持干净](/Users/liguwe/832/os/notes/2026/2026.06/222. 技术:HarnessX 第 4 课:把权限、日志和收尾统计挂到 Hooks 上,让 Agent Loop 保持干净@832@ing.md)
  • [HarnessX 第 3 课:在工具真正执行前加权限门,让 Agent 先判断 allow、ask、deny](/Users/liguwe/832/os/notes/2026/2026.06/221. 技术:HarnessX 第 3 课:在工具真正执行前加权限门,让 Agent 先判断 allow、ask、deny.md)
  • [HarnessX 第 2 课:把工具调用从一个 bash 扩展成工具分发表,让 Agent 能读写和查找文件](/Users/liguwe/832/os/notes/2026/2026.06/219. 技术:HarnessX 第 2 课:把工具调用从一个 bash 扩展成工具分发表,让 Agent 能读写和查找文件.md)
  • [HarnessX 第 1 课:Agent 循环,本质就是一个会反复调用模型、执行工具、回传结果的 while 循环](/Users/liguwe/832/os/notes/2026/2026.06/218. 技术:HarnessX 第 1 课:Agent 循环,本质就是一个会反复调用模型、执行工具、回传结果的 while 循环.md)
  • [HarnessX 第 0 课:先让 hx 命令跑起来、Agent 的第一性原理](/Users/liguwe/832/os/notes/2026/2026.06/214. 技术:HarnessX 第 0 课:先让 hx 命令跑起来、Agent 的第一性原理.md)

运行

npm link
hx --help
hx hello

跑一次模型对话:

cp .env.example .env

填入:

DEEPSEEK_API_KEY=你的 key
DEEPSEEK_MODEL=deepseek-chat

执行:

hx ask "你是谁"
hx chat
hx agent "List files in this directory"
hx agent "Read README.md and list src/*.js"
hx agent "What files are in the current directory?"
hx agent "Try to run sudo ls"
hx agent "Delete the file test.txt"
hx agent "List files in this directory and summarize what happened"

第 3 课观察权限门:

  • 只读工具会直接执行。
  • sudorm -rf / 这类危险命令会直接拒绝。
  • rm chmod 777 这类风险命令会暂停询问 Allow? [y/N]

第 4 课观察 Hooks:

  • 用户任务提交后,会看到 [HOOK] UserPromptSubmit ...
  • 每次工具执行前,会看到 [HOOK] PreToolUse ...
  • Agent 准备结束时,会看到 [HOOK] Stop: ... 工具调用统计。

目录

src/index.js       # hx 命令入口、参数分发、多轮输入
src/deepseek.js    # DeepSeek Chat Completions 请求
src/agent-loop.js  # Agent 循环、Hooks、工具分发、tool result 回传
references/        # 唯一参考仓

About

0-1 构建 harness'

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors