﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-paulwong</title><link>http://www.blogjava.net/paulwong/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 23 Apr 2026 13:58:08 GMT</lastBuildDate><pubDate>Thu, 23 Apr 2026 13:58:08 GMT</pubDate><ttl>60</ttl><item><title>AGENTS.md 和 SOUL.md 有啥区别</title><link>http://www.blogjava.net/paulwong/archive/2026/04/16/451776.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Thu, 16 Apr 2026 08:26:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2026/04/16/451776.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/451776.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2026/04/16/451776.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/451776.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/451776.html</trackback:ping><description><![CDATA[<div style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; line-height: 1.8; color: #333; background: #f5f5f5; padding: 20px; margin: 0;"> <div style="max-width: 900px; margin: 0 auto; background: #fff; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); padding: 40px;"> <h1 style="font-size: 28px; color: #1a1a1a; margin-bottom: 30px; padding-bottom: 15px; border-bottom: 3px solid #2196F3;">AGENTS.md vs SOUL.md 区别</h1> <table style="width: 100%; border-collapse: collapse; margin: 20px 0; background: #fff;"> <tbody><tr> <th style="width: 20%; padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0; background: #2196F3; color: #fff; font-weight: 600;">特性</th> <th style="width: 40%; padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0; background: #2196F3; color: #fff; font-weight: 600;">AGENTS.md</th> <th style="width: 40%; padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0; background: #2196F3; color: #fff; font-weight: 600;">SOUL.md</th> </tr> <tr style="background: #f8f9fa;"> <td style="padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0;"><strong style="color: #2196F3;">作用</strong></td> <td style="padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0;">工作空间规则和操作指南</td> <td style="padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0;">Agent 的身份、性格和核心行为准则</td> </tr> <tr> <td style="padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0;"><strong style="color: #2196F3;">内容</strong></td> <td style="padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0;">任务流程、通信协议、安全规范、工具使用说明</td> <td style="padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0;">角色定义、价值观、行为风格、自我认知</td> </tr> <tr style="background: #f8f9fa;"> <td style="padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0;"><strong style="color: #2196F3;">谁制定</strong></td> <td style="padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0;">系统/Manager 生成 + 用户自定义规则</td> <td style="padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0;">用户为每个 Agent 量身定制</td> </tr> <tr> <td style="padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0;"><strong style="color: #2196F3;">层级</strong></td> <td style="padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0;">组织/工作空间级别</td> <td style="padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0;">个人/Agent 级别</td> </tr> <tr style="background: #f8f9fa;"> <td style="padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0;"><strong style="color: #2196F3;">修改权限</strong></td> <td style="padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0;">可追加自定义规则</td> <td style="padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0;">完全可定制</td> </tr> <tr> <td style="padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0;"><strong style="color: #2196F3;">目的</strong></td> <td style="padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0;">告诉 Agent <strong style="color: #2196F3;">如何工作</strong></td> <td style="padding: 12px 15px; text-align: left; border: 1px solid #e0e0e0;">告诉 Agent <strong style="color: #2196F3;">它是谁</strong></td> </tr> </tbody></table> <h2 style="font-size: 22px; color: #333; margin: 30px 0 15px;">具体对比</h2> <h3 style="font-size: 18px; color: #555; margin: 25px 0 12px;">AGENTS.md - "工作手册"</h3> <div style="background: #fff3e0; border-left: 4px solid #FF9800; padding: 20px; margin: 20px 0; border-radius: 4px;">
<pre style="background: #263238; color: #aed581; padding: 15px; border-radius: 6px; overflow-x: auto; margin: 15px 0;"><code style="background: transparent; color: inherit; padding: 0; font-family: 'SF Mono', Monaco, 'Courier New', monospace; font-size: 14px;">## Task Execution
1. Sync files first: `hiclaw-sync` 2. Read the task spec
3. Create `plan.md` before starting
... ## Communication
- @mention Manager when task completed
- NO_REPLY usage rules
- History context handling</code></pre> </div> <p style="margin: 15px 0;"><strong style="color: #2196F3;">解决什么问题：</strong></p> <ul style="margin: 15px 0; padding-left: 25px;"> <li style="margin: 8px 0;">怎么接收任务？</li> <li style="margin: 8px 0;">怎么和 Manager/其他 Worker 沟通？</li> <li style="margin: 8px 0;">文件放哪里？</li> <li style="margin: 8px 0;">什么时候 @mention？</li> <li style="margin: 8px 0;">安全规范是什么？</li> </ul> <h3 style="font-size: 18px; color: #555; margin: 25px 0 12px;">SOUL.md - "灵魂/人格定义"</h3> <div style="background: #e8f5e9; border-left: 4px solid #4CAF50; padding: 20px; margin: 20px 0; border-radius: 4px;">
<pre style="background: #263238; color: #aed581; padding: 15px; border-radius: 6px; overflow-x: auto; margin: 15px 0;"><code style="background: transparent; color: inherit; padding: 0; font-family: 'SF Mono', Monaco, 'Courier New', monospace; font-size: 14px;"># Worker: cs-assistant ## Identity
You are cs-assistant, a technical support specialist... ## Personality
- Professional yet approachable
- Patient with technical questions
... ## Domain
- Wiki.js management
- Technical documentation
... ## Response Style
- Provide clear, structured answers
- Include command examples when relevant</code></pre> </div> <p style="margin: 15px 0;"><strong style="color: #2196F3;">解决什么问题：</strong></p> <ul style="margin: 15px 0; padding-left: 25px;"> <li style="margin: 8px 0;">我是谁？</li> <li style="margin: 8px 0;">我的专业领域是什么？</li> <li style="margin: 8px 0;">我该怎么说话？（语气、风格）</li> <li style="margin: 8px 0;">我的价值观是什么？</li> <li style="margin: 8px 0;">面对不同情况该怎么反应？</li> </ul> <h2 style="font-size: 22px; color: #333; margin: 30px 0 15px;">实际例子</h2> <div style="background: #e3f2fd; border-left: 4px solid #2196F3; padding: 20px; margin: 20px 0; border-radius: 4px;"> <p style="margin: 0 0 15px 0;"><strong>用户问："怎么备份 Wiki.js？"</strong></p> <br /> <p style="margin: 0 0 10px 0;"><strong>AGENTS.md 告诉 cs-assistant：</strong></p> <p style="margin: 0 0 15px 0;">&#8594; 先检查知识库有没有相关内容，然后基于知识库回答，最后引用来源文件</p> <br /> <p style="margin: 0 0 10px 0;"><strong>SOUL.md 告诉 cs-assistant：</strong></p> <p style="margin: 0 0 15px 0;">&#8594; 你是技术专家，应该用专业但友好的语气回答，给出具体命令示例</p> <br /> <p style="margin: 0 0 10px 0;"><strong>实际回答：</strong></p>
<pre style="background: #263238; color: #aed581; padding: 15px; border-radius: 6px; overflow-x: auto; margin: 15px 0;"><code style="background: transparent; color: inherit; padding: 0; font-family: 'SF Mono', Monaco, 'Courier New', monospace; font-size: 14px;">Based on [wiki-guide.md]:
Wiki.js 支持以下备份方式... 具体操作命令：
wikijs backup --output ~/wiki-backup.zip Additional context:
建议定期备份，可以设置定时任务...</code></pre> </div> <div style="background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: #fff; padding: 25px; border-radius: 8px; margin-top: 30px;"> <h2 style="font-size: 22px; color: #fff; margin: 0 0 15px 0;">一句话总结</h2> <p style="margin: 0 0 10px 0;"><strong>AGENTS.md</strong> = "工作规范说明书"（流程、规则、工具）</p> <p style="margin: 0 0 15px 0;"><strong>SOUL.md</strong> = "人格定义书"（身份、性格、专业领域）</p> <p style="margin: 0;">两者配合：AGENTS.md 确保 Agent <strong>正确做事</strong>，SOUL.md 确保 Agent <strong>像自己</strong>。</p> </div> </div>
</div><img src ="http://www.blogjava.net/paulwong/aggbug/451776.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2026-04-16 16:26 <a href="http://www.blogjava.net/paulwong/archive/2026/04/16/451776.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HICLAW案例</title><link>http://www.blogjava.net/paulwong/archive/2026/04/15/451775.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Wed, 15 Apr 2026 03:08:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2026/04/15/451775.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/451775.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2026/04/15/451775.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/451775.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/451775.html</trackback:ping><description><![CDATA[基于 HiClaw 的运维场景多智能体协同实践<br /><a href="https://www.cnblogs.com/alisystemsoftware/p/19840321" target="_blank">https://www.cnblogs.com/alisystemsoftware/p/19840321</a><br /><br /><img src ="http://www.blogjava.net/paulwong/aggbug/451775.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2026-04-15 11:08 <a href="http://www.blogjava.net/paulwong/archive/2026/04/15/451775.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>agent使用FireCrawl简介</title><link>http://www.blogjava.net/paulwong/archive/2026/04/15/451774.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Wed, 15 Apr 2026 03:03:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2026/04/15/451774.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/451774.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2026/04/15/451774.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/451774.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/451774.html</trackback:ping><description><![CDATA[FireCrawl本地安装<br />docker-compose.yaml<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->name:&nbsp;firecrawl<br /><br />x-common-service:&nbsp;<span style="color: #FF0000; ">&amp;common-service</span><br />&nbsp;&nbsp;#&nbsp;NOTE:&nbsp;If&nbsp;you&nbsp;don't&nbsp;want&nbsp;to&nbsp;build&nbsp;the&nbsp;service&nbsp;locally,<br />&nbsp;&nbsp;#&nbsp;comment&nbsp;out&nbsp;the&nbsp;build:&nbsp;statement&nbsp;and&nbsp;uncomment&nbsp;the&nbsp;image:&nbsp;statement<br />&nbsp;&nbsp;image:&nbsp;ghcr.io/firecrawl/firecrawl:latest<br />&nbsp;&nbsp;#&nbsp;build:&nbsp;apps/api<br /><br />&nbsp;&nbsp;ulimits:<br />&nbsp;&nbsp;&nbsp;&nbsp;nofile:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;soft:&nbsp;65535<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hard:&nbsp;65535<br />&nbsp;&nbsp;networks:<br />&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;backend<br />&nbsp;&nbsp;extra_hosts:<br />&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;"host.docker.internal:host-gateway"<br />&nbsp;&nbsp;logging:<br />&nbsp;&nbsp;&nbsp;&nbsp;driver:&nbsp;"json-file"<br />&nbsp;&nbsp;&nbsp;&nbsp;options:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max-size:&nbsp;"10m"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max-file:&nbsp;"3"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compress:&nbsp;"true"<br /><br />x-common-env:&nbsp;<span style="color: #FF0000; ">&amp;common-env</span><br />&nbsp;&nbsp;REDIS_URL:&nbsp;${REDIS_URL:-redis://redis:6379}<br />&nbsp;&nbsp;REDIS_RATE_LIMIT_URL:&nbsp;${REDIS_URL:-redis://redis:6379}<br />&nbsp;&nbsp;PLAYWRIGHT_MICROSERVICE_URL:&nbsp;${PLAYWRIGHT_MICROSERVICE_URL:-http://playwright-service:3000/scrape}<br />&nbsp;&nbsp;POSTGRES_USER:&nbsp;${POSTGRES_USER:-postgres}<br />&nbsp;&nbsp;POSTGRES_PASSWORD:&nbsp;${POSTGRES_PASSWORD:-postgres}<br />&nbsp;&nbsp;POSTGRES_DB:&nbsp;${POSTGRES_DB:-postgres}<br />&nbsp;&nbsp;POSTGRES_HOST:&nbsp;${POSTGRES_HOST:-nuq-postgres}<br />&nbsp;&nbsp;POSTGRES_PORT:&nbsp;${POSTGRES_PORT:-5432}<br />&nbsp;&nbsp;USE_DB_AUTHENTICATION:&nbsp;${USE_DB_AUTHENTICATION:-false}<br />&nbsp;&nbsp;NUM_WORKERS_PER_QUEUE:&nbsp;${NUM_WORKERS_PER_QUEUE:-8}<br />&nbsp;&nbsp;CRAWL_CONCURRENT_REQUESTS:&nbsp;${CRAWL_CONCURRENT_REQUESTS:-10}<br />&nbsp;&nbsp;MAX_CONCURRENT_JOBS:&nbsp;${MAX_CONCURRENT_JOBS:-5}<br />&nbsp;&nbsp;BROWSER_POOL_SIZE:&nbsp;${BROWSER_POOL_SIZE:-5}<br />&nbsp;&nbsp;OPENAI_API_KEY:&nbsp;${OPENAI_API_KEY}<br />&nbsp;&nbsp;OPENAI_BASE_URL:&nbsp;${OPENAI_BASE_URL}<br />&nbsp;&nbsp;MODEL_NAME:&nbsp;${MODEL_NAME}<br />&nbsp;&nbsp;MODEL_EMBEDDING_NAME:&nbsp;${MODEL_EMBEDDING_NAME}<br />&nbsp;&nbsp;OLLAMA_BASE_URL:&nbsp;${OLLAMA_BASE_URL}<br />&nbsp;&nbsp;AUTUMN_SECRET_KEY:&nbsp;${AUTUMN_SECRET_KEY}<br />&nbsp;&nbsp;SLACK_WEBHOOK_URL:&nbsp;${SLACK_WEBHOOK_URL}<br />&nbsp;&nbsp;BULL_AUTH_KEY:&nbsp;${BULL_AUTH_KEY}<br />&nbsp;&nbsp;TEST_API_KEY:&nbsp;${TEST_API_KEY}<br />&nbsp;&nbsp;SUPABASE_ANON_TOKEN:&nbsp;${SUPABASE_ANON_TOKEN}<br />&nbsp;&nbsp;SUPABASE_URL:&nbsp;${SUPABASE_URL}<br />&nbsp;&nbsp;SUPABASE_SERVICE_TOKEN:&nbsp;${SUPABASE_SERVICE_TOKEN}<br />&nbsp;&nbsp;SELF_HOSTED_WEBHOOK_URL:&nbsp;${SELF_HOSTED_WEBHOOK_URL}<br />&nbsp;&nbsp;LOGGING_LEVEL:&nbsp;${LOGGING_LEVEL}<br />&nbsp;&nbsp;PROXY_SERVER:&nbsp;${PROXY_SERVER}<br />&nbsp;&nbsp;PROXY_USERNAME:&nbsp;${PROXY_USERNAME}<br />&nbsp;&nbsp;PROXY_PASSWORD:&nbsp;${PROXY_PASSWORD}<br />&nbsp;&nbsp;SEARXNG_ENDPOINT:&nbsp;${SEARXNG_ENDPOINT}<br />&nbsp;&nbsp;SEARXNG_ENGINES:&nbsp;${SEARXNG_ENGINES}<br />&nbsp;&nbsp;SEARXNG_CATEGORIES:&nbsp;${SEARXNG_CATEGORIES}<br />&nbsp;&nbsp;MAX_CPU:&nbsp;${MAX_CPU:-0.8}<br />&nbsp;&nbsp;MAX_RAM:&nbsp;${MAX_RAM:-0.8}<br />&nbsp;&nbsp;ALLOW_LOCAL_WEBHOOKS:&nbsp;${ALLOW_LOCAL_WEBHOOKS:-false}<br /><br />services:<br />&nbsp;&nbsp;playwright-service:<br />&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;NOTE:&nbsp;If&nbsp;you&nbsp;don't&nbsp;want&nbsp;to&nbsp;build&nbsp;the&nbsp;service&nbsp;locally,<br />&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;comment&nbsp;out&nbsp;the&nbsp;build:&nbsp;statement&nbsp;and&nbsp;uncomment&nbsp;the&nbsp;image:&nbsp;statement<br />&nbsp;&nbsp;&nbsp;&nbsp;image:&nbsp;ghcr.io/firecrawl/playwright-service:latest<br />&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;build:&nbsp;apps/playwright-service-ts<br />&nbsp;&nbsp;&nbsp;&nbsp;environment:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORT:&nbsp;3000<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PROXY_SERVER:&nbsp;${PROXY_SERVER}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PROXY_USERNAME:&nbsp;${PROXY_USERNAME}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PROXY_PASSWORD:&nbsp;${PROXY_PASSWORD}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ALLOW_LOCAL_WEBHOOKS:&nbsp;${ALLOW_LOCAL_WEBHOOKS:-false}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BLOCK_MEDIA:&nbsp;${BLOCK_MEDIA:-false}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Configure&nbsp;maximum&nbsp;concurrent&nbsp;pages&nbsp;for&nbsp;Playwright&nbsp;browser&nbsp;instances<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAX_CONCURRENT_PAGES:&nbsp;${CRAWL_CONCURRENT_REQUESTS:-10}<br />&nbsp;&nbsp;&nbsp;&nbsp;networks:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;backend<br />&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Resource&nbsp;limits&nbsp;for&nbsp;Docker&nbsp;Compose&nbsp;(not&nbsp;Swarm)<br />&nbsp;&nbsp;&nbsp;&nbsp;cpus:&nbsp;2.0<br />&nbsp;&nbsp;&nbsp;&nbsp;mem_limit:&nbsp;4G<br />&nbsp;&nbsp;&nbsp;&nbsp;memswap_limit:&nbsp;4G<br />&nbsp;&nbsp;&nbsp;&nbsp;logging:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;driver:&nbsp;"json-file"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max-size:&nbsp;"10m"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max-file:&nbsp;"3"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compress:&nbsp;"true"<br />&nbsp;&nbsp;&nbsp;&nbsp;tmpfs:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;/tmp/.cache:noexec,nosuid,size=1g<br /><br />&nbsp;&nbsp;api:<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">&lt;:&nbsp;</span><span style="color: #FF0000; ">*common-service<br />&nbsp;&nbsp;&nbsp;&nbsp;environment:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt;:&nbsp;*common-env<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HOST:&nbsp;"0.0.0.0"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PORT:&nbsp;${INTERNAL_PORT:-3002}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EXTRACT_WORKER_PORT:&nbsp;${EXTRACT_WORKER_PORT:-3004}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WORKER_PORT:&nbsp;${WORKER_PORT:-3005}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NUQ_RABBITMQ_URL:&nbsp;amqp://rabbitmq:5672<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ENV:&nbsp;local<br />&nbsp;&nbsp;&nbsp;&nbsp;depends_on:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redis:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;condition:&nbsp;service_started<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;playwright-service:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;condition:&nbsp;service_started<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rabbitmq:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;condition:&nbsp;service_healthy<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nuq-postgres:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;condition:&nbsp;service_started<br />&nbsp;&nbsp;&nbsp;&nbsp;ports:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;"${PORT:-3002}:${INTERNAL_PORT:-3002}"<br />&nbsp;&nbsp;&nbsp;&nbsp;command:&nbsp;node&nbsp;dist/src/harness.js&nbsp;--start-docker<br />&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Resource&nbsp;limits&nbsp;for&nbsp;Docker&nbsp;Compose&nbsp;(not&nbsp;Swarm)<br />&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Increase&nbsp;if&nbsp;you&nbsp;have&nbsp;more&nbsp;CPU&nbsp;cores/RAM&nbsp;available<br />&nbsp;&nbsp;&nbsp;&nbsp;cpus:&nbsp;4.0<br />&nbsp;&nbsp;&nbsp;&nbsp;mem_limit:&nbsp;8G<br />&nbsp;&nbsp;&nbsp;&nbsp;memswap_limit:&nbsp;8G<br /><br />&nbsp;&nbsp;redis:<br />&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;NOTE:&nbsp;If&nbsp;you&nbsp;want&nbsp;to&nbsp;use&nbsp;Valkey&nbsp;(open&nbsp;source)&nbsp;instead&nbsp;of&nbsp;Redis&nbsp;(source&nbsp;available),<br />&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;uncomment&nbsp;the&nbsp;Valkey&nbsp;statement&nbsp;and&nbsp;comment&nbsp;out&nbsp;the&nbsp;Redis&nbsp;statement.<br />&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;Using&nbsp;Valkey&nbsp;with&nbsp;Firecrawl&nbsp;is&nbsp;untested&nbsp;and&nbsp;not&nbsp;guaranteed&nbsp;to&nbsp;work.&nbsp;Use&nbsp;with&nbsp;caution.<br />&nbsp;&nbsp;&nbsp;&nbsp;image:&nbsp;redis:alpine<br />&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;image:&nbsp;valkey/valkey:alpine<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;networks:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;backend<br />&nbsp;&nbsp;&nbsp;&nbsp;command:&nbsp;redis-server&nbsp;--bind&nbsp;0.0.0.0<br />&nbsp;&nbsp;&nbsp;&nbsp;volumes:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;redis-data:/data<br />&nbsp;&nbsp;&nbsp;&nbsp;logging:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;driver:&nbsp;"json-file"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max-size:&nbsp;"5m"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max-file:&nbsp;"2"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compress:&nbsp;"true"<br /><br />&nbsp;&nbsp;rabbitmq:<br />&nbsp;&nbsp;&nbsp;&nbsp;image:&nbsp;rabbitmq:3-management<br />&nbsp;&nbsp;&nbsp;&nbsp;networks:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;backend<br />&nbsp;&nbsp;&nbsp;&nbsp;command:&nbsp;rabbitmq-server<br />&nbsp;&nbsp;&nbsp;&nbsp;healthcheck:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test:&nbsp;["CMD",&nbsp;"rabbitmq-diagnostics",&nbsp;"-q",&nbsp;"check_running"]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;interval:&nbsp;10s<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;timeout:&nbsp;10s<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retries:&nbsp;10<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start_period:&nbsp;30s<br />&nbsp;&nbsp;&nbsp;&nbsp;volumes:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;rabbitmq-data:/var/lib/rabbitmq<br />&nbsp;&nbsp;&nbsp;&nbsp;logging:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;driver:&nbsp;"json-file"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max-size:&nbsp;"5m"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max-file:&nbsp;"2"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compress:&nbsp;"true"<br /><br />&nbsp;&nbsp;nuq-postgres:<br />&nbsp;&nbsp;&nbsp;&nbsp;image:&nbsp;ghcr.io/firecrawl/nuq-postgres:latest<br />&nbsp;&nbsp;&nbsp;&nbsp;environment:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;POSTGRES_USER:&nbsp;${POSTGRES_USER:-postgres}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;POSTGRES_PASSWORD:&nbsp;${POSTGRES_PASSWORD:-postgres}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;POSTGRES_DB:&nbsp;${POSTGRES_DB:-postgres}<br />&nbsp;&nbsp;&nbsp;&nbsp;networks:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;backend<br />&nbsp;&nbsp;&nbsp;&nbsp;volumes:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;postgres-data:/var/lib/postgresql/data<br />&nbsp;&nbsp;&nbsp;&nbsp;logging:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;driver:&nbsp;"json-file"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max-size:&nbsp;"10m"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max-file:&nbsp;"3"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compress:&nbsp;"true"<br /><br />networks:<br />&nbsp;&nbsp;backend:<br />&nbsp;&nbsp;&nbsp;&nbsp;driver:&nbsp;bridge<br /><br />volumes:<br />&nbsp;&nbsp;redis-data:<br />&nbsp;&nbsp;&nbsp;&nbsp;driver:&nbsp;local<br />&nbsp;&nbsp;rabbitmq-data:<br />&nbsp;&nbsp;&nbsp;&nbsp;driver:&nbsp;local<br />&nbsp;&nbsp;postgres-data:<br />&nbsp;&nbsp;&nbsp;&nbsp;driver:&nbsp;local<br /></span></div><br />.env<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->#&nbsp;=====&nbsp;Required&nbsp;ENVS&nbsp;======<br />PORT=8019<br />HOST=0.0.0.0<br /><br />#&nbsp;Note:&nbsp;PORT&nbsp;is&nbsp;used&nbsp;by&nbsp;both&nbsp;the&nbsp;main&nbsp;API&nbsp;server&nbsp;and&nbsp;worker&nbsp;liveness&nbsp;check&nbsp;endpoint<br /><br />#&nbsp;To&nbsp;turn&nbsp;on&nbsp;DB&nbsp;authentication,&nbsp;you&nbsp;need&nbsp;to&nbsp;set&nbsp;up&nbsp;Supabase.<br />USE_DB_AUTHENTICATION=false<br /><br />#&nbsp;=====&nbsp;Optional&nbsp;ENVS&nbsp;======<br /><br />##&nbsp;===&nbsp;AI&nbsp;features&nbsp;(JSON&nbsp;format&nbsp;on&nbsp;scrape,&nbsp;/extract&nbsp;API)&nbsp;===<br />#&nbsp;Provide&nbsp;your&nbsp;OpenAI&nbsp;API&nbsp;key&nbsp;here&nbsp;to&nbsp;enable&nbsp;AI&nbsp;features<br />#&nbsp;OPENAI_API_KEY=your_openai_api_key_here<br /><br />#&nbsp;Experimental:&nbsp;Use&nbsp;Ollama<br />#&nbsp;OLLAMA_BASE_URL=http://localhost:11434/api<br />#&nbsp;MODEL_NAME=deepseek-r1:7b<br />#&nbsp;MODEL_EMBEDDING_NAME=nomic-embed-text<br /><br />#&nbsp;Experimental:&nbsp;Use&nbsp;any&nbsp;OpenAI-compatible&nbsp;API<br />#&nbsp;OPENAI_BASE_URL=https://example.com/v1<br />#&nbsp;OPENAI_API_KEY=your_api_key_here<br /><br />##&nbsp;===&nbsp;Proxy&nbsp;===<br />#&nbsp;PROXY_SERVER&nbsp;can&nbsp;be&nbsp;a&nbsp;full&nbsp;URL&nbsp;(e.g.&nbsp;http://0.1.2.3:1234)&nbsp;or&nbsp;just&nbsp;an&nbsp;IP&nbsp;and&nbsp;port&nbsp;combo&nbsp;(e.g.&nbsp;0.1.2.3:1234)<br />#&nbsp;Do&nbsp;not&nbsp;uncomment&nbsp;PROXY_USERNAME&nbsp;and&nbsp;PROXY_PASSWORD&nbsp;if&nbsp;your&nbsp;proxy&nbsp;is&nbsp;unauthenticated<br />#&nbsp;PROXY_SERVER=<br />#&nbsp;PROXY_USERNAME=<br />#&nbsp;PROXY_PASSWORD=<br /><br />##&nbsp;===&nbsp;/search&nbsp;API&nbsp;===<br />#&nbsp;By&nbsp;default,&nbsp;the&nbsp;/search&nbsp;API&nbsp;will&nbsp;use&nbsp;Google&nbsp;search.<br /><br />#&nbsp;You&nbsp;can&nbsp;specify&nbsp;a&nbsp;SearXNG&nbsp;server&nbsp;with&nbsp;the&nbsp;JSON&nbsp;format&nbsp;enabled,&nbsp;if&nbsp;you'd&nbsp;like&nbsp;to&nbsp;use&nbsp;that&nbsp;instead&nbsp;of&nbsp;direct&nbsp;Google.<br />#&nbsp;You&nbsp;can&nbsp;also&nbsp;customize&nbsp;the&nbsp;engines&nbsp;and&nbsp;categories&nbsp;parameters,&nbsp;but&nbsp;the&nbsp;defaults&nbsp;should&nbsp;also&nbsp;work&nbsp;just&nbsp;fine.<br />#&nbsp;SEARXNG_ENDPOINT=http://your.searxng.server<br />#&nbsp;SEARXNG_ENGINES=<br />#&nbsp;SEARXNG_CATEGORIES=<br /><br />##&nbsp;===&nbsp;PostgreSQL&nbsp;Database&nbsp;Configuration&nbsp;===<br />#&nbsp;Configure&nbsp;PostgreSQL&nbsp;credentials.&nbsp;These&nbsp;should&nbsp;match&nbsp;the&nbsp;credentials&nbsp;used&nbsp;by&nbsp;the&nbsp;nuq-postgres&nbsp;container.<br />#&nbsp;If&nbsp;you&nbsp;change&nbsp;these,&nbsp;ensure&nbsp;all&nbsp;three&nbsp;are&nbsp;set&nbsp;consistently.<br />#&nbsp;Note:&nbsp;nuq-postgres&nbsp;requires&nbsp;using&nbsp;'postgres'&nbsp;as&nbsp;the&nbsp;database&nbsp;name&nbsp;for&nbsp;proper&nbsp;pg_cron&nbsp;initialization<br />POSTGRES_USER=postgres<br />POSTGRES_PASSWORD=postgres<br />POSTGRES_DB=postgres<br /><br />##&nbsp;===&nbsp;Redis&nbsp;Configuration&nbsp;===<br />#&nbsp;These&nbsp;are&nbsp;auto-configured&nbsp;by&nbsp;docker-compose.yaml.&nbsp;You&nbsp;shouldn't&nbsp;need&nbsp;to&nbsp;change&nbsp;them.<br />#&nbsp;REDIS_URL=redis://redis:6379<br />#&nbsp;REDIS_RATE_LIMIT_URL=redis://redis:6379<br /><br />##&nbsp;===&nbsp;Playwright&nbsp;Service&nbsp;===<br />#&nbsp;This&nbsp;is&nbsp;auto-configured&nbsp;by&nbsp;docker-compose.yaml.&nbsp;You&nbsp;shouldn't&nbsp;need&nbsp;to&nbsp;change&nbsp;it.<br />#&nbsp;PLAYWRIGHT_MICROSERVICE_URL=http://playwright-service:3000/scrape<br /><br />##&nbsp;===&nbsp;Supabase&nbsp;Setup&nbsp;(used&nbsp;to&nbsp;support&nbsp;DB&nbsp;authentication,&nbsp;advanced&nbsp;logging,&nbsp;etc.)&nbsp;===<br />#&nbsp;SUPABASE_ANON_TOKEN=<br />#&nbsp;SUPABASE_URL=<br />#&nbsp;SUPABASE_SERVICE_TOKEN=<br /><br />#&nbsp;Use&nbsp;if&nbsp;you've&nbsp;set&nbsp;up&nbsp;authentication&nbsp;and&nbsp;want&nbsp;to&nbsp;test&nbsp;with&nbsp;a&nbsp;real&nbsp;API&nbsp;key<br />#&nbsp;TEST_API_KEY=<br /><br />#&nbsp;This&nbsp;key&nbsp;lets&nbsp;you&nbsp;access&nbsp;the&nbsp;queue&nbsp;admin&nbsp;panel.&nbsp;Change&nbsp;this&nbsp;if&nbsp;your&nbsp;deployment&nbsp;is&nbsp;publicly&nbsp;accessible.<br />BULL_AUTH_KEY=CHANGEME<br /><br />##&nbsp;===&nbsp;PDF&nbsp;Parsing&nbsp;===<br />#&nbsp;Set&nbsp;if&nbsp;you&nbsp;have&nbsp;a&nbsp;llamaparse&nbsp;key&nbsp;you'd&nbsp;like&nbsp;to&nbsp;use&nbsp;to&nbsp;parse&nbsp;pdfs<br />#&nbsp;LLAMAPARSE_API_KEY=<br /><br />##&nbsp;===&nbsp;Monitoring&nbsp;===<br />#&nbsp;Set&nbsp;if&nbsp;you'd&nbsp;like&nbsp;to&nbsp;send&nbsp;server&nbsp;health&nbsp;status&nbsp;messages&nbsp;to&nbsp;Slack<br />#&nbsp;SLACK_WEBHOOK_URL=<br /><br />#&nbsp;Set&nbsp;if&nbsp;you'd&nbsp;like&nbsp;to&nbsp;send&nbsp;posthog&nbsp;events&nbsp;like&nbsp;job&nbsp;logs<br />#&nbsp;POSTHOG_API_KEY=<br />#&nbsp;POSTHOG_HOST=<br /><br />##&nbsp;===&nbsp;System&nbsp;Resource&nbsp;Configuration&nbsp;===<br />#&nbsp;Maximum&nbsp;CPU&nbsp;usage&nbsp;threshold&nbsp;(0.0-1.0).&nbsp;Worker&nbsp;will&nbsp;reject&nbsp;new&nbsp;jobs&nbsp;when&nbsp;CPU&nbsp;usage&nbsp;exceeds&nbsp;this&nbsp;value.<br />#&nbsp;Default:&nbsp;0.8&nbsp;(80%)<br />MAX_CPU=0.8<br /><br />#&nbsp;Maximum&nbsp;RAM&nbsp;usage&nbsp;threshold&nbsp;(0.0-1.0).&nbsp;Worker&nbsp;will&nbsp;reject&nbsp;new&nbsp;jobs&nbsp;when&nbsp;memory&nbsp;usage&nbsp;exceeds&nbsp;this&nbsp;value.<br />#&nbsp;Default:&nbsp;0.8&nbsp;(80%)<br />MAX_RAM=0.8<br /><br />#&nbsp;Number&nbsp;of&nbsp;workers&nbsp;per&nbsp;queue<br />NUM_WORKERS_PER_QUEUE=8<br /><br />#&nbsp;Concurrent&nbsp;requests&nbsp;for&nbsp;crawling<br />CRAWL_CONCURRENT_REQUESTS=10<br /><br />#&nbsp;Maximum&nbsp;concurrent&nbsp;jobs<br />MAX_CONCURRENT_JOBS=5<br /><br />#&nbsp;Browser&nbsp;pool&nbsp;size<br />BROWSER_POOL_SIZE=5<br /><br />#&nbsp;Set&nbsp;if&nbsp;you'd&nbsp;like&nbsp;to&nbsp;allow&nbsp;local&nbsp;webhooks&nbsp;to&nbsp;be&nbsp;sent&nbsp;to&nbsp;your&nbsp;self-hosted&nbsp;instance<br />#&nbsp;ALLOW_LOCAL_WEBHOOKS=true<br /><br />#&nbsp;Block&nbsp;media&nbsp;in&nbsp;Playwright<br />#&nbsp;BLOCK_MEDIA=true<br /><br />#&nbsp;Logging&nbsp;level&nbsp;(DEBUG,&nbsp;INFO,&nbsp;WARN,&nbsp;ERROR)<br />LOGGING_LEVEL=INFO</div><br /><br /><br /><img src ="http://www.blogjava.net/paulwong/aggbug/451774.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2026-04-15 11:03 <a href="http://www.blogjava.net/paulwong/archive/2026/04/15/451774.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Karpathy's LLM-Wiki pattern 知识库资源</title><link>http://www.blogjava.net/paulwong/archive/2026/04/12/451771.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sun, 12 Apr 2026 09:32:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2026/04/12/451771.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/451771.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2026/04/12/451771.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/451771.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/451771.html</trackback:ping><description><![CDATA[<div>小龙虾直接安装可用</div>
<div><a href="https://skillhub.cn/skills/llm-wiki" target="_blank">https://skillhub.cn/skills/llm-wiki</a><br />
</div>
<div><br />
</div>
<div>clawhub上的</div>
<div><a href="https://clawhub.ai/john-ver/karpathy-llm-wiki" target="_blank">https://clawhub.ai/john-ver/karpathy-llm-wiki</a><br />
</div>
<div><br />
深加工成知识图谱的graphify</div>
<div><a href="https://github.com/safishamsi/graphify/blob/v4/README.zh-CN.md" target="_blank">https://github.com/safishamsi/graphify/blob/v4/README.zh-CN.md</a><br />
</div>
<div><br />
</div>
<div>微信公众号文章拉取技能</div>
<div><a href="https://skillhub.cn/skills/wechat-article-spider" target="_blank">https://skillhub.cn/skills/wechat-article-spider</a><br />
</div>
<div><br />
</div>
<div>将html转成markdown的技能</div>
<div><a href="https://skillhub.cn/skills/markdown-converter" target="_blank">https://skillhub.cn/skills/markdown-converter</a><br />
</div>
<div><br />
</div>
<div><br />
</div>
<img src ="http://www.blogjava.net/paulwong/aggbug/451771.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2026-04-12 17:32 <a href="http://www.blogjava.net/paulwong/archive/2026/04/12/451771.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CLI anything</title><link>http://www.blogjava.net/paulwong/archive/2026/04/12/451770.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sun, 12 Apr 2026 07:11:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2026/04/12/451770.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/451770.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2026/04/12/451770.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/451770.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/451770.html</trackback:ping><description><![CDATA[现在我们要操作一个网站，通常要打开浏览器，点不同的按钮进行操作，不同的按钮代表了不同的功能。
<div>cli将网站的这些功能，在命令行中完成，cli-boss search 就能返回职位的数据，当然是json或其他文本格式，对于人类是阅读不方便的，但对于ai是非常友好。</div>
<div>也就是搜索网站的职位，在cli中对应cli-boss search。</div>
<div><br />
</div>
<h1>cli安装</h1>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; border-image: none; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->#添加CLI-Anything插件市场<br />
/plugin&nbsp;marketplace&nbsp;add&nbsp;HKUDS/CLI-Anything<br />
<br />
#从市场安装&nbsp;cli-anything插件<br />
/plugin&nbsp;install&nbsp;cli-anything</div>
</div>
<div><br />
</div>
<h1>制作专属cli流程</h1>
<h3>生成专属cli所需的代码，如python</h3>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; border-image: none; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->克隆&nbsp;https://github.com/jgraph/drawio<br />
/cli-anything:cli-anything&nbsp;./drawio</div>
</div>
<div>执行后，会生成一个cli_anything文件夹，里面有各种说明文件和源代码，包括了用户输入命令行后，背后需做的动作</div>
<div><br />
</div>
<h3>编译源码，生成命令</h3>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; border-image: none; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->#根据readme.md来操作<br />
cd&nbsp;cli_anything<br />
pip&nbsp;install&nbsp;-e&nbsp;.<br />
</div>
</div>
<div><br />
</div>
<h3>使用专属cli</h3>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; border-image: none; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->#&nbsp;Create&nbsp;a&nbsp;new&nbsp;diagram&nbsp;<br />
filecii-anything-drawio&nbsp;project&nbsp;new&nbsp;mydiagram.drawio<br />
<br />
#&nbsp;Open&nbsp;an&nbsp;existing&nbsp;<br />
diagramcli-anything-drawio&nbsp;project&nbsp;open&nbsp;mydiagram.drawio<br />
<br />
#&nbsp;Add&nbsp;a&nbsp;shape<br />
cli-anything-drawio&nbsp;edit&nbsp;add&nbsp;--value&nbsp;"Hello"&nbsp;--x&nbsp;100&nbsp;--y&nbsp;100<br />
<br />
#&nbsp;List&nbsp;all&nbsp;elements<br />
cli-anything-drawio&nbsp;edit&nbsp;list<br />
<br />
#其他各种见cli_anything/readme.md</div>
</div>
<div><br />
</div>
<h3>借助agent使用专属cli</h3>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; border-image: none; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->你借助&nbsp;cli-anything-drawio里面的CLI命令画一个快速排序算法的流程图</div>
</div>
<div><br />
</div>
<div><br />
</div>
<div><br />
</div>
<div><br />
</div>
<img src ="http://www.blogjava.net/paulwong/aggbug/451770.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2026-04-12 15:11 <a href="http://www.blogjava.net/paulwong/archive/2026/04/12/451770.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>playwright-cli 案例</title><link>http://www.blogjava.net/paulwong/archive/2026/04/12/451769.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sun, 12 Apr 2026 02:24:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2026/04/12/451769.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/451769.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2026/04/12/451769.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/451769.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/451769.html</trackback:ping><description><![CDATA[<h1>环境</h1>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; border-image: none; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->hiclaw&nbsp;docker<br />
cat&nbsp;/etc/os-release&nbsp;<br />
PRETTY_NAME="Ubuntu&nbsp;22.04.5&nbsp;LTS"<br />
NAME="Ubuntu"<br />
VERSION_ID="22.04"<br />
VERSION="22.04.5&nbsp;LTS&nbsp;(Jammy&nbsp;Jellyfish)"<br />
VERSION_CODENAME=jammy<br />
ID=ubuntu<br />
ID_LIKE=debian<br />
HOME_URL="https://www.ubuntu.com/"<br />
SUPPORT_URL="https://help.ubuntu.com/"<br />
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"<br />
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"<br />
UBUNTU_CODENAME=jammy</div>
</div>
<div><br />
</div>
<h1>安装</h1>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; border-image: none; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->npm&nbsp;install&nbsp;-g&nbsp;@playwright/cli@latest</div>
</div>
<div><br />
</div>
<h1>安装chrome</h1>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; border-image: none; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->npx&nbsp;playwright&nbsp;install&nbsp;chrome</div>
</div>
<div><br />
</div>
<h1>操作</h1>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; border-image: none; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->playwright-cli&nbsp;open&nbsp;www.cnn.com&nbsp;<br />
###&nbsp;Browser&nbsp;`default`&nbsp;opened&nbsp;with&nbsp;pid&nbsp;159651.<br />
###&nbsp;Ran&nbsp;Playwright&nbsp;code<br />
```js<br />
await&nbsp;page.goto('https://www.cnn.com')<span style="color: #008000; ">;<br />
</span>```<br />
###&nbsp;Page<br />
-&nbsp;Page&nbsp;URL:&nbsp;https://edition.cnn.com/<br />
###&nbsp;Snapshot<br />
-&nbsp;<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">Snapshot</span><span style="color: #800000; font-weight: bold; ">]</span>(.playwright-cli/page-2026-04-12T02-21-31-067Z.yml)</div>
</div>
<div><br />
</div>
<h1>安装skill</h1>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; border-image: none; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->cd&nbsp;~<br />
playwright-cli&nbsp;install&nbsp;--skills</div>
</div>
<div>
<div>默认会在当前目录下生成 .claude/skills/playwright-cli</div>
<div>得将playwright-cli搬到不同agent的skills目录下</div>
</div>
<div><br />
</div>
<h1>案例1:打开页面，输入内容</h1>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; border-image: none; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->用paywight-cLi参数--headed&nbsp;--persistent，打开grok，问问今天青岛天气怎么样?</div>
</div>
<div><br />
</div>
<h1>案例2:打开页面，需点击加载数据</h1>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; border-image: none; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->用playwrightcli&nbsp;带参数&nbsp;--headed&nbsp;--persistent&nbsp;查看https://detail.tmall.com/item.htm?&amp;xxc=taobaoSearchabbucket=4&amp;id=612098145454&amp;mi_id=0000AWGjgiGB7oSCDLfegRXMs0rDPkp34S50rNrByn86yAY&amp;ns=1&amp;skuId=5872701131539&amp;spm-a21n57.1.hoverItem.2utparam-%7B%22aplus_abtest%22%3A%2240acb849856085978c81b6cdec803550%22%70D<br />
前100条评论保存到一个csV文件里面。</div>
</div>
<div><br />
</div>
<div>让ai保存成一个skill</div>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; border-image: none; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->创建一个save_mall_comments&nbsp;skill把刚才打开网站，查看评论，并且保存评论的全过程，遇到的坑都提炼出来保存到skill里面</div>
</div>
<div><br />
</div>
<div>直接保存成一个不依赖ai的可执行脚本</div>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; border-image: none; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->你把刚才所有的playWwright&nbsp;CLI命令汇总成成一个脚本，执行脚本就能获取商品前100条评论，并且保存到一个CSV文件里面。注意每一步都有合理的延时与等待，确保任务成功。脚本写完你先测试一轮。</div>
</div>
<div><br />
</div>
<div>下次直接执行</div>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; border-image: none; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->./save_mall_comments.sh&nbsp;"https://detail.tmall.com/item.htm?id=612098145454&amp;skuId=5872701131539"&nbsp;100&nbsp;--output&nbsp;tmall_reviews_612098145454_top100.csv&nbsp;--close-browser</div>
</div>
<div><br />
</div>
<h1>案例3:web自动化测试</h1>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; border-image: none; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->阅读代码，把从注册开始的主体流程写一个中文的测试文档，只测试主流程即可。然后用playwright-cli&nbsp;open&nbsp;--headed&nbsp;--persistent&nbsp;打开网页，根据你的测试用例，完成进行测试，</div>
</div>
<div><br />
</div>
<div>还可以借助openclaw，进行定时自动化测试</div>
<div><br />
</div>
<h1>案例4:在x上发推</h1>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; border-image: none; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->playwright-cli&nbsp;https://x.com/compose/articles&nbsp;&nbsp;--headed&nbsp;--persistent&nbsp;&nbsp;打开网站，创建写一个新的文章，把&nbsp;为什么巨头都在做CLI.local.html&nbsp;的内容粘贴进去。<br />
<br />
然后找到所有的"1f4f7.svg"小icon的位置，按Backspace键删除，然后复制images文件夹里面的图片，按Ctrl+V粘贴进去。"1f4f7.svg"小icon数量跟图片数量是相等的，你要按顺序替换。复制操作你应使用操作系统的CLI命令，粘贴操作在浏览器里按Ctrl+V就行了。</div>
</div>
<div><br />
</div>
<div>整理成skill</div>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; border-image: none; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->好，非常好，你把从把文章里的图片下载到本地，开始的全流程，整理成一个skills，放到项目目录。以后我只要给你一个文章，你就能自动发布</div>
</div>
<div><br />
</div>
<div>如何使用这个skill</div>
<div>
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; border-image: none; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->http://xxx.xxx.xxx/xxx.html&nbsp;文章路径，用&nbsp;x-article-auto-publisher自动发布</div>
</div>
<div><br />
</div>
<div><br />
</div>
<img src ="http://www.blogjava.net/paulwong/aggbug/451769.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2026-04-12 10:24 <a href="http://www.blogjava.net/paulwong/archive/2026/04/12/451769.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>阿迈奇3080显卡驱动</title><link>http://www.blogjava.net/paulwong/archive/2026/04/06/451766.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Sun, 05 Apr 2026 23:37:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2026/04/06/451766.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/451766.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2026/04/06/451766.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/451766.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/451766.html</trackback:ping><description><![CDATA[<a href="https://bbs.acemagic.cn/d/28-3060de-qu-dong-kuai-geng-xin-a" target="_blank">https://bbs.acemagic.cn/d/28-3060de-qu-dong-kuai-geng-xin-a</a><br /><br />第三方驱动<br /><a href="https://github.com/arutar/FrankenDriver?tab=readme-ov-file#drivers-download" target="_blank">https://github.com/arutar/FrankenDriver?tab=readme-ov-file#drivers-download</a><br /><br /><br /><a href="https://bbs.acemagic.cn/d/25-3080dao-di-chu-bu-chu-qu-dong" target="_blank">https://bbs.acemagic.cn/d/25-3080dao-di-chu-bu-chu-qu-dong</a><br /><br /><br /><a href="https://androidpctv.com/frankendriver-nvidia-driver-chinese-mini-pc/">FrankenDriver: Install NVIDIA drivers for unsupported Chinese mini PCs</a><img src ="http://www.blogjava.net/paulwong/aggbug/451766.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2026-04-06 07:37 <a href="http://www.blogjava.net/paulwong/archive/2026/04/06/451766.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux 查看本机软件硬件信息的命令</title><link>http://www.blogjava.net/paulwong/archive/2026/03/23/451765.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Mon, 23 Mar 2026 03:45:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2026/03/23/451765.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/451765.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2026/03/23/451765.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/451765.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/451765.html</trackback:ping><description><![CDATA[<h1><br /></h1>
  <h2>🖥️ 硬件信息</h2>
  <ul>
    <li><strong>CPU 信息</strong>
      <ul>
        <li><code>lscpu</code> &#8594; 显示 CPU 架构、核心数、线程数</li>
        <li><code>cat /proc/cpuinfo</code> &#8594; 查看详细 CPU 型号、频率</li>
      </ul>
    </li>
    <li><strong>内存信息</strong>
      <ul>
        <li><code>free -h</code> &#8594; 显示内存使用情况</li>
        <li><code>cat /proc/meminfo</code> &#8594; 查看详细内存参数</li>
      </ul>
    </li>
    <li><strong>硬盘信息</strong>
      <ul>
        <li><code>lsblk</code> &#8594; 查看磁盘分区和挂载</li>
        <li><code>df -h</code> &#8594; 查看磁盘使用情况</li>
        <li><code>fdisk -l</code> &#8594; 查看磁盘分区表</li>
      </ul>
    </li>
    <li><strong>PCI/USB 设备</strong>
      <ul>
        <li><code>lspci</code> &#8594; 列出所有 PCI 设备</li>
        <li><code>lsusb</code> &#8594; 列出所有 USB 设备</li>
      </ul>
    </li>
    <li><strong>主板/BIOS</strong>
      <ul>
        <li><code>dmidecode</code> &#8594; 显示 BIOS、主板、内存插槽等信息</li>
      </ul>
    </li>
  </ul>
  <h2>📦 软件信息</h2>
  <ul>
    <li><strong>操作系统版本</strong>
      <ul>
        <li><code>cat /etc/os-release</code> &#8594; 查看发行版信息</li>
        <li><code>uname -a</code> &#8594; 查看内核版本和架构</li>
      </ul>
    </li>
    <li><strong>已安装软件</strong>
      <ul>
        <li>Debian/Ubuntu: <code>dpkg -l</code> 或 <code>apt list --installed</code></li>
        <li>RHEL/CentOS/AlmaLinux: <code>rpm -qa</code> 或 <code>dnf list installed</code></li>
      </ul>
    </li>
    <li><strong>服务与进程</strong>
      <ul>
        <li><code>systemctl list-units --type=service</code> &#8594; 查看正在运行的服务</li>
        <li><code>ps aux</code> &#8594; 查看当前进程</li>
      </ul>
    </li>
    <li><strong>网络信息</strong>
      <ul>
        <li><code>ip addr</code> &#8594; 查看网卡和 IP 地址</li>
        <li><code>ss -tuln</code> &#8594; 查看端口监听情况</li>
      </ul>
    </li>
  </ul>
  <h2>🔍 综合工具</h2>
  <ul>
    <li><code>inxi -Fx</code> &#8594; 一次性显示完整的硬件和系统信息</li>
    <li><code>neofetch</code> &#8594; 美观地显示系统信息</li>
  </ul><img src ="http://www.blogjava.net/paulwong/aggbug/451765.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2026-03-23 11:45 <a href="http://www.blogjava.net/paulwong/archive/2026/03/23/451765.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OPEN CLAW资源</title><link>http://www.blogjava.net/paulwong/archive/2026/03/21/451763.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 20 Mar 2026 19:42:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2026/03/21/451763.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/451763.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2026/03/21/451763.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/451763.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/451763.html</trackback:ping><description><![CDATA[<div>qclaw技能广场</div>
