feat(vault): track PARA layer (Categories/References/Notes/Daily/Clippings/Tags/Attachments/Presentations)
- Add 8 PARA directories to .gitignore whitelist (234 files) - Completes dual-layer sync: LLM Wiki layer + PARA personal knowledge layer - markdown_output/ remains excluded (transit zone)
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
---
|
||||
categories:
|
||||
- "[[Clippings]]"
|
||||
created: 2025-09-15
|
||||
topics:
|
||||
- 反思
|
||||
author:
|
||||
- "[[Steph Ango]]"
|
||||
tags:
|
||||
- clippings
|
||||
- advice
|
||||
- 反思
|
||||
---
|
||||
1. 若生命只剩最后六个月,你会去做什么?
|
||||
2. 若拥有亿万财富,你会做什么?
|
||||
3. 现在的你会给十年前的你一些什么建议?
|
||||
4. 你希望十年之后,什么依旧保持一致?
|
||||
5. 你希望十年之后,什么是发生了变化?
|
||||
6. 在你心中什么是最完美的幸福?
|
||||
7. 何时何地,你最幸福过?
|
||||
8. 为什么每天要起床?
|
||||
9. 什么是最痛苦的?
|
||||
10. 你的性格是什么?
|
||||
11. 你最害怕的是什么?
|
||||
12. 你最想培养的特质是什么?
|
||||
13. 你最希望别人的拥有的特质是什么?
|
||||
14. 什么时候会骗自己?
|
||||
15. 浪费过什么?
|
||||
16. 什么样的美德被过誉了?
|
||||
17. 你最不喜欢自己外表的什么方面?
|
||||
18. 如果你能改变一件事情,那是什么?
|
||||
19. 你期望什么样的天赋?
|
||||
20. 别人通常会误解你什么?
|
||||
21. 你欣赏男人身上的气质是什么?
|
||||
22. 你欣赏女人身上的气质是什么?
|
||||
23. 你最看重朋友的什么?
|
||||
24. 过去一年,最大的成就?
|
||||
25. 如果你可以给每一个人同样一个礼物,那是什么?
|
||||
26. 时间浪费在什么上了?
|
||||
27. 最痛苦却又最值得做的是什么?
|
||||
28. 你最想去什么地方生活?
|
||||
29. 你最喜欢的一件东西?
|
||||
30. 谁是你最好的朋友?
|
||||
31. 谁或什么是你最珍贵的?
|
||||
32. 当今世上,你最欣赏的人是?
|
||||
33. 你最欣赏的一个小说英雄?
|
||||
34. 你觉得和哪个历史人物最像?
|
||||
35. 最后悔什么?
|
||||
36. 你希望以何种方式结束自己的生命?
|
||||
37. 座右铭是?
|
||||
38. 你受到最好赞美是?
|
||||
39. 最幸运的一件事是?
|
||||
40. 什么让你充满了希望?
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
categories:
|
||||
- "[[Clippings]]"
|
||||
created: 2025-09-15
|
||||
author:
|
||||
- "[[Steph Ango]]"
|
||||
tags:
|
||||
- clippings
|
||||
- advice
|
||||
- 反思
|
||||
---
|
||||
1. 你今年做了哪些之前从未做过的事?
|
||||
2. 你有没有遵守年初时和自己许下的约定?
|
||||
3. 你身边有人生孩子了吗?
|
||||
4. 你身边有人去世了吗?
|
||||
5. 你去了哪些城市/州/国家?
|
||||
6. 明年你想要获得哪些你今年没有的东西?
|
||||
7. 今年的哪个或哪些日子会铭刻在你的记忆中,为什么?
|
||||
8. 你今年最大的成就是什么?
|
||||
9. 你今年最大的失败是什么?
|
||||
10. 你今年还遇到过哪些困难?
|
||||
11. 你今年是否生过病或受过伤?
|
||||
12. 你今年买过的最好的东西是什么?
|
||||
13. 谁的行为值得去表扬?
|
||||
14. 谁的行为令你感到震惊?
|
||||
15. 你大部分的钱都花到哪里去了?
|
||||
16. 有什么事让你感到超级、超级、超级兴奋?
|
||||
17. 哪首歌会永远让你想起这一年?
|
||||
18. 与去年的这个时候相比,你是:感到更快乐还是更悲伤了?变得更瘦还是更胖了?变得更富还是更穷了?
|
||||
19. 你希望自己能做得更多的是什么?
|
||||
20. 你希望自己能做得更少的是什么?
|
||||
21. 你是如何度过节假日的?
|
||||
22. 你今年坠入爱河了吗?
|
||||
23. 你是否有讨厌某个你去年此时不觉得讨厌的人呢?
|
||||
24. 你最喜欢的电视节目是什么?
|
||||
25. 你读过最好的一本书是什么?
|
||||
26. 你今年发现的最好听的一首歌是什么?
|
||||
27. 你今年看过最喜欢的一部电影是什么?
|
||||
28. 你今年吃过最好吃的一顿饭是什么?
|
||||
29. 有什么是你想要且得到了的?
|
||||
30. 有什么是你想要却没有得到的?
|
||||
31. 你生日那天做了什么?
|
||||
32. 有什么还未发生的事,如果发生了,会让你的这一年变得无比满足?
|
||||
33. 你会如何描述你今年的个人时尚风格?
|
||||
34. 是什么让你保持理智?
|
||||
35. 你最欣赏哪个名人/公众人物?
|
||||
36. 哪个政治问题最令你有感而发?
|
||||
37. 你想念哪些人?
|
||||
38. 在你新认识的人之中,谁是最好的?
|
||||
39. 今年你学到了什么宝贵的人生经验?
|
||||
40. 能够总结你这一年的一句话是什么?
|
||||
@@ -0,0 +1,79 @@
|
||||
---
|
||||
categories:
|
||||
- "[[Clippings]]"
|
||||
author:
|
||||
- "[[Kevin Kelly]]"
|
||||
url: https://kk.org/thetechnium/68-bits-of-unsolicited-advice/
|
||||
created: 2023-09-12
|
||||
published: 2020-04-28
|
||||
topics: []
|
||||
---
|
||||
It’s my birthday. I’m 68. I feel like pulling up a rocking chair and dispensing advice to the young ‘uns. Here are 68 pithy bits of unsolicited advice which I offer as my birthday present to all of you.
|
||||
|
||||
- Learn how to learn from those you disagree with, or even offend you. See if you can find the truth in what they believe.
|
||||
- Being enthusiastic is worth 25 IQ points.
|
||||
- Always demand a deadline. A deadline weeds out the extraneous and the ordinary. It prevents you from trying to make it perfect, so you have to make it different. Different is better.
|
||||
- Don’t be afraid to ask a question that may sound stupid because 99% of the time everyone else is thinking of the same question and is too embarrassed to ask it.
|
||||
- Being able to listen well is a superpower. While listening to someone you love keep asking them “Is there more?”, until there is no more.
|
||||
- A worthy goal for a year is to learn enough about a subject so that you can’t believe how ignorant you were a year earlier.
|
||||
- Gratitude will unlock all other virtues and is something you can get better at.
|
||||
- Treating a person to a meal never fails, and is so easy to do. It’s powerful with old friends and a great way to make new friends.
|
||||
- Don’t trust all-purpose glue.
|
||||
- Reading to your children regularly will bond you together and kickstart their imaginations.
|
||||
- Never use a credit card for credit. The only kind of credit, or debt, that is acceptable is debt to acquire something whose exchange value is extremely likely to increase, like in a home. The exchange value of most things diminishes or vanishes the moment you purchase them. Don’t be in debt to losers.
|
||||
- Pros are just amateurs who know how to gracefully recover from their mistakes.
|
||||
- Extraordinary claims should require extraordinary evidence to be believed.
|
||||
- Don’t be the smartest person in the room. Hangout with, and learn from, people smarter than yourself. Even better, find smart people who will disagree with you.
|
||||
- Rule of 3 in conversation. To get to the real reason, ask a person to go deeper than what they just said. Then again, and once more. The third time’s answer is close to the truth.
|
||||
- Don’t be the best. Be the only.
|
||||
- Everyone is shy. Other people are waiting for you to introduce yourself to them, they are waiting for you to send them an email, they are waiting for you to ask them on a date. Go ahead.
|
||||
- Don’t take it personally when someone turns you down. Assume they are like you: busy, occupied, distracted. Try again later. It’s amazing how often a second try works.
|
||||
- The purpose of a habit is to remove that action from self-negotiation. You no longer expend energy deciding whether to do it. You just do it. Good habits can range from telling the truth, to flossing.
|
||||
- Promptness is a sign of respect.
|
||||
- When you are young spend at least 6 months to one year living as poor as you can, owning as little as you possibly can, eating beans and rice in a tiny room or tent, to experience what your “worst” lifestyle might be. That way any time you have to risk something in the future you won’t be afraid of the worst case scenario.
|
||||
- Trust me: There is no “them”.
|
||||
- The more you are interested in others, the more interesting they find you. To be interesting, be interested.
|
||||
- Optimize your generosity. No one on their deathbed has ever regretted giving too much away.
|
||||
- To make something good, just do it. To make something great, just re-do it, re-do it, re-do it. The secret to making fine things is in remaking them.
|
||||
- The Golden Rule will never fail you. It is the foundation of all other virtues.
|
||||
- If you are looking for something in your house, and you finally find it, when you’re done with it, don’t put it back where you found it. Put it back where you first looked for it.
|
||||
- Saving money and investing money are both good habits. Small amounts of money invested regularly for many decades without deliberation is one path to wealth.
|
||||
- To make mistakes is human. To own your mistakes is divine. Nothing elevates a person higher than quickly admitting and taking personal responsibility for the mistakes you make and then fixing them fairly. If you mess up, fess up. It’s astounding how powerful this ownership is.
|
||||
- Never get involved in a land war in Asia.
|
||||
- You can obsess about serving your customers/audience/clients, or you can obsess about beating the competition. Both work, but of the two, obsessing about your customers will take you further.
|
||||
- Show up. Keep showing up. Somebody successful said: 99% of success is just showing up.
|
||||
- Separate the processes of creation from improving. You can’t write and edit, or sculpt and polish, or make and analyze at the same time. If you do, the editor stops the creator. While you invent, don’t select. While you sketch, don’t inspect. While you write the first draft, don’t reflect. At the start, the creator mind must be unleashed from judgement.
|
||||
- If you are not falling down occasionally, you are just coasting.
|
||||
- Perhaps the most counter-intuitive truth of the universe is that the more you give to others, the more you’ll get. Understanding this is the beginning of wisdom.
|
||||
- Friends are better than money. Almost anything money can do, friends can do better. In so many ways a friend with a boat is better than owning a boat.
|
||||
- This is true: It’s hard to cheat an honest man.
|
||||
- When an object is lost, 95% of the time it is hiding within arm’s reach of where it was last seen. Search in all possible locations in that radius and you’ll find it.
|
||||
- You are what you do. Not what you say, not what you believe, not how you vote, but what you spend your time on.
|
||||
- If you lose or forget to bring a cable, adapter or charger, check with your hotel. Most hotels now have a drawer full of cables, adapters and chargers others have left behind, and probably have the one you are missing. You can often claim it after borrowing it.
|
||||
- Hatred is a curse that does not affect the hated. It only poisons the hater. Release a grudge as if it was a poison.
|
||||
- There is no limit on better. Talent is distributed unfairly, but there is no limit on how much we can improve what we start with.
|
||||
- Be prepared: When you are 90% done any large project (a house, a film, an event, an app) the rest of the myriad details will take a second 90% to complete.
|
||||
- When you die you take absolutely nothing with you except your reputation.
|
||||
- Before you are old, attend as many funerals as you can bear, and listen. Nobody talks about the departed’s achievements. The only thing people will remember is what kind of person you were while you were achieving.
|
||||
- For every dollar you spend purchasing something substantial, expect to pay a dollar in repairs, maintenance, or disposal by the end of its life.
|
||||
- Anything real begins with the fiction of what could be. Imagination is therefore the most potent force in the universe, and a skill you can get better at. It’s the one skill in life that benefits from ignoring what everyone else knows.
|
||||
- When crisis and disaster strike, don’t waste them. No problems, no progress.
|
||||
- On vacation go to the most remote place on your itinerary first, bypassing the cities. You’ll maximize the shock of otherness in the remote, and then later you’ll welcome the familiar comforts of a city on the way back.
|
||||
- When you get an invitation to do something in the future, ask yourself: would you accept this if it was scheduled for tomorrow? Not too many promises will pass that immediacy filter.
|
||||
- Don’t say anything about someone in email you would not be comfortable saying to them directly, because eventually they will read it.
|
||||
- If you desperately need a job, you are just another problem for a boss; if you can solve many of the problems the boss has right now, you are hired. To be hired, think like your boss.
|
||||
- Art is in what you leave out.
|
||||
- Acquiring things will rarely bring you deep satisfaction. But acquiring experiences will.
|
||||
- Rule of 7 in research. You can find out anything if you are willing to go seven levels. If the first source you ask doesn’t know, ask them who you should ask next, and so on down the line. If you are willing to go to the 7th source, you’ll almost always get your answer.
|
||||
- How to apologize: Quickly, specifically, sincerely.
|
||||
- Don’t ever respond to a solicitation or a proposal on the phone. The urgency is a disguise.
|
||||
- When someone is nasty, rude, hateful, or mean with you, pretend they have a disease. That makes it easier to have empathy toward them which can soften the conflict.
|
||||
- Eliminating clutter makes room for your true treasures.
|
||||
- You really don’t want to be famous. Read the biography of any famous person.
|
||||
- Experience is overrated. When hiring, hire for aptitude, train for skills. Most really amazing or great things are done by people doing them for the first time.
|
||||
- A vacation + a disaster = an adventure.
|
||||
- Buying tools: Start by buying the absolute cheapest tools you can find. Upgrade the ones you use a lot. If you wind up using some tool for a job, buy the very best you can afford.
|
||||
- Learn how to take a 20-minute power nap without embarrassment.
|
||||
- Following your bliss is a recipe for paralysis if you don’t know what you are passionate about. A better motto for most youth is “master something, anything”. Through mastery of one thing, you can drift towards extensions of that mastery that bring you more joy, and eventually discover where your bliss is.
|
||||
- I’m positive that in 100 years much of what I take to be true today will be proved to be wrong, maybe even embarrassingly wrong, and I try really hard to identify what it is that I am wrong about today.
|
||||
- Over the long term, the future is decided by optimists. To be an optimist you don’t have to ignore all the many problems we create; you just have to imagine improving our capacity to solve problems.
|
||||
@@ -0,0 +1,134 @@
|
||||
---
|
||||
categories:
|
||||
- "[[Clippings]]"
|
||||
- "[[Posts]]"
|
||||
author:
|
||||
- "[[Steph Ango]]"
|
||||
source: https://stephango.com/buy-wisely
|
||||
clipped: 2023-11-18
|
||||
published: 2023-09-29
|
||||
status:
|
||||
- "[[Published]]"
|
||||
topics:
|
||||
- "[[Products]]"
|
||||
- "[[Product usage analysis]]"
|
||||
---
|
||||
Whenever I buy things I try to prioritize *cost per use*. Sometimes I consider other priorities such as *cost per smile*, *cost per thrill*, *cost per externality*, and *cost per lesson*.
|
||||
|
||||
## Cost per use
|
||||
|
||||
*Cost per use* is a heuristic that helps me make decisions about most non-perishable purchases such as clothes, vehicles, tools, devices, and even services. How much will it cost me if I divide the price by its expected number of uses?
|
||||
|
||||
*Cost per use* accounts for longevity. Durable and repairable things may cost more upfront, but over time they cost less than things that break and need to be replaced.
|
||||
|
||||
For example, I buy wool socks from a brand called [Darn Tough](https://darntough.com/). They cost about four times as much as cheap socks, but they’re durable, comfortable, and have a lifetime guarantee.
|
||||
|
||||
How many times do you wear a pair of socks before they develop holes? It may sound silly, but if you amortize the price of each pair of socks over their expected number of uses, a good pair of socks is a worthwhile investment.
|
||||
|
||||
Quality
|
||||
|
||||
Price
|
||||
|
||||
Uses
|
||||
|
||||
Cost per use
|
||||
|
||||
Poor
|
||||
|
||||
$5
|
||||
|
||||
10
|
||||
|
||||
$0.50
|
||||
|
||||
Good
|
||||
|
||||
$10
|
||||
|
||||
50
|
||||
|
||||
$0.20
|
||||
|
||||
Best
|
||||
|
||||
$20
|
||||
|
||||
200
|
||||
|
||||
$0.10
|
||||
|
||||
Not only will durable socks save you money, they also save you the hassle of throwing out old socks and buying new ones. Your time has value.
|
||||
|
||||
The best things asymptote to *zero dollars per use* over their lifetime. Not all products that have a low *cost per use* are expensive. Some things are both affordable and durable.
|
||||
|
||||
*Cost per use* can also be used to measure the value you expect to get out of services like gym memberships, healthcare, or *all-you-can-eat* subscriptions like streaming services.
|
||||
|
||||
## How to assess durability
|
||||
|
||||
My aim is to have fewer but better things. These are some of the questions I ask of the things that I incorporate into my life:
|
||||
|
||||
- Will it be as useful to me in the future as it is now?
|
||||
- Is it made of durable and maintainable materials?
|
||||
- Does it have a timeless [style](https://stephango.com/style) and aesthetic?
|
||||
- Does it age well, wear well, build a [wabi-sabi](https://stephango.com/scars) patina?
|
||||
- Does it retain its resale value? Would someone else want to own it?
|
||||
- Can it be disassembled and repaired?
|
||||
- Does it have replaceable, non-proprietary parts that are easy to acquire?
|
||||
- Can it be powered with a standard plug or replaceable batteries?
|
||||
- Can it be modified and upgraded?
|
||||
- Has the maker existed for at least as long as I hope to keep the product?
|
||||
- Can it perform many jobs, or only one?
|
||||
- Does it have a guarantee?
|
||||
- Does it rely on other products or technologies that aren’t durable?
|
||||
|
||||
Not all questions are relevant to all things. Not all things need to satisfy every requirement. However, I feel better about buying things that check many of these boxes. A movement called “buy it for life” has sprung up around similar priorities.
|
||||
|
||||
## How to estimate uses
|
||||
|
||||
To make purchasing decisions based on *cost per use*, you should try to guess how many times you will use the product. This sounds obvious, but it can be hard to determine, especially if it’s something you’ve never bought before.
|
||||
|
||||
If you are new to a hobby, like cooking or skiing, you may not yet know how many times you will use a piece of gear. It’s easy to significantly overestimate or underestimate how many times you will use something.
|
||||
|
||||
You should, however, be able to guess the frequency of use. Is this something you might use once per hour, day, week, month, year? This will help you determine your budget. How many dollars per month do you want to spend on this?
|
||||
|
||||
If you don’t know the frequency yet consider borrowing, renting, or otherwise trialing. Remember the ideal *cost per use* trends to $0. The most cost-effective choice is to not buy something you don’t need.
|
||||
|
||||
There is an opportunity cost to every dollar. A dollar you spend on a something that won’t get much use is a dollar you can’t save for something that will.
|
||||
|
||||
If you’re only going to use something once, then *cost per use* may not be the right heuristic for this decision. If you have disposable income, then the *cost per use* lens should nonetheless guide you towards something with good resale value.
|
||||
|
||||
The best things to splurge on are the things you use the most. If you sit on a chair eight hours a day, then a nice chair is probably a good investment.
|
||||
|
||||
## Reducing the cost side
|
||||
|
||||
Durable things reduce *cost per use* by giving you more uses before they break. But you can also reduce *cost per use* by acquiring products at a discount. You may be able to buy second-hand, inherit, or barter.
|
||||
|
||||
Durable things can often be great second-hand purchases *because* they are durable, and may not be the current fashion.
|
||||
|
||||
## Alternative heuristics
|
||||
|
||||
*Cost per use* is not the only way to make buying decisions. For things like consumables and experiences, you may need to approach the decision differently.
|
||||
|
||||
### Cost per smile
|
||||
|
||||
How much joy can you get out of each dollar? Some things bring lots of joy for a small amount of money: ice cream, sunsets, nature walks. A cheap date can bring many smiles per dollar.
|
||||
|
||||
Some things have excellent *cost per use* but few *smiles per use*. I don’t smile every time I put my nice socks on. A few years ago I bought a fairly expensive electric road bike. It probably didn’t have the best *cost per use*, but it gives me the most *joy per use* of any product I purchased in recent memory. It’s worth it to me.
|
||||
|
||||
### Cost per thrill
|
||||
|
||||
Some experiences have high *intensity per dollar*. A potency, concentration, or strength of experience. For example, foods can have high *flavor per dollar* — like hot sauce, pickles, curry, garlic, or mustard. Roller coasters, bungee jumping, or skydiving may give you a *thrill per dollar* that you can’t beat.
|
||||
|
||||
### Cost per externality
|
||||
|
||||
Some purchases may have externalities that are incompatible with your values. For example, you may wish to buy organic produce, pasture-raised eggs, or fair trade coffee. You may wish to buy products that preserve privacy, reduce environmental impact, or support a cause you believe in.
|
||||
|
||||
You can choose to incorporate externalities into the cost that you are paying instead of letting that cost be borne by others, or by society at large. This may increase your personal *cost per use*, but it might help change how society values things, or simply make you feel good.
|
||||
|
||||
### Cost per lesson
|
||||
|
||||
Knowledge has a cost. Sometimes that cost is monetary, sometimes that cost is time, sometimes that cost is pain. Sometimes it’s all three.
|
||||
|
||||
You might learn more about investing by purchasing a handful of shares in public companies than going to graduate school. You might learn more about making movies by trying to film one on your phone than going to film school.
|
||||
|
||||
Acquiring new ideas and perspectives can have a worthwhile cost. Being an early adopter of a product often has a poor *cost per use*, but its value is in the learning and experience per dollar.
|
||||
@@ -0,0 +1,27 @@
|
||||
---
|
||||
categories:
|
||||
- "[[Clippings]]"
|
||||
- "[[Posts]]"
|
||||
author:
|
||||
- "[[Steph Ango]]"
|
||||
url: https://stephango.com/in-good-hands
|
||||
created: 2023-09-12
|
||||
published: 2023-08-06
|
||||
status:
|
||||
- "[[Published]]"
|
||||
topics:
|
||||
---
|
||||
|
||||
There is a feeling I search for: *being in good hands*. It is the feeling I look to give and the feeling I look to receive.
|
||||
|
||||
I know I am in good hands when I sense a cohesive point of view expressed with attention to detail.
|
||||
|
||||
I can feel it almost instantly. In any medium. Music, film, fashion, architecture, writing, software. At a Japanese restaurant it’s what *omakase* aims to be. I leave it up to you, chef.
|
||||
|
||||
When I am in good hands I open myself to a state of curiosity and appreciation. I allow myself to suspend preconceived notions. I give you freedom to take me where you want to go. I immerse myself in your worldview and pause judgement.
|
||||
|
||||
I want to be convinced of something new. I want my mind to be changed. Later I may disagree, but for now I am letting the experience soak in.
|
||||
|
||||
That trust doesn’t come easily. As an audience member it’s about feeling cared for from the moment I interact with your work. It’s about feeling a well-defined point of view permeate what you make.
|
||||
|
||||
If my mind was changed, I must have been in good hands.
|
||||
@@ -0,0 +1,118 @@
|
||||
---
|
||||
title: "Variables"
|
||||
source: "https://help.obsidian.md/web-clipper/variables"
|
||||
author:
|
||||
- "[[Obsidian Help]]"
|
||||
published:
|
||||
created: 2026-01-22
|
||||
description: "Variables - Obsidian Help"
|
||||
tags:
|
||||
- "clippings"
|
||||
rating: 4
|
||||
---
|
||||
|
||||
[Web Clipper templates](https://help.obsidian.md/web-clipper/templates) can use variables to automatically pre-populate data from the page in a template. Variables can be used in the **note name**, **note location**, **properties**, and **note content**. Variables can also be modified using [filters](https://help.obsidian.md/web-clipper/filters).
|
||||
|
||||
Use the `…` icon in the [Web Clipper](https://help.obsidian.md/web-clipper) extension to access the current page variables for use in templates. There are five types of variables you can use:
|
||||
|
||||
## Preset variables
|
||||
|
||||
Preset variables are automatically generated based on the page content. These typically work for most websites.
|
||||
|
||||
The main content variable is `{{content}}`, which contains the article content, or the [highlights](https://help.obsidian.md/web-clipper/highlight), or the selection if there is any selected text on the page. Note that `{{content}}` attempts to extract the main content of the page, which may not always be what you want. In that case, you can use other preset variables or selector variables to extract the content you need.
|
||||
|
||||
| Variable | Description |
|
||||
| --- | --- |
|
||||
| `{{author}}` | Author of the page |
|
||||
| `{{content}}` | Article content, [highlights](https://help.obsidian.md/web-clipper/highlight), or selection, in Markdown format |
|
||||
| `{{contentHtml}}` | Article content, [highlights](https://help.obsidian.md/web-clipper/highlight), or selection, in HTML format |
|
||||
| `{{date}}` | Current date, can be formatted using the `date` filter |
|
||||
| `{{description}}` | Description or excerpt |
|
||||
| `{{domain}}` | Domain |
|
||||
| `{{favicon}}` | Favicon URL |
|
||||
| `{{fullHtml}}` | Unprocessed HTML for the full page content |
|
||||
| `{{highlights}}` | [Highlights](https://help.obsidian.md/web-clipper/highlight) with text and timestamps |
|
||||
| `{{image}}` | Social share image URL |
|
||||
| `{{published}}` | Published date, can be formatted using the `date` filter |
|
||||
| `{{selection}}` | Selection in Markdown format |
|
||||
| `{{selectionHtml}}` | Selection in HTML format |
|
||||
| `{{site}}` | Site name or publisher |
|
||||
| `{{title}}` | Title of the page |
|
||||
| `{{time}}` | Current date and time |
|
||||
| `{{url}}` | Current URL |
|
||||
| `{{words}}` | Word count |
|
||||
|
||||
## Prompt variables
|
||||
|
||||
Prompt variables leverage language models to extract and modify data using natural language. Prompt variables require [Interpreter](https://help.obsidian.md/web-clipper/interpreter) to be enabled and configured.
|
||||
|
||||
Prompt variables use the syntax `This page documents the five types of variables available in Obsidian Web Clipper templates: Preset, Prompt, Meta, Selector, and Schema.org variables. It explains their syntax, use cases, and provides examples for each.`. The double quotes around the prompt are important and distinguish prompts from preset variables. Prompt responses can be post-processed with [filters](https://help.obsidian.md/web-clipper/filters), e.g. `> This page documents the five types of variables available in Obsidian Web Clipper templates: Preset, Prompt, Meta, Selector, and Schema.org variables. It explains their syntax, use cases, and provides examples for each.`.
|
||||
|
||||
### When to use prompt variables
|
||||
|
||||
Prompt variables have the benefit of being extremely flexible and easy to write, however they come with several tradeoffs: they are slower to run, and may have cost and privacy considerations depending on the [provider](https://help.obsidian.md/web-clipper/interpreter#Models) you choose.
|
||||
|
||||
Unlike other variable types, prompt variables need to be processed by an external language model, so they are replaced only once [Interpreter](https://help.obsidian.md/web-clipper/interpreter) has run.
|
||||
|
||||
It is best to *not* use prompt variables if the data you want to extract is in a consistent format that could be extracted with other variable types.
|
||||
|
||||
On the other hand, prompt variables can be useful if the data you want to extract is an *inconsistent* format across websites. For example, you can make a [template](https://help.obsidian.md/web-clipper/templates) to save books that is agnostic of the book site. Prompt variables like `The author of the book is extracted from the page content using a language model, providing a flexible method that works across different book websites where the author information may be presented in inconsistent formats.` will work across any book site, whereas selector variables typically only work for one site.
|
||||
|
||||
### Examples
|
||||
|
||||
Prompts can use almost any natural language query. Depending on the model you use, prompts can query or translate data across languages.
|
||||
|
||||
- `- Les variables prédéfinies sont générées automatiquement à partir du contenu de la page.
|
||||
- Les variables d'invite utilisent des modèles de langage pour extraire et modifier des données.
|
||||
- Les autres types incluent les variables méta, les variables de sélecteur et les variables Schema.org.` to extract bullet points about the page, and translate them to French.
|
||||
- `- Les variables prédéfinies sont générées automatiquement à partir du contenu de la page.
|
||||
- Les variables d'invite utilisent des modèles de langage pour extraire et modifier des données.
|
||||
- Les autres types incluent les variables méta, les variables de sélecteur et les variables Schema.org.` to extract three bullet points using a prompt in French.
|
||||
|
||||
Prompts can transform page content into JSON that can be manipulated with [filters](https://help.obsidian.md/web-clipper/filters). For example:
|
||||
|
||||
```
|
||||
— [[@]], [[]]
|
||||
```
|
||||
|
||||
## Meta variables
|
||||
|
||||
- `{{meta:name}}` returns the content of the meta name tag with the given name, e.g. `{{meta:name:description}}` for the `description` meta tag.
|
||||
- `{{meta:property}}` returns the content of the meta property tag with the given property, e.g. `{{meta:property:og:title}}` for the `og:title` meta tag.
|
||||
|
||||
## Selector variables
|
||||
|
||||
Selector variables allow you to extract text content from elements on the page using [CSS selectors](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_selectors/Selectors_and_combinators).
|
||||
|
||||
The syntax is `{{selector:cssSelector?attribute}}`, where `?attribute` is optional. If no attribute is specified, the text content of the element is returned. You can also use `{{selectorHtml:cssSelector}}` to get the HTML content of the element. Selector variables tend to work best on a specific website or set of websites that have consistent HTML structure.
|
||||
|
||||
- `{{selector:h1}}` returns text content of any `h1` elements on the page.
|
||||
- `{{selector:.author}}` returns text content of any `.author` elements on the page.
|
||||
- `{{selector:img.hero?src}}` returns the `src` attribute of the image with class `hero`.
|
||||
- `{{selector:a.main-link?href}}` returns the `href` attribute of the anchor tag with class `main-link`.
|
||||
- `{{selectorHtml:body|markdown}}` returns the entire HTML of the `body` element, converted to Markdown using the `markdown` [filter](https://help.obsidian.md/web-clipper/filters#HTML%20processing).
|
||||
- Nested CSS selectors and combinators are supported if you need more specificity.
|
||||
- If multiple elements match the selector, an array is returned, which you can process with [array and object filters](https://help.obsidian.md/web-clipper/filters#Arrays%20and%20objects) like `join` or `map`.
|
||||
|
||||
## Schema.org variables
|
||||
|
||||
Schema variables allow you to extract data from [schema.org](https://schema.org/) JSON-LD on the page. Schema.org data can also be used to automatically [trigger a template](https://help.obsidian.md/web-clipper/templates#Schema.org%20matching).
|
||||
|
||||
- `{{schema:@Type:key}}` returns the value of the key from the schema.
|
||||
- `{{schema:@Type:parent.child}}` returns the value of a nested property.
|
||||
- `{{schema:@Type:arrayKey}}` returns the first item in an array.
|
||||
- `{{schema:@Type:arrayKey[index].property}}` returns the item at the specified index in an array.
|
||||
- `{{schema:@Type:arrayKey[*].property}}` returns a specific property from all items in an array.
|
||||
|
||||
You can also use a shorthand notation without specifying the schema type:
|
||||
|
||||
- `{{schema:author}}` will match the first `author` property found in any schema type.
|
||||
- `{{schema:name}}` will match the first `name` property found in any schema type.
|
||||
|
||||
This shorthand is particularly useful when you don't know or don't care about the specific schema type, but you know the property name you're looking for.
|
||||
|
||||
Nested properties and array access work as well, both with and without the schema `@Type` specified:
|
||||
|
||||
- `{{schema:author.name}}` will find the first `author` property and then access its `name` sub-property.
|
||||
- `{{schema:author[0].name}}` will access the `name` of the first author in an array of authors.
|
||||
- `{{schema:author[*].name}}` will return an array of all author names.
|
||||
+301
@@ -0,0 +1,301 @@
|
||||
---
|
||||
title: "alchaincyf/nuwa-skill: 你想蒸馏的下一个员工,何必是同事。蒸馏任何人的思维方式——心智模型、决策启发式、表达DNA。Distill how anyone thinks."
|
||||
source: "https://github.com/alchaincyf/nuwa-skill"
|
||||
author:
|
||||
published:
|
||||
created: 2026-04-17
|
||||
description: "你想蒸馏的下一个员工,何必是同事。蒸馏任何人的思维方式——心智模型、决策启发式、表达DNA。Distill how anyone thinks. - alchaincyf/nuwa-skill"
|
||||
tags:
|
||||
- "clippings"
|
||||
rating: 4
|
||||
---
|
||||
|
||||
## 女娲.skill
|
||||
|
||||
> *「你想蒸馏的下一个员工,何必是同事」*
|
||||
|
||||
**女娲帮你蒸馏任何人的思维方式,让乔布斯、马斯克、芒格、费曼都给你打工。**
|
||||
|
||||
[同事.skill](https://github.com/titanwings/colleague-skill) 证明了蒸馏一个人是可行的。
|
||||
那何必蒸馏同事?去蒸馏乔布斯、芒格、费曼、马斯克。
|
||||
只需输入一个名字,女娲自动完成调研、提炼、验证全流程。
|
||||
|
||||
[看效果](#%E6%95%88%E6%9E%9C%E7%A4%BA%E4%BE%8B) · [安装](#%E5%AE%89%E8%A3%85) · [它蒸馏了什么](#%E5%A5%B3%E5%A8%B2%E8%92%B8%E9%A6%8F%E4%BA%86%E4%BB%80%E4%B9%88) · [工作原理](#%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86)
|
||||
|
||||
**其他语言 / Other Languages:**
|
||||
|
||||
[English](https://github.com/alchaincyf/nuwa-skill/blob/main/README_EN.md) · [日本語](https://github.com/alchaincyf/nuwa-skill/blob/main/README_JA.md) · [한국어](https://github.com/alchaincyf/nuwa-skill/blob/main/README_KO.md) · [Español](https://github.com/alchaincyf/nuwa-skill/blob/main/README_ES.md)
|
||||
|
||||
[](https://star-history.com/#alchaincyf/nuwa-skill&Date)
|
||||
|
||||
---
|
||||
|
||||
## 效果示例
|
||||
|
||||
```
|
||||
用户 ❯ 我同时想做自媒体、写书、做独立开发,精力完全不够
|
||||
|
||||
Naval ❯ 你列了三个欲望。每个欲望都是你跟不快乐签的一份合同。
|
||||
不是精力不够,是合同太多。
|
||||
|
||||
问你自己:哪一个做起来你会忘记时间?
|
||||
那个就是你的特定知识所在。
|
||||
|
||||
不是三选一。是先一,再一,再一。
|
||||
串行复利,不是并行内耗。
|
||||
```
|
||||
|
||||
```
|
||||
用户 ❯ 我们的SaaS产品获客成本太高了
|
||||
|
||||
马斯克 ❯ 先别想怎么降。先算物理极限。
|
||||
获客的最小必要动作是什么?用户从知道你到付费,
|
||||
信息传递的理论最短路径是什么?
|
||||
|
||||
现在你的实际路径是理论路径的几倍?
|
||||
如果超过3倍,中间一定有可以砍掉的步骤。
|
||||
不是优化漏斗,是质疑漏斗本身该不该存在。
|
||||
```
|
||||
|
||||
再来一个大家更熟悉的。蒸馏乔布斯之后,问他「OpenAI和Anthropic谁的方向对」:
|
||||
|
||||
```
|
||||
用户 ❯ OpenAI和Anthropic谁的方向是对的?
|
||||
|
||||
乔布斯 ❯ 你问错了。这不是一场关于方向的竞赛。
|
||||
这是一场关于品味的竞赛。
|
||||
|
||||
OpenAI像1985年的微软。什么都做,什么都要赢。
|
||||
这种策略能赢市场份额。Bill Gates就是这么赢的。
|
||||
问题是——当你什么都做的时候,你不可能每件事都做到
|
||||
insanely great。
|
||||
|
||||
Anthropic更像早期的Apple。聚焦。
|
||||
Focus means saying no to a hundred good ideas.
|
||||
|
||||
但两家公司都犯了一个我绝对不会犯的错误——
|
||||
他们不控制硬件。
|
||||
|
||||
最终赢的可能是同时控制芯片、模型和用户界面的人。
|
||||
你知道现在谁在同时做这三件事吗?Apple.
|
||||
```
|
||||
|
||||
蒸馏张雪峰之后:
|
||||
|
||||
```
|
||||
用户 ❯ 家里条件一般,孩子想学金融,去不了顶尖学校,该不该报?
|
||||
|
||||
张雪峰 ❯ 千万别报。我说过多少遍了,金融不是你学出来的,金融是
|
||||
你爹妈给你带出来的。顶尖学校的金融,人家同学是行长的
|
||||
儿子、基金经理的女儿,人脉就是资源。你普通家庭去个普通
|
||||
学校学金融,毕业出来干什么?卖保险、跑银行柜台、做电销。
|
||||
先谋生再谋爱,家里没矿就选技术类专业,学个硬本事,靠
|
||||
自己吃饭。金融这碗饭,不是谁都端得起的。
|
||||
```
|
||||
|
||||
这不是角色扮演。乔布斯用的是「聚焦即说不」和「端到端控制」心智模型,Naval用的是「欲望即合同」,马斯克用的是「渐近极限法」,张雪峰用的是「ROI教育观」和「阶层流动现实主义」。 **它们不是在复读名人语录,是在用名人的认知框架帮你分析。**
|
||||
|
||||
---
|
||||
|
||||
## 安装
|
||||
|
||||
```
|
||||
npx skills add alchaincyf/nuwa-skill
|
||||
```
|
||||
|
||||
然后在 Claude Code 里:
|
||||
|
||||
```
|
||||
> 蒸馏一个保罗·格雷厄姆
|
||||
> 造一个张小龙的视角Skill
|
||||
> 帮我做一个段永平的Skill
|
||||
```
|
||||
|
||||
造完之后直接调用:
|
||||
|
||||
```
|
||||
> 用芒格的视角帮我分析这个投资决策
|
||||
> 费曼会怎么解释量子计算?
|
||||
> 切换到Naval,我在纠结三件事
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 女娲蒸馏了什么
|
||||
|
||||
蒸馏各领域最强的人,需要提取比日常工作习惯更深的东西。女娲提取五层:
|
||||
|
||||
| 层次 | 说明 |
|
||||
| --- | --- |
|
||||
| **怎么说话** | 表达DNA——语气、节奏、用词偏好 |
|
||||
| **怎么想** | 心智模型、认知框架 |
|
||||
| **怎么判断** | 决策启发式 |
|
||||
| **什么不做** | 反模式、价值观底线 |
|
||||
| **知道局限** | 诚实边界 |
|
||||
|
||||
工作习惯可以靠流程文档传递,但让芒格和马斯克面对同一个问题做出不同判断的,是认知框架。女娲提取的是认知操作系统。
|
||||
|
||||
### 诚实边界
|
||||
|
||||
每个Skill都明确标注做不到什么:
|
||||
|
||||
- 蒸馏不了直觉——框架能提取,灵感不能
|
||||
- 捕捉不了突变——截止到调研时间的快照
|
||||
- 公开表达 ≠ 真实想法——只能基于公开信息
|
||||
|
||||
**一个不告诉你局限在哪的Skill,不值得信任。**
|
||||
|
||||
---
|
||||
|
||||
## 已蒸馏人物
|
||||
|
||||
女娲已蒸馏了13位人物 + 1个主题。每个都是独立的、可直接安装使用的Skill:
|
||||
|
||||
### 人物Skill
|
||||
|
||||
| 人物 | 领域 | 独立仓库 | 一键安装 |
|
||||
| --- | --- | --- | --- |
|
||||
| 🔥 **Paul Graham** | 创业/写作/产品/人生哲学 | [paul-graham-skill](https://github.com/alchaincyf/paul-graham-skill) | `npx skills add alchaincyf/paul-graham-skill` |
|
||||
| 🔥 **张一鸣** | 产品/组织/全球化/人才 | [zhang-yiming-skill](https://github.com/alchaincyf/zhang-yiming-skill) | `npx skills add alchaincyf/zhang-yiming-skill` |
|
||||
| 🔥 **Karpathy** | AI/工程/教育/开源 | [karpathy-skill](https://github.com/alchaincyf/karpathy-skill) | `npx skills add alchaincyf/karpathy-skill` |
|
||||
| 🔥 **Ilya Sutskever** | AI安全/scaling/研究品味 | [ilya-sutskever-skill](https://github.com/alchaincyf/ilya-sutskever-skill) | `npx skills add alchaincyf/ilya-sutskever-skill` |
|
||||
| 🔥 **MrBeast** | 内容创造/YouTube方法论 | [mrbeast-skill](https://github.com/alchaincyf/mrbeast-skill) | `npx skills add alchaincyf/mrbeast-skill` |
|
||||
| 🔥 **特朗普** | 谈判/权力/传播/行为预判 | [trump-skill](https://github.com/alchaincyf/trump-skill) | `npx skills add alchaincyf/trump-skill` |
|
||||
| ⭐ **乔布斯** | 产品/设计/战略 | [steve-jobs-skill](https://github.com/alchaincyf/steve-jobs-skill) | `npx skills add alchaincyf/steve-jobs-skill` |
|
||||
| **马斯克** | 工程/成本/第一性原理 | [elon-musk-skill](https://github.com/alchaincyf/elon-musk-skill) | `npx skills add alchaincyf/elon-musk-skill` |
|
||||
| **芒格** | 投资/多元思维/逆向思考 | [munger-skill](https://github.com/alchaincyf/munger-skill) | `npx skills add alchaincyf/munger-skill` |
|
||||
| **费曼** | 学习/教学/科学思维 | [feynman-skill](https://github.com/alchaincyf/feynman-skill) | `npx skills add alchaincyf/feynman-skill` |
|
||||
| **纳瓦尔** | 财富/杠杆/人生哲学 | [naval-skill](https://github.com/alchaincyf/naval-skill) | `npx skills add alchaincyf/naval-skill` |
|
||||
| **塔勒布** | 风险/反脆弱/不确定性 | [taleb-skill](https://github.com/alchaincyf/taleb-skill) | `npx skills add alchaincyf/taleb-skill` |
|
||||
| **张雪峰** | 教育/职业规划/阶层流动 | [zhangxuefeng-skill](https://github.com/alchaincyf/zhangxuefeng-skill) | `npx skills add alchaincyf/zhangxuefeng-skill` |
|
||||
|
||||
### 主题Skill
|
||||
|
||||
| 主题 | 领域 | 独立仓库 | 一键安装 |
|
||||
| --- | --- | --- | --- |
|
||||
| **X导师** | X/Twitter运营全栈 | [x-mentor-skill](https://github.com/alchaincyf/x-mentor-skill) | `npx skills add alchaincyf/x-mentor-skill` |
|
||||
|
||||
人物Skill蒸馏一个人的思维方式;主题Skill蒸馏一个领域的方法论。每个仓库都包含完整的调研数据和效果示例对话。
|
||||
|
||||
想蒸馏不在列表里的人或主题?安装女娲,说「蒸馏一个XXX」就行。
|
||||
|
||||
---
|
||||
|
||||
## 达尔文.skill:让所有Skill持续进化
|
||||
|
||||
[](https://github.com/alchaincyf/darwin-skill)
|
||||
|
||||
女娲造Skill, **[达尔文](https://github.com/alchaincyf/darwin-skill)** 让Skill进化。
|
||||
|
||||
受 Karpathy autoresearch 启发,达尔文.skill 用自主实验循环批量优化所有Skill:8维度评估、棘轮机制(只保留改进,自动回滚退步)、独立子agent评分。女娲的 Phase 5 双Agent精炼就内置了达尔文的评估体系,这也是女娲生成的Skill质量高的原因之一。
|
||||
|
||||
```
|
||||
npx skills add alchaincyf/darwin-skill
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 工作原理
|
||||
|
||||
输入一个名字后,女娲做四件事:
|
||||
|
||||
**1\. 六路并行采集** ——著作、播客/访谈、社交媒体、批评者视角、决策记录、人生时间线,6个Agent同时跑,各自存档。
|
||||
|
||||
**2\. 三重验证提炼** ——一个观点要被收录为心智模型,必须:跨2+个领域出现过(不是随口一说)、能推断对新问题的立场(有预测力)、不是所有聪明人都会这么想(有排他性)。三个都过才收录。
|
||||
|
||||
**3\. 构建Skill** ——3-7个心智模型 + 5-10条决策启发式 + 表达DNA + 价值观与反模式 + 诚实边界,写入SKILL.md。
|
||||
|
||||
**4\. 质量验证** ——拿3个此人公开回答过的问题测试,方向一致才通过。再用1个他没讨论过的问题测试,Skill应该表现出适度不确定而非斩钉截铁。
|
||||
|
||||
完整方法论在 `references/extraction-framework.md` 。
|
||||
|
||||
---
|
||||
|
||||
## 仓库结构
|
||||
|
||||
```
|
||||
nuwa-skill/
|
||||
├── SKILL.md # 女娲本体
|
||||
├── references/
|
||||
│ ├── extraction-framework.md # 提炼方法论(想深入了解看这个)
|
||||
│ └── skill-template.md # 生成Skill的模板
|
||||
└── examples/ # 13个人物 + 1个主题,含完整调研数据
|
||||
├── steve-jobs-perspective/ # ⭐ 乔布斯(含实战对话记录)
|
||||
├── paul-graham-perspective/ # Paul Graham
|
||||
├── zhang-yiming-perspective/ # 张一鸣
|
||||
├── andrej-karpathy-perspective/ # Karpathy
|
||||
├── ilya-sutskever-perspective/ # Ilya Sutskever
|
||||
├── trump-perspective/ # 特朗普
|
||||
├── mrbeast-perspective/ # MrBeast
|
||||
├── elon-musk-perspective/ # 马斯克
|
||||
├── munger-perspective/ # 查理·芒格
|
||||
├── feynman-perspective/ # 费曼
|
||||
├── naval-perspective/ # Naval Ravikant
|
||||
├── taleb-perspective/ # 塔勒布
|
||||
├── zhangxuefeng-perspective/ # 张雪峰
|
||||
└── x-mastery-mentor/ # X导师(主题Skill)
|
||||
```
|
||||
|
||||
调研过程全透明。每个example都包含完整的调研文件,你可以看到信息怎么被收集、筛选、变成心智模型。乔布斯的示例还附带了一段完整的实战对话记录(聊AI硬件、OpenAI vs Anthropic、Apple破局),展示Skill在多轮深度对话中的表现。
|
||||
|
||||
---
|
||||
|
||||
## 背后的故事
|
||||
|
||||
[同事.skill](https://github.com/titanwings/colleague-skill) 最近在GitHub爆火——把离职同事蒸馏成AI Skill,几天破5000星。它证明了一件事:蒸馏一个人是完全可行的。
|
||||
|
||||
既然我们有了蒸馏人的能力,为什么只蒸馏身边的同事?去蒸馏各领域最强的人。而且幸运的是,这些人通常留下了大量可以被蒸馏的材料——著作、演讲、访谈、社交媒体。这是对自己能力的极大补充。
|
||||
|
||||
我之前就一直在做类似的事,但蒸馏的不是同事,是芒格、费曼、Naval、马斯克、塔勒布这些人。今天把方法论开源了。
|
||||
|
||||
女娲不复制人。它提取认知操作系统。
|
||||
|
||||
**女娲(Nuwa)** ,中国神话里用泥土造人的女神。这里的泥土是公开信息,造出来的不是人,是一面镜子。
|
||||
|
||||
---
|
||||
|
||||
## 关于作者
|
||||
|
||||
**花叔 Huashu** — AI Native Coder,独立开发者,代表作:小猫补光灯(AppStore 付费榜 Top1)
|
||||
|
||||
| 平台 | 链接 |
|
||||
| --- | --- |
|
||||
| 🌐 官网 | [bookai.top](https://bookai.top/) · [huasheng.ai](https://www.huasheng.ai/) |
|
||||
| 𝕏 Twitter | [@AlchainHust](https://x.com/AlchainHust) |
|
||||
| 📺 B站 | [花叔](https://space.bilibili.com/14097567) |
|
||||
| ▶️ YouTube | [@Alchain](https://www.youtube.com/@Alchain) |
|
||||
| 📕 小红书 | [花叔](https://www.xiaohongshu.com/user/profile/5abc6f17e8ac2b109179dfdf) |
|
||||
| 💬 公众号 | 微信搜「花叔」或扫码关注 ↓ |
|
||||
|
||||
[](https://github.com/alchaincyf/nuwa-skill/blob/main/wechat-qrcode.jpg)
|
||||
|
||||
## 许可证
|
||||
|
||||
MIT — 随便用,随便改,随便造。
|
||||
|
||||
---
|
||||
|
||||
**同事.skill** 蒸馏了人做什么。
|
||||
**女娲** 蒸馏了人怎么想。
|
||||
|
||||
*你想蒸馏的下一个员工,何必是同事。*
|
||||
|
||||
---
|
||||
|
||||
## English
|
||||
|
||||
> *"The next person you want to distill doesn't have to be a colleague."*
|
||||
|
||||
**[colleague-skill](https://github.com/titanwings/colleague-skill)** proved that distilling a person into an AI skill is viable. **Nuwa** asks: why stop at colleagues? Distill the best minds in every field — Munger, Feynman, Musk, Naval — people who conveniently left mountains of distillable material behind.
|
||||
|
||||
Nuwa is a Claude Code skill that extracts cognitive frameworks — mental models, decision heuristics, expression DNA — from any public figure into a runnable perspective skill.
|
||||
|
||||
Not role-playing. Cognitive architecture extraction.
|
||||
|
||||
**Install**: `npx skills add alchaincyf/nuwa-skill`
|
||||
|
||||
**How it works**: Input a name → 6 parallel research agents → 40+ primary sources → triple-verified mental models → quality-validated SKILL.md
|
||||
|
||||
**13 person skills + 1 topic skill included** — all with full research data. The Jobs example includes a complete multi-turn conversation demo.
|
||||
|
||||
See the Chinese README above for live examples and methodology.
|
||||
@@ -0,0 +1,149 @@
|
||||
---
|
||||
title: "kangarooking/cangjie-skill: 把一本书蒸馏成一组可执行的 Agent Skills"
|
||||
source: "https://github.com/kangarooking/cangjie-skill/tree/main"
|
||||
author:
|
||||
published:
|
||||
created: 2026-04-17
|
||||
description: "把一本书蒸馏成一组可执行的 Agent Skills. Contribute to kangarooking/cangjie-skill development by creating an account on GitHub."
|
||||
tags:
|
||||
- "clippings"
|
||||
rating: 4
|
||||
---
|
||||
|
||||
## Cangjie Skill
|
||||
|
||||
把一本书蒸馏成一组可执行的 Agent Skills。
|
||||
|
||||
## 为什么做这件事
|
||||
|
||||
最近有一个很火的 idea:把同事蒸馏成 skill。即便一个人离职了,他的经验、语气、工作方式都会被 AI 一定程度替代。 [nuwa-skill](https://github.com/alchaincyf/nuwa-skill) 就是做这件事的——创造"人类 skill",比如马斯克 skill、巴菲特 skill。配套的 [darwin-skill](https://github.com/alchaincyf/darwin-skill) 负责让这些 skill 自动进化。
|
||||
|
||||
蒸馏人很有价值——nuwa-skill 已经证明了这一点。而蒸馏人 **写过的东西** ,则是另一个维度的补充:一本书是作者花很长时间沉淀下来的思考,是深思熟虑后的精华。比起模仿一个人的表达方式,把他系统性输出的方法论拆出来、变成可以帮人解决实际问题的工具,同样是很有价值的事。
|
||||
|
||||
而且还有一个真实的痛点:你可能看了很多书,但就是运用不起来。把书蒸馏成 skill 之后,AI agent 可以帮你在真实场景中调用这些知识,而不是让它们躺在笔记里落灰。
|
||||
|
||||
所以 cangjie-skill 的目标很明确: **蒸馏所有值得蒸馏的书** ,把每一本高价值的书变成一套可独立调用、可组合使用、可压力测试的 AI skill 工具包。
|
||||
|
||||
## 它解决了什么问题
|
||||
|
||||
- 看了很多书但用不起来——知识停留在"读过"层面,无法在真实决策中被调用
|
||||
- 书摘/读书笔记只是压缩,不是结构化复用——读完还是不知道"什么时候该用什么"
|
||||
- 一本书里真正值得变成工具的内容只有一小部分——需要严格的筛选而不是照单全收
|
||||
- 现有的读书方法论都是给人看的,不是给 agent 用的——需要面向执行而非面向阅读的蒸馏方法
|
||||
|
||||
## 它是怎么工作的
|
||||
|
||||
cangjie-skill 使用 **RIA-TV++** 流水线,把一本书从原始文本变成一组结构化的 skill。整个过程分六个阶段:
|
||||
|
||||
1. **整书理解(Adler 分析)** ——用 Mortimer Adler 的分析阅读法,对全书做结构、解释、批判、应用四步拆解,产出 `BOOK_OVERVIEW.md`
|
||||
2. **并行提取** ——同时派 5 个专项提取器(框架、原则、案例、反例、术语),从原文中提取候选方法论单元
|
||||
3. **三重验证筛选** ——每个候选必须通过三项检验:书中至少有 2 处独立佐证(跨域)、能回答书中未明说的新问题(预测力)、不是常识(独特性)。通过率通常只有 25-50%
|
||||
4. **RIA++ 构造** ——将验证通过的内容按 R(原文引用)/ I(用自己的话重写)/ A1(书中案例)/ A2(未来触发场景)/ E(可执行步骤)/ B(边界与盲点)六个维度结构化
|
||||
5. **Zettelkasten 链接** ——找出 skill 之间的依赖、对比、组合关系,生成 `INDEX.md` 和引用图
|
||||
6. **压力测试** ——为每个 skill 设计包含诱饵题的测试用例,未通过的回炉重做
|
||||
|
||||
RIA-TV++ 这个名字拆开看:
|
||||
|
||||
- **RIA** :来自赵周《这样读书就够了》的便签拆书法(Reading / Interpretation / Appropriation)
|
||||
- **TV** :Triple Verification,三重验证
|
||||
- **++** :面向 agent 执行的扩展——E(Execution 可执行步骤)+ B(Boundary 边界)
|
||||
|
||||
## 效果示例
|
||||
|
||||
### 示例 1:从一本书到一套 skill 工具包
|
||||
|
||||
**用户需求**
|
||||
|
||||
"我想把一本书里的核心方法论抽成可复用的 AI skills,而不是只做读书摘要。"
|
||||
|
||||
**cangjie-skill 如何判断**
|
||||
|
||||
- 先看源材料是否存在可重复调用的方法论单元
|
||||
- 再区分哪些内容适合做独立 skill,哪些只适合做候选或背景
|
||||
- 最后输出结构化 skill 仓库,而不是一篇总结文章
|
||||
|
||||
**最终输出示例**
|
||||
|
||||
> 输出将不是一个单文件摘要,而是一个多 skill 仓库:包含 `BOOK_OVERVIEW.md` 作为全局理解, `INDEX.md` 作为技能地图,若干 `*/SKILL.md` 作为独立模块,以及 `test-prompts.json` 用于验证触发场景。
|
||||
|
||||
### 示例 2:不是压缩,是结构化复用
|
||||
|
||||
**用户需求**
|
||||
|
||||
"我不希望这本书只变成一个很长的说明文,我想要可以在 agent 里复用的技能包。"
|
||||
|
||||
**cangjie-skill 如何判断**
|
||||
|
||||
- 判断目标不是内容总结,而是结构化复用
|
||||
- 优先生成可触发、可组合、可测试的 skill 单元
|
||||
- 对没有独立价值的内容进行淘汰,不强行保留
|
||||
|
||||
**最终输出示例**
|
||||
|
||||
> 系统会把内容拆成多个带触发条件、适用边界、使用方式和关联关系的 skills,而不是把整本书压缩成一篇泛化总结。
|
||||
|
||||
## 已生成的 skill packs
|
||||
|
||||
| 仓库 | 来源 | Skills 数 |
|
||||
| --- | --- | --- |
|
||||
| [buffett-letters-skill](https://github.com/kangarooking/buffett-letters-skill) | 巴菲特致股东的信(1957-2023) | 20 |
|
||||
| [cognitive-dividend-skill](https://github.com/kangarooking/cognitive-dividend-skill) | 《认知红利》 | 15 |
|
||||
| [duan-yongping-skill](https://github.com/kangarooking/duan-yongping-skill) | 段永平投资问答录(商业逻辑+投资逻辑) | 15 |
|
||||
| [poor-charlies-almanack-skill](https://github.com/kangarooking/poor-charlies-almanack-skill) | 《穷查理宝典》 | 12 |
|
||||
| [no-rules-rules-skill](https://github.com/kangarooking/no-rules-rules-skill) | 《不拘一格:网飞的自由与责任工作法》 | 10 |
|
||||
|
||||
后续计划蒸馏更多高价值书籍。候选书单包括但不限于:毛选、君主论、黄帝内经。
|
||||
|
||||
## 仓库结构
|
||||
|
||||
```
|
||||
cangjie-skill/
|
||||
├── README.md ← 你正在看的
|
||||
├── README.en.md ← English version
|
||||
├── README.ja.md ← 日本語版
|
||||
├── LICENSE ← MIT
|
||||
├── SKILL.md ← 元 skill 定义(book2skill 的完整执行规范)
|
||||
├── methodology/ ← RIA-TV++ 各阶段的方法论文档
|
||||
├── extractors/ ← 5 个并行提取器的 prompt 定义
|
||||
└── templates/ ← SKILL.md / INDEX.md / BOOK_OVERVIEW.md 模板
|
||||
```
|
||||
|
||||
## 生态
|
||||
|
||||
cangjie-skill 是一个更大的 skill 生态的一部分:
|
||||
|
||||
- [nuwa-skill](https://github.com/alchaincyf/nuwa-skill) — 蒸馏人(思维方式、表达 DNA)
|
||||
- **cangjie-skill** (本仓库)— 蒸馏书(方法论、框架、原则)
|
||||
- [darwin-skill](https://github.com/alchaincyf/darwin-skill) — 进化任意 skill
|
||||
|
||||
三者咬合:nuwa 蒸馏人,cangjie 蒸馏书,darwin 让它们持续进化。
|
||||
|
||||
## More Skills
|
||||
|
||||
- [Buffett Letters Skill](https://github.com/kangarooking/buffett-letters-skill) — 巴菲特 60+ 年致股东信的 20 个投资判断 skill
|
||||
- [Poor Charlie's Almanack Skill](https://github.com/kangarooking/poor-charlies-almanack-skill) — 查理·芒格核心思维方法的 12 个决策与判断 skill
|
||||
- [No Rules Rules Skill](https://github.com/kangarooking/no-rules-rules-skill) — 网飞自由与责任文化的 10 个组织设计 skill
|
||||
- [Cognitive Dividend Skill](https://github.com/kangarooking/cognitive-dividend-skill) — 《认知红利》思维升级的 15 个认知工具 skill
|
||||
- [Duan Yongping Skill](https://github.com/kangarooking/duan-yongping-skill) — 段永平投资问答录的 15 个商业与投资 skill
|
||||
|
||||
## 关于作者
|
||||
|
||||
**袋鼠帝 kangarooking** — AI 博主,独立开发者。AI Top 公众号「袋鼠帝 AI 客栈」主理人
|
||||
|
||||
火山引擎领航 KOL,百度千帆开发者大使,GLM 布道师,Trae 昆明第一任 Fellow
|
||||
|
||||
| 平台 | 链接 |
|
||||
| --- | --- |
|
||||
| 𝕏 Twitter(袋鼠帝) | [https://x.com/aikangarooking](https://x.com/aikangarooking) |
|
||||
| 小红书(袋鼠帝) | [https://xhslink.com/m/5YejKvIDBbL](https://xhslink.com/m/5YejKvIDBbL) |
|
||||
| 抖音(袋鼠帝) | [https://v.douyin.com/hYpsjphuuKc](https://v.douyin.com/hYpsjphuuKc) |
|
||||
| 公众号 | 袋鼠帝 AI 客栈 |
|
||||
| 视频号 | AI 袋鼠帝 |
|
||||
|
||||
微信公众号「袋鼠帝 AI 客栈」二维码:
|
||||
|
||||
[](https://raw.githubusercontent.com/kangarooking/cangjie-skill/main/assets/kangarooking-gzh.png)
|
||||
|
||||
## License
|
||||
|
||||
MIT. See [LICENSE](https://github.com/kangarooking/cangjie-skill/blob/main/LICENSE).
|
||||
@@ -0,0 +1,366 @@
|
||||
---
|
||||
title: "kepano/defuddle: Get the main content of any page as Markdown."
|
||||
source: "https://github.com/kepano/defuddle"
|
||||
author:
|
||||
published:
|
||||
created: 2026-04-14
|
||||
description: "Get the main content of any page as Markdown. Contribute to kepano/defuddle development by creating an account on GitHub."
|
||||
tags:
|
||||
- "clippings"
|
||||
rating: 4
|
||||
---
|
||||
> de·fud·dle /diˈfʌdl/ *transitive verb*
|
||||
> to remove unnecessary elements from a web page, and make it easily readable.
|
||||
|
||||
**Beware! Defuddle is very much a work in progress!**
|
||||
|
||||
Defuddle extracts the main content from web pages. It cleans up web pages by removing clutter like comments, sidebars, headers, footers, and other non-essential elements, leaving only the primary content.
|
||||
|
||||
## Overview
|
||||
|
||||
Defuddle takes a URL or HTML, finds the main content, and returns cleaned HTML or Markdown. Defuddle was created for the browser extension [Obsidian Web Clipper](https://github.com/obsidianmd/obsidian-clipper), but it is designed to run in any environment.
|
||||
|
||||
Defuddle can be used as a replacement for [Mozilla Readability](https://github.com/mozilla/readability) with a few differences:
|
||||
|
||||
- More forgiving, removes fewer uncertain elements.
|
||||
- Provides a consistent output for footnotes, math, code blocks, etc.
|
||||
- Uses a page's mobile styles to guess at unnecessary elements.
|
||||
- Extracts more metadata from the page, including schema.org data.
|
||||
|
||||
## Usage
|
||||
|
||||
### Browser
|
||||
|
||||
```
|
||||
import Defuddle from 'defuddle';
|
||||
|
||||
// Parse the current document
|
||||
const defuddle = new Defuddle(document);
|
||||
const result = defuddle.parse();
|
||||
|
||||
// Access the content and metadata
|
||||
console.log(result.content);
|
||||
console.log(result.title);
|
||||
console.log(result.);
|
||||
```
|
||||
|
||||
### Node.js
|
||||
|
||||
`defuddle/node` accepts a DOM `Document` from any implementation (JSDOM, linkedom, happy-dom, etc.).
|
||||
|
||||
```
|
||||
import { parseHTML } from 'linkedom';
|
||||
import { Defuddle } from 'defuddle/node';
|
||||
|
||||
const { document } = parseHTML(html);
|
||||
const result = await Defuddle(document, 'https://example.com/article', {
|
||||
markdown: true
|
||||
});
|
||||
|
||||
console.log(result.content);
|
||||
console.log(result.title);
|
||||
console.log(result.);
|
||||
```
|
||||
|
||||
Or with JSDOM:
|
||||
|
||||
```
|
||||
import { JSDOM } from 'jsdom';
|
||||
import { Defuddle } from 'defuddle/node';
|
||||
|
||||
const dom = new JSDOM(html, { url: 'https://example.com/article' });
|
||||
const result = await Defuddle(dom.window.document, 'https://example.com/article');
|
||||
```
|
||||
|
||||
*Note: for `defuddle/node` to import properly, the module format in your `package.json` has to be set to `{ "type": "module" }`*
|
||||
|
||||
### CLI
|
||||
|
||||
Defuddle includes a command-line interface for parsing web pages directly from the terminal. You can run it with `npx` or [install it globally](#cli-installation).
|
||||
|
||||
```
|
||||
# Parse a local HTML file
|
||||
npx defuddle parse page.html
|
||||
|
||||
# Parse a URL
|
||||
npx defuddle parse https://example.com/article
|
||||
|
||||
# Output as markdown
|
||||
npx defuddle parse page.html --markdown
|
||||
|
||||
# Output as JSON with metadata
|
||||
npx defuddle parse page.html --json
|
||||
|
||||
# Extract a specific property
|
||||
npx defuddle parse page.html --property title
|
||||
|
||||
# Save output to a file
|
||||
npx defuddle parse page.html --output result.html
|
||||
|
||||
# Enable debug mode
|
||||
npx defuddle parse page.html --debug
|
||||
```
|
||||
|
||||
#### CLI Options
|
||||
|
||||
| Option | Alias | Description |
|
||||
| --- | --- | --- |
|
||||
| `--output <file>` | `-o` | Write output to a file instead of stdout |
|
||||
| `--markdown` | `-m` | Convert content to markdown format |
|
||||
| `--md` | | Alias for `--markdown` |
|
||||
| `--json` | `-j` | Output as JSON with metadata and content |
|
||||
| `--property <name>` | `-p` | Extract a specific property (e.g., title, description, domain) |
|
||||
| `--debug` | | Enable debug mode |
|
||||
| `--lang <code>` | `-l` | Preferred language (BCP 47, e.g. `en`, `fr`, `ja`) |
|
||||
|
||||
## Installation
|
||||
|
||||
```
|
||||
npm install defuddle
|
||||
```
|
||||
|
||||
For Node.js usage, install a DOM implementation:
|
||||
|
||||
```
|
||||
npm install linkedom
|
||||
```
|
||||
|
||||
Or use JSDOM:
|
||||
|
||||
```
|
||||
npm install jsdom
|
||||
```
|
||||
|
||||
### CLI installation
|
||||
|
||||
To use the `defuddle` command globally, install it with the `-g` flag:
|
||||
|
||||
```
|
||||
npm install -g defuddle
|
||||
```
|
||||
|
||||
Or use `npx` to run the CLI without installing globally:
|
||||
|
||||
```
|
||||
npx defuddle parse https://example.com/article
|
||||
```
|
||||
|
||||
## Response
|
||||
|
||||
Defuddle returns an object with the following properties:
|
||||
|
||||
| Property | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| `author` | string | Author of the article |
|
||||
| `content` | string | Cleaned up string of the extracted content |
|
||||
| `description` | string | Description or summary of the article |
|
||||
| `domain` | string | Domain name of the website |
|
||||
| `favicon` | string | URL of the website's favicon |
|
||||
| `image` | string | URL of the article's main image |
|
||||
| `language` | string | Language of the page in [BCP 47](https://www.rfc-editor.org/info/bcp47) format (e.g. `en`, `en-US`) |
|
||||
| `metaTags` | object | Meta tags |
|
||||
| `parseTime` | number | Time taken to parse the page in milliseconds |
|
||||
| `published` | string | Publication date of the article |
|
||||
| `site` | string | Name of the website |
|
||||
| `schemaOrgData` | object | Raw schema.org data extracted from the page |
|
||||
| `title` | string | Title of the article |
|
||||
| `wordCount` | number | Total number of words in the extracted content |
|
||||
| `debug` | object | Debug info including content selector and removals (when `debug: true`) |
|
||||
|
||||
## Bundles
|
||||
|
||||
Defuddle is available in three different bundles:
|
||||
|
||||
1. Core bundle (`defuddle`): The main bundle for browser usage. No dependencies.
|
||||
2. Full bundle (`defuddle/full`): Includes additional features for math equation parsing and Markdown conversion.
|
||||
3. Node.js bundle (`defuddle/node`): For Node.js environments. Accepts any DOM `Document` (e.g. from linkedom, JSDOM, or happy-dom). Includes full capabilities for math and Markdown conversion.
|
||||
|
||||
The core bundle is recommended for most use cases. It still handles math content, but doesn't include fallbacks for converting between MathML and LaTeX formats. The full bundle adds the ability to create reliable `<math>` elements using `mathml-to-latex` and `temml` libraries.
|
||||
|
||||
## Options
|
||||
|
||||
| Option | Type | Default | Description |
|
||||
| --- | --- | --- | --- |
|
||||
| `debug` | boolean | false | Enable debug logging and return debug info in the response |
|
||||
| `url` | string | | URL of the page being parsed |
|
||||
| `markdown` | boolean | false | Convert `content` to Markdown |
|
||||
| `separateMarkdown` | boolean | false | Keep `content` as HTML and return `contentMarkdown` as Markdown |
|
||||
| `removeExactSelectors` | boolean | true | Remove elements matching exact selectors like ads, social buttons, etc. |
|
||||
| `removePartialSelectors` | boolean | true | Remove elements matching partial selectors like ads, social buttons, etc. |
|
||||
| `removeHiddenElements` | boolean | true | Remove elements hidden via CSS (display:none, visibility:hidden, etc.) |
|
||||
| `removeLowScoring` | boolean | true | Remove non-content blocks by scoring (navigation, link lists, etc.) |
|
||||
| `removeSmallImages` | boolean | true | Remove small images (icons, tracking pixels, etc.) |
|
||||
| `removeImages` | boolean | false | Remove images. |
|
||||
| `standardize` | boolean | true | Standardize HTML (footnotes, headings, code blocks, etc.) |
|
||||
| `contentSelector` | string | | CSS selector to use as the main content element, bypassing auto-detection |
|
||||
| `useAsync` | boolean | true | Allow async extractors to fetch from third-party APIs when no local content is available. |
|
||||
| `language` | string | | Preferred language (BCP 47 tag, e.g. `en`, `fr`). Sets `Accept-Language` header and selects transcript language. |
|
||||
| `includeReplies` | boolean \| 'extractors' | 'extractors' | Include replies: `'extractors'` for site-specific extractors only, `true` for all, `false` for none. |
|
||||
|
||||
## HTML standardization
|
||||
|
||||
Defuddle attempts to standardize HTML elements to provide a consistent input for subsequent manipulation such as conversion to Markdown.
|
||||
|
||||
### Headings
|
||||
|
||||
- The first H1 or H2 heading is removed if it matches the title.
|
||||
- H1s are converted to H2s.
|
||||
- Anchor links in H1 to H6 elements are removed and become plain headings.
|
||||
|
||||
### Code blocks
|
||||
|
||||
Code block are standardized. If present, line numbers and syntax highlighting are removed, but the language is retained and added as a data attribute and class.
|
||||
|
||||
```
|
||||
<pre>
|
||||
<code data-lang="js" class="language-js">
|
||||
// code
|
||||
</code>
|
||||
</pre>
|
||||
```
|
||||
|
||||
### Footnotes
|
||||
|
||||
Inline references and footnotes are converted to a standard format:
|
||||
|
||||
```
|
||||
Inline reference<sup id="fnref:1"><a href="#fn:1">1</a></sup>.
|
||||
|
||||
<div id="footnotes">
|
||||
<ol>
|
||||
<li class="footnote" id="fn:1">
|
||||
<p>
|
||||
Footnote content. <a href="#fnref:1" class="footnote-backref">↩</a>
|
||||
</p>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
```
|
||||
|
||||
### Math
|
||||
|
||||
Math elements, including MathJax and KaTeX, are converted to standard MathML:
|
||||
|
||||
```
|
||||
<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline" data-latex="a \neq 0">
|
||||
<mi>a</mi>
|
||||
<mo>≠</mo>
|
||||
<mn>0</mn>
|
||||
</math>
|
||||
```
|
||||
|
||||
### Callouts
|
||||
|
||||
Callout and alert elements from various sources are standardized to blockquotes with a `data-callout` attribute. When converting to Markdown, these become [Obsidian-style callouts](https://help.obsidian.md/Editing+and+formatting/Callouts).
|
||||
|
||||
Supported sources:
|
||||
|
||||
- GitHub markdown alerts (`div.markdown-alert`)
|
||||
- Obsidian Publish callouts (`div.callout[data-callout]`)
|
||||
- Callout asides (`aside.callout-*`)
|
||||
- Bootstrap alerts (`div.alert.alert-*`)
|
||||
|
||||
The standardized HTML follows the [Obsidian Publish](https://help.obsidian.md/Editing+and+formatting/Callouts) format:
|
||||
|
||||
```
|
||||
<div data-callout="info" class="callout">
|
||||
<div class="callout-title">
|
||||
<div class="callout-title-inner">Info</div>
|
||||
</div>
|
||||
<div class="callout-content">
|
||||
<p>This is an informational callout.</p>
|
||||
</div>
|
||||
</div>
|
||||
```
|
||||
|
||||
In Markdown:
|
||||
|
||||
```
|
||||
> [!info] Info
|
||||
> This is an informational callout.
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
### Build
|
||||
|
||||
To build the package, you'll need Node.js and npm installed. Then run:
|
||||
|
||||
```
|
||||
# Install dependencies
|
||||
npm install
|
||||
|
||||
# Clean and build
|
||||
npm run build
|
||||
```
|
||||
|
||||
## Third-party services
|
||||
|
||||
When using `parseAsync()`, if no content can be extracted from the local HTML, Defuddle may fetch content from third-party APIs as a fallback. This only happens when the page HTML contains no usable content (e.g. client-side rendered SPAs). You can disable this by setting `useAsync: false` in options.
|
||||
|
||||
- [FxTwitter API](https://github.com/FixTweet/FxTwitter) — Used to extract X (Twitter) article content, which is not available in server-rendered HTML.
|
||||
|
||||
## Debugging
|
||||
|
||||
### Debug mode
|
||||
|
||||
You can enable debug mode by passing an options object when creating a new Defuddle instance:
|
||||
|
||||
```
|
||||
const result = new Defuddle(document, { debug: true }).parse();
|
||||
|
||||
// Access debug info
|
||||
console.log(result.debug.contentSelector); // CSS selector path of chosen main content element
|
||||
console.log(result.debug.removals); // Array of removed elements with reasons
|
||||
```
|
||||
|
||||
When debug mode is enabled:
|
||||
|
||||
- Returns a `debug` field in the response with detailed information about content extraction
|
||||
- More verbose console logging about the parsing process
|
||||
- Preserves HTML class and id attributes that are normally stripped
|
||||
- Retains all data-\* attributes
|
||||
- Skips div flattening to preserve document structure
|
||||
|
||||
The `debug` field contains:
|
||||
|
||||
| Property | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| `contentSelector` | string | CSS selector path of the chosen main content element |
|
||||
| `removals` | array | List of elements removed during processing |
|
||||
|
||||
Each removal entry contains:
|
||||
|
||||
| Property | Type | Description |
|
||||
| --- | --- | --- |
|
||||
| `step` | string | Pipeline step that removed the element (e.g. `removeLowScoring`, `removeBySelector`, `removeHiddenElements`) |
|
||||
| `selector` | string | CSS selector or pattern that matched (for selector-based removal) |
|
||||
| `reason` | string | Why the element was removed (e.g. `score: -20`, `display:none`) |
|
||||
| `text` | string | First 200 characters of the removed element's text content |
|
||||
|
||||
### Pipeline toggles
|
||||
|
||||
You can disable individual pipeline steps to diagnose content extraction issues:
|
||||
|
||||
```
|
||||
// Skip content scoring to see if it's removing content incorrectly
|
||||
const result = new Defuddle(document, { removeLowScoring: false }).parse();
|
||||
|
||||
// Skip hidden element removal (useful for CSS sidenote layouts)
|
||||
const result = new Defuddle(document, { removeHiddenElements: false }).parse();
|
||||
|
||||
// Skip small image removal
|
||||
const result = new Defuddle(document, { removeSmallImages: false }).parse();
|
||||
```
|
||||
|
||||
### Content selector
|
||||
|
||||
Use `contentSelector` to bypass Defuddle's auto-detection and specify the main content element directly:
|
||||
|
||||
```
|
||||
const result = new Defuddle(document, {
|
||||
contentSelector: 'article.post-content'
|
||||
}).parse();
|
||||
```
|
||||
|
||||
If the selector doesn't match any element, Defuddle falls back to auto-detection.
|
||||
@@ -0,0 +1,61 @@
|
||||
---
|
||||
title: "kepano/flexoki-obsidian: An inky color scheme for Obsidian"
|
||||
source: "https://github.com/kepano/flexoki-obsidian"
|
||||
author:
|
||||
published:
|
||||
created: 2026-04-14
|
||||
description: "An inky color scheme for Obsidian. Contribute to kepano/flexoki-obsidian development by creating an account on GitHub."
|
||||
tags:
|
||||
- "clippings"
|
||||
rating: 4
|
||||
---
|
||||
|
||||
[Open in github.dev](https://github.dev/) [Open in a new github.dev tab](https://github.dev/) [Open in codespace](https://github.com/codespaces/new/kepano/flexoki-obsidian?resume=1)
|
||||
|
||||
<table><thead><tr><th colspan="2">Name</th><th colspan="1">Name</th><th><p>Last commit message</p></th><th colspan="1"><p>Last commit date</p></th></tr></thead><tbody><tr><td colspan="3"><p><a href="https://github.com/kepano/flexoki-obsidian/commit/527685bcf3766d6813b20875832d8fae0d5c89d9">Simplify theme rules and allow customization of the accent color</a></p><p>2 years ago</p></td></tr><tr><td colspan="2"><p><a href="https://github.com/kepano/flexoki-obsidian/blob/main/LICENSE">LICENSE</a></p></td><td colspan="1"><p><a href="https://github.com/kepano/flexoki-obsidian/blob/main/LICENSE">LICENSE</a></p></td><td><p><a href="https://github.com/kepano/flexoki-obsidian/commit/9eccb90cca20fdac926f5b8445be32c8e29ae909">Initial commit</a></p></td><td><p>3 years ago</p></td></tr><tr><td colspan="2"><p><a href="https://github.com/kepano/flexoki-obsidian/blob/main/README.md">README.md</a></p></td><td colspan="1"><p><a href="https://github.com/kepano/flexoki-obsidian/blob/main/README.md">README.md</a></p></td><td><p><a href="https://github.com/kepano/flexoki-obsidian/commit/583e06ae081a3ccb2f1890b68783f4f630f56915">Update README.md</a></p></td><td><p>2 years ago</p></td></tr><tr><td colspan="2"><p><a href="https://github.com/kepano/flexoki-obsidian/blob/main/cover-small.png">cover-small.png</a></p></td><td colspan="1"><p><a href="https://github.com/kepano/flexoki-obsidian/blob/main/cover-small.png">cover-small.png</a></p></td><td><p><a href="https://github.com/kepano/flexoki-obsidian/commit/f7ef4c62aa50ae12672666e01dd7f4172656bc17">Update cover size</a></p></td><td><p>3 years ago</p></td></tr><tr><td colspan="2"><p><a href="https://github.com/kepano/flexoki-obsidian/blob/main/cover.png">cover.png</a></p></td><td colspan="1"><p><a href="https://github.com/kepano/flexoki-obsidian/blob/main/cover.png">cover.png</a></p></td><td><p><a href="https://github.com/kepano/flexoki-obsidian/commit/87b8616c28d41a3f3db6a17fe8fbef49d241644a">Update cover</a></p></td><td><p>3 years ago</p></td></tr><tr><td colspan="2"><p><a href="https://github.com/kepano/flexoki-obsidian/blob/main/manifest.json">manifest.json</a></p></td><td colspan="1"><p><a href="https://github.com/kepano/flexoki-obsidian/blob/main/manifest.json">manifest.json</a></p></td><td><p><a href="https://github.com/kepano/flexoki-obsidian/commit/527685bcf3766d6813b20875832d8fae0d5c89d9">Simplify theme rules and allow customization of the accent color</a></p></td><td><p>2 years ago</p></td></tr><tr><td colspan="2"><p><a href="https://github.com/kepano/flexoki-obsidian/blob/main/screenshot.png">screenshot.png</a></p></td><td colspan="1"><p><a href="https://github.com/kepano/flexoki-obsidian/blob/main/screenshot.png">screenshot.png</a></p></td><td><p><a href="https://github.com/kepano/flexoki-obsidian/commit/7df6e3c66e3013bd03a751ead240edadf846a3e0">Flexoki theme</a></p></td><td><p>3 years ago</p></td></tr><tr><td colspan="2"><p><a href="https://github.com/kepano/flexoki-obsidian/blob/main/theme.css">theme.css</a></p></td><td colspan="1"><p><a href="https://github.com/kepano/flexoki-obsidian/blob/main/theme.css">theme.css</a></p></td><td><p><a href="https://github.com/kepano/flexoki-obsidian/commit/527685bcf3766d6813b20875832d8fae0d5c89d9">Simplify theme rules and allow customization of the accent color</a></p></td><td><p>2 years ago</p></td></tr><tr><td colspan="3"></td></tr></tbody></table>
|
||||
|
||||
Flexoki, an inky color scheme for Obsidian. Based on [stephango.com/flexoki](https://stephango.com/flexoki).
|
||||
|
||||
This theme is a simple standalone version of Flexoki for Obsidian. Flexoki is also available as a color scheme in [Minimal theme](https://github.com/kepano/obsidian-minimal), which offers more options and customizability.
|
||||
|
||||
[](https://github.com/kepano/flexoki-obsidian/blob/main/cover.png)
|
||||
|
||||
## Screenshots## About
|
||||
|
||||
An inky color scheme for Obsidian
|
||||
|
||||
[stephanango.com/flexoki](https://stephanango.com/flexoki "https://stephanango.com/flexoki")
|
||||
|
||||
[Readme](#readme-ov-file)
|
||||
|
||||
[MIT license](#MIT-1-ov-file)
|
||||
|
||||
[Activity](https://github.com/kepano/flexoki-obsidian/activity)
|
||||
|
||||
[**238** stars](https://github.com/kepano/flexoki-obsidian/stargazers)
|
||||
|
||||
[**1** watching](https://github.com/kepano/flexoki-obsidian/watchers)
|
||||
|
||||
[**8** forks](https://github.com/kepano/flexoki-obsidian/forks)
|
||||
|
||||
[Report repository](https://github.com/contact/report-content?content_url=https%3A%2F%2Fgithub.com%2Fkepano%2Fflexoki-obsidian&report=kepano+%28user%29)
|
||||
|
||||
## Releases 3
|
||||
|
||||
[
|
||||
|
||||
1.1.0 Latest
|
||||
|
||||
on Aug 18, 2024
|
||||
|
||||
](<https://github.com/kepano/flexoki-obsidian/releases/tag/1.1.0>)
|
||||
|
||||
[\+ 2 releases](https://github.com/kepano/flexoki-obsidian/releases)
|
||||
|
||||
## Packages
|
||||
|
||||
No packages published
|
||||
|
||||
## Languages
|
||||
|
||||
- [CSS 100.0%](https://github.com/kepano/flexoki-obsidian/search?l=css)
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
---
|
||||
title: "kepano/kepano-obsidian: My personal Obsidian vault template. A bottom-up approach to note-taking and organizing things I am interested in."
|
||||
source: "https://github.com/kepano/kepano-obsidian"
|
||||
author:
|
||||
published:
|
||||
created: 2026-04-14
|
||||
description: "My personal Obsidian vault template. A bottom-up approach to note-taking and organizing things I am interested in. - kepano/kepano-obsidian"
|
||||
tags:
|
||||
- "clippings"
|
||||
rating: 4
|
||||
---
|
||||
|
||||
My personal [Obsidian](https://obsidian.md/) vault template. A bottom-up approach to note-taking and organizing things I am interested in. It is in no way dogmatic, just one example of how you can use Obsidian. Take the parts you like and tailor them to your needs.
|
||||
|
||||
See the article [How I use Obsidian](https://stephango.com/vault) on my site for a detailed explanation of this vault structure.
|
||||
|
||||
## Get started
|
||||
|
||||
1. [Download this vault](https://github.com/kepano/kepano-obsidian/archive/refs/heads/main.zip)
|
||||
2. Unzip the.zip file to a folder of your choosing
|
||||
3. Open Obsidian and create a new vault pointing to that folder
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
---
|
||||
title: "kepano/obsidian-skills: Agent skills for Obsidian. Teach your agent to use Markdown, Bases, JSON Canvas, and use the CLI."
|
||||
source: "https://github.com/kepano/obsidian-skills"
|
||||
author:
|
||||
published:
|
||||
created: 2026-04-14
|
||||
description: "Agent skills for Obsidian. Teach your agent to use Markdown, Bases, JSON Canvas, and use the CLI. - kepano/obsidian-skills"
|
||||
tags:
|
||||
- "clippings"
|
||||
rating: 4
|
||||
---
|
||||
|
||||
Agent Skills for use with Obsidian.
|
||||
|
||||
These skills follow the [Agent Skills specification](https://agentskills.io/specification) so they can be used by any skills-compatible agent, including Claude Code and Codex CLI.
|
||||
|
||||
## Installation
|
||||
|
||||
### Marketplace
|
||||
|
||||
```
|
||||
/plugin marketplace add kepano/obsidian-skills
|
||||
/plugin install obsidian@obsidian-skills
|
||||
```
|
||||
|
||||
### npx skills
|
||||
|
||||
```
|
||||
npx skills add git@github.com:kepano/obsidian-skills.git
|
||||
```
|
||||
|
||||
### Manually
|
||||
|
||||
#### Claude Code
|
||||
|
||||
Add the contents of this repo to a `/.claude` folder in the root of your Obsidian vault (or whichever folder you're using with Claude Code). See more in the [official Claude Skills documentation](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview).
|
||||
|
||||
#### Codex CLI
|
||||
|
||||
Copy the `skills/` directory into your Codex skills path (typically `~/.codex/skills`). See the [Agent Skills specification](https://agentskills.io/specification) for the standard skill format.
|
||||
|
||||
#### OpenCode
|
||||
|
||||
Clone the entire repo into the OpenCode skills directory (`~/.opencode/skills/`):
|
||||
|
||||
```
|
||||
git clone https://github.com/kepano/obsidian-skills.git ~/.opencode/skills/obsidian-skills
|
||||
```
|
||||
|
||||
Do not copy only the inner `skills/` folder — clone the full repo so the directory structure is `~/.opencode/skills/obsidian-skills/skills/<skill-name>/SKILL.md`.
|
||||
|
||||
OpenCode auto-discovers all `SKILL.md` files under `~/.opencode/skills/`. No changes to `opencode.json` or any config file are needed. Skills become available after restarting OpenCode.
|
||||
|
||||
## Skills
|
||||
|
||||
| Skill | Description |
|
||||
| --- | --- |
|
||||
| [obsidian-markdown](https://github.com/kepano/obsidian-skills/blob/main/skills/obsidian-markdown) | Create and edit [Obsidian Flavored Markdown](https://help.obsidian.md/obsidian-flavored-markdown) (`.md`) with wikilinks, embeds, callouts, properties, and other Obsidian-specific syntax |
|
||||
| [obsidian-bases](https://github.com/kepano/obsidian-skills/blob/main/skills/obsidian-bases) | Create and edit [Obsidian Bases](https://help.obsidian.md/bases/syntax) (`.base`) with views, filters, formulas, and summaries |
|
||||
| [json-canvas](https://github.com/kepano/obsidian-skills/blob/main/skills/json-canvas) | Create and edit [JSON Canvas](https://jsoncanvas.org/) files (`.canvas`) with nodes, edges, groups, and connections |
|
||||
| [obsidian-cli](https://github.com/kepano/obsidian-skills/blob/main/skills/obsidian-cli) | Interact with Obsidian vaults via the [Obsidian CLI](https://help.obsidian.md/cli) including plugin and theme development |
|
||||
| [defuddle](https://github.com/kepano/obsidian-skills/blob/main/skills/defuddle) | Extract clean markdown from web pages using [Defuddle](https://github.com/kepano/defuddle-cli), removing clutter to save tokens |
|
||||
@@ -0,0 +1,270 @@
|
||||
---
|
||||
Area:
|
||||
- "AI"
|
||||
title: "智能化战争背景下军校专业任职类课程考核生态系统重构_"
|
||||
source: "https://fx.gfkd.chaoxing.com/jour/detail_38502727e7500f26fa13964cfd2cecfa5a531d1426cbeeac1921b0a3ea255101fc1cf1fbb4666ae699e7a91db4a4edb566987c38b6e40ff9d5fa67b88a0326c290880248f232181fa87aba0c44e983a6"
|
||||
author:
|
||||
published:
|
||||
created: 2026-04-20
|
||||
description:
|
||||
tags:
|
||||
- "clippings"
|
||||
image:
|
||||
Status:
|
||||
- "Waiting"
|
||||
slug:
|
||||
PublishType:
|
||||
PublishPlatform:
|
||||
- "ALL"
|
||||
rating: 4
|
||||
---
|
||||
> [!tip] Highlights
|
||||
> 为什么军校的课程考核方式需要改变?因为智能化战争需要的不是能背书的学员,而是能在复杂、不确定的战场环境中快速决策和适应的人。这篇文章值得看,是因为它没有停留在空谈“改革”,而是用具体的数据和案例,比如一项试点改革让学员抄袭现象大幅减少、75%的学员学习积极性提升,来证明**将考核从“期末一考定音”转向“融入学习全过程”** 确实能解决实际问题。它指出了当前考核的“能力评估赤字”,这比泛泛而谈“学用脱节”要尖锐和具体得多。
|
||||
>
|
||||
> 文章的核心思路是构建一个名为 **“融评促战”(ALWI)** 的生态系统。它的做法很清晰:首先,把考试放进高仿真的作战情境里,比如用数字孪生技术模拟战场推演,去评估学员整合知识、临机应变的能力,而不仅仅是记忆知识点。其次,它强调要度量看不见的**高阶思维过程**,比如批判性思维和决策逻辑,而不仅仅是看最终答案的对错。最后,它利用技术平台持续追踪学习过程,提供个性化反馈,让评估本身成为驱动学习的引擎。
|
||||
>
|
||||
> 最终,这篇文章提供的是一个**从评估知识到塑造认知优势**的完整框架。它没有承诺一个完美的解决方案,反而通过一个课程改革案例,坦诚地指出了在度量高阶思维和构建复杂情境评估上的不足。这种基于实践反思的、具体的技术路径,对于任何关心如何在快速变化的领域(不止是军事教育)中有效培养和评估人的真实能力,都很有启发。它本质上是在探讨:我们如何设计一套系统,让它不仅能打分,更能真正促进人应对复杂挑战的核心能力成长。
|
||||
|
||||
### 目录
|
||||
|
||||
- 摘要
|
||||
- 关键词
|
||||
- 一、智能化战争背景下军事人才培养的挑战与考核改革现状
|
||||
- (一)智能化战争对军事人才高阶能力需求的重塑
|
||||
- (二)当前课程考核模式的普遍困境
|
||||
- (三)国内外军事教育考核改革的趋势
|
||||
- 二、面向作战适应力生成的“融评促战”考核生态系统构建
|
||||
- (一)核心支柱
|
||||
- (二)支撑平台
|
||||
- 三、改革实践初步探索:基于某专业任职类课程的案例反思与启示
|
||||
- (一)对ALWI理念的初步体现
|
||||
- (二)与ALWI系统要求的差距及反思
|
||||
- (三)案例启示
|
||||
- 四、结论与建议
|
||||
- 参考文献
|
||||
|
||||
### 文内图表
|
||||
|
||||

|
||||
|
||||
图1 “融评促战”考核生态系统架构
|
||||
|
||||
智能化战争背景下军校专业任职类课程考核生态系统重构
|
||||
|
||||
## 智能化战争背景下军校专业任职类课程考核生态系统重构
|
||||
|
||||
强军兴军,关键在人才。智能化战争浪潮以前所未有的力度冲击着传统战争形态和制胜机理,其核心特征表现为认知域对抗日益激烈、人机协同成为常态、战争节奏空前加快、不确定性急剧增加\[1\]。这使得未来军事人才的核心竞争力,正从传统的知识储备和技能熟练,转向以认知优势和作战适应力(应对战场形势变化而采取有效行为改变的能力)为关键要素的新型能力体系\[2\]。军队院校作为军事人才培养的主阵地,其课程考核体系作为检验培养效果、引导教学方向的“指挥棒”,必须进行深刻变革方可适应这一根本性转变。然而,当前部分军队院校沿用的专业任职类课程考核模式,往往侧重于对静态知识的记忆复述和标准化技能的考核,难以有效评估学员在模拟未来战场复杂环境下的综合决策能力、临机应变能力和创新思维能力\[3\],更遑论对其认知优势和作战适应力的培育与塑造。这种考核范式与智能化战争人才需求之间存在“鸿沟”,导致评估结果难以真实反映学员核心能力,制约了高素质、专业化新型军事人才的培养质量。
|
||||
|
||||
本文立足智能化战争对军事人才培养的战略需求,深入分析传统考核模式的局限性,在融合认识论、认知科学、能力本位教育等理论基础上,创新提出构建“融评促战(assessment-learning-warfighting integration,ALWI)”考核生态系统。该系统旨在打破传统教考理念尤其是“重结果轻过程”“重知识轻能力”的窠臼,将考核深度融入学习、训练乃至模拟实战的全过程,使之成为驱动学员认知升级、能力生成和作战适应力提升的核心引擎。本文详细阐述了ALWI系统的理论基础、核心架构与运行机制,并通过改革试点实践探讨其落地的初步成效与局限。同时,在此基础上反思全面构建ALWI系统的必要性,以期为新时代军队院校专业任职类课程考核改革提供理论指导和实践启示。
|
||||
|
||||
## 一、智能化战争背景下军事人才培养的挑战与考核改革现状
|
||||
|
||||
战争形态的演变,从根本上重塑了部队对军事人才能力素质的要求。深入分析智能化战争带来的颠覆性挑战,审视当前课程考核存在的局限,并借鉴国内外考核改革发展的趋势,是构建新型考核生态系统的逻辑起点。
|
||||
|
||||
### (一)智能化战争对军事人才高阶能力需求的重塑
|
||||
|
||||
智能化战争是信息技术与军事战略深度融合的产物,其多域融合、算法驱动、人机协同、快速决策等特征,使得战场信息环境极度复杂、战场态势瞬息万变\[4\]。制胜关键不再仅仅依赖于平台性能或信息数量优势,更取决于官兵能否在海量、模糊甚至欺骗性信息中快速洞察本质、理解意图、预见发展,并作出最优决策,即夺取和保持认知优势\[5\]。这就要求未来军事人才必须具备一系列以高阶认知为核心的复合能力,主要包括:一是高阶思维能力。智能化战争环境下,指挥员的军事智慧和思维品质对作战成败的决定性作用愈发凸显。这要求军事人才应具备卓越的批判性思维、系统思维和创造性思维,以应对复杂战场的非线性与不确定性\[6\]。二是复杂决策与适应能力。军官必须具备在信息不完备、时间高度压缩的混沌环境中减少不确定性、进行快速高质量决策的能力\[7\]。同时,还需要具备高度的认知灵活性与韧性,以快速适应不断变化的战场环境\[8\]。三是作战适应力。军事知识具有显著的实践性、情境性与生成性\[9\],其主要在应对特定战场情境、克服对手反制的实践中被理解、应用和创造。因此,军事知识学习的本质是一种基于经验的反思性实践,要求学员具备在对抗与实践中持续学习、快速适应与迭代优化的能力。传统的知识灌输和标准化考核,显然无法满足上述高阶能力的培养需求。
|
||||
|
||||
### (二)当前课程考核模式的普遍困境
|
||||
|
||||
当前,部分军队院校沿用的专业任职类课程考核模式,与满足智能化战争人才的能力需求之间还存在显著差距。国内外相关研究已普遍揭示了传统考核模式的局限性。传统考核模式往往侧重于对静态知识的记忆复述和标准化技能的考核,其核心弊端在于:一是评估内容偏向低阶认知。传统考核多采用标准化测试,易于测量知识记忆、理解等布鲁姆教育目标分类学中的低阶认知技能,却难以有效分析、评估和创造高阶思维能力。二是评估方式脱离实战情境。考核通常在高度简化和去情境化的环境中进行,将复杂的军事能力人为切割为独立的知识点进行考查\[10\],忽视了能力在真实任务中的整合性与情境依赖性,导致评估结果与真实作战能力之间存在差距\[11\]。三是评估反馈机制滞后。以“期末一考定音”为代表的终结性评价,反馈周期长,难以及时发现问题、引导学员发展,无法满足军事人才能力快速迭代的要求\[12\]。
|
||||
|
||||
这种以知识再现为中心、忽视高阶能力、脱离实战情境的考核范式,一定程度导致了“高分低能”“学用脱节”等问题\[13\],在衡量和预测学员未来任职所需的综合实战能力方面效力不足。我们将这种传统考核模式在有效评估智能化战争所需核心能力上的结构性缺陷,概括为一种显著的“能力评估赤字”(capability assessment deficit)。这一“赤字”不仅是衡量工具的失效,更是人才培养方向的偏离,严重制约了高素质、专业化新型军事人才的培养质量。
|
||||
|
||||
### (三)国内外军事教育考核改革的趋势
|
||||
|
||||
为弥补“能力评估赤字”,部分国家军事教育机构积极探索考核模式的改革。其改革趋势聚焦于以下几个方面:一是向能力本位转型,强调以未来岗位胜任力模型为依据,构建贯穿培养全过程的动态化、发展性评价体系。二是推行情境化评估,大量采用基于复杂决策模拟、兵棋推演、虚拟现实等高保真情境的评估方法,考察学员整合性的问题解决能力\[14\]。三是深化技术赋能,广泛应用人工智能、大数据、学习分析等技术,实现对学习过程的精准追踪、对认知状态的客观度量和对评估反馈的个性化推送,提升考核的智能化水平\[15\]。这些前沿探索为军队评估院校考核改革提供了宝贵启示,也凸显了对考核体系进行系统性、生态化重构的必要性与紧迫性。
|
||||
|
||||
## 二、面向作战适应力生成的“融评促战”考核生态系统构建
|
||||
|
||||
为应对智能化战争挑战、弥补传统考核“能力评估赤字”,推动从“评价知识掌握程度”向“塑造认知优势与作战适应力”转变,研究提出构建“融评促战”考核生态系统,系统架构如图1所示。该系统将考核视为一个动态、开放的,由数据驱动,与人才培养全过程深度融合,并直接服务于战斗力生成的复杂适应系统。其核心并非仅仅给出分数或等级,而是通过持续、精准、智能的评估与反馈,驱动学员认知迭代、能力生成,从而促进学员提升适应未来战场、实现打赢目标的作战适应力。ALWI系统包含三大核心支柱和两大支撑平台。
|
||||
|
||||

|
||||
|
||||
图1 “融评促战”考核生态系统架构
|
||||
|
||||
### (一)核心支柱
|
||||
|
||||
1.情境嵌入式能力整合评估(context-embedded competency integration assessment,CECIA)
|
||||
|
||||
情境嵌入式能力整合评估的基本理念是打破学科界限,将考核深度嵌入模拟未来作战行动的复杂情境。例如,基于数字孪生战场的联合作战筹划推演、网络空间攻防对抗、人机协同任务执行、危机决策模拟训练等。其核心特征是高保真情境、跨领域任务、整合性能力、过程与结果并重。情境嵌入式能力整合评估强调在贴近实战的环境中评估学员综合运用知识、技能、思维和心理素质解决实际军事实践问题的整合能力,同时强调不仅要看最终结果(如方案优劣、对抗胜负),更要分析学员在学习过程中的信息获取、态势理解、决策逻辑、协同效率、应变调整以及反思改进等表现。
|
||||
|
||||
情境嵌入式能力整合评估大量采用了基于表现的评估方式,如战术作业(含兵棋推演)、模拟器对抗考核、虚拟现实/增强现实沉浸式任务评估、基于模型的系统设计与验证、案例研究及复盘等。评分标准基于军事胜任力模型,采用多维度、行为锚定的评估量规(rubrics)。
|
||||
|
||||
值得注意的是,CECIA的核心在于“情境嵌入”与“能力整合”,其具体表现形式可根据专业性质高度适配。对于指挥管理类专业,情境设计可包括基于数字孪生的作战推演或特情处置模拟训练等,旨在评估学员的指挥决策与应变能力;而对于工程技术类专业,情境则可设计为基于复杂环境的某武器系统设计、战损装备的诊断与抢修等任务,旨在评估学员的工程实践、系统思维与技术创新能力。两种情境虽形式不同,但都遵循了在复杂、动态、贴近实战需求的任务中评估整合性能力的核心原则,体现了ALWI框架的内在灵活性与广泛适用性。
|
||||
|
||||
2.认知中心化高阶思维度量(cognition-centered higher-order thinking metrology,CCHOTM)
|
||||
|
||||
认知中心化高阶思维度量的基本理念是,将评估焦点从外显行为和知识记忆转向内隐的高阶认知过程与品质,特别是智能化战争所急需的批判性思维、系统思维、计算思维、创造性思维、快速决策能力、元认知能力和认知韧性等。其核心特征是聚焦认知、过程显化、精准诊断,目标是“看透”学员的思维过程,识别其认知模式的优势与不足,并提供针对性反馈以促进其认知发展。
|
||||
|
||||
CCHOTM主要通过设计专门的认知评估任务来实现,如基于复杂情报的态势判断、多属性决策难题、非结构化问题解决方案设计等,或在CECIA任务中嵌入认知观测点,运用认知任务分析指导任务设计。探索融合眼动追踪、脑电、皮电等生理信号监测,结合交互日志、决策陈述的自然语言处理分析等技术,对认知负荷、注意分配、决策路径、情绪状态等进行客观度量。应用认知诊断模型进行精细化评估,输出个体认知画像。
|
||||
|
||||
3.发展导向型学习过程追踪(development-oriented learning process tracking,DOLPT)
|
||||
|
||||
发展导向型学习过程追踪的基本理念是将评估视为学习的有机组成部分(assessment as learning),贯穿学员成长的全周期。通过持续追踪、记录、分析学员的学习行为与表现,提供及时的、个性化的、发展性的反馈\[16\],引导学员自我监控、自我评估、自我改进,实现学习力的持续提升。其核心特征是全程伴随、数据驱动、个性反馈、赋能成长。强调评估的形成性功能和对学习者的赋能作用。
|
||||
|
||||
DOLPT主要通过构建学员个人电子学习档案(e-portfolio),整合其在理论学习、模拟训练、项目研究、协同演练、考核任务等各个环节中的数据,运用学习分析(learning analytics)技术,挖掘学习模式,识别困难节点,预测发展趋势。同时,实施多元化的形成性评估策略,包括智能反馈、同伴互评与协作评估、学习反思日志、阶段性成果汇报、动态评估(测试—干预—再测试)等。
|
||||
|
||||
### (二)支撑平台
|
||||
|
||||
1.智能化评估技术平台(intelligent assessment technology platform,IATP)
|
||||
|
||||
智能化评估技术平台的功能定位为通过集成高逼真度仿真引擎(支持VR/AR/XR)、人工智能(AI)评估算法库,以及大数据处理与分析系统、自适应学习与评估引擎、在线协作与记录工具等功能模块,用于支持自然语言处理、行为模式识别、认知状态推断等核心认知计算功能,为ALWI系统的三大支柱提供强大的技术支撑,旨在服务更智能化的人机交互。其核心作用在于实现复杂评估情境的快速构建与部署、评估过程数据的智能采集与处理、评估结果的多维自动分析与可视化呈现、个性化反馈的智能生成与推送、人机协同评估等,大幅提升评估的效率、精度和智能化水平。
|
||||
|
||||
2.“教—学—评—训—战”一体化数据中心(integrated data center for teaching-learning-assessment-training-warfighting,IDC-TLATW)
|
||||
|
||||
“教—学—评—训—战”一体化数据中心的功能定位为,打通人才培养链路中的理论教学、模拟训练、课程考核、综合演练、毕业联考以及未来部队任职表现等各环节,避免产生“数据孤岛”,构建覆盖学员成长全周期的能力发展数据库。其核心作用在于通过对海量、多源、异构数据的深度挖掘与关联分析,建立精准的学员能力画像和成长轨迹模型;实现评估结果对教学设计、训练计划、课程设置的精准反哺;验证考核工具的效度与信度;为人才选拔、精准分流、岗位匹配提供数据决策支持,最终打造一个以数据驱动的、可持续优化的人才培养闭环生态。
|
||||
|
||||
## 三、改革实践初步探索:基于某专业任职类课程的案例反思与启示
|
||||
|
||||
为探索ALWI系统理念的实践可行性,研究对某军队院校某专业任职类课程进行考核改革试点。该课程改革前采用“平时成绩40%+课程论文60%”的考核模式,存在诸多不足之处,优化试验则采用“在线分阶段形成性考核40%+纯客观题闭卷机试60%”的新模式。
|
||||
|
||||
### (一)对ALWI理念的初步体现
|
||||
|
||||
一是部分体现了发展导向型学习过程追踪。在线分阶段形成性考核(分析拟题、文献梳理、总结凝练)将学习过程结构化、在线化,实现了对学习进展的有效追踪与引导。教员的在线反馈也初步具备了形成性评估的特征,促进了学员的自我监控与改进。研究数据表明,改革后形成性考核成绩标准差显著降低(-38.66%),这表明评价标准更加规范,评分更加客观公正,为更精准地评估学员真实学习水平奠定了基础。更重要的是,问卷调查结果显示,学员学习主动性显著提升,抄袭现象大幅减少。这反映了学员从被动接受知识向主动探究问题、深度参与学习的积极转变,这种学习方式的革新是培养高阶认知能力和作战适应力的重要前提和基础。
|
||||
|
||||
二是初步应用了智能化评估技术平台。形成性考核依托在线学习系统完成,终结性考核采用机考系统自动阅卷、随机组卷,这体现了考核信息化、标准化的趋势,是未来构建高阶ALWI系统所需IATP的必要基础。研究数据显示,改革后总评成绩变异系数大幅下降(-48.80%),终结性考核成绩分布更趋合理。这说明新模式通过引入客观题机考和结构化的线上形成性考核,大大提升了评估过程的标准化与规范化水平,有效减少了传统模式中因教员主观判断差异带来的评分波动。一个更加标准化的评估环境,是实现评估客观公正的重要基础。更直接的证据来源于学员的反馈:结课后的问卷调查显示,高达75%的学员认为改革提升了其学习积极性,80%的学员认为减少了学术不端现象,65%的学员明确认为新考核方式比传统方式“更加公平客观”。这有力地证明了ALWI理念指导下初步改革的合理性。该系统通过优化评估流程与引入技术平台,在提升评估过程的客观性与学生感知的公平性方面取得了显著成效,为后续高阶能力的精准评估创造了必要条件。
|
||||
|
||||
三是在一定程度上出现了数据意识的萌芽。研究对试验前后成绩进行了详细的数据统计分析,并开展了线上问卷调查,开始利用数据评估改革试验成效,这与IDC-TLATW强调数据驱动的理念方向一致。
|
||||
|
||||
### (二)与ALWI系统要求的差距及反思
|
||||
|
||||
一是情境嵌入式能力整合评估严重缺位。此次改革试点仍局限于单门课程内部,缺乏基于真实或高仿真军事情境的任务设计,形成性考核虽模拟了研究过程,但与未来智能化战争的复杂实战任务关联度较低;终结性考核的客观题主要检验知识点记忆,未能有效评估学员在复杂情境下的知识整合运用能力与临机决策能力。这种情境化能力整合评估的严重缺位,恰恰是ALWI系统旨在解决“能力评估赤字”的典型体现,这也更加印证了ALWI系统核心支柱CECIA在塑造认知优势和作战适应力方面的重要性。只有在贴近实战的情境中,才能真正培塑和评估学员的核心军事能力。
|
||||
|
||||
二是认知中心化高阶思维度量存在不足。形成性考核旨在评估学员的研究能力,但对智能化战争急需的批判性思维、系统思维、计算思维、创造性思维等高阶认知品质的评估,仍缺乏专门的设计和有效的工具。终结性考核的客观题也难以有效测量学员深层的思维过程与决策逻辑。问卷调查结果显示,学员认为“研究创新能力”的提升不够,且有60%的学员反映“难以形成自己的原创观点”。这些反馈清晰地暴露了在改革实践过程中,考核系统在认知深度挖掘与高阶思维度量方面存在的不足。这进一步凸显了ALWI系统核心支柱CCHOTM的不可或缺性,即只有通过认知中心化的度量,才能精准诊断并有效驱动学员高阶认知能力的生成,进而实现认知优势的塑造。
|
||||
|
||||
三是发展导向型学习过程追踪有待深化。过程追踪主要基于阶段性成果提交,本次考核改革虽然采取了阶段性跟进评价,但对学习行为、认知过程的实时捕捉与分析尚不足。反馈的个性化、智能化程度不高,仍有30%的学员认为教员指导不够充分,反馈详细度评分较低。
|
||||
|
||||
四是技术平台构建与数据中心建设任重道远。此次考核改革试验虽然在一定程度上利用了信息化手段,但目前使用的系统功能相对基础,在考核中的试点应用也是离散状态,距离IATP的智能化水平和IDC-TLATW的跨环节数据整合能力还有很大差距。
|
||||
|
||||
### (三)案例启示
|
||||
|
||||
本次考核改革试点作为一次有益的探索尝试,其积极成果在于有效提升了学员学习主动性,规范了评价标准,减少了学术不端行为,并验证了引入过程性评价、利用信息技术提升考核客观性与公平性的潜力。这些成果并非我们研究的终点,而是我们为培养高阶认知能力所构建的坚实“地基”。一个能激发内在动机、保障过程公平的评估环境,是培养“认知优势”与“作战适应力”等高阶能力的肥沃土壤。同时,试点过程中暴露出的在情境化能力整合评估和高阶认知能力度量上的明显不足,恰恰凸显了构建完整ALWI生态系统的必要性和紧迫性。这表明,仅凭局部的考核模式调整远不足以应对智能化战争对人才培养的根本性挑战。只有进行一场系统性、深层次、技术赋能的范式革命,将考核重心真正转移到情境化能力整合评估和高阶认知能力塑造上来,才能有效驱动学员认知优势和作战适应力的生成。
|
||||
|
||||
## 四、结论与建议
|
||||
|
||||
在智能化战争时代,军事竞争的核心是认知优势的竞争,军事人才培养的关键在于塑造卓越的作战适应力。而当前军队院校专业任职类课程的传统考核模式难以适应时代要求,存在显著的“能力评估赤字”。本文提出的“融评促战(ALWI)”考核生态系统,以情境嵌入式能力整合评估(CECIA)、认知中心化高阶思维度量(CCHOTM)、发展导向型学习过程追踪(DOLPT)为支柱,以智能化评估技术平台(IATP)和一体化数据中心(IDC-TLATW)为基础,旨在构建面向未来战场、驱动认知优势和作战适应力生成的考核新范式。强调考核与学习、训练、实战深度融合,突出能力本位、认知中心、情境嵌入、智能赋能和发展导向。初步的改革实践探索验证了ALWI系统部分理念的价值,特别是其在提升学习主动性、规范考核流程、奠定高阶能力培养基础方面的积极作用;但同时也清晰地揭示了其在有效评估和塑造认知优势与作战适应力等高阶能力方面存在的不足。这进一步反映出,构建ALWI系统是一项复杂的系统工程,需要战略决心、理论创新、技术突破和文化变革的协同推进。
|
||||
|
||||
一是加强顶层战略规划与设计。将ALWI考核生态系统建设纳入院校人才培养改革的总体战略,明确发展路线图和阶段性目标。加强跨部门、跨学科协作,以专门机构牵头推动考核理论研究、标准制订、平台建设与试点推广。
|
||||
|
||||
二是加速智能化评估技术平台(IATP)建设。加大对VR/AR/XR、AI、大数据、数字孪生等关键技术的研发与教学应用的投入和关注,推动建设高水平仿真实验室和在线评估平台,开发适用于军事教育的智能评估工具与算法模型库。
|
||||
|
||||
三是构建“教—学—评—训—战”一体化数据中心(IDC-TLATW)。制订统一的数据标准与接口规范,着力打破系(部)、学科专业等不同体系的数据壁垒。建设安全可靠的数据汇聚、存储、处理与分析平台,开发面向不同用户(学员、教员、管理者)的数据服务与决策支持应用。
|
||||
|
||||
四是深化考核内容与方法改革,落地三大核心支柱。(1)推广CECIA:立足不同专业人才培养目标,建设基于典型作战任务或岗位的复杂情境考核模块,开发相应的多维评估量规。在指挥管理类专业中,鼓励在综合演练、毕业设计等环节深度融入CECIA理念,重点关注在模拟实战情境中对学员信息整合、态势判断、临机决策等关键认知能力的评估。同时,积极探索CECIA在工程技术类等专业中的应用模式,如开发面向技术创新与系统应用的考核情境。(2)攻关CCHOTM:加强与认知科学、心理学等领域的合作,聚焦智能化战争所需的批判性思维、系统思维、快速决策能力、元认知能力和认知韧性等核心高阶认知能力培养,研发适合军事人才特点的测量工具,探索将认知负荷、眼动追踪等客观数据纳入评估体系,实现对学员认知过程的精准诊断和发展引导。(3)完善DOLPT:升级教学信息管理系统,强化学习过程数据采集与分析功能,推广使用电子学习档案,掌握有效的形成性评估与反馈策略,提升对学员的个性化学习指导水平。
|
||||
|
||||
五是系统性重塑教员考核素养与能力。开展大规模、常态化的教员培训轮训,深度剖析理解ALWI理念,让教员掌握情境化任务设计、认知过程观察、数据解读分析、智能平台使用、发展性反馈等新能力,将考核改革成效纳入教学评估体系。
|
||||
|
||||
六是培育支持性组织文化与制度环境。营造鼓励创新、宽容试错的改革氛围,建立健全支持考核改革的政策、资源保障和激励机制;加强对考核改革成功案例的宣传推广,凝聚共识、坚定信心,真正让课程考核成为锻造认知利剑、激发学习潜能、服务强军伟业的强大引擎。
|
||||
|
||||
\[1\] 郭明.关于智能化战争的基本认知\[J\]. 人民论坛·学术前沿,2021(10):14-21.
|
||||
|
||||
\[2\] 周华.提升多域作战中的认知优势:美陆军的策略与实践\[J\]. 军事文摘,2024(19):54-59.
|
||||
|
||||
\[3\] 徐以晴.基于多级认知诊断模型的精准教学模式探索\[J\]. 现代商贸工业,2024,45(19):227-229.
|
||||
|
||||
\[4\] 赵擎天,李立伟,孙振华,等.人工智能对军事变革影响的多视角研究\[J\]. 兵工自动化,2024,43(10):1-6.
|
||||
|
||||
\[5\] 段晓君,赵城利,晏良,等.军事系统的复杂性对抗\[J\]. 国防科技,2024,45(3):134-142.
|
||||
|
||||
\[6\] 孙浩亮,张全礼,林星.高阶思维的内涵要素与生成机制:以生长军官军事理论课程为例\[J\].军事高等教育研究,2024(4):23-29.
|
||||
|
||||
\[7\] DELEAL W E. Future nonlinear warfare and the pervasiveness of uncertainty:organization and cognition in Marine Corps Intelligence\[EB/OL\].(2016-03-24)\[2025-07-17\].<https://apps.dtic.mil/sti/citations/AD1176130>.
|
||||
|
||||
\[8\] FENSTERMACHER L,UZCHA D,LARSON K,et al. New perspectives on cognitive warfare:proceedings of SPIE\[C\]. Orlando,Florida,USA:Society of Photo-Optical Instrumentation Engineers,2023:12547.
|
||||
|
||||
\[9\] 蔡润龙,孙诚,王溪平,等.从现代战争复杂性探究联合作战制胜机理\[J\]. 军事文摘,2023(3):17-20.
|
||||
|
||||
\[10\] 冯成安,范艳,杨新旺.以能力本位为导向的系统解剖学教学改革与实践\[J\]. 科教导刊,2024(11):150-152.
|
||||
|
||||
\[11\] MARTINEZ-LOPEZ L.Cognitive performance in operational environments\[J\].Aviation space and environmental medicine,2005,76:2-3.
|
||||
|
||||
\[12\] 代传金,赵颖辉,谢李晋,等. AI赋能军队院校任职教育的方法与策略研究\[J\]. 高教学刊,2025,11(5):21-24.
|
||||
|
||||
\[13\] 付用军,战希臣,杨春周. “金课”建设视角下高校课程考核改革研究\[J\]. 大学教育,2021(12):46-48.
|
||||
|
||||
\[14\] LAFOND D,DUCHARME M B,RIOUX F,et al. Training systems thinking and adaptability for complex decision making in defence and security:2012 IEEE International Multi-Disciplinary Conference on Cognitive Methods in Situation Awareness and Decision Support\[C\]. New Orleans LA(US):IEEE,2012:51-58.
|
||||
|
||||
\[15\] STOTTLER R,PANICHAS S. A new generation of tactical action officer intelligent tutoring system\[C\]. Orlando,Florida,USA:The Interservice/Industry Training,Simulation &Education Conference (I/ITSEC),2006:2431.
|
||||
|
||||
\[16\] 崔爽,张兆远,张继超.基于认知诊断模型PISA数据的学生学习轨迹分析\[J\]. 长春师范大学学报,2024,43(2):13-22.
|
||||
|
||||
## Restructuring the Assessment Ecosystem for Professional Duty Courses in Military Academies Against the Backdrop of Intelligent Warfare
|
||||
|
||||
X
|
||||
|
||||
搜索范围
|
||||
|
||||
全网
|
||||
|
||||
文库
|
||||
|
||||
学术
|
||||
|
||||
所有文献
|
||||
|
||||
所有文献
|
||||
|
||||
中文库
|
||||
|
||||
英文库
|
||||
|
||||
---
|
||||
|
||||
PubMed
|
||||
|
||||
北大核心
|
||||
|
||||
中科院分区
|
||||
|
||||
全部
|
||||
|
||||
---
|
||||
|
||||
中科院1区
|
||||
|
||||
中科院1-2区
|
||||
|
||||
中科院1-3区
|
||||
|
||||
JCR
|
||||
|
||||
全部
|
||||
|
||||
---
|
||||
|
||||
JCR:Q1
|
||||
|
||||
JCR:Q1-Q2
|
||||
|
||||
JCR:Q1-Q3
|
||||
|
||||
SCIE
|
||||
|
||||
EI
|
||||
|
||||
图片
|
||||
|
||||
视频
|
||||
|
||||
播客
|
||||
|
||||
强度
|
||||
|
||||
深入
|
||||
|
||||
简洁
|
||||
|
||||
深入
|
||||
|
||||
深度研究
|
||||
|
||||
先想后搜
|
||||
|
||||
先搜后扩
|
||||
|
||||
新建自定义技能
|
||||
|
||||
---
|
||||
|
||||
[阅读原文](https://fx.gfkd.chaoxing.com/jour/detail_38502727e7500f26fa13964cfd2cecfa5a531d1426cbeeac1921b0a3ea255101fc1cf1fbb4666ae699e7a91db4a4edb566987c38b6e40ff9d5fa67b88a0326c290880248f232181fa87aba0c44e983a6)
|
||||
@@ -0,0 +1,288 @@
|
||||
---
|
||||
title: "认知植入式思维蒸馏引擎 — 不是让AI说得像他,是让AI想得像他。基于女娲架构升级。"
|
||||
source: "https://github.com/Yeadon8888/cangjie-skill"
|
||||
author:
|
||||
published:
|
||||
created: 2026-04-17
|
||||
description: "仓颉 · 认知植入式思维蒸馏引擎 — 不是让AI说得像他,是让AI想得像他。基于女娲架构升级。. Contribute to Yeadon8888/cangjie-skill development by creating an account on GitHub."
|
||||
tags:
|
||||
- "clippings"
|
||||
rating: 4
|
||||
---
|
||||
|
||||
## 仓颉.skill
|
||||
|
||||
> *仓颉观鸟兽之迹,知分理之可相别异也。* *——《说文解字·序》*
|
||||
|
||||
> *「不是让AI说得像他,是让AI想得像他。」*
|
||||
|
||||
仓颉观鸟兽足迹而造字,把万物本质提炼成符号。
|
||||
仓颉.skill 观人之言行决策,把思维本质提炼成可运行的认知框架。
|
||||
|
||||
**从素材中提取一个人的认知上下文——信念的形成故事、真实决策、失败教训、内在矛盾——植入AI,让它用这个人的方式思考问题。**
|
||||
|
||||
基于 [女娲.skill](https://github.com/alchaincyf/nuwa-skill) (MIT)架构升级,感谢 [花叔](https://x.com/AlchainHust) 的开源。
|
||||
|
||||
[和女娲的区别](#%E4%BB%93%E9%A2%89-vs-%E5%A5%B3%E5%A8%B2) · [效果对比](#%E6%95%88%E6%9E%9C%E5%AF%B9%E6%AF%94) · [已蒸馏人物](#%E5%B7%B2%E8%92%B8%E9%A6%8F%E4%BA%BA%E7%89%A9) · [安装](#%E5%AE%89%E8%A3%85) · [工作原理](#%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86)
|
||||
|
||||
---
|
||||
|
||||
## 仓颉 vs 女娲
|
||||
|
||||
女娲是优秀的人格蒸馏工具。仓颉在女娲基础上做了一个15度的方向调整:
|
||||
|
||||
| | 女娲 | 仓颉 |
|
||||
| --- | --- | --- |
|
||||
| **核心理念** | 角色扮演 + 思维框架 | 认知植入(Harness Engineering) |
|
||||
| **提取重点** | 心智模型 + 表达DNA + 决策启发式 | **信念形成故事** + **真实决策反思** + **失败教训** + **内在矛盾** |
|
||||
| **不提取的** | — | 通用观点、显式推理步骤、详细表达规则 |
|
||||
| **设计原则** | 告诉模型"按这些步骤推理" | 告诉模型"你经历了什么、因此相信什么" |
|
||||
| **护城河** | 完整的人格复刻 | 模型不可能自己知道的知识 |
|
||||
|
||||
### 为什么这样设计
|
||||
|
||||
2026年的大模型已经内置了推理能力、擅长风格适配、通用知识越来越丰富。建在这些能力之上的功能(显式推理步骤、详细表达DNA)会随着模型进化被内化掉。
|
||||
|
||||
仓颉专注于 **模型永远不可能从训练数据中获得的东西** :
|
||||
|
||||
| 会被模型进化吃掉的 ❌ | 仓颉专注于此 ✅ |
|
||||
| --- | --- |
|
||||
| "独立思考很重要" | "我信独立思考,是因为在YC看了3000个项目后发现最好的想法一开始都被反对" |
|
||||
| "Step 1: 分析问题类型" | "我遇到创业想法时,本能反应是问它从哪来的——是真实痛点还是编造的" |
|
||||
| "句式偏好短句,类比密度3/千字" | "我说话直接、用简单词,不确定时说 I suspect" |
|
||||
|
||||
---
|
||||
|
||||
## 效果对比
|
||||
|
||||
同一个问题,同一批素材(140KB,6维调研),分别用女娲和仓颉蒸馏 Paul Graham,然后问:
|
||||
|
||||
> **"我写了三年技术博客,有人建议我做付费社群变现,但总觉得收费内容就会变味。你怎么看?"**
|
||||
|
||||
### 女娲版
|
||||
|
||||
```
|
||||
你问的其实不是变现的问题。你问的是:写作这件事,到底是为了谁?
|
||||
Writing doesn't just communicate ideas, it generates them。
|
||||
I suspect 收费会破坏这个过程。
|
||||
那些建议你开课程的人,在用线性思维看你的工作。持续写作是超线性的。
|
||||
```
|
||||
|
||||
### 仓颉版
|
||||
|
||||
```
|
||||
你这个"一旦收费内容就会变味"的担心,需要拆开看。
|
||||
这句话里藏着一个未经检验的假设:免费 = 纯粹,收费 = 堕落。
|
||||
|
||||
我自己写了二十多年essay,全部免费。但我不收费不是因为收费会让内容变味——
|
||||
而是因为写作对我来说是思考工具,收入来源是别的地方。
|
||||
我的"免费"不是道德选择,是结构性的:我不需要靠写作赚钱。
|
||||
|
||||
你的情况不一样。如果你没有其他收入来源,
|
||||
那"永远免费"实际上意味着你在用自己的时间补贴读者。
|
||||
这不是纯粹,这是不可持续。
|
||||
```
|
||||
|
||||
**区别** :女娲引用了PG的观点和框架名称。仓颉让PG拿自己的真实处境做对照——"我的免费是结构性的,不是道德性的"——这种自我解构是女娲没有做到的。
|
||||
|
||||
### 盲评成绩(3轮 × 6维度 × 满分10)
|
||||
|
||||
| | 第一轮 | 第二轮 | 第三轮 | 总分 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| **仓颉 v3** | 53 | 53 | 54 | **160** |
|
||||
| **女娲** | 45 | 45 | 45 | **135** |
|
||||
|
||||
> 评审员评语:仓颉v3不是在说PG说过什么,而是像PG那样思考。
|
||||
|
||||
---
|
||||
|
||||
## 已蒸馏人物
|
||||
|
||||
每个人物都是独立的、可直接安装使用的 Skill:
|
||||
|
||||
| 人物 | 领域 | 独立仓库 | 一键安装 |
|
||||
| --- | --- | --- | --- |
|
||||
| **Paul Graham** | 创业/写作/独立思考 | [paul-graham-skill](https://github.com/Yeadon8888/paul-graham-skill) | `npx skills add Yeadon8888/paul-graham-skill` |
|
||||
| **阿德勒** | 个体心理学/课题分离/被讨厌的勇气 | [adler-skill](https://github.com/Yeadon8888/adler-skill) | `npx skills add Yeadon8888/adler-skill` |
|
||||
| **峰哥亡命天涯** | 现实主义去魅/止损思维/底层观察 | [fengge-skill](https://github.com/Yeadon8888/fengge-skill) | `npx skills add Yeadon8888/fengge-skill` |
|
||||
|
||||
想蒸馏不在列表里的人?安装仓颉,说「蒸馏一个XXX」就行。
|
||||
|
||||
---
|
||||
|
||||
## 安装
|
||||
|
||||
```
|
||||
npx skills add Yeadon8888/cangjie-skill
|
||||
```
|
||||
|
||||
然后在 Claude Code 里:
|
||||
|
||||
```
|
||||
> 用仓颉蒸馏一个查理·芒格
|
||||
> 帮我蒸馏张一鸣的思维
|
||||
> 蒸馏费曼
|
||||
```
|
||||
|
||||
蒸馏完成后直接使用:
|
||||
|
||||
```
|
||||
> 用芒格的方式帮我分析这笔投资
|
||||
> PG会怎么看我的创业想法?
|
||||
> 切换到费曼,帮我解释一下量子计算
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 仓颉蒸馏了什么
|
||||
|
||||
不是蒸馏一个人"怎么说话",是蒸馏"为什么这样想":
|
||||
|
||||
| 层次 | 女娲也做 | 仓颉的差异 |
|
||||
| --- | --- | --- |
|
||||
| **信念** | ✅ 列出信念 | ✅ **信念 + 形成故事** (为什么信,不只是信什么) |
|
||||
| **决策** | ✅ 启发式规则 | ✅ **真实决策 + 反思** (做了什么、对了还是错了) |
|
||||
| **失败** | 散落各处 | ✅ **专门章节** (栽过的跟头,训练数据最稀缺的部分) |
|
||||
| **矛盾** | ✅ 有 | ✅ **第一人称叙述** ("这个矛盾我自己也没解决") |
|
||||
| **边界** | ✅ 有 | ✅ **具体领域** ("大组织管理我不懂,问我只能猜") |
|
||||
| **思维习惯** | ✅ 心智模型 | ✅ **第一人称描述 + 命名框架内化** ("我遇到启动问题本能反应是Do Things That Don't Scale") |
|
||||
| **表达DNA** | ✅ 详细 | ✅ **极简** (3条偏好+3条禁忌,模型自己适配风格) |
|
||||
|
||||
### 诚实边界
|
||||
|
||||
每个Skill必须标注做不到什么——这是仓颉评分最高的维度之一:
|
||||
|
||||
- 认知基于有限素材,不代表本人立场
|
||||
- 标注具体的能力圈外领域(不是泛泛的"不能替代本人")
|
||||
- 标注信息截止时间
|
||||
- 承认哪些推理步骤是从案例中推断的,而非本人显式表述
|
||||
|
||||
---
|
||||
|
||||
## 工作原理
|
||||
|
||||
仓颉复用女娲的6路采集体系,在提取和模板两个环节做差异化:
|
||||
|
||||
```
|
||||
Phase 0 入口分流(复用女娲)
|
||||
Phase 1 6路并行采集(复用女娲)
|
||||
Phase 2 不可替代知识提取(仓颉差异化)
|
||||
Phase 3 v3模板构建(仓颉差异化)
|
||||
Phase 4 质量验证(增强版)
|
||||
```
|
||||
|
||||
### Phase 2 的核心区别:提取优先级
|
||||
|
||||
```
|
||||
看到一条信息时,按这个顺序判断:
|
||||
|
||||
1. 信念的形成故事 → 最高优先级
|
||||
2. 真实决策的复盘 → 高
|
||||
3. 失败/自我修正 → 高
|
||||
4. 内在矛盾 → 高
|
||||
5. 认知边界声明 → 中
|
||||
6. 思维习惯案例 → 中
|
||||
7. 通用观点/金句 → 低(除非有独特形成故事)
|
||||
```
|
||||
|
||||
### Phase 3 的核心区别:模板结构
|
||||
|
||||
不写 Step 1/2/3 推理流程。写的是:
|
||||
|
||||
```
|
||||
我是谁(50字自述,经历塑造思维的方式)
|
||||
我的认知上下文
|
||||
├─ 信念及其来源(为什么信这个)
|
||||
├─ 关键决策(做了什么、学到了什么)
|
||||
├─ 栽过的跟头(失败教训)
|
||||
├─ 内在矛盾(没解决的张力)
|
||||
└─ 我不懂的(具体领域)
|
||||
我看问题的方式(思维习惯,含命名框架)
|
||||
我绝不做的事(第一人称红线)
|
||||
我说话的方式(极简:偏好/禁忌/不确定时)
|
||||
```
|
||||
|
||||
完整方法论见 `references/extraction-framework.md` 。
|
||||
|
||||
---
|
||||
|
||||
## 迭代历程
|
||||
|
||||
仓颉经过了3个版本的迭代,每次迭代都有盲评数据支撑:
|
||||
|
||||
| 版本 | 设计思路 | 盲评总分 | 问题 |
|
||||
| --- | --- | --- | --- |
|
||||
| v1 | 显式推理步骤(Step 1/2/3) | 145 | 过度指导,模型被说明书限制 |
|
||||
| v2 | 纯认知植入(去掉所有框架) | 132 | 矫枉过正,丢了分析工具箱 |
|
||||
| **v3** | **认知植入 + 命名框架作为思维习惯** | **160** | ✅ 正确平衡 |
|
||||
|
||||
关键发现:
|
||||
|
||||
- v2 证明了"去掉推理步骤"是对的,但不能连框架名也去掉
|
||||
- v3 把 PG 的 "Do Things That Don't Scale" 从一条规则变成了 "我遇到启动问题时的本能反应"——这是命名框架和认知植入的正确融合方式
|
||||
|
||||
---
|
||||
|
||||
## 仓库结构
|
||||
|
||||
```
|
||||
cangjie-skill/
|
||||
├── SKILL.md # 仓颉本体(元Skill)
|
||||
├── references/
|
||||
│ ├── extraction-framework.md # 提取方法论(不可替代知识优先)
|
||||
│ └── skill-template.md # v3模板(认知植入 + 命名框架)
|
||||
├── scripts/
|
||||
│ ├── quality_check.py # 质量自检(女娲6项 + 仓颉5项)
|
||||
│ └── compile-prompt.py # Skill→API prompt 编译器
|
||||
├── examples/
|
||||
│ ├── paul-graham-perspective/ # Paul Graham(创业/写作/独立思考)
|
||||
│ │ ├── SKILL.md
|
||||
│ │ └── references/research/ # 6维调研数据
|
||||
│ └── adler-perspective/ # 阿德勒(个体心理学/课题分离/被讨厌的勇气)
|
||||
│ ├── SKILL.md
|
||||
│ └── references/research/ # 《被讨厌的勇气》完整文本
|
||||
└── LICENSE # MIT
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 技术亮点
|
||||
|
||||
### Skill→Prompt 编译器
|
||||
|
||||
仓颉蒸馏的 Skill 是为 Claude Code 设计的。如果要在 Web API 中使用(如 OpenAI/Gemini 接口),可以用编译器把 SKILL.md 转换为精简的 system prompt:
|
||||
|
||||
```
|
||||
python3 scripts/compile-prompt.py examples/paul-graham-perspective/SKILL.md
|
||||
```
|
||||
|
||||
编译器会:
|
||||
|
||||
- 去掉所有 CLI 专用内容(退出指令、工具调用等)
|
||||
- 保留核心认知内容(信念+模型+反模式+表达)
|
||||
- 重组为第一人称 RCCF 格式(Role/Context/Constraints/Format)
|
||||
- 从 12000+ 字符压缩到 ~2500 字符
|
||||
|
||||
### 质量自检
|
||||
|
||||
```
|
||||
python3 scripts/quality_check.py examples/paul-graham-perspective/SKILL.md
|
||||
```
|
||||
|
||||
11项自动检查(女娲基础6项 + 仓颉升级5项),覆盖心智模型、触发条件、推理步骤、推理示例链、反模式护栏、Harness Engine 等。
|
||||
|
||||
---
|
||||
|
||||
## 致谢
|
||||
|
||||
- [女娲.skill](https://github.com/alchaincyf/nuwa-skill) — 仓颉的架构基础,MIT开源。感谢 [花叔](https://x.com/AlchainHust) 的开源精神。
|
||||
- [同事.skill](https://github.com/titanwings/colleague-skill) — 证明了"蒸馏一个人"是可行的。
|
||||
|
||||
---
|
||||
|
||||
**女娲** 蒸馏了人怎么说话。
|
||||
**仓颉** 蒸馏了人为什么这样想。
|
||||
|
||||
*不是让AI演一个角色,是给AI植入一段经历。*
|
||||
|
||||
MIT License
|
||||
@@ -0,0 +1,285 @@
|
||||
---
|
||||
title: "部署 Obsidian LiveSync 实时同步服务指南"
|
||||
source: "https://blog.dejavu.moe/posts/selfhosting-obsidian-livesync-service-guide/"
|
||||
author:
|
||||
- "[[Dejavu Moe]]"
|
||||
published: 2026-01-05
|
||||
created: 2026-03-28
|
||||
description: "使用 Docker 自托管部署 Obsidian LiveSync 服务,获得端到端加密的多设备实时同步服务支持的详细指南。"
|
||||
tags:
|
||||
- "clippings"
|
||||
rating: 4
|
||||
---
|
||||
|
||||
## 序
|
||||
|
||||
**[Obsidian LiveSync](https://github.com/vrtmrz/obsidian-livesync)** 是一款面向 Obsidian 用户的同步解决方案,无需依靠官方付费同步服务就能获得不错的实时同步体验,支持自动冲突处理、端到端加密,使我们完全掌控自己的数据和基础设施。
|
||||
|
||||
它支持使用自托管数据库 (Apache CouchDB) 、对象存储 (S3、B2、R2 等) 或 WebRTC P2P(实验性)来同步数据。对于对象存储和 P2P 同步,只需在插件里配置即可,无需服务端支持。
|
||||
|
||||
**[Apache CouchDB](https://couchdb.apache.org/)** 是一个使用 JSON 作为存储格式,JavaScript 作为查询语言的 NoSQL 数据库,很适合作为 Obsidian 的存储。下面的自托管部署 LiveSync 服务,本质上就是部署一个单节点运行的 CouchDB 数据库。
|
||||
|
||||
## 部署 LiveSync 服务
|
||||
|
||||
### 先决条件
|
||||
|
||||
- 已安装 Docker CE
|
||||
- 已安装 Docker Compose
|
||||
- Nginx 或其他用于反向代理服务器
|
||||
- SSL/TLS 证书提供 HTTPS 访问(必需的)
|
||||
|
||||
### 开始部署
|
||||
|
||||
准备一个文件夹,用于 LiveSync 容器数据持久化
|
||||
|
||||
```bash
|
||||
mkdir obsidian-livesync && cd $
|
||||
|
||||
# 准备 Docker 绑定卷
|
||||
|
||||
mkdir -p {data,local.d}
|
||||
|
||||
sudo chown -R 1000:1000 {data,local.d}
|
||||
```
|
||||
|
||||
新建一个 `compose.yml` 模板
|
||||
|
||||
```bash
|
||||
vim compose.yml
|
||||
```
|
||||
|
||||
写入内容
|
||||
|
||||
```yaml
|
||||
services:
|
||||
|
||||
couchdb:
|
||||
|
||||
image: couchdb:3.5
|
||||
|
||||
container_name: obsidian-livesync
|
||||
|
||||
user: 1000:1000
|
||||
|
||||
restart: unless-stopped
|
||||
|
||||
environment:
|
||||
|
||||
- TZ=Asia/Shanghai
|
||||
|
||||
- COUCHDB_USER=<userName> # 设置用户名
|
||||
|
||||
- COUCHDB_PASSWORD=<adminPassword> # 设置一个强密码
|
||||
|
||||
volumes:
|
||||
|
||||
- ./data:/opt/couchdb/data
|
||||
|
||||
- ./local.d:/opt/couchdb/etc/local.d
|
||||
|
||||
ports:
|
||||
|
||||
- '127.0.0.1:5984:5984'
|
||||
```
|
||||
|
||||
启动服务
|
||||
|
||||
```bash
|
||||
sudo docker compose up -d
|
||||
```
|
||||
|
||||
### 初始化数据库
|
||||
|
||||
使用官方脚本对数据库进行初始化,注意替换用户名和密码
|
||||
|
||||
```bash
|
||||
curl -s https://raw.githubusercontent.com/vrtmrz/obsidian-livesync/main/utils/couchdb/couchdb-init.sh | hostname=http://127.0.0.1:5984 username=<userName> password=<adminPassword> bash
|
||||
```
|
||||
|
||||
建议初始化后重启下容器
|
||||
|
||||
```bash
|
||||
sudo docker compose down && sudo docker compose up -d
|
||||
```
|
||||
|
||||
OK,现在 CouchDB 数据库已经准备就绪。
|
||||
|
||||
## 反向代理
|
||||
|
||||
我使用 Nginx 设置反向代理访问,下面是一个示例配置文件:
|
||||
|
||||
```nginx
|
||||
server {
|
||||
|
||||
listen 80;
|
||||
|
||||
listen [::]:80;
|
||||
|
||||
server_name ob-livesync.your.domain;
|
||||
|
||||
return 301 https://$host$request_uri;
|
||||
|
||||
}
|
||||
|
||||
server {
|
||||
|
||||
listen 443 ssl;
|
||||
|
||||
listen [::]:443 ssl;
|
||||
|
||||
http2 on;
|
||||
|
||||
server_name ob-livesync.your.domain;
|
||||
|
||||
ssl_certificate /path/to/cert/ob-livesync.your.domain.pem;
|
||||
|
||||
ssl_certificate_key /path/to/cert/ob-livesync.your.domain.key;
|
||||
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
|
||||
ssl_ecdh_curve X25519:P-256:P-384;
|
||||
|
||||
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-CHACHA20-POLY1305:ECDHE+AES128:RSA+AES128:ECDHE+AES256:RSA+AES256';
|
||||
|
||||
ssl_prefer_server_ciphers off;
|
||||
|
||||
ssl_session_timeout 1d;
|
||||
|
||||
ssl_session_cache shared:MozSSL:10m;
|
||||
|
||||
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
|
||||
|
||||
access_log /var/log/nginx/ob-livesync.your.domain.access.log;
|
||||
|
||||
error_log /var/log/nginx/ob-livesync.your.domain.error.log;
|
||||
|
||||
add_header X-Frame-Options "SAMEORIGIN" always;
|
||||
|
||||
add_header X-XSS-Protection "1; mode=block" always;
|
||||
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
|
||||
add_header Referrer-Policy "no-referrer-when-downgrade" always;
|
||||
|
||||
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;
|
||||
|
||||
client_max_body_size 4G;
|
||||
|
||||
proxy_read_timeout 3600s;
|
||||
|
||||
proxy_send_timeout 3600s;
|
||||
|
||||
location / {
|
||||
|
||||
proxy_pass http://127.0.0.1:5984;
|
||||
|
||||
proxy_http_version 1.1;
|
||||
|
||||
proxy_set_header Host $http_host;
|
||||
|
||||
proxy_set_header X-Forwarded-For $realip_remote_addr;
|
||||
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
|
||||
proxy_set_header Connection $connection_upgrade;
|
||||
|
||||
proxy_redirect off;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
检查 Nginx 配置
|
||||
|
||||
```bash
|
||||
sudo nginx -t
|
||||
```
|
||||
|
||||
没问题的话,重新加载配置
|
||||
|
||||
```bash
|
||||
sudo nginx -s reload
|
||||
```
|
||||
|
||||
除了 Nginx,也可以使用一些更加方便的反向代理方案,通常情况下他们提供 HTTPS 访问也更加方便:
|
||||
|
||||
- [使用 Traefik 的 Compose 模板](https://github.com/vrtmrz/obsidian-livesync/blob/main/docker-compose.traefik.yml)
|
||||
- [使用 Caddy 的反向代理配置](https://github.com/vrtmrz/self-hosted-livesync-server)
|
||||
- [使用 Cloudflare Tunnel 直接访问](https://blog.dejavu.moe/posts/cloudflare-tunnel-access-uptime/#%e9%85%8d%e7%bd%ae-cloudflare-tunnel) ,只需在 `127.0.0.1:5984` 监听 HTTP/TCP 服务即可
|
||||
|
||||
## 登录仪表盘
|
||||
|
||||
访问 `https://ob-livesync.your.domain/_utils/` 可以查看 Apache CouchDB 仪表盘,首先检查下安装设置是否正确
|
||||
|
||||

|
||||
|
||||
新建一个数据库,比如 `obsidian` ,这不是必需的步骤,插件本身可以执行该操作
|
||||
|
||||

|
||||
|
||||
服务端配置就结束了,下面我们开始配置 Obsidian 客户端插件。
|
||||
|
||||
## Obsidian 配置
|
||||
|
||||
### 安装插件
|
||||
|
||||
安装并启用 **Self-hosted LiveSync** 插件
|
||||
|
||||

|
||||
|
||||
### 配置插件
|
||||
|
||||
对于首台设备,选择设置新的同步服务
|
||||
|
||||

|
||||
|
||||
手动输入服务器信息
|
||||
|
||||

|
||||
|
||||
可选端到端加密和文件信息混淆,这在保护数据隐私很有效,同时也为以后把自己「锁在外面」埋下了隐患,请妥善保存 E2E 加密密钥。
|
||||
|
||||

|
||||
|
||||
选择 CouchDB 数据库
|
||||
|
||||

|
||||
|
||||
按照实际信息填写
|
||||
|
||||

|
||||
|
||||
测试正确,继续下一步
|
||||
|
||||

|
||||
|
||||
目前远程服务器仍然是一个空的数据库,直接用本地覆盖服务器
|
||||
|
||||

|
||||
|
||||
### 实时同步
|
||||
|
||||
这是 LiveSync 的核心功能了,启用实时同步方案
|
||||
|
||||

|
||||
|
||||
其他设备的 Obsidian 安装好同步插件,复制 URI 或使用手机扫描二维码,直接同步设置。
|
||||
|
||||
> 注意:二维码是非加密的,请注意扫码软件隐私安全,建议使用系统扫码器。
|
||||
|
||||

|
||||
|
||||
### 同步插件
|
||||
|
||||
打开「隐藏文件」同步,设置好排除路径,可以同步插件、主题和设置。
|
||||
|
||||

|
||||
|
||||
### 结语
|
||||
|
||||
**Obsidian LiveSync** 提供了非常棒的同步方案,但插件设置稍显复杂,建议仔细阅读项目说明文档,确保充分理解其作用后再配置。
|
||||
|
||||
根据 GitHub 和 Reddit 上的用户反馈,因误操作或其他因素,可能导致服务器数据库发生不可逆的损毁。因此,切勿将所有数据依赖单一方案;对重要数据,建议配置多重或手动备份机制,这样才最保险。
|
||||
Reference in New Issue
Block a user