面向对象:需要周期性产出研究报告、方案或公众号稿件的研究者与教师。
全文所有代码、命令、目录结构、图示均来自我自己的项目,全部实跑验证过,可直接照抄。
我同时做两件事:一边写装备与技术方向的深度稿件,一边给部队和院所交付研究报告与方案。这个工作有个共同特点——单次交付看着不复杂,但前置准备极重。
一份装备调研报告,真正动笔可能只要半小时,可前面这几件事加起来是四个小时:
所以我不把 WorkBuddy 当“问答工具”,而是当一条流水线来接:每一环固定一种做法,环与环之间用文件交接,人只做判断和取舍。

图 1:六环流水线
六个环节里,人的介入只有两处:信源互相矛盾时裁定,和结构与重点定稿时决策。其余全部交出去。
下面按环节讲,每节都给可直接使用的实操配置。
最大的误区是一上手就在对话框里问,答完就散。正确用法是每个长期项目一个独立工作区,目录里带一份记忆文件。
项目名/
├── .workbuddy/
│ └── memory/
│ ├── MEMORY.md # 长期约定:文体口径、术语偏好、信源分级、红线
│ └── 2026-10-14.md # 当日日志,只追加不覆盖
├── 00-素材/ # 检索产出,按信源分级留痕
├── 01-提纲/
├── 02-正文/ # *.md 内容稿
├── 03-配图/ # SVG / PNG
└── 04-交付/ # *.docx它是项目级宪法,只写“每次都必须遵守”的东西,不写一次性任务:
# 项目长期约定
## 文体口径
- 对外输出一律中文全角引号“ ”,禁止半角引号
- 初稿只出终稿,不列思考过程;正文 5–8 行说明文件位置与结论
- 主体用连贯叙述段落,禁止 1.2.3. 式清单(待办与待确认可用)
## 信源规则
- 官方一手 > 监督机构 > 权威智库 > 专业媒体 > 厂商自述
- 矛盾来源并列呈现,不替读者裁定
- 涉我方部署与装备参数,只记录“是否存在公开讨论”,不进正文
## 排版规则
- 图 N / 表 N 统一题注格式,位置在图下方
- 金额大小写并列,其余用阿拉伯数字2026-10-14.md 每天一两行就够,写今天做了什么、踩了什么坑。三个月后回看,这份日志就是你的工作复盘底稿,也是下一次选题的依据。
做装备、战例、技术路线这类题目,公开资料重心在境外。固定按六个语种铺一遍,每个语种配不同的关键词结构。