<div><a href="https://skillhub.tencent.com/#categories" target="_blank">https://skillhub.tencent.com/#categories</a><br />
</div>
<div><br />
</div>
<div>openclaw技能</div>
<div><a href="https://clawhub.ai" target="_blank">https://clawhub.ai</a><br />
</div>
<div><br />
</div>
<div><br />
</div>
<div><br />
</div>
<div><br />
</div>
<img src ="http://www.blogjava.net/paulwong/aggbug/451763.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2026-03-21 03:42 <a href="http://www.blogjava.net/paulwong/archive/2026/03/21/451763.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>语义缓存 - 使用Higress</title><link>http://www.blogjava.net/paulwong/archive/2026/03/11/451755.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Wed, 11 Mar 2026 10:07:00 GMT</pubDate><guid>http://www.blogjava.net/paulwong/archive/2026/03/11/451755.html</guid><wfw:comment>http://www.blogjava.net/paulwong/comments/451755.html</wfw:comment><comments>http://www.blogjava.net/paulwong/archive/2026/03/11/451755.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/paulwong/comments/commentRss/451755.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/paulwong/services/trackbacks/451755.html</trackback:ping><description><![CDATA[与大模型的对话，如果之后其他人非当前用户的问题如果与之前的用户问的问题类似，可迅速从缓存中取出，无需再走LLM。<br /><br />使用ai网关Higress，此动作在服务端Higress中完成，客户端无需任何代码。<br /><br />在milvus的vector db中新加collection，名称：<span style="font-size: 13px; background-color: #eeeeee;">ai_higress_cache，和以下字段：<br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Field,&nbsp;Type,&nbsp;Index&nbsp;Name,&nbsp;Index&nbsp;Type,&nbsp;Index&nbsp;Parameters<br />id,auto&nbsp;id,&nbsp;Int64<br />vector,&nbsp;FloatVector(4096),&nbsp;vector,&nbsp;metric_type:COSINE<br />question,&nbsp;VarChar(5000)<br />answer,&nbsp;VarChar(5000)<br />#这三个字段vector,&nbsp;question,&nbsp;answer是必需的，且名字不能改</div><br />前期需要配置做embedding的服务，VECTOR DB的服务，均可在服务来源中完成。<br /><br />在&#8220;ai路由管理&#8221;中，点击某个路由的策略，点击配置，输入以下yaml配置<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all">embedding:<br />&nbsp;&nbsp;apiKey:&nbsp;"sk-xxxxxxx"<br />&nbsp;&nbsp;model:&nbsp;"nvidia/llama-embed-nemotron-8b"<br />&nbsp;&nbsp;path:&nbsp;"/v1/embeddings"<br />&nbsp;&nbsp;serviceName:&nbsp;"llm-vllm-nvidia--llama-embed-nemotron-8b.internal.static"<br />&nbsp;&nbsp;servicePort:&nbsp;80<br />&nbsp;&nbsp;type:&nbsp;"openai"<br />vector:<br />&nbsp;&nbsp;apiKey:&nbsp;"empty-key"<br />&nbsp;&nbsp;collectionID:&nbsp;"ai_higress_cache"<br />&nbsp;&nbsp;serviceName:&nbsp;"my-milvus.static"<br />&nbsp;&nbsp;servicePort:&nbsp;80<br />&nbsp;&nbsp;type:&nbsp;"milvus"<br />cacheKeyFrom:&nbsp;"messages.@reverse.0.content"<br />cacheKeyPrefix:&nbsp;"openai_gpt_oss_20b_"<br />cacheStreamValueFrom:&nbsp;"choices.0.delta.content"<br />cacheValueFrom:&nbsp;"choices.0.message.content"<br />returnResponseTemplate:&nbsp;|<br />&nbsp;&nbsp;{"id":"from-cache","choices":<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">{"index":0,"message":{"role":"assistant","content":"%s"},"finish_reason":"stop"}</span><span style="color: #800000; font-weight: bold; ">]</span>,"model":"gpt-4o","object":"chat.completion","usage":{"prompt_tokens":0,"completion_tokens":0,"total_tokens":0}}<br />returnStreamResponseTemplate:&nbsp;|-<br />&nbsp;&nbsp;data:{"id":"from-cache","choices":<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">{"index":0,"delta":{"role":"assistant","content":"%s"},"finish_reason":"stop"}</span><span style="color: #800000; font-weight: bold; ">]</span>,"model":"gpt-4o","object":"chat.completion","usage":{"prompt_tokens":0,"completion_tokens":0,"total_tokens":0}}<br />&nbsp;&nbsp;data:<span style="color: #800000; font-weight: bold; ">[</span><span style="color: #800000; ">DONE</span><span style="color: #800000; font-weight: bold; ">]</span></div><br />参照：<br /><a href="https://higress.ai/docs/latest/user/plugins/ai/api-provider/ai-cache/" target="_blank">https://higress.ai/docs/latest/user/plugins/ai/api-provider/ai-cache/</a><br /><br /><img src ="http://www.blogjava.net/paulwong/aggbug/451755.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/paulwong/" target="_blank">paulwong</a> 2026-03-11 18:07 <a href="http://www.blogjava.net/paulwong/archive/2026/03/11/451755.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>