通过1Password CLI,将保存的密码和API密钥用于命令及配置模板,完成安装、认证、秘密值读取,并通过环境变量向命令传递凭据。
- 安装并配置1Password CLI
- 使用已保存的API密钥运行命令
- 向配置模板填入秘密值
通过 Chrome DevTools Protocol(CDP)检查运行中的 Hermes 桌面应用,读取实际渲染的元素、计算后的 CSS、匹配规则和控制台输出,用于核实界面变化或查找样式问题。
Read the live Hermes desktop DOM/CSS over CDP.
实测评分 未实测
查看安装方法连接开发过程中运行的 Hermes 桌面应用,通过 Chrome DevTools Protocol(CDP)读取实际渲染的 DOM 和 CSS。可以检查元素是否显示、计算后的样式和尺寸、实际生效的 CSS 规则,以及渲染进程的控制台输出。这样可以核实应用当前呈现的内容,而不必只根据源代码推测。
当你想确认界面改动是否已反映到运行中的应用、查明样式为何没有生效,或寻找组件可稳定使用的选择器时,可以使用此技能。它用于核对 DOM 和样式事实,不能判断颜色、间距或整体布局看起来是否合适。
需要 Hermes 桌面应用的开发服务器打开 CDP 端口。打包版本不会开放该端口。若无法连接,不要重启用户的应用,应改用单独隔离的实例。仅凭这种方式无法判断画面是否美观或布局观感如何。
本介绍由 AI(OpenAI Codex)根据公开的 SKILL.md 撰写。准确的规格请查看下方原文。
AI 根据 SKILL.md 的内容检查了需要注意的操作和使用前提。评分只依据实际运行的结果(实测对比)。
不计入评分。 由 AI(OpenAI Codex)于 2026年10月30日 评估。仅供参考,安装前请同时查看原文。
安装前可以查看交给 AI 代理的指令内容。
When you are developing apps/desktop and the user is running that same app
(hgui / npm run dev), you can read the live rendered DOM of the window
they are looking at — computed styles, geometry, which CSS rule actually won,
console output — instead of inferring it from .tsx and being wrong.
Dev-server runs open a Chrome DevTools Protocol port on 127.0.0.1:9222
automatically. The renderer is a Chromium page, so everything DevTools can read,
a script can read.
This does not replace looking at it. CDP answers factual questions ("what is the computed padding", "did this element render", "which selector matches"). It cannot tell you whether the result looks good. Colour balance, spacing feel, and "is this ugly" still need the user's eyes or a screenshot. Answer facts with CDP; hand aesthetics to the user.
Don't use for: perf profiling or heap work (node-inspect-debugger,
debugging-hermes-desktop), or anything where the real question is "does this
look right".
Open on 127.0.0.1:9222 for any dev-server run. Closed in exactly two cases
(apps/desktop/electron/dev-cdp.ts):
HERMES_DESKTOP_DEV_SERVER — an unpackaged electron . against
dist/ is how the packaged app gets smoke tested, so it behaves like one.HERMES_DESKTOP_CDP_PORT moves the port (=9333) or disables it (=off).
Check before doing anything else:
curl -s --max-time 3 http://127.0.0.1:${HERMES_DESKTOP_CDP_PORT:-9222}/json/version
Empty → no port. Do not guess another port silently.
Never relaunch the user's app to get a port. That destroys their session and their state. Launch your own isolated instance instead (below).
apps/desktop/scripts/eval.mjs is the one-liner:
cd apps/desktop
node scripts/eval.mjs "document.querySelectorAll('[data-slot]').length"
For multi-step work use the shared client — it has target discovery and promise-aware eval:
import { CDP, SELECTORS } from './scripts/perf/lib/cdp.mjs'
const cdp = await CDP.connect({ port: 9222, match: '5174' })
const out = await cdp.eval(`JSON.stringify({
radius: getComputedStyle(document.documentElement).getPropertyValue('--radius-scalar').trim(),
composer: !!document.querySelector('[data-slot="composer-rich-input"]')
})`)
cdp.close()
SELECTORS in scripts/perf/lib/cdp.mjs holds the stable data-slot hooks
(composer, thread viewport, assistant message, turn pair, profile rail). Prefer
them over inventing a querySelector — they are updated as a unit when
components move.
Editing every call site because a style "isn't applying" is the classic waste. Read the real node first:
const el = document.querySelector('[data-slot="aui_assistant-message-root"] a')
JSON.stringify({
ownClasses: el.className,
weight: getComputedStyle(el).fontWeight,
parents: (() => {
const out = []
let n = el
while ((n = n.parentElement) && out.length < 6) out.push(n.className)
return out
})()
})
If the node carries no class of its own, the value is inherited — sweeping
call sites will not fix it, and you need the ancestor rule. A plugin stylesheet
(e.g. @tailwindcss/typography's prose a { font-weight: 500 }) routinely beats
a utility class; override on the shared class, not at each usage.
When there is no port, or you must not disturb the user's window:
cd apps/desktop
HERMES_HOME=$HOME/.hermes/cache/scratch/cdp-probe-home \
HERMES_DESKTOP_DEV_SERVER=http://127.0.0.1:5174 \
HERMES_DESKTOP_CDP_PORT=9333 \
npx electron . --user-data-dir=$HOME/.hermes/cache/scratch/cdp-probe-userdata
The separate --user-data-dir dodges Electron's single-instance lock, so it
cannot collide with a running hgui; the separate HERMES_HOME keeps it away
from real sessions. Pick a port other than 9222 for the same reason. Run it in
the background and kill it when done.
npm run perf:serve does the same with a temp HERMES_HOME baked in, if you
also want the perf harness.
ERR_NETWORK_CHANGED
gets blamed on whatever you just changed.HERMES_HOME has no backend. The app logs ECONNREFUSED for
hermes:api and may exit on its own. The renderer still mounts and the DOM is
readable — read promptly, and don't mistake a self-exited probe for a broken
port. Chromium logs DevTools listening on ws://127.0.0.1:<port>/… when it
binds; that line is the proof the port opened.outerHTML will bury your context. Project down to a small JSON object inside
the evaluated expression.match to CDP.connect. Without it you may attach to the pet
overlay, quick-entry window, or a devtools target instead of the main window.cdp.eval returns the value; raw Runtime.evaluate double-nests it
(.result.result.value). Use the wrapper.import.meta.env.DEV is true under vite dev in this repo. The note in
apps/desktop/scripts/profile-typing-lag.md claiming otherwise is stale.还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
通过1Password CLI,将保存的密码和API密钥用于命令及配置模板,完成安装、认证、秘密值读取,并通过环境变量向命令传递凭据。
创建用公式联动利润表、资产负债表和现金流量表的 Excel 模型,分阶段填入历史实际数据与预测假设,比较不同情景,并检查三张报表之间的一致性。
以少量修改让现有PyTorch训练代码适用于多GPU或多台机器,指导混合精度、节省内存的DeepSpeed与FSDP配置,以及训练启动方法。
帮助配置Hermes,通过Actual Computer在自己的设备上运行AI模型。支持加密中继与本地连接,涵盖模型选择、响应测试,以及请求报错或空响应的排查。
扮演不擅长技术、容易不满的用户测试应用,发现难懂的操作和导致放弃使用的障碍。将实际可改进的问题与个人抱怨分开,整理截图、修复建议和任务单。
从中立立场解决两个智能体分别修改代码产生的Git冲突,对照双方差异和意图,记录每处冲突的取舍理由,并通过构建或测试验证合并结果。