图 2:检索矩阵与信源分级
第一,同一概念禁止直译。 直译的命中率会低一大截。要按各国军工媒体的行文习惯换词:
中文概念 | 直译(漏检多) | 按习惯换词(命中高) |
|---|---|---|
无人机反制 | anti-drone | counter-UAS / C-UAS / drone mitigation |
无人协同作战 | unmanned cooperation | unmanned teaming / collaborative autonomy |
低空防御 | low altitude defense | low, slow and small (LSS) / counter-UAS airspace |
单兵一控多 | one control many | multi-vehicle supervisory control / swarm control |
第二,政府与厂商官网要单独抓。 这类站点的内容经常不进通用搜索索引。我的固定动作是“通用搜索出线索 → 定向回官网找原文”两步走,绝不拿二手转述当一手信源。
素材入库时强制记录三件事,缺一不可:
字段 | 说明 | 反例(不合格) |
|---|---|---|
信源等级 | 官方一手 / 监督机构 / 智库 / 媒体 / 厂商 | “网上看到的” |
原文链接 | 可回溯的原始 URL | 只留标题 |
可用性判断 | 能进正文 / 仅作背景 / 弃用 | 空 |
静态抓取遇到 Cloudflare 级别的防护就废了。这时候改用驱动本机真实浏览器:连本地 Chrome 或 Edge 的调试端口,带我自己的登录态和指纹去访问。
这一节我全部实跑验证过,下面贴出的回显是真实输出。
# 先关掉已有实例,否则新端口不生效
taskkill /F /IM chrome.exe
# 启动并保留登录态(用你平时那个用户目录)
chrome.exe --remote-debugging-port=9222 ^
--user-data-dir="%LOCALAPPDATA%\Google\Chrome\User Data"踩坑记录:如果端口一直连不上,多半是浏览器进程被父进程回收了。用脚本拉起时要加独立进程标志,否则脚本一结束浏览器就跟着退出。我实测
9333端口比9222更少冲突。
curl http://127.0.0.1:9222/json/version真实回显(截取):
{
"Browser": "Chrome/152.0.7977.65",
"Protocol-Version": "1.3",
"webSocketDebuggerUrl": "ws://127.0.0.1:9222/devtools/browser/xxxx"
}只要看到 Browser 和 webSocketDebuggerUrl 两个字段,就说明通道打开了。
不想装 Playwright 的话,几十行就够用:
// cdp-fetch.mjs —— 用原生 WebSocket 走 CDP,无需第三方依赖
// 用法: node cdp-fetch.mjs <目标URL> [端口]
const url = process.argv[2];
const port = process.argv[3] || '9222';
// 开一个新标签页,拿到它的 ws 调试地址
const list = await (await fetch(`http://127.0.0.1:${port}/json/new?about:blank`, {
method: 'PUT'
})).json();
const ws = new WebSocket(list.webSocketDebuggerUrl);
let id = 0;
const pending = new Map();
const send = (method, params = {}) =>
new Promise(res => {
pending.set(++id, res);
ws.send(JSON.stringify({ id, method, params }));
});
ws.onmessage = e => {
const msg = JSON.parse(e.data);
if (msg.id && pending.has(msg.id)) { pending.get(msg.id)(msg.result); pending.delete(msg.id); }
};
await new Promise(r => (ws.onopen = r));
await send('Page.enable');
await send('Page.navigate', { url });
await new Promise(r => setTimeout(r, 4000)); // 等渲染完成
const { result } = await send('Runtime.evaluate', {
expression: 'document.title + "\\n=====\\n" + document.body.innerText',
returnByValue: true
});
console.log(result.value.slice(0, 1200));
await fetch(`http://127.0.0.1:${port}/json/close/${list.id}`);
ws.close();
process.exit(0);实跑回显(抓 WorkBuddy 官方文档站,验证通道有效性):
$ node cdp-fetch.mjs "https://www.workbuddy.cn/docs/workbuddy/Overview" 9333
CDP OK -> Chrome/152.0.7977.65
WorkBuddy 简介 | WorkBuddy - AI Agent 办公新范式
=====
WorkBuddy 是腾讯出品的全场景 AI 工作台。您可以使用自然语言描述需求,
由 WorkBuddy 自主规划和执行任务,并交付文档、表格、PPT 等可直接使用的完整成果。
...这一步的价值不只是“绕过验证”,更在于持久登录态。 不少资料在企业门户或权限墙后面,静态请求拿不到,但复用我平时登录的会话就能正常打开——这里说的是正常可见的公开内容,不是去破解付费墙。
只碰公开来源。绕过登录获取的付费内容不进正文,涉及我方部署与装备参数的只记录“是否存在公开讨论”,涉密链接一律不采。
架构图、链路拓扑图、泳道时序图,我不再去图库翻素材——那种图风格不统一,编号和题注还得重做。改成用代码生成矢量图。
# arch-diagram.py —— 生成分层架构图 SVG,可直接嵌进 Word
LAYERS = [
("应用层", ["指挥控制", "任务规划", "人机界面"], "#2B5FD9"),
("服务层", ["模型推理", "数据融合", "任务调度"], "#0E8F87"),
("平台层", ["消息总线", "容器编排", "日志审计"], "#C8871B"),
("资源层", ["算力池", "存储池", "网络 fabric"], "#5A6478"),
]
W, BH, GAP = 760, 96, 18
H = len(LAYERS) * (BH + GAP) + 40
svg = [f'<svg xmlns="http://www.w3.org/2000/svg" width="{W}" height="{H}" '
f'viewBox="0 0 {W} {H}" font-family="Microsoft YaHei">']
y = 20
for name, mods, color in LAYERS:
svg.append(f'<rect x="0" y="{y}" width="{W}" height="{BH}" rx="8" '
f'fill="#F7F9FC" stroke="{color}" stroke-width="2"/>')
svg.append(f'<rect x="0" y="{y}" width="8" height="{BH}" rx="4" fill="{color}"/>')
svg.append(f'<text x="24" y="{y+34}" font-size="18" fill="#1A2233">{name}</text>')
for i, m in enumerate(mods):
svg.append(f'<rect x="{150+i*200}" y="{y+22}" width="180" height="52" rx="6" '
f'fill="#FFFFFF" stroke="{color}"/>')
svg.append(f'<text x="{240+i*200}" y="{y+54}" font-size="15" '
f'text-anchor="middle" fill="#1A2233">{m}</text>')
y += BH + GAP
svg.append('</svg>')
open("arch.svg", "w", encoding="utf-8").write("\n".join(svg))改一个参数出一张图,一套图从两小时压到两分钟,且风格天然统一。
踩坑记录:如果用 Pillow 直接画 PNG,中文必须给每段文字显式指定含中文的字体文件(
msyh.ttc/simhei.ttf),否则方框乱码。跨语种混排(比如韩文)还要单独换字体(malgun.ttf)。
真实装备与场景照片必须来自可溯源渠道,逐张记录“内容 / 来源链接 / 可信度 / 可用章节”。绝不用生成图冒充实景照片——这条是硬红线。
这是整套流程里最省事的一环。不直接拼 Word,先写 Markdown,再套 HTML 版式模板,最后转 DOCX。
好处是内容与版式彻底分离:内容我可以快速迭代,版式一次调好、永久复用。甲方要改格式,改的是模板,不动正文。

