Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

小雾(xiaowu)

English · 简体中文

DeepSeek Harness(dsh) 为引擎内核、 一切能力皆可插拔的全能个人助理。 编码、任务、记忆、提醒、渠道消息一把抓; 一台机功能完整,多台可组队互联,断队后单机照常活。

CI License: MIT

  • 顶级编码:任务委派给最强执行体(Claude Code / Codex / 任何按约定接入的 CLI agent), 配 worktree 隔离 + 独立审查闸的验收纪律。
  • 常驻主动:晨报 / 提醒 / 定时巡检;渠道里发一句话就建任务、干活、回报。
  • 本地台账:服务器 / 服务 / 项目 / repo / 制品的对话式 CRUD。
  • 防篡改:skill / MCP 代码签名哈希链 + 加载强制校验 + 把整个信任面锚进比特币(OpenTimestamps)。
  • 机队互联:多台组队,hub 派单、worker 领单执行、账本互见证。
  • 三通道等价:每个功能都给网页点agent 代你点网页命令行三种操作方式。 管理控制台 xiaowu console(:3900)承载前两条:台账 CRUD / 任务看板 / 机队 / 安全, 页面状态全部可寻址;会话里一句话就能让 agent 把网页上的事替你点掉,每次代操作留审计。 交互聊天仍走 dsh 官方 Web UI(xiaowu web),不重造。

数据全在本机 ~/.xiaowu/(SQLite + 文件),不依赖任何服务端;模型走你自己的 key 或网关。

15 分钟装到能用