图 3:成稿与排版流水线
<style>
@page { size: A4; margin: 2.8cm 2.6cm; }
body { font-family:"SimSun","宋体"; font-size:12pt; line-height:1.75;
text-indent:2em; color:#000; }
h1 { font-family:"SimHei","黑体"; font-size:18pt; text-align:center;
text-indent:0; margin:0 0 18pt; }
h2 { font-family:"SimHei","黑体"; font-size:14pt; text-indent:0;
margin:16pt 0 8pt; border-left:4px solid #2B5FD9; padding-left:8px; }
figure { margin:12pt 0; text-align:center; page-break-inside:avoid; }
figcaption { font-size:10.5pt; color:#444; text-indent:0; margin-top:6pt; }
table { border-collapse:collapse; width:100%; font-size:10.5pt;
page-break-inside:avoid; }
th,td { border:1px solid #666; padding:5pt 7pt; }
th { background:#EEF1F6; font-family:"SimHei","黑体"; }
</style>page-break-inside:avoid 这一行是关键——它保证表格和插图不会被拦腰截断到两页,这是我改过最多次的一处。
关键技巧:甲方给的参考文档,直接当风格源去仿写,比套通用模板像得多。技术方案类还要注意金额中英文大写并列、签署页上下排这类体例细节。
# md2html.py —— 把 Markdown 正文转成带样式单页 HTML,浏览器打开即可整篇复制
import re, sys
def inline(s):
s = s.replace("&", "&").replace("<", "<").replace(">", ">")
s = re.sub(r"\*\*(.+?)\*\*", r"<strong>\1</strong>", s)
s = re.sub(r"`(.+?)`", r"<code>\1</code>", s)
return s
def build(md):
out, incode, buf = [], False, []
for line in md.split("\n"):
if line.startswith("```"):
if incode:
out.append("<pre><code>" + "\n".join(buf) + "</code></pre>")
incode, buf = not incode, []
continue
if incode:
buf.append(line); continue
if line.startswith("## "):
out.append("<h2>" + inline(line[3:]) + "</h2>")
elif line.strip():
out.append("<p>" + inline(line) + "</p>")
return "\n".join(out)
md = open(sys.argv[1], encoding="utf-8").read()
open(sys.argv[2], "w", encoding="utf-8").write(
'<!DOCTYPE html><meta charset="utf-8">' + build(md))
print("ok", sys.argv[2])配合浏览器直接打开预览,从写到发一篇文章,中间不需要开 Word。
日报、周报、素材巡检、固定时间抓外部更新,这些不该占用注意力。设成定时任务即可。
抓取无人装备领域过去 7 天的公开动态,按「国内 / 国外 / 技术趋势」三类
归类,每类不超过 5 条,每条给出一句话结论 + 可回溯原文链接。
直接输出成稿,不要过程叙述。没有实质更新的类别写“无更新”,不要凑数。关键点:提示词必须自包含。 别写“按上次那样做”——下次运行时看不到今天的对话。公司名、路径、口径、格式要求都要写死在提示词里。
调度规则用 RFC 5545 的 RRULE 表达,不要用自然语言硬凑:
需求 | RRULE |
|---|---|
每天 9:00 | FREQ=DAILY;BYHOUR=9;BYMINUTE=0 |
工作日 8:30 | FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;BYHOUR=8;BYMINUTE=30 |
每月 1 号 | FREQ=MONTHLY;BYMONTHDAY=1;BYHOUR=9;BYMINUTE=0 |
邮箱、日历、云文档、云盘、IM,授权一次之后就能直接读写,不用手动导出再上传。授权前先看清它要的是读权限还是写权限,写权限按需开。
这套流程本身写成教程投稿,单篇基础奖励 1000 分,被精选再 +2000,单篇封顶 3000。

图 4:积分获取矩阵
官方合规渠道就这几条:
渠道 | 收益 | 要点 |
|---|---|---|
社区发文:完整实操教程 | 1000 分/篇 | 被精选再 +2000 |
社区发文:使用心得 / 踩坑 | 500 分/篇 | 需原创、500 字以上 |
每日签到(含连续 7 天) | 100 分/天 | 第 7 天 1000 分,月约 3000–4000 |
成长计划新手/进阶任务 | 合计约 900 分 | 须先点「去完成」再操作 |
邀请好友 | 双方各 500 分 | 每邀请一位新用户 |
月度基础额度 | 每月 1 号自动 | 被动到账,无需领取 |
基础 500 分的“心得类”和 1000 分的“教程类”,差别在于有没有可复制的实操内容:命令、代码、目录结构、真实参数、踩坑记录、清晰排版。这篇能拿满 1000 分而不是 500,靠的就是上面那些代码块、真实回显和配图。
积分上是这样的:每日签到约 3000–4000 + 月度额度 + 成长计划一次性约 900 + 每月一篇教程 1000–3000。轻度使用已经富余,重度使用靠投稿补。
对我来说更划算的是把积分花在刀刃上:深度调研报告这种真正需要联网检索、多源交叉的任务,检索质量直接决定报告能不能站住;日常的改写、排版这类活用轻量模式处理。积分不是靠省下来的,是靠把机器干得又快又准、把人从重复劳动里解放出来之后产生的价值换来的。
如果你也在用 WorkBuddy 搭自己的工作流,欢迎交流你踩过的坑——尤其是信源分级和排版模板这两块,我很想看看别人怎么解。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。