前置(干净机器先备好):

  • Node ≥ 22、pnpm(npm i -g pnpmcorepack enable
  • dsh:npm i -g @deepseek-ai/dsh@0.1.1-rc.2
  • LSP server(硬前置,缺了会话起不来): npm i -g typescript-language-server typescript pyright
  • uv(Python 环境管理器,管理控制台的运行环境):brew install uv 或见 https://docs.astral.sh/uv/
  • 一个能跑的模型 key(DEEPSEEK_API_KEY,或网关方案 ~/.xiaowu/gateway.env

安装

git clone https://github.com/shblhy/xiaowu.git && cd xiaowu
bash scripts/install.sh          # 全能版(交互问授权目录)
#
bash scripts/install.sh --lite   # 普通人版(不带本地编码委派)

install.sh 会:检查前置 → pnpm i && pnpm build → 把 xiaowu 装进 PATH → xiaowu init(装 profile + 注册开机自启:darwin 用 launchd、linux 用 systemd user)→ 打印本地 API 地址与首次对话提示。幂等,可反复重跑。

用起来

# 起一次会话干活
xiaowu "帮我看看这个项目并列出待办"

# 终端里多轮对话(TUI)
xiaowu

# 浏览器里多轮对话(dsh 官方 Web UI,会话历史与 CLI 那条共用)
xiaowu web            # 缺省 127.0.0.1:3080,首次要装包,慢一次

# 常驻服务体检与起停(跑没跑 / 跑的哪版代码 / 重启)
xiaowu server
xiaowu server restart

# 命令行台账 / 任务
xiaowu ledger machines ls
xiaowu task ls

升级不用管:装完自带热更——每分钟对着 origin/dev 保鲜,拉码、重建、把常驻服务换到 新代码;有任务在跑就先 drain 等清零,不打断在途会话。xiaowu server 能看到同步状态, xiaowu update 手动来一轮。不想让它自动拉代码就关掉热更——原理、开关与排查见 docs/热更.md

详版安装、卸载、升级、故障排查见 docs/安装.md

三种形态

形态 起法 干什么
一次性会话 xiaowu "任务" 问一句、干完、打印结果退出
续接上一轮 xiaowu -r <session-id> "任务" 带着那个会话的上下文往下干(调度方按 id 串起多轮)
终端交互 xiaowu 终端里多轮对话(TUI)
浏览器交互 xiaowu web 多轮对话、会话历史、工作区(dsh 官方 Web UI)
无会话常驻 开机自启,xiaowu server 本地 API :3901、渠道消息、定时主动、机队 hub

单次覆盖参数:--model <id> 换模型、--effort off\|low\|medium\|high\|max 调推理档位、 --provider <id> 换线路;缺省全走机器层 ~/.xiaowu/dsh/settings.yaml

三者共用同一个 ~/.xiaowu/:CLI 起的会话,在 web 里看得到、接得上。

小雾的能力不许比 dsh 少。 上游有的,我们的装配里一条不缺;真少了会写在 docs/能力对齐-dsh.md 里明确告警。核对:make capability-diff (离线秒级,升级 dsh 后必跑)。

顺带说清一个常见误解:dsh 本体没有终端 TUI,官方只发了 headless 与 web-app 两个 app bundle。小雾的 xiaowu TUI 是自己补的一层。

控制台与配置

xiaowu console 起管理控制台(:3900,全局、与当前目录无关):常驻对话 / 需求单 / 执行流水 / 机队 / 台账五模块 / 日志 / 会话与定时 / 盯活工作台 / 仪表盘,每页列表与详情分 路由、筛选与分页进 URL,页面上每个动作都有对应的 xiaowu <子命令> 与 Python SDK 方法 (三通道等价)。

  • 常驻对话 /chat:随时能说话的入口——普通问答与网页代操作当场办掉,编码、运维这类 要开工地的活当场变成一张可编辑的需求单派出去。对话分档且档位是硬的:默认 dispatch 档改文件、跑写命令这类动作做不到(模型试了会被当场拒绝并知道原因), smart 交互档全开;档位由人选,模型不能自己给自己升档。对话有线程、隔天接得上; 出单前零副作用,人确认才生效,单与来源线程双向可跳。盯活一屏顶上也常驻一张对话卡, 两处进去是同一条线程。CLI 走 xiaowu chat,SDK 与选择器族三通道等价。

  • 执行流水 /runs:从对话或需求单派出去的活在执行层单独有页——每次派工一行, 跑成什么样、token 与费用按次归因,与 xiaowu run ls 同源。

  • 配置页 /settings:小雾的全部配置一屏可见可改,真源是 ~/.xiaowu/config.yml (网页改会保住你手写的注释;命令行 xiaowu config ls|get|set)。

  • 远程访问:默认只绑环回口。要开远程必须先在本机终端 xiaowu console auth init 设用户名密码(agent 自立不了密码),然后在配置页打开开关重启控制台; :3080/:3901/:3902 仍只绑环回。

  • 全局提示词由工件决定:每个插件贡献一段自己的纪律(工地登记、只 rebase、凭据红线、 哪些动作过闸……),拔掉插件片段随之消失;再拼上你写的基础文本与勾选的 ~/.claude/CLAUDE.md / ~/.codex/AGENTS.md,物化成 dsh 读的 ~/.xiaowu/dsh/AGENTS.mdxiaowu prompt preview 看最终拼出来的是什么。

全能版 vs lite 版

同一堆插件的不同装配(不是两个产品):

全能版(默认) lite 版(--lite
面向 顶级程序员的助理 普通人的助理
编码委派 delegate_code_task ❌ 无
worktree / 审核闸
记忆 / 任务 / 台账 / 主动 / 渠道
防篡改 / 凭据 / 机队

用 Python 扩展小雾

给小雾加能力全程只写 Python(系统 python3 即可,核心路径零 pip 依赖):

  • exec 工具:往 ~/.xiaowu/tools/ 放一份 YAML 清单 + 一个脚本,下次会话即成 模型工具(stdin 收参数 JSON、stdout 即返回;xiaowu tools ls 查校验结果)。
  • MCP:机器层 patch 加一行配置挂任意 MCP server(examples/python/mcp/ 有 零依赖手写版与官方 SDK 版两种姿势)。
  • REST SDKpython/xiaowu_client.py 单文件零依赖,覆盖 tasks / 台账 / 记忆 / 工地 / 审核与选路审计 / 安全事件 / 定时 / 会话 / 盯活 / 机队的 API(覆盖面由 python/tests/test_route_coverage.py 与真实路由集对账,漏一条即红)——外部系统 对接照 examples/python/morning_digest.py 写。
  • markdown skill:纯写文档教小雾知识与流程,零代码。

四条路径怎么选、每条的完整示例:docs/扩展小雾.md

渠道(飞书)

~/.xiaowu/feishu.envFEISHU_APP_ID / FEISHU_APP_SECRET,权限 0600)后重启 server,给 bot 私聊发一句话 → 小雾建任务、在授权目录 spawn 会话干活、把结果回报给你。 渠道是插件(packages/plugin-channels-feishu),照它的样子可以接别的 IM。

机队组队

多台组队走 hub 单点账本(拓扑 A):

# hub 机(会话里用 fleet_register_worker 工具)→ 得一次性配对 token
# worker 机:
xiaowu fleet pair http://<hub 地址>:3901 <token> --name <本机名>

⚠️ hub 地址要用跨机稳定可达的私网地址。实测在部分环境下 Node(undici)打 LAN IP 会 EHOSTUNREACH(同地址 curl 却通,选路不同),走 tailscale 一类 overlay 网络的 100.x 地址则全通——详见 docs/m3-两台组队验收记录.md

worker 领单在本机 worktree 隔离执行,拔网线自动降级单机自治;hub 账本被篡改, worker 心跳核对会报警。

安全(防篡改 + 链上锚定)

  • 新 skill / MCP 进小雾前过 mcp-skill-audit 审核,人工 xiaowu integrity approve 批准。
  • 已批准工件被改一个字节 → 加载被拒 + incident 报告点名到行
  • 链上锚定:把代码 git HEAD、账本根、关键配置哈希、公钥指纹合成 trust-root, 周期提交到两条通道——第三方 RFC3161 时间戳(秒级生效,但一家公司的签名事后 可能被推翻)与 OpenTimestamps → 比特币(要等出块几小时,但不可推翻)。 两档并存、界面上分开写,不合并成一句「已锚定」。只提交哈希,内容不出机; 锚定从不拦操作,只保证信任面的变更事后藏不住。 装 ots:bash scripts/install-ots.sh;看状态:xiaowu integrity anchor status
  • apps/notary(外部见证服务)2026-08-31 已退役,代码保留、默认不启用。
  • 本地 API 缺省只绑 127.0.0.1/v1/* 一律 Bearer token(~/.xiaowu/server.token,0600)。 要跨机访问就走机队通道,别直接把端口暴露到公网。
  • 报安全问题请看 SECURITY.md,别开公开 issue。

架构与开发

make setup        # 装依赖
make test-unit    # 单测(TS + Python),不碰模型,日常内循环
make test         # 验收闸门:lint + 单测
make test-module  # headless 冒烟,要真模型、花 token(不进 CI)

分层:L0 dsh 内核(pin 0.1.1-rc.2不 fork、不打补丁)→ L1 bundle-base → L2 能力插件(packages/plugin-*,逐个 disabled: true 即可拔)→ L3 发行 profile (纯 YAML 装配,无代码)。

名词

  • dshDeepSeek Harness,本项目的 引擎内核,cordis「一切皆插件」架构。小雾 = dsh + 一堆自有插件的装配。
  • 云织(weave):作者内部的多机任务调度系统,未开源。小雾是它的「个人版」思路 重写,两者零耦合——小雾不调它的任何接口。文档里出现只为交代设计来历,不是运行依赖。
  • 机队 / hub / worker:多台小雾组队时的角色。hub 持账本派单,worker 领单在本机执行。
  • toolhub:一个对外提供 web_search__search 的 MCP 网关。xw_web_search 工具需要它 (任何提供同名工具的 streamable-http MCP server 都行);不配就只是不注册这个工具, 其余功能不受影响。

许可

MIT

About

以 DeepSeek Harness(dsh)为内核、一切能力皆可拔插的全能个人助理:编码、任务、记忆、提醒、渠道一把抓,多台可组队互联。

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages